diff --git a/books/bookvol7.1.pamphlet b/books/bookvol7.1.pamphlet
index 6d546a9..2ad4111 100644
--- a/books/bookvol7.1.pamphlet
+++ b/books/bookvol7.1.pamphlet
@@ -1107,7 +1107,7 @@ have to go hunting when moving between Unix versions.
 @
 \subsection{Bitmaps and bitmap manipulation macros}
 <<util.ht>>=
-\newcommand{\htbmdir}{\env{AXIOM}/doc/hypertex/bitmaps}
+\newcommand{\htbmdir}{\env{AXIOM}/doc/bitmaps}
 \newcommand{\htbmfile}[1]{\htbmdir /#1.bitmap}
 \newcommand{\htbitmap}[1]{\inputbitmap{\htbmfile{#1}}}
 \newcommand{\ControlBitmap}[1]{\controlbitmap{\htbmfile{#1}}}
@@ -1126,7 +1126,7 @@ have to go hunting when moving between Unix versions.
 % Including control panel pixmaps for help pages:
 
 \newcommand{\helpbit}[1]
-{\centerline{\inputpixmap{\env{AXIOM}/doc/hypertex/pixmaps/{#1}}}}
+{\centerline{\inputpixmap{\env{AXIOM}/doc/pixmaps/{#1}}}}
 
 @
 \subsection{HyperDoc button objects}
@@ -2147,6 +2147,193 @@ see \downlink{`List'}{ListXmpPage}\ignore{List}.
 \autobuttons
 \end{page}
 
+\begin{patch}{AssociationListXmpPagePatch1}
+\begin{paste}{AssociationListXmpPageFull1}{AssociationListXmpPageEmpty1}
+\pastebutton{AssociationListXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{
+Data := Record(monthsOld : Integer, gender : String)\bound{Data }}
+\indentrel{3}\begin{verbatim}
+   (1)  Record(monthsOld: Integer,gender: String)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty1}
+\begin{paste}{AssociationListXmpPageEmpty1}{AssociationListXmpPagePatch1}
+\pastebutton{AssociationListXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{
+Data := Record(monthsOld : Integer, gender : String)\bound{Data }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch2}
+\begin{paste}{AssociationListXmpPageFull2}{AssociationListXmpPageEmpty2}
+\pastebutton{AssociationListXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{
+al : AssociationList(String,Data)\free{Data }\bound{al }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty2}
+\begin{paste}{AssociationListXmpPageEmpty2}{AssociationListXmpPagePatch2}
+\pastebutton{AssociationListXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{
+al : AssociationList(String,Data)\free{Data }\bound{al }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch3}
+\begin{paste}{AssociationListXmpPageFull3}{AssociationListXmpPageEmpty3}
+\pastebutton{AssociationListXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{al := table()\free{al }\bound{al1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  table()
+Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty3}
+\begin{paste}{AssociationListXmpPageEmpty3}{AssociationListXmpPagePatch3}
+\pastebutton{AssociationListXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{al := table()\free{al }\bound{al1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch4}
+\begin{paste}{AssociationListXmpPageFull4}{AssociationListXmpPageEmpty4}
+\pastebutton{AssociationListXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{al."bob" := [407,"male"]$Data\free{al1 }\bound{al2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [monthsOld= 407,gender= "male"]
+        Type: Record(monthsOld: Integer,gender: String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty4}
+\begin{paste}{AssociationListXmpPageEmpty4}{AssociationListXmpPagePatch4}
+\pastebutton{AssociationListXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{al."bob" := [407,"male"]$Data\free{al1 }\bound{al2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch5}
+\begin{paste}{AssociationListXmpPageFull5}{AssociationListXmpPageEmpty5}
+\pastebutton{AssociationListXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{
+al."judith" := [366,"female"]$Data\free{al2 }\bound{al3 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [monthsOld= 366,gender= "female"]
+        Type: Record(monthsOld: Integer,gender: String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty5}
+\begin{paste}{AssociationListXmpPageEmpty5}{AssociationListXmpPagePatch5}
+\pastebutton{AssociationListXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{
+al."judith" := [366,"female"]$Data\free{al2 }\bound{al3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch6}
+\begin{paste}{AssociationListXmpPageFull6}{AssociationListXmpPageEmpty6}
+\pastebutton{AssociationListXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{
+al."katie" := [24,"female"]$Data\free{al3 }\bound{al4 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [monthsOld= 24,gender= "female"]
+        Type: Record(monthsOld: Integer,gender: String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty6}
+\begin{paste}{AssociationListXmpPageEmpty6}{AssociationListXmpPagePatch6}
+\pastebutton{AssociationListXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{
+al."katie" := [24,"female"]$Data\free{al3 }\bound{al4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch7}
+\begin{paste}{AssociationListXmpPageFull7}{AssociationListXmpPageEmpty7}
+\pastebutton{AssociationListXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{
+al."smokie" := [200,"female"]$Data\free{al4 }\bound{al5 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [monthsOld= 200,gender= "female"]
+        Type: Record(monthsOld: Integer,gender: String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty7}
+\begin{paste}{AssociationListXmpPageEmpty7}{AssociationListXmpPagePatch7}
+\pastebutton{AssociationListXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{
+al."smokie" := [200,"female"]$Data\free{al4 }\bound{al5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch8}
+\begin{paste}{AssociationListXmpPageFull8}{AssociationListXmpPageEmpty8}
+\pastebutton{AssociationListXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{al\free{al5 }}
+\indentrel{3}\begin{verbatim}
+   (8)
+   table
+      "smokie"= [monthsOld= 200,gender= "female"]
+  ,
+      "katie"= [monthsOld= 24,gender= "female"]
+  ,
+      "judith"= [monthsOld= 366,gender= "female"]
+  ,
+      "bob"= [monthsOld= 407,gender= "male"]
+Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty8}
+\begin{paste}{AssociationListXmpPageEmpty8}{AssociationListXmpPagePatch8}
+\pastebutton{AssociationListXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{al\free{al5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch9}
+\begin{paste}{AssociationListXmpPageFull9}{AssociationListXmpPageEmpty9}
+\pastebutton{AssociationListXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{
+al."katie" := [23,"female"]$Data\free{al5 }\bound{al6 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [monthsOld= 23,gender= "female"]
+        Type: Record(monthsOld: Integer,gender: String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty9}
+\begin{paste}{AssociationListXmpPageEmpty9}{AssociationListXmpPagePatch9}
+\pastebutton{AssociationListXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{
+al."katie" := [23,"female"]$Data\free{al5 }\bound{al6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPagePatch10}
+\begin{paste}{AssociationListXmpPageFull10}{AssociationListXmpPageEmpty10}
+\pastebutton{AssociationListXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{delete!(al,1)\free{al6 }\bound{al7 }}
+\indentrel{3}\begin{verbatim}
+   (10)
+   table
+      "katie"= [monthsOld= 23,gender= "female"]
+  ,
+      "judith"= [monthsOld= 366,gender= "female"]
+  ,
+      "bob"= [monthsOld= 407,gender= "male"]
+Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssociationListXmpPageEmpty10}
+\begin{paste}
+{AssociationListXmpPageEmpty10}{AssociationListXmpPagePatch10}
+\pastebutton{AssociationListXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{delete!(al,1)\free{al6 }\bound{al7 }}
+\end{paste}\end{patch}
+
+
 @
 \section{array1.ht}
 \pagehead{OneDimensionalArrayXmpPage}{array1.ht}{OneDimensionalArray}
@@ -2155,15 +2342,13 @@ see \downlink{`List'}{ListXmpPage}\ignore{List}.
 <<array1.ht>>=
 \begin{page}{OneDimensionalArrayXmpPage}{OneDimensionalArray}
 \beginscroll
-The \spadtype{OneDimensionalArray} 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
-\spad{1}.
+The \spadtype{OneDimensionalArray} 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 \spad{1}.
 See also \downlink{`Vector'}{VectorXmpPage}\ignore{Vector} and 
 \downlink{`FlexibleArray'}{FlexibleArrayXmpPage}\ignore{FlexibleArray}.
 \xtc{
@@ -2222,6 +2407,170 @@ Replace the first 5 elements of \spad{a} with those of \spad{b}.
 \autobuttons
 \end{page}
 
+\begin{patch}{OneDimensionalArrayXmpPagePatch1}
+\begin{paste}{OneDimensionalArrayXmpPageFull1}
+{OneDimensionalArrayXmpPageEmpty1}
+\pastebutton{OneDimensionalArrayXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{oneDimensionalArray [i**2 for i in 1..10]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,4,9,16,25,36,49,64,81,100]
+              Type: OneDimensionalArray PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty1}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty1}
+{OneDimensionalArrayXmpPagePatch1}
+\pastebutton{OneDimensionalArrayXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{oneDimensionalArray [i**2 for i in 1..10]}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch2}
+\begin{paste}{OneDimensionalArrayXmpPageFull2}
+{OneDimensionalArrayXmpPageEmpty2}
+\pastebutton{OneDimensionalArrayXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a : ARRAY1 INT := new(10,0)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0,0,0,0,0,0,0,0,0,0]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty2}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty2}
+{OneDimensionalArrayXmpPagePatch2}
+\pastebutton{OneDimensionalArrayXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a : ARRAY1 INT := new(10,0)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch3}
+\begin{paste}{OneDimensionalArrayXmpPageFull3}
+{OneDimensionalArrayXmpPageEmpty3}
+\pastebutton{OneDimensionalArrayXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{
+for i in 1..10 repeat a.i := i; a\bound{a1 }\free{a }}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,2,3,4,5,6,7,8,9,10]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty3}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty3}
+{OneDimensionalArrayXmpPagePatch3}
+\pastebutton{OneDimensionalArrayXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{
+for i in 1..10 repeat a.i := i; a\bound{a1 }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch4}
+\begin{paste}{OneDimensionalArrayXmpPageFull4}
+{OneDimensionalArrayXmpPageEmpty4}
+\pastebutton{OneDimensionalArrayXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{map!(i +-> i ** 2,a); a\bound{a3 }\free{a2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,4,9,16,25,36,49,64,81,100]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty4}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty4}
+{OneDimensionalArrayXmpPagePatch4}
+\pastebutton{OneDimensionalArrayXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{map!(i +-> i ** 2,a); a\bound{a3 }\free{a2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch5}
+\begin{paste}{OneDimensionalArrayXmpPageFull5}
+{OneDimensionalArrayXmpPageEmpty5}
+\pastebutton{OneDimensionalArrayXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{reverse! a\bound{a4 }\free{a3 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [100,81,64,49,36,25,16,9,4,1]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty5}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty5}
+{OneDimensionalArrayXmpPagePatch5}
+\pastebutton{OneDimensionalArrayXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{reverse! a\bound{a4 }\free{a3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch6}
+\begin{paste}{OneDimensionalArrayXmpPageFull6}
+{OneDimensionalArrayXmpPageEmpty6}
+\pastebutton{OneDimensionalArrayXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{swap!(a,4,5); a\bound{a5 }\free{a4 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [100,81,64,36,49,25,16,9,4,1]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty6}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty6}
+{OneDimensionalArrayXmpPagePatch6}
+\pastebutton{OneDimensionalArrayXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{swap!(a,4,5); a\bound{a5 }\free{a4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch7}
+\begin{paste}{OneDimensionalArrayXmpPageFull7}
+{OneDimensionalArrayXmpPageEmpty7}
+\pastebutton{OneDimensionalArrayXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{sort! a\bound{a6 }\free{a5 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1,4,9,16,25,36,49,64,81,100]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty7}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty7}
+{OneDimensionalArrayXmpPagePatch7}
+\pastebutton{OneDimensionalArrayXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{sort! a\bound{a6 }\free{a5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch8}
+\begin{paste}{OneDimensionalArrayXmpPageFull8}
+{OneDimensionalArrayXmpPageEmpty8}
+\pastebutton{OneDimensionalArrayXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{b := a(6..10)\bound{b }\free{a6 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [36,49,64,81,100]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty8}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty8}
+{OneDimensionalArrayXmpPagePatch8}
+\pastebutton{OneDimensionalArrayXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{b := a(6..10)\bound{b }\free{a6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPagePatch9}
+\begin{paste}{OneDimensionalArrayXmpPageFull9}
+{OneDimensionalArrayXmpPageEmpty9}
+\pastebutton{OneDimensionalArrayXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{copyInto!(a,b,1)\free{b }}
+\indentrel{3}\begin{verbatim}
+   (9)  [36,49,64,81,100,36,49,64,81,100]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneDimensionalArrayXmpPageEmpty9}
+\begin{paste}{OneDimensionalArrayXmpPageEmpty9}
+{OneDimensionalArrayXmpPagePatch9}
+\pastebutton{OneDimensionalArrayXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{copyInto!(a,b,1)\free{b }}
+\end{paste}\end{patch}
+
 @
 \section{array2.ht}
 \pagehead{TwoDimensionalArrayXmpPage}{array2.ht}{TwoDimensionalArray}
@@ -2390,7 +2739,431 @@ For information on related topics, see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch1}
+\begin{paste}{TwoDimensionalArrayXmpPageFull1}
+{TwoDimensionalArrayXmpPageEmpty1}
+\pastebutton{TwoDimensionalArrayXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{arr : ARRAY2 INT := new(5,4,0)\bound{arr }}
+\indentrel{3}\begin{verbatim}
+        Ú0  0  0  0¿
+        ³          ³
+        ³0  0  0  0³
+        ³          ³
+   (1)  ³0  0  0  0³
+        ³          ³
+        ³0  0  0  0³
+        ³          ³
+        À0  0  0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty1}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty1}
+{TwoDimensionalArrayXmpPagePatch1}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{arr : ARRAY2 INT := new(5,4,0)\bound{arr }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch2}
+\begin{paste}{TwoDimensionalArrayXmpPageFull2}
+{TwoDimensionalArrayXmpPageEmpty2}
+\pastebutton{TwoDimensionalArrayXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{setelt(arr,1,1,17)\free{arr }\bound{arr1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  17
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty2}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty2}
+{TwoDimensionalArrayXmpPagePatch2}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{setelt(arr,1,1,17)\free{arr }\bound{arr1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch3}
+\begin{paste}{TwoDimensionalArrayXmpPageFull3}
+{TwoDimensionalArrayXmpPageEmpty3}
+\pastebutton{TwoDimensionalArrayXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{arr\free{arr1 }}
+\indentrel{3}\begin{verbatim}
+        Ú17  0  0  0¿
+        ³           ³
+        ³0   0  0  0³
+        ³           ³
+   (3)  ³0   0  0  0³
+        ³           ³
+        ³0   0  0  0³
+        ³           ³
+        À0   0  0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty3}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty3}
+{TwoDimensionalArrayXmpPagePatch3}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{arr\free{arr1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch4}
+\begin{paste}{TwoDimensionalArrayXmpPageFull4}
+{TwoDimensionalArrayXmpPageEmpty4}
+\pastebutton{TwoDimensionalArrayXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{elt(arr,1,1)\free{arr1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  17
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty4}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty4}
+{TwoDimensionalArrayXmpPagePatch4}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{elt(arr,1,1)\free{arr1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch5}
+\begin{paste}{TwoDimensionalArrayXmpPageFull5}
+{TwoDimensionalArrayXmpPageEmpty5}
+\pastebutton{TwoDimensionalArrayXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{arr(3,2) := 15\free{arr1 }\bound{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (5)  15
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty5}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty5}
+{TwoDimensionalArrayXmpPagePatch5}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{arr(3,2) := 15\free{arr1 }\bound{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch6}
+\begin{paste}{TwoDimensionalArrayXmpPageFull6}
+{TwoDimensionalArrayXmpPageEmpty6}
+\pastebutton{TwoDimensionalArrayXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{arr(3,2)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  15
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty6}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty6}
+{TwoDimensionalArrayXmpPagePatch6}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{arr(3,2)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch7}
+\begin{paste}{TwoDimensionalArrayXmpPageFull7}
+{TwoDimensionalArrayXmpPageEmpty7}
+\pastebutton{TwoDimensionalArrayXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{row(arr,1)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [17,0,0,0]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty7}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty7}
+{TwoDimensionalArrayXmpPagePatch7}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{row(arr,1)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch8}
+\begin{paste}{TwoDimensionalArrayXmpPageFull8}
+{TwoDimensionalArrayXmpPageEmpty8}
+\pastebutton{TwoDimensionalArrayXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{column(arr,1)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [17,0,0,0,0]
+                      Type: OneDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty8}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty8}
+{TwoDimensionalArrayXmpPagePatch8}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{column(arr,1)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch9}
+\begin{paste}{TwoDimensionalArrayXmpPageFull9}
+{TwoDimensionalArrayXmpPageEmpty9}
+\pastebutton{TwoDimensionalArrayXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{nrows(arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (9)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty9}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty9}
+{TwoDimensionalArrayXmpPagePatch9}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{nrows(arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch10}
+\begin{paste}{TwoDimensionalArrayXmpPageFull10}
+{TwoDimensionalArrayXmpPageEmpty10}
+\pastebutton{TwoDimensionalArrayXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{ncols(arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (10)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty10}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty10}
+{TwoDimensionalArrayXmpPagePatch10}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{ncols(arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch11}
+\begin{paste}{TwoDimensionalArrayXmpPageFull11}
+{TwoDimensionalArrayXmpPageEmpty11}
+\pastebutton{TwoDimensionalArrayXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{map(-,arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+         Ú- 17   0    0  0¿
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+   (11)  ³ 0    - 15  0  0³
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+         À 0     0    0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty11}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty11}
+{TwoDimensionalArrayXmpPagePatch11}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{map(-,arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch12}
+\begin{paste}{TwoDimensionalArrayXmpPageFull12}
+{TwoDimensionalArrayXmpPageEmpty12}
+\pastebutton{TwoDimensionalArrayXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{map((x +-> x + x),arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+         Ú34  0   0  0¿
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+   (12)  ³0   30  0  0³
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+         À0   0   0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty12}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty12}
+{TwoDimensionalArrayXmpPagePatch12}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{map((x +-> x + x),arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch13}
+\begin{paste}{TwoDimensionalArrayXmpPageFull13}
+{TwoDimensionalArrayXmpPageEmpty13}
+\pastebutton{TwoDimensionalArrayXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{arrc := copy(arr)\bound{arrc }\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+         Ú17  0   0  0¿
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+   (13)  ³0   15  0  0³
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+         À0   0   0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty13}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty13}
+{TwoDimensionalArrayXmpPagePatch13}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{arrc := copy(arr)\bound{arrc }\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch14}
+\begin{paste}{TwoDimensionalArrayXmpPageFull14}
+{TwoDimensionalArrayXmpPageEmpty14}
+\pastebutton{TwoDimensionalArrayXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{map!(-,arrc)\free{arrc }}
+\indentrel{3}\begin{verbatim}
+         Ú- 17   0    0  0¿
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+   (14)  ³ 0    - 15  0  0³
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+         À 0     0    0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty14}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty14}
+{TwoDimensionalArrayXmpPagePatch14}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{map!(-,arrc)\free{arrc }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch15}
+\begin{paste}{TwoDimensionalArrayXmpPageFull15}
+{TwoDimensionalArrayXmpPageEmpty15}
+\pastebutton{TwoDimensionalArrayXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{arrc\free{arrc }}
+\indentrel{3}\begin{verbatim}
+         Ú- 17   0    0  0¿
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+   (15)  ³ 0    - 15  0  0³
+         ³                ³
+         ³ 0     0    0  0³
+         ³                ³
+         À 0     0    0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty15}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty15}
+{TwoDimensionalArrayXmpPagePatch15}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{arrc\free{arrc }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch16}
+\begin{paste}{TwoDimensionalArrayXmpPageFull16}
+{TwoDimensionalArrayXmpPageEmpty16}
+\pastebutton{TwoDimensionalArrayXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{arr\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+         Ú17  0   0  0¿
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+   (16)  ³0   15  0  0³
+         ³            ³
+         ³0   0   0  0³
+         ³            ³
+         À0   0   0  0Ù
+                      Type: TwoDimensionalArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty16}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty16}
+{TwoDimensionalArrayXmpPagePatch16}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{arr\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch17}
+\begin{paste}{TwoDimensionalArrayXmpPageFull17}
+{TwoDimensionalArrayXmpPageEmpty17}
+\pastebutton{TwoDimensionalArrayXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{member?(17,arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (17)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty17}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty17}
+{TwoDimensionalArrayXmpPagePatch17}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{member?(17,arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch18}
+\begin{paste}{TwoDimensionalArrayXmpPageFull18}
+{TwoDimensionalArrayXmpPageEmpty18}
+\pastebutton{TwoDimensionalArrayXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{member?(10317,arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (18)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty18}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty18}
+{TwoDimensionalArrayXmpPagePatch18}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{member?(10317,arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch19}
+\begin{paste}{TwoDimensionalArrayXmpPageFull19}
+{TwoDimensionalArrayXmpPageEmpty19}
+\pastebutton{TwoDimensionalArrayXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{count(17,arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (19)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty19}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty19}
+{TwoDimensionalArrayXmpPagePatch19}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{count(17,arr)\free{arr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPagePatch20}
+\begin{paste}{TwoDimensionalArrayXmpPageFull20}
+{TwoDimensionalArrayXmpPageEmpty20}
+\pastebutton{TwoDimensionalArrayXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{count(0,arr)\free{arr2 }}
+\indentrel{3}\begin{verbatim}
+   (20)  18
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoDimensionalArrayXmpPageEmpty20}
+\begin{paste}{TwoDimensionalArrayXmpPageEmpty20}
+{TwoDimensionalArrayXmpPagePatch20}
+\pastebutton{TwoDimensionalArrayXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{count(0,arr)\free{arr2 }}
+\end{paste}\end{patch}
+
 
 @
 \section{basic.ht}
@@ -2575,6 +3348,189 @@ answer for \texht{$12^2$}{12**2}.
 \autobuttons
 \end{page}
 
+\begin{patch}{BalancedBinaryTreeXmpPagePatch1}
+\begin{paste}{BalancedBinaryTreeXmpPageFull1}
+{BalancedBinaryTreeXmpPageEmpty1}
+\pastebutton{BalancedBinaryTreeXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{lm := [3,5,7,11]\bound{lm }}
+\indentrel{3}\begin{verbatim}
+   (1)  [3,5,7,11]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty1}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty1}
+{BalancedBinaryTreeXmpPagePatch1}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{lm := [3,5,7,11]\bound{lm }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch2}
+\begin{paste}{BalancedBinaryTreeXmpPageFull2}
+{BalancedBinaryTreeXmpPageEmpty2}
+\pastebutton{BalancedBinaryTreeXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{modTree(12,lm)\free{lm }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0,2,5,1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty2}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty2}
+{BalancedBinaryTreeXmpPagePatch2}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{modTree(12,lm)\free{lm }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch3}
+\begin{paste}{BalancedBinaryTreeXmpPageFull3}
+{BalancedBinaryTreeXmpPageEmpty3}
+\pastebutton{BalancedBinaryTreeXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{
+t := balancedBinaryTree(\#lm, 0)\bound{t }\free{lm }}
+\indentrel{3}\begin{verbatim}
+   (3)  [[0,0,0],0,[0,0,0]]
+            Type: BalancedBinaryTree NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty3}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty3}
+{BalancedBinaryTreeXmpPagePatch3}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{t := balancedBinaryTree(\#lm, 0)\bound{t }\free{lm }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch4}
+\begin{paste}{BalancedBinaryTreeXmpPageFull4}
+{BalancedBinaryTreeXmpPageEmpty4}
+\pastebutton{BalancedBinaryTreeXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{setleaves!(t,lm)\bound{t1 }\free{t }}
+\indentrel{3}\begin{verbatim}
+   (4)  [[3,0,5],0,[7,0,11]]
+            Type: BalancedBinaryTree NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty4}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty4}
+{BalancedBinaryTreeXmpPagePatch4}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{setleaves!(t,lm)\bound{t1 }\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch5}
+\begin{paste}{BalancedBinaryTreeXmpPageFull5}
+{BalancedBinaryTreeXmpPageEmpty5}
+\pastebutton{BalancedBinaryTreeXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{mapUp!(t,_*)\bound{t2 }\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  1155
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty5}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty5}
+{BalancedBinaryTreeXmpPagePatch5}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{mapUp!(t,_*)\bound{t2 }\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch6}
+\begin{paste}{BalancedBinaryTreeXmpPageFull6}
+{BalancedBinaryTreeXmpPageEmpty6}
+\pastebutton{BalancedBinaryTreeXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{t\bound{t3 }\free{t2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [[3,15,5],1155,[7,77,11]]
+            Type: BalancedBinaryTree NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty6}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty6}
+{BalancedBinaryTreeXmpPagePatch6}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{t\bound{t3 }\free{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch7}
+\begin{paste}{BalancedBinaryTreeXmpPageFull7}
+{BalancedBinaryTreeXmpPageEmpty7}
+\pastebutton{BalancedBinaryTreeXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{mapDown!(t,12,_rem)\bound{t4 }\free{t3 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [[0,12,2],12,[5,12,1]]
+            Type: BalancedBinaryTree NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty7}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty7}
+{BalancedBinaryTreeXmpPagePatch7}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{mapDown!(t,12,_rem)\bound{t4 }\free{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch8}
+\begin{paste}{BalancedBinaryTreeXmpPageFull8}
+{BalancedBinaryTreeXmpPageEmpty8}
+\pastebutton{BalancedBinaryTreeXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{leaves \%\bound{t5 }\free{t4 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0,2,5,1]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty8}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty8}
+{BalancedBinaryTreeXmpPagePatch8}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{leaves \%\bound{t5 }\free{t4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch9}
+\begin{paste}{BalancedBinaryTreeXmpPageFull9}
+{BalancedBinaryTreeXmpPageEmpty9}
+\pastebutton{BalancedBinaryTreeXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{
+squares := [x**2 rem m for x in \% for m in lm]\bound{t6 }\free{t5 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [0,4,4,1]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty9}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty9}
+{BalancedBinaryTreeXmpPagePatch9}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{
+squares := [x**2 rem m for x in \% for m in lm]\bound{t6 }\free{t5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPagePatch10}
+\begin{paste}{BalancedBinaryTreeXmpPageFull10}
+{BalancedBinaryTreeXmpPageEmpty10}
+\pastebutton{BalancedBinaryTreeXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{chineseRemainder(\%,lm)\free{t6 }}
+\indentrel{3}\begin{verbatim}
+   (10)  144
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BalancedBinaryTreeXmpPageEmpty10}
+\begin{paste}{BalancedBinaryTreeXmpPageEmpty10}
+{BalancedBinaryTreeXmpPagePatch10}
+\pastebutton{BalancedBinaryTreeXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{chineseRemainder(\%,lm)\free{t6 }}
+\end{paste}\end{patch}
+
 @
 \section{binary.ht}
 \pagehead{BinaryExpansionXmpPage}{binary.ht}{BinaryExpansion}
@@ -2635,6 +3591,148 @@ These numbers are bona fide algebraic objects.
 \autobuttons
 \end{page}
 
+\begin{patch}{BinaryExpansionXmpPagePatch1}
+\begin{paste}{BinaryExpansionXmpPageFull1}{BinaryExpansionXmpPageEmpty1}
+\pastebutton{BinaryExpansionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{r := binary(22/7)\bound{r }}
+\indentrel{3}\begin{verbatim}
+           ___
+   (1)  11.001
+                                  Type: BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty1}
+\begin{paste}{BinaryExpansionXmpPageEmpty1}{BinaryExpansionXmpPagePatch1}
+\pastebutton{BinaryExpansionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{r := binary(22/7)\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch2}
+\begin{paste}{BinaryExpansionXmpPageFull2}{BinaryExpansionXmpPageEmpty2}
+\pastebutton{BinaryExpansionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{r + binary(6/7)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (2)  100
+                                  Type: BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty2}
+\begin{paste}{BinaryExpansionXmpPageEmpty2}{BinaryExpansionXmpPagePatch2}
+\pastebutton{BinaryExpansionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{r + binary(6/7)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch3}
+\begin{paste}{BinaryExpansionXmpPageFull3}{BinaryExpansionXmpPageEmpty3}
+\pastebutton{BinaryExpansionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[binary(1/i) for i in 102..106]}
+\indentrel{3}\begin{verbatim}
+   (3)
+       ________
+   [0.000000101,
+      ___________________________________________________
+    0.000000100111110001000101100101111001110010010101001,
+         ____________    ____________
+    0.000000100111011, 0.000000100111,
+
+     0.0
+       OVERBAR
+          00000100110101001000011100111110110010101101111
+            00011
+     ]
+                             Type: List BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty3}
+\begin{paste}{BinaryExpansionXmpPageEmpty3}{BinaryExpansionXmpPagePatch3}
+\pastebutton{BinaryExpansionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[binary(1/i) for i in 102..106]}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch4}
+\begin{paste}{BinaryExpansionXmpPageFull4}{BinaryExpansionXmpPageEmpty4}
+\pastebutton{BinaryExpansionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{binary(1/1007)}
+\indentrel{3}\begin{verbatim}
+   (4)
+   0.
+     OVERBAR
+        0000000001000001000101001001011110000011111100001
+          01111110010110001111101000100111001001100110001
+          10010010101011110110100110000000011000011001111
+          01110001101000101111010010001111011000010101110
+          11100111010101110011001010010111000000011100011
+          11001000000100100100110111001010100111010001101
+          11011010111000100100000110010110110000001011001
+          01111100010100000101010101101011000001101101110
+          10010101111111010111010100110010000101001101100
+          0100110001000100001000011000111010011110001
+                                  Type: BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty4}
+\begin{paste}{BinaryExpansionXmpPageEmpty4}{BinaryExpansionXmpPagePatch4}
+\pastebutton{BinaryExpansionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{binary(1/1007)}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch5}
+\begin{paste}{BinaryExpansionXmpPageFull5}{BinaryExpansionXmpPageEmpty5}
+\pastebutton{BinaryExpansionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{
+p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)\bound{p }}
+\indentrel{3}\begin{verbatim}
+             2     __      ______
+   (5)  0.01x  + 0.10x + 0.011100
+                       Type: Polynomial BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty5}
+\begin{paste}{BinaryExpansionXmpPageEmpty5}{BinaryExpansionXmpPagePatch5}
+\pastebutton{BinaryExpansionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{
+p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch6}
+\begin{paste}{BinaryExpansionXmpPageFull6}{BinaryExpansionXmpPageEmpty6}
+\pastebutton{BinaryExpansionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
+\indentrel{3}\begin{verbatim}
+                 __
+   (6)  0.1x + 0.10
+                       Type: Polynomial BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty6}
+\begin{paste}{BinaryExpansionXmpPageEmpty6}{BinaryExpansionXmpPagePatch6}
+\pastebutton{BinaryExpansionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPagePatch7}
+\begin{paste}{BinaryExpansionXmpPageFull7}{BinaryExpansionXmpPageEmpty7}
+\pastebutton{BinaryExpansionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
+\indentrel{3}\begin{verbatim}
+              __
+   (7)  x + 1.01
+                       Type: Polynomial BinaryExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinaryExpansionXmpPageEmpty7}
+\begin{paste}{BinaryExpansionXmpPageEmpty7}{BinaryExpansionXmpPagePatch7}
+\pastebutton{BinaryExpansionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
+\end{paste}\end{patch}
+
 @
 \section{bmcat.ht}
 \pagehead{BitMaps}{bmcat.ht}{Bit Map Catalog}
@@ -2845,7 +3943,309 @@ remove a property.
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{BasicOperatorXmpPagePatch1}
+\begin{paste}{BasicOperatorXmpPageFull1}{BasicOperatorXmpPageEmpty1}
+\pastebutton{BasicOperatorXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (1)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty1}
+\begin{paste}{BasicOperatorXmpPageEmpty1}{BasicOperatorXmpPagePatch1}
+\pastebutton{BasicOperatorXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch2}
+\begin{paste}{BasicOperatorXmpPageFull2}{BasicOperatorXmpPageEmpty2}
+\pastebutton{BasicOperatorXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{
+deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
+\indentrel{3}\begin{verbatim}
+         ,,       ,
+   (2)  y  (x) + y (x) + y(x)= 0
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty2}
+\begin{paste}{BasicOperatorXmpPageEmpty2}{BasicOperatorXmpPagePatch2}
+\pastebutton{BasicOperatorXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{
+deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch3}
+\begin{paste}{BasicOperatorXmpPageFull3}{BasicOperatorXmpPageEmpty3}
+\pastebutton{BasicOperatorXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [particular= 0,
+                          x     x
+                  ÚÄ¿   - Ä   - Ä      ÚÄ¿
+                x\³3      2     2    x\³3
+    basis= [cos(ÄÄÄÄÄ)%e   ,%e   sin(ÄÄÄÄÄ)]]
+                  2                    2
+Type: Union(Record(particular: Expression Integer,
+                   basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty3}
+\begin{paste}{BasicOperatorXmpPageEmpty3}{BasicOperatorXmpPagePatch3}
+\pastebutton{BasicOperatorXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch4}
+\begin{paste}{BasicOperatorXmpPageFull4}{BasicOperatorXmpPageEmpty4}
+\pastebutton{BasicOperatorXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{nary? y\free{y }}
+\indentrel{3}\begin{verbatim}
+   (4)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty4}
+\begin{paste}{BasicOperatorXmpPageEmpty4}{BasicOperatorXmpPagePatch4}
+\pastebutton{BasicOperatorXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{nary? y\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch5}
+\begin{paste}{BasicOperatorXmpPageFull5}{BasicOperatorXmpPageEmpty5}
+\pastebutton{BasicOperatorXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{unary? y\free{y }}
+\indentrel{3}\begin{verbatim}
+   (5)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty5}
+\begin{paste}{BasicOperatorXmpPageEmpty5}{BasicOperatorXmpPagePatch5}
+\pastebutton{BasicOperatorXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{unary? y\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch6}
+\begin{paste}{BasicOperatorXmpPageFull6}{BasicOperatorXmpPageEmpty6}
+\pastebutton{BasicOperatorXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{opOne := operator('opOne, 1)\bound{opOne }}
+\indentrel{3}\begin{verbatim}
+   (6)  opOne
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty6}
+\begin{paste}{BasicOperatorXmpPageEmpty6}{BasicOperatorXmpPagePatch6}
+\pastebutton{BasicOperatorXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{opOne := operator('opOne, 1)\bound{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch7}
+\begin{paste}{BasicOperatorXmpPageFull7}{BasicOperatorXmpPageEmpty7}
+\pastebutton{BasicOperatorXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{nary? opOne\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (7)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty7}
+\begin{paste}{BasicOperatorXmpPageEmpty7}{BasicOperatorXmpPagePatch7}
+\pastebutton{BasicOperatorXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{nary? opOne\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch8}
+\begin{paste}{BasicOperatorXmpPageFull8}{BasicOperatorXmpPageEmpty8}
+\pastebutton{BasicOperatorXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{unary? opOne\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (8)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty8}
+\begin{paste}{BasicOperatorXmpPageEmpty8}{BasicOperatorXmpPagePatch8}
+\pastebutton{BasicOperatorXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{unary? opOne\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch9}
+\begin{paste}{BasicOperatorXmpPageFull9}{BasicOperatorXmpPageEmpty9}
+\pastebutton{BasicOperatorXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{arity opOne\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (9)  1
+                    Type: Union(NonNegativeInteger,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty9}
+\begin{paste}{BasicOperatorXmpPageEmpty9}{BasicOperatorXmpPagePatch9}
+\pastebutton{BasicOperatorXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{arity opOne\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch10}
+\begin{paste}{BasicOperatorXmpPageFull10}{BasicOperatorXmpPageEmpty10}
+\pastebutton{BasicOperatorXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{name opOne\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (10)  opOne
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty10}
+\begin{paste}{BasicOperatorXmpPageEmpty10}{BasicOperatorXmpPagePatch10}
+\pastebutton{BasicOperatorXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{name opOne\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch11}
+\begin{paste}{BasicOperatorXmpPageFull11}{BasicOperatorXmpPageEmpty11}
+\pastebutton{BasicOperatorXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{is?(opOne, 'z2)\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (11)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty11}
+\begin{paste}{BasicOperatorXmpPageEmpty11}{BasicOperatorXmpPagePatch11}
+\pastebutton{BasicOperatorXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{is?(opOne, 'z2)\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch12}
+\begin{paste}{BasicOperatorXmpPageFull12}{BasicOperatorXmpPageEmpty12}
+\pastebutton{BasicOperatorXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{is?(opOne, "opOne")\free{opOne }}
+\indentrel{3}\begin{verbatim}
+   (12)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty12}
+\begin{paste}{BasicOperatorXmpPageEmpty12}{BasicOperatorXmpPagePatch12}
+\pastebutton{BasicOperatorXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{is?(opOne, "opOne")\free{opOne }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch13}
+\begin{paste}{BasicOperatorXmpPageFull13}{BasicOperatorXmpPageEmpty13}
+\pastebutton{BasicOperatorXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{properties y\free{y }}
+\indentrel{3}\begin{verbatim}
+   (13)  table()
+                     Type: AssociationList(String,None)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty13}
+\begin{paste}{BasicOperatorXmpPageEmpty13}{BasicOperatorXmpPagePatch13}
+\pastebutton{BasicOperatorXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{properties y\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch14}
+\begin{paste}{BasicOperatorXmpPageFull14}{BasicOperatorXmpPageEmpty14}
+\pastebutton{BasicOperatorXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{
+setProperty(y, "use", "unknown function" :: None )\free{y }\bound{spy }}
+\indentrel{3}\begin{verbatim}
+   (14)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty14}
+\begin{paste}{BasicOperatorXmpPageEmpty14}{BasicOperatorXmpPagePatch14}
+\pastebutton{BasicOperatorXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{
+setProperty(y, "use", "unknown function" :: None )\free{y }\bound{spy }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch15}
+\begin{paste}{BasicOperatorXmpPageFull15}{BasicOperatorXmpPageEmpty15}
+\pastebutton{BasicOperatorXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{properties y\free{y spy }}
+\indentrel{3}\begin{verbatim}
+   (15)  table("use"= NONE)
+                     Type: AssociationList(String,None)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty15}
+\begin{paste}{BasicOperatorXmpPageEmpty15}{BasicOperatorXmpPagePatch15}
+\pastebutton{BasicOperatorXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{properties y\free{y spy }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch16}
+\begin{paste}{BasicOperatorXmpPageFull16}{BasicOperatorXmpPageEmpty16}
+\pastebutton{BasicOperatorXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{property(y, "use") :: None pretend String\free{y spy }}
+\indentrel{3}\begin{verbatim}
+   (16)  "unknown function"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty16}
+\begin{paste}{BasicOperatorXmpPageEmpty16}{BasicOperatorXmpPagePatch16}
+\pastebutton{BasicOperatorXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{property(y, "use") :: None pretend String\free{y spy }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch17}
+\begin{paste}{BasicOperatorXmpPageFull17}{BasicOperatorXmpPageEmpty17}
+\pastebutton{BasicOperatorXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{deleteProperty!(y, "use")\free{y spy }\bound{dpy }}
+\indentrel{3}\begin{verbatim}
+   (17)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty17}
+\begin{paste}{BasicOperatorXmpPageEmpty17}{BasicOperatorXmpPagePatch17}
+\pastebutton{BasicOperatorXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{deleteProperty!(y, "use")\free{y spy }\bound{dpy }}
+\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPagePatch18}
+\begin{paste}{BasicOperatorXmpPageFull18}{BasicOperatorXmpPageEmpty18}
+\pastebutton{BasicOperatorXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{properties y\free{dpy }}
+\indentrel{3}\begin{verbatim}
+   (18)  table()
+                     Type: AssociationList(String,None)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BasicOperatorXmpPageEmpty18}
+\begin{paste}{BasicOperatorXmpPageEmpty18}{BasicOperatorXmpPagePatch18}
+\pastebutton{BasicOperatorXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{properties y\free{dpy }}
+\end{paste}\end{patch}
+
+
 @
 \section{bstree.ht}
 \pagehead{BinarySearchTreeXmpPage}{bstree.ht}{BinarySearchTree}
@@ -2946,6 +4346,210 @@ Have Axiom check that these are equal.
 \autobuttons
 \end{page}
 
+\begin{patch}{BinarySearchTreeXmpPagePatch1}
+\begin{paste}{BinarySearchTreeXmpPageFull1}{BinarySearchTreeXmpPageEmpty1}
+\pastebutton{BinarySearchTreeXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{lv := [8,3,5,4,6,2,1,5,7]\bound{lv }}
+\indentrel{3}\begin{verbatim}
+   (1)  [8,3,5,4,6,2,1,5,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty1}
+\begin{paste}{BinarySearchTreeXmpPageEmpty1}{BinarySearchTreeXmpPagePatch1}
+\pastebutton{BinarySearchTreeXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{lv := [8,3,5,4,6,2,1,5,7]\bound{lv }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch2}
+\begin{paste}{BinarySearchTreeXmpPageFull2}{BinarySearchTreeXmpPageEmpty2}
+\pastebutton{BinarySearchTreeXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t := binarySearchTree lv\free{lv }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (2)  [[[1,2,.],3,[4,5,[5,6,7]]],8,.]
+                 Type: BinarySearchTree PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty2}
+\begin{paste}{BinarySearchTreeXmpPageEmpty2}{BinarySearchTreeXmpPagePatch2}
+\pastebutton{BinarySearchTreeXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t := binarySearchTree lv\free{lv }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch3}
+\begin{paste}{BinarySearchTreeXmpPageFull3}{BinarySearchTreeXmpPageEmpty3}
+\pastebutton{BinarySearchTreeXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{emptybst := empty()$BSTREE(INT)\bound{e }}
+\indentrel{3}\begin{verbatim}
+   (3)  []
+                         Type: BinarySearchTree Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty3}
+\begin{paste}{BinarySearchTreeXmpPageEmpty3}{BinarySearchTreeXmpPagePatch3}
+\pastebutton{BinarySearchTreeXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{emptybst := empty()$BSTREE(INT)\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch4}
+\begin{paste}{BinarySearchTreeXmpPageFull4}{BinarySearchTreeXmpPageEmpty4}
+\pastebutton{BinarySearchTreeXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{t1 := insert!(8,emptybst)\free{e }\bound{t1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  8
+                         Type: BinarySearchTree Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty4}
+\begin{paste}{BinarySearchTreeXmpPageEmpty4}{BinarySearchTreeXmpPagePatch4}
+\pastebutton{BinarySearchTreeXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{t1 := insert!(8,emptybst)\free{e }\bound{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch5}
+\begin{paste}{BinarySearchTreeXmpPageFull5}{BinarySearchTreeXmpPageEmpty5}
+\pastebutton{BinarySearchTreeXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{insert!(3,t1)\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [3,8,.]
+                         Type: BinarySearchTree Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty5}
+\begin{paste}{BinarySearchTreeXmpPageEmpty5}{BinarySearchTreeXmpPagePatch5}
+\pastebutton{BinarySearchTreeXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{insert!(3,t1)\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch6}
+\begin{paste}{BinarySearchTreeXmpPageFull6}{BinarySearchTreeXmpPageEmpty6}
+\pastebutton{BinarySearchTreeXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{leaves t\free{t }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,4,5,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty6}
+\begin{paste}{BinarySearchTreeXmpPageEmpty6}{BinarySearchTreeXmpPagePatch6}
+\pastebutton{BinarySearchTreeXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{leaves t\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch7}
+\begin{paste}{BinarySearchTreeXmpPageFull7}{BinarySearchTreeXmpPageEmpty7}
+\pastebutton{BinarySearchTreeXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{split(3,t)\free{t }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [less= [1,2,.],greater= [[.,3,[4,5,[5,6,7]]],8,.]]
+Type: Record(less: BinarySearchTree PositiveInteger,
+             greater: BinarySearchTree PositiveInteger)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty7}
+\begin{paste}{BinarySearchTreeXmpPageEmpty7}{BinarySearchTreeXmpPagePatch7}
+\pastebutton{BinarySearchTreeXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{split(3,t)\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch8}
+\begin{paste}{BinarySearchTreeXmpPageFull8}{BinarySearchTreeXmpPageEmpty8}
+\pastebutton{BinarySearchTreeXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{insertRoot: (INT,BSTREE INT) -> BSTREE INT\bound{x }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty8}
+\begin{paste}{BinarySearchTreeXmpPageEmpty8}{BinarySearchTreeXmpPagePatch8}
+\pastebutton{BinarySearchTreeXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{insertRoot: (INT,BSTREE INT) -> BSTREE INT\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch9}
+\begin{paste}{BinarySearchTreeXmpPageFull9}{BinarySearchTreeXmpPageEmpty9}
+\pastebutton{BinarySearchTreeXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{insertRoot(x, t) ==
+    a := split(x, t)
+    node(a.less, x, a.greater)
+\bound{x1 }\free{x }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty9}
+\begin{paste}{BinarySearchTreeXmpPageEmpty9}{BinarySearchTreeXmpPagePatch9}
+\pastebutton{BinarySearchTreeXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{insertRoot(x, t) ==
+    a := split(x, t)
+    node(a.less, x, a.greater)
+\bound{x1 }\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch10}
+\begin{paste}{BinarySearchTreeXmpPageFull10}{BinarySearchTreeXmpPageEmpty10}
+\pastebutton{BinarySearchTreeXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{
+buildFromRoot ls == reduce(insertRoot,ls,emptybst)\bound{x2 }\free{x1 e }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty10}
+\begin{paste}{BinarySearchTreeXmpPageEmpty10}
+{BinarySearchTreeXmpPagePatch10}
+\pastebutton{BinarySearchTreeXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{
+buildFromRoot ls == reduce(insertRoot,ls,emptybst)\bound{x2 }\free{x1 e }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch11}
+\begin{paste}{BinarySearchTreeXmpPageFull11}
+{BinarySearchTreeXmpPageEmpty11}
+\pastebutton{BinarySearchTreeXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{rt := buildFromRoot reverse lv\bound{rt }\free{lv x2 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [[[1,2,.],3,[4,5,[5,6,7]]],8,.]
+                         Type: BinarySearchTree Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty11}
+\begin{paste}{BinarySearchTreeXmpPageEmpty11}
+{BinarySearchTreeXmpPagePatch11}
+\pastebutton{BinarySearchTreeXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{rt := buildFromRoot reverse lv\bound{rt }\free{lv x2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPagePatch12}
+\begin{paste}{BinarySearchTreeXmpPageFull12}
+{BinarySearchTreeXmpPageEmpty12}
+\pastebutton{BinarySearchTreeXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{(t = rt)@Boolean\free{rt t }}
+\indentrel{3}\begin{verbatim}
+   (12)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{BinarySearchTreeXmpPageEmpty12}
+\begin{paste}{BinarySearchTreeXmpPageEmpty12}
+{BinarySearchTreeXmpPagePatch12}
+\pastebutton{BinarySearchTreeXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{(t = rt)@Boolean\free{rt t }}
+\end{paste}\end{patch}
+
 @
 \section{card.ht}
 \pagehead{CardinalNumberXmpPage}{card.ht}{CardinalNumber}
@@ -2963,8 +4567,8 @@ The non-negative integers have a natural construction as cardinals
 \begin{verbatim}
 0 = #{ }, 1 = {0}, 2 = {0, 1}, ..., n = {i | 0 <= i < n}.
 \end{verbatim}
-The fact that \spad{0} acts as a zero for the multiplication of cardinals is
-equivalent to the axiom of choice.
+The fact that \spad{0} acts as a zero for the multiplication of 
+cardinals is equivalent to the axiom of choice.
 
 \xtc{
 Cardinal numbers can be created by conversion from non-negative integers.
@@ -2993,8 +4597,8 @@ They can also be obtained as the named cardinal \spad{Aleph(n)}.
 \spadpaste{A1 := Aleph 1 \bound{A1}}
 }
 \xtc{
-The \spadfunFrom{finite?}{CardinalNumber} operation tests whether a value is a
-finite cardinal, that is, a non-negative integer.
+The \spadfunFrom{finite?}{CardinalNumber} operation tests whether a 
+value is a finite cardinal, that is, a non-negative integer.
 }{
 \spadpaste{finite? c2 \free{c2}}
 }
@@ -3099,6 +4703,337 @@ generalized continuum hypothesis in this way.
 \autobuttons
 \end{page}
 
+\begin{patch}{CardinalNumberXmpPagePatch1}
+\begin{paste}{CardinalNumberXmpPageFull1}{CardinalNumberXmpPageEmpty1}
+\pastebutton{CardinalNumberXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{c0 := 0 :: CardinalNumber\bound{c0 }}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty1}
+\begin{paste}{CardinalNumberXmpPageEmpty1}{CardinalNumberXmpPagePatch1}
+\pastebutton{CardinalNumberXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{c0 := 0 :: CardinalNumber\bound{c0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch2}
+\begin{paste}{CardinalNumberXmpPageFull2}{CardinalNumberXmpPageEmpty2}
+\pastebutton{CardinalNumberXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{c1 := 1 :: CardinalNumber\bound{c1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  1
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty2}
+\begin{paste}{CardinalNumberXmpPageEmpty2}{CardinalNumberXmpPagePatch2}
+\pastebutton{CardinalNumberXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{c1 := 1 :: CardinalNumber\bound{c1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch3}
+\begin{paste}{CardinalNumberXmpPageFull3}{CardinalNumberXmpPageEmpty3}
+\pastebutton{CardinalNumberXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{c2 := 2 :: CardinalNumber\bound{c2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  2
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty3}
+\begin{paste}{CardinalNumberXmpPageEmpty3}{CardinalNumberXmpPagePatch3}
+\pastebutton{CardinalNumberXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{c2 := 2 :: CardinalNumber\bound{c2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch4}
+\begin{paste}{CardinalNumberXmpPageFull4}{CardinalNumberXmpPageEmpty4}
+\pastebutton{CardinalNumberXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{c3 := 3 :: CardinalNumber\bound{c3 }}
+\indentrel{3}\begin{verbatim}
+   (4)  3
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty4}
+\begin{paste}{CardinalNumberXmpPageEmpty4}{CardinalNumberXmpPagePatch4}
+\pastebutton{CardinalNumberXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{c3 := 3 :: CardinalNumber\bound{c3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch5}
+\begin{paste}{CardinalNumberXmpPageFull5}{CardinalNumberXmpPageEmpty5}
+\pastebutton{CardinalNumberXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{A0 := Aleph 0\bound{A0 }}
+\indentrel{3}\begin{verbatim}
+   (5)  Aleph(0)
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty5}
+\begin{paste}{CardinalNumberXmpPageEmpty5}{CardinalNumberXmpPagePatch5}
+\pastebutton{CardinalNumberXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{A0 := Aleph 0\bound{A0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch6}
+\begin{paste}{CardinalNumberXmpPageFull6}{CardinalNumberXmpPageEmpty6}
+\pastebutton{CardinalNumberXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{A1 := Aleph 1\bound{A1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  Aleph(1)
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty6}
+\begin{paste}{CardinalNumberXmpPageEmpty6}{CardinalNumberXmpPagePatch6}
+\pastebutton{CardinalNumberXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{A1 := Aleph 1\bound{A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch7}
+\begin{paste}{CardinalNumberXmpPageFull7}{CardinalNumberXmpPageEmpty7}
+\pastebutton{CardinalNumberXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{finite? c2\free{c2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty7}
+\begin{paste}{CardinalNumberXmpPageEmpty7}{CardinalNumberXmpPagePatch7}
+\pastebutton{CardinalNumberXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{finite? c2\free{c2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch8}
+\begin{paste}{CardinalNumberXmpPageFull8}{CardinalNumberXmpPageEmpty8}
+\pastebutton{CardinalNumberXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{finite? A0\free{A0 }}
+\indentrel{3}\begin{verbatim}
+   (8)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty8}
+\begin{paste}{CardinalNumberXmpPageEmpty8}{CardinalNumberXmpPagePatch8}
+\pastebutton{CardinalNumberXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{finite? A0\free{A0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch9}
+\begin{paste}{CardinalNumberXmpPageFull9}{CardinalNumberXmpPageEmpty9}
+\pastebutton{CardinalNumberXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{countable? c2\free{c2 }}
+\indentrel{3}\begin{verbatim}
+   (9)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty9}
+\begin{paste}{CardinalNumberXmpPageEmpty9}{CardinalNumberXmpPagePatch9}
+\pastebutton{CardinalNumberXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{countable? c2\free{c2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch10}
+\begin{paste}{CardinalNumberXmpPageFull10}{CardinalNumberXmpPageEmpty10}
+\pastebutton{CardinalNumberXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{countable? A0\free{A0 }}
+\indentrel{3}\begin{verbatim}
+   (10)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty10}
+\begin{paste}{CardinalNumberXmpPageEmpty10}{CardinalNumberXmpPagePatch10}
+\pastebutton{CardinalNumberXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{countable? A0\free{A0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch11}
+\begin{paste}{CardinalNumberXmpPageFull11}{CardinalNumberXmpPageEmpty11}
+\pastebutton{CardinalNumberXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{countable? A1\free{A1 }}
+\indentrel{3}\begin{verbatim}
+   (11)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty11}
+\begin{paste}{CardinalNumberXmpPageEmpty11}{CardinalNumberXmpPagePatch11}
+\pastebutton{CardinalNumberXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{countable? A1\free{A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch12}
+\begin{paste}{CardinalNumberXmpPageFull12}{CardinalNumberXmpPageEmpty12}
+\pastebutton{CardinalNumberXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{[c2 + c2, c2 + A1]\free{c2 A1 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [4,Aleph(1)]
+                              Type: List CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty12}
+\begin{paste}{CardinalNumberXmpPageEmpty12}{CardinalNumberXmpPagePatch12}
+\pastebutton{CardinalNumberXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{[c2 + c2, c2 + A1]\free{c2 A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch13}
+\begin{paste}{CardinalNumberXmpPageFull13}{CardinalNumberXmpPageEmpty13}
+\pastebutton{CardinalNumberXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{
+[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]\free{c0 c1 c2 A0 A1 }}
+\indentrel{3}\begin{verbatim}
+   (13)  [0,2,4,0,Aleph(1),Aleph(1),Aleph(1)]
+                              Type: List CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty13}
+\begin{paste}{CardinalNumberXmpPageEmpty13}{CardinalNumberXmpPagePatch13}
+\pastebutton{CardinalNumberXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{
+[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]\free{c0 c1 c2 A0 A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch14}
+\begin{paste}{CardinalNumberXmpPageFull14}{CardinalNumberXmpPageEmpty14}
+\pastebutton{CardinalNumberXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{
+[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]\free{c0 c1 c2 A1 }}
+\indentrel{3}\begin{verbatim}
+   (14)  [1,2,4,1,Aleph(1),Aleph(1)]
+                              Type: List CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty14}
+\begin{paste}{CardinalNumberXmpPageEmpty14}{CardinalNumberXmpPagePatch14}
+\pastebutton{CardinalNumberXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{
+[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]\free{c0 c1 c2 A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch15}
+\begin{paste}{CardinalNumberXmpPageFull15}{CardinalNumberXmpPageEmpty15}
+\pastebutton{CardinalNumberXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{
+[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]\free{c1 c2 c3 A0 A1 }}
+\indentrel{3}\begin{verbatim}
+   (15)  [1,0,"failed",Aleph(1),Aleph(1),"failed"]
+              Type: List Union(CardinalNumber,"failed")
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty15}
+\begin{paste}{CardinalNumberXmpPageEmpty15}{CardinalNumberXmpPagePatch15}
+\pastebutton{CardinalNumberXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{
+[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]\free{c1 c2 c3 A0 A1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch16}
+\begin{paste}{CardinalNumberXmpPageFull16}{CardinalNumberXmpPageEmpty16}
+\pastebutton{CardinalNumberXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{generalizedContinuumHypothesisAssumed true\bound{GCH }}
+\indentrel{3}\begin{verbatim}
+   (16)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty16}
+\begin{paste}{CardinalNumberXmpPageEmpty16}{CardinalNumberXmpPagePatch16}
+\pastebutton{CardinalNumberXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{generalizedContinuumHypothesisAssumed true\bound{GCH }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch17}
+\begin{paste}{CardinalNumberXmpPageFull17}{CardinalNumberXmpPageEmpty17}
+\pastebutton{CardinalNumberXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{
+[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]
+\free{c0 c1 c2 A0 A1 GCH }}
+\indentrel{3}\begin{verbatim}
+   (17)
+   [0,1,Aleph(1),Aleph(1),Aleph(2),Aleph(1),Aleph(2)]
+                              Type: List CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty17}
+\begin{paste}{CardinalNumberXmpPageEmpty17}{CardinalNumberXmpPagePatch17}
+\pastebutton{CardinalNumberXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{
+[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]
+\free{c0 c1 c2 A0 A1 GCH }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch18}
+\begin{paste}{CardinalNumberXmpPageFull18}{CardinalNumberXmpPageEmpty18}
+\pastebutton{CardinalNumberXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{a := Aleph 0\free{GCH }\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (18)  Aleph(0)
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty18}
+\begin{paste}{CardinalNumberXmpPageEmpty18}{CardinalNumberXmpPagePatch18}
+\pastebutton{CardinalNumberXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{a := Aleph 0\free{GCH }\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch19}
+\begin{paste}{CardinalNumberXmpPageFull19}{CardinalNumberXmpPageEmpty19}
+\pastebutton{CardinalNumberXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{c := 2**a\free{a }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (19)  Aleph(1)
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty19}
+\begin{paste}{CardinalNumberXmpPageEmpty19}{CardinalNumberXmpPagePatch19}
+\pastebutton{CardinalNumberXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{c := 2**a\free{a }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPagePatch20}
+\begin{paste}{CardinalNumberXmpPageFull20}{CardinalNumberXmpPageEmpty20}
+\pastebutton{CardinalNumberXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{f := 2**c\free{c }\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (20)  Aleph(2)
+                                   Type: CardinalNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CardinalNumberXmpPageEmpty20}
+\begin{paste}{CardinalNumberXmpPageEmpty20}{CardinalNumberXmpPagePatch20}
+\pastebutton{CardinalNumberXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{f := 2**c\free{c }\bound{f }}
+\end{paste}\end{patch}
+
 @
 \section{carten.ht}
 \pagehead{CartesianTensorXmpPage}{carten.ht}{CartesianTensor}
@@ -3495,21 +5430,886 @@ the degree \spad{k} module is \spad{T[k](V)}.
 %\head{subsection}{Tensor Calculus}{ugxCartenCalculus}
 
 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 \spadtype{CartesianTensor}
-domain than it is by the \spadtype{Vector} 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.
+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 \spadtype{CartesianTensor} domain
+than it is by the \spadtype{Vector} 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.
 \endscroll
 \autobuttons
 \end{page}
 
+\begin{patch}{CartesianTensorXmpPagePatch1}
+\begin{paste}{CartesianTensorXmpPageFull1}{CartesianTensorXmpPageEmpty1}
+\pastebutton{CartesianTensorXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{CT := CARTEN(i0 := 1, 2, Integer)\bound{CT i0 }}
+\indentrel{3}\begin{verbatim}
+   (1)  CartesianTensor(1,2,Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty1}
+\begin{paste}{CartesianTensorXmpPageEmpty1}{CartesianTensorXmpPagePatch1}
+\pastebutton{CartesianTensorXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{CT := CARTEN(i0 := 1, 2, Integer)\bound{CT i0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch2}
+\begin{paste}{CartesianTensorXmpPageFull2}{CartesianTensorXmpPageEmpty2}
+\pastebutton{CartesianTensorXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t0: CT := 8\free{CT }\bound{t0 }}
+\indentrel{3}\begin{verbatim}
+   (2)  8
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty2}
+\begin{paste}{CartesianTensorXmpPageEmpty2}{CartesianTensorXmpPagePatch2}
+\pastebutton{CartesianTensorXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t0: CT := 8\free{CT }\bound{t0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch3}
+\begin{paste}{CartesianTensorXmpPageFull3}{CartesianTensorXmpPageEmpty3}
+\pastebutton{CartesianTensorXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{rank t0\free{t0 }}
+\indentrel{3}\begin{verbatim}
+   (3)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty3}
+\begin{paste}{CartesianTensorXmpPageEmpty3}{CartesianTensorXmpPagePatch3}
+\pastebutton{CartesianTensorXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{rank t0\free{t0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch4}
+\begin{paste}{CartesianTensorXmpPageFull4}{CartesianTensorXmpPageEmpty4}
+\pastebutton{CartesianTensorXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{
+v: DirectProduct(2, Integer) := directProduct [3,4]\bound{v }}
+\indentrel{3}\begin{verbatim}
+   (4)  [3,4]
+                         Type: DirectProduct(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty4}
+\begin{paste}{CartesianTensorXmpPageEmpty4}{CartesianTensorXmpPagePatch4}
+\pastebutton{CartesianTensorXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{
+v: DirectProduct(2, Integer) := directProduct [3,4]\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch5}
+\begin{paste}{CartesianTensorXmpPageFull5}{CartesianTensorXmpPageEmpty5}
+\pastebutton{CartesianTensorXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{Tv: CT := v\free{v CT }\bound{Tv }}
+\indentrel{3}\begin{verbatim}
+   (5)  [3,4]
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty5}
+\begin{paste}{CartesianTensorXmpPageEmpty5}{CartesianTensorXmpPagePatch5}
+\pastebutton{CartesianTensorXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{Tv: CT := v\free{v CT }\bound{Tv }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch6}
+\begin{paste}{CartesianTensorXmpPageFull6}{CartesianTensorXmpPageEmpty6}
+\pastebutton{CartesianTensorXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{
+m: SquareMatrix(2, Integer) := matrix [[1,2],[4,5]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (6)  ³    ³
+        À4  5Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty6}
+\begin{paste}{CartesianTensorXmpPageEmpty6}{CartesianTensorXmpPagePatch6}
+\pastebutton{CartesianTensorXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{
+m: SquareMatrix(2, Integer) := matrix [[1,2],[4,5]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch7}
+\begin{paste}{CartesianTensorXmpPageFull7}{CartesianTensorXmpPageEmpty7}
+\pastebutton{CartesianTensorXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{Tm: CT := m\bound{Tm }\free{CT m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (7)  ³    ³
+        À4  5Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty7}
+\begin{paste}{CartesianTensorXmpPageEmpty7}{CartesianTensorXmpPagePatch7}
+\pastebutton{CartesianTensorXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{Tm: CT := m\bound{Tm }\free{CT m }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch8}
+\begin{paste}{CartesianTensorXmpPageFull8}{CartesianTensorXmpPageEmpty8}
+\pastebutton{CartesianTensorXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{
+n: SquareMatrix(2, Integer) := matrix [[2,3],[0,1]]\bound{n }}
+\indentrel{3}\begin{verbatim}
+        Ú2  3¿
+   (8)  ³    ³
+        À0  1Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty8}
+\begin{paste}{CartesianTensorXmpPageEmpty8}{CartesianTensorXmpPagePatch8}
+\pastebutton{CartesianTensorXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{
+n: SquareMatrix(2, Integer) := matrix [[2,3],[0,1]]\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch9}
+\begin{paste}{CartesianTensorXmpPageFull9}{CartesianTensorXmpPageEmpty9}
+\pastebutton{CartesianTensorXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{Tn: CT := n\bound{Tn }\free{CT n }}
+\indentrel{3}\begin{verbatim}
+        Ú2  3¿
+   (9)  ³    ³
+        À0  1Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty9}
+\begin{paste}{CartesianTensorXmpPageEmpty9}{CartesianTensorXmpPagePatch9}
+\pastebutton{CartesianTensorXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{Tn: CT := n\bound{Tn }\free{CT n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch10}
+\begin{paste}{CartesianTensorXmpPageFull10}{CartesianTensorXmpPageEmpty10}
+\pastebutton{CartesianTensorXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{t1: CT := [2, 3]\free{CT }\bound{t1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [2,3]
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty10}
+\begin{paste}{CartesianTensorXmpPageEmpty10}{CartesianTensorXmpPagePatch10}
+\pastebutton{CartesianTensorXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{t1: CT := [2, 3]\free{CT }\bound{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch11}
+\begin{paste}{CartesianTensorXmpPageFull11}{CartesianTensorXmpPageEmpty11}
+\pastebutton{CartesianTensorXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{rank t1\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (11)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty11}
+\begin{paste}{CartesianTensorXmpPageEmpty11}{CartesianTensorXmpPagePatch11}
+\pastebutton{CartesianTensorXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{rank t1\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch12}
+\begin{paste}{CartesianTensorXmpPageFull12}{CartesianTensorXmpPageEmpty12}
+\pastebutton{CartesianTensorXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{t2: CT := [t1, t1]\free{CT t1 }\bound{t2 }}
+\indentrel{3}\begin{verbatim}
+         Ú2  3¿
+   (12)  ³    ³
+         À2  3Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty12}
+\begin{paste}{CartesianTensorXmpPageEmpty12}{CartesianTensorXmpPagePatch12}
+\pastebutton{CartesianTensorXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{t2: CT := [t1, t1]\free{CT t1 }\bound{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch13}
+\begin{paste}{CartesianTensorXmpPageFull13}{CartesianTensorXmpPageEmpty13}
+\pastebutton{CartesianTensorXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{t3: CT := [t2, t2]\free{CT t2 }\bound{t3 }}
+\indentrel{3}\begin{verbatim}
+          Ú2  3¿ Ú2  3¿
+   (13)  [³    ³,³    ³]
+          À2  3Ù À2  3Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty13}
+\begin{paste}{CartesianTensorXmpPageEmpty13}{CartesianTensorXmpPagePatch13}
+\pastebutton{CartesianTensorXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{t3: CT := [t2, t2]\free{CT t2 }\bound{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch14}
+\begin{paste}{CartesianTensorXmpPageFull14}{CartesianTensorXmpPageEmpty14}
+\pastebutton{CartesianTensorXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{
+tt: CT := [t3, t3]; tt := [tt, tt]\free{CT t3 }\bound{tt }}
+\indentrel{3}\begin{verbatim}
+          ÚÚ2  3¿  Ú2  3¿¿ ÚÚ2  3¿  Ú2  3¿¿
+          ³³    ³  ³    ³³ ³³    ³  ³    ³³
+          ³À2  3Ù  À2  3Ù³ ³À2  3Ù  À2  3Ù³
+   (14)  [³              ³,³              ³]
+          ³Ú2  3¿  Ú2  3¿³ ³Ú2  3¿  Ú2  3¿³
+          ³³    ³  ³    ³³ ³³    ³  ³    ³³
+          ÀÀ2  3Ù  À2  3ÙÙ ÀÀ2  3Ù  À2  3ÙÙ
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty14}
+\begin{paste}{CartesianTensorXmpPageEmpty14}{CartesianTensorXmpPagePatch14}
+\pastebutton{CartesianTensorXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{
+tt: CT := [t3, t3]; tt := [tt, tt]\free{CT t3 }\bound{tt }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch15}
+\begin{paste}{CartesianTensorXmpPageFull15}{CartesianTensorXmpPageEmpty15}
+\pastebutton{CartesianTensorXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{rank tt\free{tt }}
+\indentrel{3}\begin{verbatim}
+   (15)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty15}
+\begin{paste}{CartesianTensorXmpPageEmpty15}{CartesianTensorXmpPagePatch15}
+\pastebutton{CartesianTensorXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{rank tt\free{tt }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch16}
+\begin{paste}{CartesianTensorXmpPageFull16}{CartesianTensorXmpPageEmpty16}
+\pastebutton{CartesianTensorXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{Tmn := product(Tm, Tn)\free{Tm Tn }\bound{Tmn }}
+\indentrel{3}\begin{verbatim}
+         ÚÚ2  3¿    Ú4  6¿ ¿
+         ³³    ³    ³    ³ ³
+         ³À0  1Ù    À0  2Ù ³
+   (16)  ³                 ³
+         ³Ú8  12¿  Ú10  15¿³
+         ³³     ³  ³      ³³
+         ÀÀ0  4 Ù  À0   5 ÙÙ
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty16}
+\begin{paste}{CartesianTensorXmpPageEmpty16}{CartesianTensorXmpPagePatch16}
+\pastebutton{CartesianTensorXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{Tmn := product(Tm, Tn)\free{Tm Tn }\bound{Tmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch17}
+\begin{paste}{CartesianTensorXmpPageFull17}{CartesianTensorXmpPageEmpty17}
+\pastebutton{CartesianTensorXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{Tmv := contract(Tm,2,Tv,1)\free{Tm Tv }\bound{Tmv }}
+\indentrel{3}\begin{verbatim}
+   (17)  [11,32]
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty17}
+\begin{paste}{CartesianTensorXmpPageEmpty17}{CartesianTensorXmpPagePatch17}
+\pastebutton{CartesianTensorXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{Tmv := contract(Tm,2,Tv,1)\free{Tm Tv }\bound{Tmv }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch18}
+\begin{paste}{CartesianTensorXmpPageFull18}{CartesianTensorXmpPageEmpty18}
+\pastebutton{CartesianTensorXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{Tm*Tv\free{Tm Tv }}
+\indentrel{3}\begin{verbatim}
+   (18)  [11,32]
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty18}
+\begin{paste}{CartesianTensorXmpPageEmpty18}{CartesianTensorXmpPagePatch18}
+\pastebutton{CartesianTensorXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{Tm*Tv\free{Tm Tv }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch19}
+\begin{paste}{CartesianTensorXmpPageFull19}{CartesianTensorXmpPageEmpty19}
+\pastebutton{CartesianTensorXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{Tmv = m * v\free{Tmv m v }}
+\indentrel{3}\begin{verbatim}
+   (19)  [11,32]= [11,32]
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty19}
+\begin{paste}{CartesianTensorXmpPageEmpty19}{CartesianTensorXmpPagePatch19}
+\pastebutton{CartesianTensorXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{Tmv = m * v\free{Tmv m v }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch20}
+\begin{paste}{CartesianTensorXmpPageFull20}{CartesianTensorXmpPageEmpty20}
+\pastebutton{CartesianTensorXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{t0()\free{t0 }}
+\indentrel{3}\begin{verbatim}
+   (20)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty20}
+\begin{paste}{CartesianTensorXmpPageEmpty20}{CartesianTensorXmpPagePatch20}
+\pastebutton{CartesianTensorXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{t0()\free{t0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch21}
+\begin{paste}{CartesianTensorXmpPageFull21}{CartesianTensorXmpPageEmpty21}
+\pastebutton{CartesianTensorXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{t1(1+1)\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (21)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty21}
+\begin{paste}{CartesianTensorXmpPageEmpty21}{CartesianTensorXmpPagePatch21}
+\pastebutton{CartesianTensorXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{t1(1+1)\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch22}
+\begin{paste}{CartesianTensorXmpPageFull22}{CartesianTensorXmpPageEmpty22}
+\pastebutton{CartesianTensorXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{t2(2,1)\free{t2 }}
+\indentrel{3}\begin{verbatim}
+   (22)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty22}
+\begin{paste}{CartesianTensorXmpPageEmpty22}{CartesianTensorXmpPagePatch22}
+\pastebutton{CartesianTensorXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{t2(2,1)\free{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch23}
+\begin{paste}{CartesianTensorXmpPageFull23}{CartesianTensorXmpPageEmpty23}
+\pastebutton{CartesianTensorXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{t3(2,1,2)\free{t3 }}
+\indentrel{3}\begin{verbatim}
+   (23)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty23}
+\begin{paste}{CartesianTensorXmpPageEmpty23}{CartesianTensorXmpPagePatch23}
+\pastebutton{CartesianTensorXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{t3(2,1,2)\free{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch24}
+\begin{paste}{CartesianTensorXmpPageFull24}{CartesianTensorXmpPageEmpty24}
+\pastebutton{CartesianTensorXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{Tmn(2,1,2,1)\free{Tmn }}
+\indentrel{3}\begin{verbatim}
+   (24)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty24}
+\begin{paste}{CartesianTensorXmpPageEmpty24}{CartesianTensorXmpPagePatch24}
+\pastebutton{CartesianTensorXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{Tmn(2,1,2,1)\free{Tmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch25}
+\begin{paste}{CartesianTensorXmpPageFull25}{CartesianTensorXmpPageEmpty25}
+\pastebutton{CartesianTensorXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{t0[]\free{t0 }}
+\indentrel{3}\begin{verbatim}
+   (25)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty25}
+\begin{paste}{CartesianTensorXmpPageEmpty25}{CartesianTensorXmpPagePatch25}
+\pastebutton{CartesianTensorXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{t0[]\free{t0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch26}
+\begin{paste}{CartesianTensorXmpPageFull26}{CartesianTensorXmpPageEmpty26}
+\pastebutton{CartesianTensorXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{t1[2]\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (26)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty26}
+\begin{paste}{CartesianTensorXmpPageEmpty26}{CartesianTensorXmpPagePatch26}
+\pastebutton{CartesianTensorXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{t1[2]\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch27}
+\begin{paste}{CartesianTensorXmpPageFull27}{CartesianTensorXmpPageEmpty27}
+\pastebutton{CartesianTensorXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{t2[2,1]\free{t2 }}
+\indentrel{3}\begin{verbatim}
+   (27)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty27}
+\begin{paste}{CartesianTensorXmpPageEmpty27}{CartesianTensorXmpPagePatch27}
+\pastebutton{CartesianTensorXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{t2[2,1]\free{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch28}
+\begin{paste}{CartesianTensorXmpPageFull28}{CartesianTensorXmpPageEmpty28}
+\pastebutton{CartesianTensorXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{t3[2,1,2]\free{t3 }}
+\indentrel{3}\begin{verbatim}
+   (28)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty28}
+\begin{paste}{CartesianTensorXmpPageEmpty28}{CartesianTensorXmpPagePatch28}
+\pastebutton{CartesianTensorXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{t3[2,1,2]\free{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch29}
+\begin{paste}{CartesianTensorXmpPageFull29}{CartesianTensorXmpPageEmpty29}
+\pastebutton{CartesianTensorXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{Tmn[2,1,2,1]\free{Tmn }}
+\indentrel{3}\begin{verbatim}
+   (29)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty29}
+\begin{paste}{CartesianTensorXmpPageEmpty29}{CartesianTensorXmpPagePatch29}
+\pastebutton{CartesianTensorXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{Tmn[2,1,2,1]\free{Tmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch30}
+\begin{paste}{CartesianTensorXmpPageFull30}{CartesianTensorXmpPageEmpty30}
+\pastebutton{CartesianTensorXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{cTmn := contract(Tmn,1,2)\free{Tmn }\bound{cTmn }}
+\indentrel{3}\begin{verbatim}
+         Ú12  18¿
+   (30)  ³      ³
+         À0   6 Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty30}
+\begin{paste}{CartesianTensorXmpPageEmpty30}{CartesianTensorXmpPagePatch30}
+\pastebutton{CartesianTensorXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{cTmn := contract(Tmn,1,2)\free{Tmn }\bound{cTmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch31}
+\begin{paste}{CartesianTensorXmpPageFull31}{CartesianTensorXmpPageEmpty31}
+\pastebutton{CartesianTensorXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{trace(m) * n\free{m n }}
+\indentrel{3}\begin{verbatim}
+         Ú12  18¿
+   (31)  ³      ³
+         À0   6 Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty31}
+\begin{paste}{CartesianTensorXmpPageEmpty31}{CartesianTensorXmpPagePatch31}
+\pastebutton{CartesianTensorXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{trace(m) * n\free{m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch32}
+\begin{paste}{CartesianTensorXmpPageFull32}{CartesianTensorXmpPageEmpty32}
+\pastebutton{CartesianTensorXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{contract(Tmn,1,2) = trace(m) * n\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú12  18¿  Ú12  18¿
+   (32)  ³      ³= ³      ³
+         À0   6 Ù  À0   6 Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty32}
+\begin{paste}{CartesianTensorXmpPageEmpty32}{CartesianTensorXmpPagePatch32}
+\pastebutton{CartesianTensorXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{contract(Tmn,1,2) = trace(m) * n\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch33}
+\begin{paste}{CartesianTensorXmpPageFull33}{CartesianTensorXmpPageEmpty33}
+\pastebutton{CartesianTensorXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{contract(Tmn,1,3) = transpose(m) * n\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú2  7 ¿  Ú2  7 ¿
+   (33)  ³     ³= ³     ³
+         À4  11Ù  À4  11Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty33}
+\begin{paste}{CartesianTensorXmpPageEmpty33}{CartesianTensorXmpPagePatch33}
+\pastebutton{CartesianTensorXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{contract(Tmn,1,3) = transpose(m) * n\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch34}
+\begin{paste}{CartesianTensorXmpPageFull34}{CartesianTensorXmpPageEmpty34}
+\pastebutton{CartesianTensorXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{
+contract(Tmn,1,4) = transpose(m) * transpose(n)\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú14  4¿  Ú14  4¿
+   (34)  ³     ³= ³     ³
+         À19  5Ù  À19  5Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty34}
+\begin{paste}{CartesianTensorXmpPageEmpty34}{CartesianTensorXmpPagePatch34}
+\pastebutton{CartesianTensorXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{
+contract(Tmn,1,4) = transpose(m) * transpose(n)\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch35}
+\begin{paste}{CartesianTensorXmpPageFull35}{CartesianTensorXmpPageEmpty35}
+\pastebutton{CartesianTensorXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{contract(Tmn,2,3) = m * n\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú2  5 ¿  Ú2  5 ¿
+   (35)  ³     ³= ³     ³
+         À8  17Ù  À8  17Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty35}
+\begin{paste}{CartesianTensorXmpPageEmpty35}{CartesianTensorXmpPagePatch35}
+\pastebutton{CartesianTensorXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{contract(Tmn,2,3) = m * n\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch36}
+\begin{paste}{CartesianTensorXmpPageFull36}{CartesianTensorXmpPageEmpty36}
+\pastebutton{CartesianTensorXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{contract(Tmn,2,4) = m * transpose(n)\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú8   2¿  Ú8   2¿
+   (36)  ³     ³= ³     ³
+         À23  5Ù  À23  5Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty36}
+\begin{paste}{CartesianTensorXmpPageEmpty36}{CartesianTensorXmpPagePatch36}
+\pastebutton{CartesianTensorXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{contract(Tmn,2,4) = m * transpose(n)\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch37}
+\begin{paste}{CartesianTensorXmpPageFull37}{CartesianTensorXmpPageEmpty37}
+\pastebutton{CartesianTensorXmpPageFull37}{\hidepaste}
+\tab{5}\spadcommand{contract(Tmn,3,4) = trace(n) * m\free{Tmn m n }}
+\indentrel{3}\begin{verbatim}
+         Ú3   6 ¿  Ú3   6 ¿
+   (37)  ³      ³= ³      ³
+         À12  15Ù  À12  15Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty37}
+\begin{paste}{CartesianTensorXmpPageEmpty37}{CartesianTensorXmpPagePatch37}
+\pastebutton{CartesianTensorXmpPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{contract(Tmn,3,4) = trace(n) * m\free{Tmn m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch38}
+\begin{paste}{CartesianTensorXmpPageFull38}{CartesianTensorXmpPageEmpty38}
+\pastebutton{CartesianTensorXmpPageFull38}{\hidepaste}
+\tab{5}\spadcommand{tTmn := transpose(Tmn,1,3)\free{tTmn }}
+\indentrel{3}\begin{verbatim}
+         ÚÚ2  3 ¿  Ú4   6 ¿¿
+         ³³     ³  ³      ³³
+         ³À8  12Ù  À10  15Ù³
+   (38)  ³                 ³
+         ³Ú0  1¿    Ú0  2¿ ³
+         ³³    ³    ³    ³ ³
+         ÀÀ0  4Ù    À0  5Ù Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty38}
+\begin{paste}{CartesianTensorXmpPageEmpty38}{CartesianTensorXmpPagePatch38}
+\pastebutton{CartesianTensorXmpPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{tTmn := transpose(Tmn,1,3)\free{tTmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch39}
+\begin{paste}{CartesianTensorXmpPageFull39}{CartesianTensorXmpPageEmpty39}
+\pastebutton{CartesianTensorXmpPageFull39}{\hidepaste}
+\tab{5}\spadcommand{transpose Tmn\free{Tmn }}
+\indentrel{3}\begin{verbatim}
+         ÚÚ2  8¿   Ú4  10¿¿
+         ³³    ³   ³     ³³
+         ³À0  0Ù   À0  0 Ù³
+   (39)  ³                ³
+         ³Ú3  12¿  Ú6  15¿³
+         ³³     ³  ³     ³³
+         ÀÀ1  4 Ù  À2  5 ÙÙ
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty39}
+\begin{paste}{CartesianTensorXmpPageEmpty39}{CartesianTensorXmpPagePatch39}
+\pastebutton{CartesianTensorXmpPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{transpose Tmn\free{Tmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch40}
+\begin{paste}{CartesianTensorXmpPageFull40}{CartesianTensorXmpPageEmpty40}
+\pastebutton{CartesianTensorXmpPageFull40}{\hidepaste}
+\tab{5}\spadcommand{transpose Tm = transpose m\free{Tm m }}
+\indentrel{3}\begin{verbatim}
+         Ú1  4¿  Ú1  4¿
+   (40)  ³    ³= ³    ³
+         À2  5Ù  À2  5Ù
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty40}
+\begin{paste}{CartesianTensorXmpPageEmpty40}{CartesianTensorXmpPagePatch40}
+\pastebutton{CartesianTensorXmpPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{transpose Tm = transpose m\free{Tm m }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch41}
+\begin{paste}{CartesianTensorXmpPageFull41}{CartesianTensorXmpPageEmpty41}
+\pastebutton{CartesianTensorXmpPageFull41}{\hidepaste}
+\tab{5}\spadcommand{rTmn := reindex(Tmn, [1,4,2,3])\free{Tmn }\bound{rTmn }}
+\indentrel{3}\begin{verbatim}
+         ÚÚ2  0¿   Ú3  1¿ ¿
+         ³³    ³   ³    ³ ³
+         ³À4  0Ù   À6  2Ù ³
+   (41)  ³                ³
+         ³Ú8   0¿  Ú12  4¿³
+         ³³     ³  ³     ³³
+         ÀÀ10  0Ù  À15  5ÙÙ
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty41}
+\begin{paste}{CartesianTensorXmpPageEmpty41}{CartesianTensorXmpPagePatch41}
+\pastebutton{CartesianTensorXmpPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{rTmn := reindex(Tmn, [1,4,2,3])\free{Tmn }\bound{rTmn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch42}
+\begin{paste}{CartesianTensorXmpPageFull42}{CartesianTensorXmpPageEmpty42}
+\pastebutton{CartesianTensorXmpPageFull42}{\hidepaste}
+\tab{5}\spadcommand{
+tt := transpose(Tm)*Tn - Tn*transpose(Tm)\free{Tm Tn }\bound{tt2 }}
+\indentrel{3}\begin{verbatim}
+         Ú- 6  - 16¿
+   (42)  ³         ³
+         À 2    6  Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty42}
+\begin{paste}{CartesianTensorXmpPageEmpty42}{CartesianTensorXmpPagePatch42}
+\pastebutton{CartesianTensorXmpPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{
+tt := transpose(Tm)*Tn - Tn*transpose(Tm)\free{Tm Tn }\bound{tt2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch43}
+\begin{paste}{CartesianTensorXmpPageFull43}{CartesianTensorXmpPageEmpty43}
+\pastebutton{CartesianTensorXmpPageFull43}{\hidepaste}
+\tab{5}\spadcommand{Tv*(tt+Tn)\free{tt2 Tv Tn }}
+\indentrel{3}\begin{verbatim}
+   (43)  [- 4,- 11]
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty43}
+\begin{paste}{CartesianTensorXmpPageEmpty43}{CartesianTensorXmpPagePatch43}
+\pastebutton{CartesianTensorXmpPageEmpty43}{\showpaste}
+\tab{5}\spadcommand{Tv*(tt+Tn)\free{tt2 Tv Tn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch44}
+\begin{paste}{CartesianTensorXmpPageFull44}{CartesianTensorXmpPageEmpty44}
+\pastebutton{CartesianTensorXmpPageFull44}{\hidepaste}
+\tab{5}\spadcommand{
+reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)\free{Tm Tn }}
+\indentrel{3}\begin{verbatim}
+         ÚÚ46   84 ¿  Ú57   114¿¿
+         ³³        ³  ³        ³³
+         ³À174  212Ù  À228  285Ù³
+   (44)  ³                      ³
+         ³ Ú18  24¿    Ú17  30¿ ³
+         ³ ³      ³    ³      ³ ³
+         À À57  63Ù    À63  76Ù Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty44}
+\begin{paste}{CartesianTensorXmpPageEmpty44}{CartesianTensorXmpPagePatch44}
+\pastebutton{CartesianTensorXmpPageEmpty44}{\showpaste}
+\tab{5}\spadcommand{
+reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)\free{Tm Tn }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch45}
+\begin{paste}{CartesianTensorXmpPageFull45}{CartesianTensorXmpPageEmpty45}
+\pastebutton{CartesianTensorXmpPageFull45}{\hidepaste}
+\tab{5}\spadcommand{delta: CT := kroneckerDelta()\free{CT }\bound{delta }}
+\indentrel{3}\begin{verbatim}
+         Ú1  0¿
+   (45)  ³    ³
+         À0  1Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty45}
+\begin{paste}{CartesianTensorXmpPageEmpty45}{CartesianTensorXmpPagePatch45}
+\pastebutton{CartesianTensorXmpPageEmpty45}{\showpaste}
+\tab{5}\spadcommand{delta: CT := kroneckerDelta()\free{CT }\bound{delta }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch46}
+\begin{paste}{CartesianTensorXmpPageFull46}{CartesianTensorXmpPageEmpty46}
+\pastebutton{CartesianTensorXmpPageFull46}{\hidepaste}
+\tab{5}\spadcommand{
+contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])\free{Tmn delta }}
+\indentrel{3}\begin{verbatim}
+         Ú Ú2  4¿   Ú0  0¿¿  Ú Ú2  4¿   Ú0  0¿¿
+         ³ ³    ³   ³    ³³  ³ ³    ³   ³    ³³
+         ³ À3  6Ù   À1  2Ù³  ³ À3  6Ù   À1  2Ù³
+   (46)  ³                ³= ³                ³
+         ³Ú8   10¿  Ú0  0¿³  ³Ú8   10¿  Ú0  0¿³
+         ³³      ³  ³    ³³  ³³      ³  ³    ³³
+         ÀÀ12  15Ù  À4  5ÙÙ  ÀÀ12  15Ù  À4  5ÙÙ
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty46}
+\begin{paste}{CartesianTensorXmpPageEmpty46}{CartesianTensorXmpPagePatch46}
+\pastebutton{CartesianTensorXmpPageEmpty46}{\showpaste}
+\tab{5}\spadcommand{
+contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])\free{Tmn delta }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch47}
+\begin{paste}{CartesianTensorXmpPageFull47}{CartesianTensorXmpPageEmpty47}
+\pastebutton{CartesianTensorXmpPageFull47}{\hidepaste}
+\tab{5}\spadcommand{
+epsilon:CT := leviCivitaSymbol()\free{CT }\bound{epsilon }}
+\indentrel{3}\begin{verbatim}
+         Ú 0   1¿
+   (47)  ³      ³
+         À- 1  0Ù
+                     Type: CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty47}
+\begin{paste}{CartesianTensorXmpPageEmpty47}
+{CartesianTensorXmpPagePatch47}
+\pastebutton{CartesianTensorXmpPageEmpty47}{\showpaste}
+\tab{5}\spadcommand{
+epsilon:CT := leviCivitaSymbol()\free{CT }\bound{epsilon }}
+\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPagePatch48}
+\begin{paste}{CartesianTensorXmpPageFull48}{CartesianTensorXmpPageEmpty48}
+\pastebutton{CartesianTensorXmpPageFull48}{\hidepaste}
+\tab{5}\spadcommand{
+contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m\free{epsilon Tm m }}
+\indentrel{3}\begin{verbatim}
+   (48)  - 6= - 6
+            Type: Equation CartesianTensor(1,2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CartesianTensorXmpPageEmpty48}
+\begin{paste}{CartesianTensorXmpPageEmpty48}{CartesianTensorXmpPagePatch48}
+\pastebutton{CartesianTensorXmpPageEmpty48}{\showpaste}
+\tab{5}\spadcommand{
+contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m\free{epsilon Tm m }}
+\end{paste}\end{patch}
+
 @
 \section{cclass.ht}
 \pagehead{CharacterClassXmpPage}{cclass.ht}{CharacterClass}
@@ -3604,6 +6404,269 @@ For more information on related topics, see
 \autobuttons
 \end{page}
 
+\begin{patch}{CharacterClassXmpPagePatch1}
+\begin{paste}{CharacterClassXmpPageFull1}{CharacterClassXmpPageEmpty1}
+\pastebutton{CharacterClassXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{
+cl1:=charClass[char "a", char "e", char "i", char "o", char "u", char "y"]
+\bound{cl1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  "aeiouy"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty1}
+\begin{paste}{CharacterClassXmpPageEmpty1}{CharacterClassXmpPagePatch1}
+\pastebutton{CharacterClassXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{
+cl1:=charClass [char "a", char "e", char "i", char "o", char "u", char "y"]
+\bound{cl1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch2}
+\begin{paste}{CharacterClassXmpPageFull2}{CharacterClassXmpPageEmpty2}
+\pastebutton{CharacterClassXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{cl2 := charClass "bcdfghjklmnpqrstvwxyz"\bound{cl2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  "bcdfghjklmnpqrstvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty2}
+\begin{paste}{CharacterClassXmpPageEmpty2}{CharacterClassXmpPagePatch2}
+\pastebutton{CharacterClassXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{cl2 := charClass "bcdfghjklmnpqrstvwxyz"\bound{cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch3}
+\begin{paste}{CharacterClassXmpPageFull3}{CharacterClassXmpPageEmpty3}
+\pastebutton{CharacterClassXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{digit()}
+\indentrel{3}\begin{verbatim}
+   (3)  "0123456789"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty3}
+\begin{paste}{CharacterClassXmpPageEmpty3}{CharacterClassXmpPagePatch3}
+\pastebutton{CharacterClassXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{digit()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch4}
+\begin{paste}{CharacterClassXmpPageFull4}{CharacterClassXmpPageEmpty4}
+\pastebutton{CharacterClassXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{hexDigit()}
+\indentrel{3}\begin{verbatim}
+   (4)  "0123456789ABCDEFabcdef"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty4}
+\begin{paste}{CharacterClassXmpPageEmpty4}{CharacterClassXmpPagePatch4}
+\pastebutton{CharacterClassXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{hexDigit()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch5}
+\begin{paste}{CharacterClassXmpPageFull5}{CharacterClassXmpPageEmpty5}
+\pastebutton{CharacterClassXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{upperCase()}
+\indentrel{3}\begin{verbatim}
+   (5)  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty5}
+\begin{paste}{CharacterClassXmpPageEmpty5}{CharacterClassXmpPagePatch5}
+\pastebutton{CharacterClassXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{upperCase()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch6}
+\begin{paste}{CharacterClassXmpPageFull6}{CharacterClassXmpPageEmpty6}
+\pastebutton{CharacterClassXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{lowerCase()}
+\indentrel{3}\begin{verbatim}
+   (6)  "abcdefghijklmnopqrstuvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty6}
+\begin{paste}{CharacterClassXmpPageEmpty6}{CharacterClassXmpPagePatch6}
+\pastebutton{CharacterClassXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{lowerCase()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch7}
+\begin{paste}{CharacterClassXmpPageFull7}{CharacterClassXmpPageEmpty7}
+\pastebutton{CharacterClassXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{alphabetic()}
+\indentrel{3}\begin{verbatim}
+   (7)
+   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty7}
+\begin{paste}{CharacterClassXmpPageEmpty7}{CharacterClassXmpPagePatch7}
+\pastebutton{CharacterClassXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{alphabetic()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch8}
+\begin{paste}{CharacterClassXmpPageFull8}{CharacterClassXmpPageEmpty8}
+\pastebutton{CharacterClassXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{alphanumeric()}
+\indentrel{3}\begin{verbatim}
+   (8)
+  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr
+  stuvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty8}
+\begin{paste}{CharacterClassXmpPageEmpty8}{CharacterClassXmpPagePatch8}
+\pastebutton{CharacterClassXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{alphanumeric()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch9}
+\begin{paste}{CharacterClassXmpPageFull9}{CharacterClassXmpPageEmpty9}
+\pastebutton{CharacterClassXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{member?(char "a", cl1)\free{cl1 }}
+\indentrel{3}\begin{verbatim}
+   (9)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty9}
+\begin{paste}{CharacterClassXmpPageEmpty9}{CharacterClassXmpPagePatch9}
+\pastebutton{CharacterClassXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{member?(char "a", cl1)\free{cl1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch10}
+\begin{paste}{CharacterClassXmpPageFull10}{CharacterClassXmpPageEmpty10}
+\pastebutton{CharacterClassXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{member?(char "a", cl2)\free{cl2 }}
+\indentrel{3}\begin{verbatim}
+   (10)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty10}
+\begin{paste}{CharacterClassXmpPageEmpty10}{CharacterClassXmpPagePatch10}
+\pastebutton{CharacterClassXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{member?(char "a", cl2)\free{cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch11}
+\begin{paste}{CharacterClassXmpPageFull11}{CharacterClassXmpPageEmpty11}
+\pastebutton{CharacterClassXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{intersect(cl1, cl2)\free{cl1 cl2 }}
+\indentrel{3}\begin{verbatim}
+   (11)  "y"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty11}
+\begin{paste}{CharacterClassXmpPageEmpty11}{CharacterClassXmpPagePatch11}
+\pastebutton{CharacterClassXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{intersect(cl1, cl2)\free{cl1 cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch12}
+\begin{paste}{CharacterClassXmpPageFull12}{CharacterClassXmpPageEmpty12}
+\pastebutton{CharacterClassXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{union(cl1,cl2)\free{cl1 cl2 }}
+\indentrel{3}\begin{verbatim}
+   (12)  "abcdefghijklmnopqrstuvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty12}
+\begin{paste}{CharacterClassXmpPageEmpty12}{CharacterClassXmpPagePatch12}
+\pastebutton{CharacterClassXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{union(cl1,cl2)\free{cl1 cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch13}
+\begin{paste}{CharacterClassXmpPageFull13}{CharacterClassXmpPageEmpty13}
+\pastebutton{CharacterClassXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{difference(cl1,cl2)\free{cl1 cl2 }}
+\indentrel{3}\begin{verbatim}
+   (13)  "aeiou"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty13}
+\begin{paste}{CharacterClassXmpPageEmpty13}{CharacterClassXmpPagePatch13}
+\pastebutton{CharacterClassXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{difference(cl1,cl2)\free{cl1 cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch14}
+\begin{paste}{CharacterClassXmpPageFull14}{CharacterClassXmpPageEmpty14}
+\pastebutton{CharacterClassXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{intersect(complement(cl1),cl2)\free{cl1 cl2 }}
+\indentrel{3}\begin{verbatim}
+   (14)  "bcdfghjklmnpqrstvwxz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty14}
+\begin{paste}{CharacterClassXmpPageEmpty14}{CharacterClassXmpPagePatch14}
+\pastebutton{CharacterClassXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{intersect(complement(cl1),cl2)\free{cl1 cl2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch15}
+\begin{paste}{CharacterClassXmpPageFull15}{CharacterClassXmpPageEmpty15}
+\pastebutton{CharacterClassXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{insert!(char "a", cl2)\free{cl2 }\bound{cl22 }}
+\indentrel{3}\begin{verbatim}
+   (15)  "abcdfghjklmnpqrstvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty15}
+\begin{paste}{CharacterClassXmpPageEmpty15}{CharacterClassXmpPagePatch15}
+\pastebutton{CharacterClassXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{insert!(char "a", cl2)\free{cl2 }\bound{cl22 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPagePatch16}
+\begin{paste}{CharacterClassXmpPageFull16}{CharacterClassXmpPageEmpty16}
+\pastebutton{CharacterClassXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{remove!(char "b", cl2)\free{cl22 }\bound{cl23 }}
+\indentrel{3}\begin{verbatim}
+   (16)  "acdfghjklmnpqrstvwxyz"
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterClassXmpPageEmpty16}
+\begin{paste}{CharacterClassXmpPageEmpty16}{CharacterClassXmpPagePatch16}
+\pastebutton{CharacterClassXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{remove!(char "b", cl2)\free{cl22 }\bound{cl23 }}
+\end{paste}\end{patch}
+
 @
 \section{char.ht}
 \pagehead{CharacterXmpPage}{char.ht}{Character}
@@ -3696,7 +6759,217 @@ belong to certain families.
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{CharacterXmpPagePatch1}
+\begin{paste}{CharacterXmpPageFull1}{CharacterXmpPageEmpty1}
+\pastebutton{CharacterXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{
+chars := [char "a", char "A", char "X", char "8", char "+"]\bound{chars }}
+\indentrel{3}\begin{verbatim}
+   (1)  [a,A,X,8,+]
+                                   Type: List Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty1}
+\begin{paste}{CharacterXmpPageEmpty1}{CharacterXmpPagePatch1}
+\pastebutton{CharacterXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{
+chars := [char "a", char "A", char "X", char "8", char "+"]\bound{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch2}
+\begin{paste}{CharacterXmpPageFull2}{CharacterXmpPageEmpty2}
+\pastebutton{CharacterXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{space()}
+\indentrel{3}\begin{verbatim}
+   (2)
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty2}
+\begin{paste}{CharacterXmpPageEmpty2}{CharacterXmpPagePatch2}
+\pastebutton{CharacterXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{space()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch3}
+\begin{paste}{CharacterXmpPageFull3}{CharacterXmpPageEmpty3}
+\pastebutton{CharacterXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{quote()}
+\indentrel{3}\begin{verbatim}
+   (3)  "
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty3}
+\begin{paste}{CharacterXmpPageEmpty3}{CharacterXmpPagePatch3}
+\pastebutton{CharacterXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{quote()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch4}
+\begin{paste}{CharacterXmpPageFull4}{CharacterXmpPageEmpty4}
+\pastebutton{CharacterXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{escape()}
+\indentrel{3}\begin{verbatim}
+   (4)  _
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty4}
+\begin{paste}{CharacterXmpPageEmpty4}{CharacterXmpPagePatch4}
+\pastebutton{CharacterXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{escape()}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch5}
+\begin{paste}{CharacterXmpPageFull5}{CharacterXmpPageEmpty5}
+\pastebutton{CharacterXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[ord c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (5)  [97,65,88,56,43]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty5}
+\begin{paste}{CharacterXmpPageEmpty5}{CharacterXmpPagePatch5}
+\pastebutton{CharacterXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[ord c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch6}
+\begin{paste}{CharacterXmpPageFull6}{CharacterXmpPageEmpty6}
+\pastebutton{CharacterXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[upperCase c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (6)  [A,A,X,8,+]
+                                   Type: List Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty6}
+\begin{paste}{CharacterXmpPageEmpty6}{CharacterXmpPagePatch6}
+\pastebutton{CharacterXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[upperCase c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch7}
+\begin{paste}{CharacterXmpPageFull7}{CharacterXmpPageEmpty7}
+\pastebutton{CharacterXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{[lowerCase c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (7)  [a,a,x,8,+]
+                                   Type: List Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty7}
+\begin{paste}{CharacterXmpPageEmpty7}{CharacterXmpPagePatch7}
+\pastebutton{CharacterXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{[lowerCase c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch8}
+\begin{paste}{CharacterXmpPageFull8}{CharacterXmpPageEmpty8}
+\pastebutton{CharacterXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{[alphabetic? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (8)  [true,true,true,false,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty8}
+\begin{paste}{CharacterXmpPageEmpty8}{CharacterXmpPagePatch8}
+\pastebutton{CharacterXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{[alphabetic? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch9}
+\begin{paste}{CharacterXmpPageFull9}{CharacterXmpPageEmpty9}
+\pastebutton{CharacterXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{[upperCase? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (9)  [false,true,true,false,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty9}
+\begin{paste}{CharacterXmpPageEmpty9}{CharacterXmpPagePatch9}
+\pastebutton{CharacterXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{[upperCase? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch10}
+\begin{paste}{CharacterXmpPageFull10}{CharacterXmpPageEmpty10}
+\pastebutton{CharacterXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{[lowerCase? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (10)  [true,false,false,false,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty10}
+\begin{paste}{CharacterXmpPageEmpty10}{CharacterXmpPagePatch10}
+\pastebutton{CharacterXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{[lowerCase? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch11}
+\begin{paste}{CharacterXmpPageFull11}{CharacterXmpPageEmpty11}
+\pastebutton{CharacterXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[digit? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (11)  [false,false,false,true,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty11}
+\begin{paste}{CharacterXmpPageEmpty11}{CharacterXmpPagePatch11}
+\pastebutton{CharacterXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[digit? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch12}
+\begin{paste}{CharacterXmpPageFull12}{CharacterXmpPageEmpty12}
+\pastebutton{CharacterXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{[hexDigit? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (12)  [true,true,false,true,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty12}
+\begin{paste}{CharacterXmpPageEmpty12}{CharacterXmpPagePatch12}
+\pastebutton{CharacterXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{[hexDigit? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPagePatch13}
+\begin{paste}{CharacterXmpPageFull13}{CharacterXmpPageEmpty13}
+\pastebutton{CharacterXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{[alphanumeric? c for c in chars]\free{chars }}
+\indentrel{3}\begin{verbatim}
+   (13)  [true,true,true,true,false]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CharacterXmpPageEmpty13}
+\begin{paste}{CharacterXmpPageEmpty13}{CharacterXmpPagePatch13}
+\pastebutton{CharacterXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{[alphanumeric? c for c in chars]\free{chars }}
+\end{paste}\end{patch}
+
 
 @
 \pagehead{CliffordAlgebraXmpPage}{clif.ht}{CliffordAlgebra}
@@ -3801,6 +7074,125 @@ implementing complex numbers.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxCliffordComplexPagePatch1}
+\begin{paste}{ugxCliffordComplexPageFull1}{ugxCliffordComplexPageEmpty1}
+\pastebutton{ugxCliffordComplexPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Polynomial Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty1}
+\begin{paste}{ugxCliffordComplexPageEmpty1}{ugxCliffordComplexPagePatch1}
+\pastebutton{ugxCliffordComplexPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch2}
+\begin{paste}{ugxCliffordComplexPageFull2}{ugxCliffordComplexPageEmpty2}
+\pastebutton{ugxCliffordComplexPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[-1]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (2)  [- 1]
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty2}
+\begin{paste}{ugxCliffordComplexPageEmpty2}{ugxCliffordComplexPagePatch2}
+\pastebutton{ugxCliffordComplexPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[-1]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch3}
+\begin{paste}{ugxCliffordComplexPageFull3}{ugxCliffordComplexPageEmpty3}
+\pastebutton{ugxCliffordComplexPageFull3}{\hidepaste}
+\tab{5}\spadcommand{
+C := CliffordAlgebra(1, K, quadraticForm m)\free{K m }\bound{C }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty3}
+\begin{paste}{ugxCliffordComplexPageEmpty3}{ugxCliffordComplexPagePatch3}
+\pastebutton{ugxCliffordComplexPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{
+C := CliffordAlgebra(1, K, quadraticForm m)\free{K m }\bound{C }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch4}
+\begin{paste}{ugxCliffordComplexPageFull4}{ugxCliffordComplexPageEmpty4}
+\pastebutton{ugxCliffordComplexPageFull4}{\hidepaste}
+\tab{5}\spadcommand{i: C := e(1)\bound{i }\free{C }}
+\indentrel{3}\begin{verbatim}
+   (4)  e
+         1
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty4}
+\begin{paste}{ugxCliffordComplexPageEmpty4}{ugxCliffordComplexPagePatch4}
+\pastebutton{ugxCliffordComplexPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{i: C := e(1)\bound{i }\free{C }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch5}
+\begin{paste}{ugxCliffordComplexPageFull5}{ugxCliffordComplexPageEmpty5}
+\pastebutton{ugxCliffordComplexPageFull5}{\hidepaste}
+\tab{5}\spadcommand{x := a + b * i\bound{x }\free{i }}
+\indentrel{3}\begin{verbatim}
+   (5)  a + b e
+               1
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty5}
+\begin{paste}{ugxCliffordComplexPageEmpty5}{ugxCliffordComplexPagePatch5}
+\pastebutton{ugxCliffordComplexPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{x := a + b * i\bound{x }\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch6}
+\begin{paste}{ugxCliffordComplexPageFull6}{ugxCliffordComplexPageEmpty6}
+\pastebutton{ugxCliffordComplexPageFull6}{\hidepaste}
+\tab{5}\spadcommand{y := c + d * i\bound{y }\free{i }}
+\indentrel{3}\begin{verbatim}
+   (6)  c + d e
+               1
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty6}
+\begin{paste}{ugxCliffordComplexPageEmpty6}{ugxCliffordComplexPagePatch6}
+\pastebutton{ugxCliffordComplexPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{y := c + d * i\bound{y }\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPagePatch7}
+\begin{paste}{ugxCliffordComplexPageFull7}{ugxCliffordComplexPageEmpty7}
+\pastebutton{ugxCliffordComplexPageFull7}{\hidepaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (7)  - b d + a c + (a d + b c)e
+                                  1
+Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordComplexPageEmpty7}
+\begin{paste}{ugxCliffordComplexPageEmpty7}{ugxCliffordComplexPagePatch7}
+\pastebutton{ugxCliffordComplexPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxCliffordQuaternPage}{clif.ht}
 {The Quaternion Numbers as a Clifford Algebra}
@@ -3868,6 +7260,206 @@ implementing quaternions.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxCliffordQuaternPagePatch1}
+\begin{paste}{ugxCliffordQuaternPageFull1}{ugxCliffordQuaternPageEmpty1}
+\pastebutton{ugxCliffordQuaternPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Polynomial Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty1}
+\begin{paste}{ugxCliffordQuaternPageEmpty1}{ugxCliffordQuaternPagePatch1}
+\pastebutton{ugxCliffordQuaternPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch2}
+\begin{paste}{ugxCliffordQuaternPageFull2}{ugxCliffordQuaternPageEmpty2}
+\pastebutton{ugxCliffordQuaternPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[-1,0],[0,-1]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú- 1   0 ¿
+   (2)  ³        ³
+        À 0   - 1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty2}
+\begin{paste}{ugxCliffordQuaternPageEmpty2}{ugxCliffordQuaternPagePatch2}
+\pastebutton{ugxCliffordQuaternPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[-1,0],[0,-1]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch3}
+\begin{paste}{ugxCliffordQuaternPageFull3}{ugxCliffordQuaternPageEmpty3}
+\pastebutton{ugxCliffordQuaternPageFull3}{\hidepaste}
+\tab{5}\spadcommand{
+H := CliffordAlgebra(2, K, quadraticForm m)\free{K m }\bound{H }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty3}
+\begin{paste}{ugxCliffordQuaternPageEmpty3}{ugxCliffordQuaternPagePatch3}
+\pastebutton{ugxCliffordQuaternPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{
+H := CliffordAlgebra(2, K, quadraticForm m)\free{K m }\bound{H }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch4}
+\begin{paste}{ugxCliffordQuaternPageFull4}{ugxCliffordQuaternPageEmpty4}
+\pastebutton{ugxCliffordQuaternPageFull4}{\hidepaste}
+\tab{5}\spadcommand{i: H := e(1)\free{H }\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (4)  e
+         1
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty4}
+\begin{paste}{ugxCliffordQuaternPageEmpty4}{ugxCliffordQuaternPagePatch4}
+\pastebutton{ugxCliffordQuaternPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{i: H := e(1)\free{H }\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch5}
+\begin{paste}{ugxCliffordQuaternPageFull5}{ugxCliffordQuaternPageEmpty5}
+\pastebutton{ugxCliffordQuaternPageFull5}{\hidepaste}
+\tab{5}\spadcommand{j: H := e(2)\free{H }\bound{j }}
+\indentrel{3}\begin{verbatim}
+   (5)  e
+         2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty5}
+\begin{paste}{ugxCliffordQuaternPageEmpty5}{ugxCliffordQuaternPagePatch5}
+\pastebutton{ugxCliffordQuaternPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{j: H := e(2)\free{H }\bound{j }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch6}
+\begin{paste}{ugxCliffordQuaternPageFull6}{ugxCliffordQuaternPageEmpty6}
+\pastebutton{ugxCliffordQuaternPageFull6}{\hidepaste}
+\tab{5}\spadcommand{k: H := i * j\free{H i j }\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (6)  e e
+         1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty6}
+\begin{paste}{ugxCliffordQuaternPageEmpty6}{ugxCliffordQuaternPagePatch6}
+\pastebutton{ugxCliffordQuaternPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{k: H := i * j\free{H i j }\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch7}
+\begin{paste}{ugxCliffordQuaternPageFull7}{ugxCliffordQuaternPageEmpty7}
+\pastebutton{ugxCliffordQuaternPageFull7}{\hidepaste}
+\tab{5}\spadcommand{x := a + b * i + c * j + d * k\free{i j k }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (7)  a + b e  + c e  + d e e
+               1      2      1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty7}
+\begin{paste}{ugxCliffordQuaternPageEmpty7}{ugxCliffordQuaternPagePatch7}
+\pastebutton{ugxCliffordQuaternPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{x := a + b * i + c * j + d * k\free{i j k }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch8}
+\begin{paste}{ugxCliffordQuaternPageFull8}{ugxCliffordQuaternPageEmpty8}
+\pastebutton{ugxCliffordQuaternPageFull8}{\hidepaste}
+\tab{5}\spadcommand{y := e + f * i + g * j + h * k\free{i j k }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (8)  e + f e  + g e  + h e e
+               1      2      1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty8}
+\begin{paste}{ugxCliffordQuaternPageEmpty8}{ugxCliffordQuaternPagePatch8}
+\pastebutton{ugxCliffordQuaternPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{y := e + f * i + g * j + h * k\free{i j k }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch9}
+\begin{paste}{ugxCliffordQuaternPageFull9}{ugxCliffordQuaternPageEmpty9}
+\pastebutton{ugxCliffordQuaternPageFull9}{\hidepaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (9)  e + a + (f + b)e  + (g + c)e  + (h + d)e e
+                        1           2           1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty9}
+\begin{paste}{ugxCliffordQuaternPageEmpty9}{ugxCliffordQuaternPagePatch9}
+\pastebutton{ugxCliffordQuaternPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch10}
+\begin{paste}{ugxCliffordQuaternPageFull10}{ugxCliffordQuaternPageEmpty10}
+\pastebutton{ugxCliffordQuaternPageFull10}{\hidepaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (10)
+     - d h - c g - b f + a e + (c h - d g + a f + b e)e
+                                                       1
+   + 
+     (- b h + a g + d f + c e)e
+                               2
+   + 
+     (a h + b g - c f + d e)e e
+                             1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty10}
+\begin{paste}{ugxCliffordQuaternPageEmpty10}{ugxCliffordQuaternPagePatch10}
+\pastebutton{ugxCliffordQuaternPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPagePatch11}
+\begin{paste}{ugxCliffordQuaternPageFull11}{ugxCliffordQuaternPageEmpty11}
+\pastebutton{ugxCliffordQuaternPageFull11}{\hidepaste}
+\tab{5}\spadcommand{y * x\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (11)
+     - d h - c g - b f + a e + (- c h + d g + a f + b e)e
+                                                         1
+   + 
+   (b h + a g - d f + c e)e  + (a h - b g + c f + d e)e e
+                           2                           1 2
+Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordQuaternPageEmpty11}
+\begin{paste}{ugxCliffordQuaternPageEmpty11}{ugxCliffordQuaternPagePatch11}
+\pastebutton{ugxCliffordQuaternPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{y * x\free{x y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxCliffordExteriorPage}{clif.ht}
 {The Exterior Algebra on a Three Space}
@@ -3938,6 +7530,199 @@ The vector cross product is then given by this.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxCliffordExteriorPagePatch1}
+\begin{paste}{ugxCliffordExteriorPageFull1}{ugxCliffordExteriorPageEmpty1}
+\pastebutton{ugxCliffordExteriorPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Polynomial Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty1}
+\begin{paste}{ugxCliffordExteriorPageEmpty1}{ugxCliffordExteriorPagePatch1}
+\pastebutton{ugxCliffordExteriorPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch2}
+\begin{paste}{ugxCliffordExteriorPageFull2}{ugxCliffordExteriorPageEmpty2}
+\pastebutton{ugxCliffordExteriorPageFull2}{\hidepaste}
+\tab{5}\spadcommand{
+Ext := CliffordAlgebra(3, K, quadraticForm 0)\bound{Ext }\free{K }}
+\indentrel{3}\begin{verbatim}
+   (2)
+   CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty2}
+\begin{paste}{ugxCliffordExteriorPageEmpty2}{ugxCliffordExteriorPagePatch2}
+\pastebutton{ugxCliffordExteriorPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{
+Ext := CliffordAlgebra(3, K, quadraticForm 0)\bound{Ext }\free{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch3}
+\begin{paste}{ugxCliffordExteriorPageFull3}{ugxCliffordExteriorPageEmpty3}
+\pastebutton{ugxCliffordExteriorPageFull3}{\hidepaste}
+\tab{5}\spadcommand{i: Ext := e(1)\free{Ext }\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (3)  e
+         1
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty3}
+\begin{paste}{ugxCliffordExteriorPageEmpty3}{ugxCliffordExteriorPagePatch3}
+\pastebutton{ugxCliffordExteriorPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i: Ext := e(1)\free{Ext }\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch4}
+\begin{paste}{ugxCliffordExteriorPageFull4}{ugxCliffordExteriorPageEmpty4}
+\pastebutton{ugxCliffordExteriorPageFull4}{\hidepaste}
+\tab{5}\spadcommand{j: Ext := e(2)\free{Ext }\bound{j }}
+\indentrel{3}\begin{verbatim}
+   (4)  e
+         2
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty4}
+\begin{paste}{ugxCliffordExteriorPageEmpty4}{ugxCliffordExteriorPagePatch4}
+\pastebutton{ugxCliffordExteriorPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{j: Ext := e(2)\free{Ext }\bound{j }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch5}
+\begin{paste}{ugxCliffordExteriorPageFull5}{ugxCliffordExteriorPageEmpty5}
+\pastebutton{ugxCliffordExteriorPageFull5}{\hidepaste}
+\tab{5}\spadcommand{k: Ext := e(3)\free{Ext }\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (5)  e
+         3
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty5}
+\begin{paste}{ugxCliffordExteriorPageEmpty5}{ugxCliffordExteriorPagePatch5}
+\pastebutton{ugxCliffordExteriorPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{k: Ext := e(3)\free{Ext }\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch6}
+\begin{paste}{ugxCliffordExteriorPageFull6}{ugxCliffordExteriorPageEmpty6}
+\pastebutton{ugxCliffordExteriorPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x := x1*i + x2*j + x3*k\free{i j k }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (6)  x1 e  + x2 e  + x3 e
+            1       2       3
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty6}
+\begin{paste}{ugxCliffordExteriorPageEmpty6}{ugxCliffordExteriorPagePatch6}
+\pastebutton{ugxCliffordExteriorPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x := x1*i + x2*j + x3*k\free{i j k }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch7}
+\begin{paste}{ugxCliffordExteriorPageFull7}{ugxCliffordExteriorPageEmpty7}
+\pastebutton{ugxCliffordExteriorPageFull7}{\hidepaste}
+\tab{5}\spadcommand{y := y1*i + y2*j + y3*k\free{i j k }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (7)  y1 e  + y2 e  + y3 e
+            1       2       3
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty7}
+\begin{paste}{ugxCliffordExteriorPageEmpty7}{ugxCliffordExteriorPagePatch7}
+\pastebutton{ugxCliffordExteriorPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y := y1*i + y2*j + y3*k\free{i j k }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch8}
+\begin{paste}{ugxCliffordExteriorPageFull8}{ugxCliffordExteriorPageEmpty8}
+\pastebutton{ugxCliffordExteriorPageFull8}{\hidepaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (8)  (y1 + x1)e  + (y2 + x2)e  + (y3 + x3)e
+                  1             2             3
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty8}
+\begin{paste}{ugxCliffordExteriorPageEmpty8}{ugxCliffordExteriorPagePatch8}
+\pastebutton{ugxCliffordExteriorPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch9}
+\begin{paste}{ugxCliffordExteriorPageFull9}{ugxCliffordExteriorPageEmpty9}
+\pastebutton{ugxCliffordExteriorPageFull9}{\hidepaste}
+\tab{5}\spadcommand{x * y + y * x\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty9}
+\begin{paste}{ugxCliffordExteriorPageEmpty9}{ugxCliffordExteriorPagePatch9}
+\pastebutton{ugxCliffordExteriorPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{x * y + y * x\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch10}
+\begin{paste}{ugxCliffordExteriorPageFull10}{ugxCliffordExteriorPageEmpty10}
+\pastebutton{ugxCliffordExteriorPageFull10}{\hidepaste}
+\tab{5}\spadcommand{
+dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * _
+           j + coefficient(a,[1,2]) * k\free{i j k }\bound{dual2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty10}
+\begin{paste}{ugxCliffordExteriorPageEmpty10}{ugxCliffordExteriorPagePatch10}
+\pastebutton{ugxCliffordExteriorPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{
+dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * _
+      j + coefficient(a,[1,2]) * k\free{i j k }\bound{dual2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPagePatch11}
+\begin{paste}{ugxCliffordExteriorPageFull11}{ugxCliffordExteriorPageEmpty11}
+\pastebutton{ugxCliffordExteriorPageFull11}{\hidepaste}
+\tab{5}\spadcommand{dual2(x*y)\free{x y dual2 }}
+\indentrel{3}\begin{verbatim}
+   (11)
+     (x2 y3 - x3 y2)e  + (- x1 y3 + x3 y1)e
+                     1                     2
+   + 
+     (x1 y2 - x2 y1)e
+                     3
+Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordExteriorPageEmpty11}
+\begin{paste}{ugxCliffordExteriorPageEmpty11}{ugxCliffordExteriorPagePatch11}
+\pastebutton{ugxCliffordExteriorPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{dual2(x*y)\free{x y dual2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxCliffordDiracPage}{clif.ht}{The Dirac Spin Algebra}
 <<clif.ht>>=
@@ -4000,6 +7785,139 @@ for t in 1..4]) \bound{lhs}\free{g gam m n r s}}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxCliffordDiracPagePatch1}
+\begin{paste}{ugxCliffordDiracPageFull1}{ugxCliffordDiracPageEmpty1}
+\pastebutton{ugxCliffordDiracPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := Fraction Integer\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty1}
+\begin{paste}{ugxCliffordDiracPageEmpty1}{ugxCliffordDiracPagePatch1}
+\pastebutton{ugxCliffordDiracPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := Fraction Integer\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch2}
+\begin{paste}{ugxCliffordDiracPageFull2}{ugxCliffordDiracPageEmpty2}
+\pastebutton{ugxCliffordDiracPageFull2}{\hidepaste}
+\tab{5}\spadcommand{g := matrix [[1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1]]\bound{g }}
+\indentrel{3}\begin{verbatim}
+        Ú1   0    0    0 ¿
+        ³                ³
+        ³0  - 1   0    0 ³
+   (2)  ³                ³
+        ³0   0   - 1   0 ³
+        ³                ³
+        À0   0    0   - 1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty2}
+\begin{paste}{ugxCliffordDiracPageEmpty2}{ugxCliffordDiracPagePatch2}
+\pastebutton{ugxCliffordDiracPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{
+g := matrix [[1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1]]\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch3}
+\begin{paste}{ugxCliffordDiracPageFull3}{ugxCliffordDiracPageEmpty3}
+\pastebutton{ugxCliffordDiracPageFull3}{\hidepaste}
+\tab{5}\spadcommand{
+D := CliffordAlgebra(4,K, quadraticForm g)\free{K g }\bound{D }}
+\indentrel{3}\begin{verbatim}
+   (3)  CliffordAlgebra(4,Fraction Integer,MATRIX)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty3}
+\begin{paste}{ugxCliffordDiracPageEmpty3}{ugxCliffordDiracPagePatch3}
+\pastebutton{ugxCliffordDiracPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{
+D := CliffordAlgebra(4,K, quadraticForm g)\free{K g }\bound{D }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch4}
+\begin{paste}{ugxCliffordDiracPageFull4}{ugxCliffordDiracPageEmpty4}
+\pastebutton{ugxCliffordDiracPageFull4}{\hidepaste}
+\tab{5}\spadcommand{gam := [e(i)$D for i in 1..4]\free{D }\bound{gam }}
+\indentrel{3}\begin{verbatim}
+   (4)  [e ,e ,e ,e ]
+          1  2  3  4
+  Type: List CliffordAlgebra(4,Fraction Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty4}
+\begin{paste}{ugxCliffordDiracPageEmpty4}{ugxCliffordDiracPagePatch4}
+\pastebutton{ugxCliffordDiracPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{gam := [e(i)$D for i in 1..4]\free{D }\bound{gam }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch5}
+\begin{paste}{ugxCliffordDiracPageFull5}{ugxCliffordDiracPageEmpty5}
+\pastebutton{ugxCliffordDiracPageFull5}{\hidepaste}
+\tab{5}\spadcommand{m := 1; n:= 2; r := 3; s := 4;\bound{m n r s }}
+\indentrel{3}\begin{verbatim}
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty5}
+\begin{paste}{ugxCliffordDiracPageEmpty5}{ugxCliffordDiracPagePatch5}
+\pastebutton{ugxCliffordDiracPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{m := 1; n:= 2; r := 3; s := 4;\bound{m n r s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch6}
+\begin{paste}{ugxCliffordDiracPageFull6}{ugxCliffordDiracPageEmpty6}
+\pastebutton{ugxCliffordDiracPageFull6}{\hidepaste}
+\tab{5}\spadcommand{
+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])\bound{lhs }\free{g gam m n r s }}
+\indentrel{3}\begin{verbatim}
+   (6)  - 4e e e e
+            1 2 3 4
+       Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty6}
+\begin{paste}{ugxCliffordDiracPageEmpty6}{ugxCliffordDiracPagePatch6}
+\pastebutton{ugxCliffordDiracPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{
+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])\bound{lhs }\free{g gam m n r s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPagePatch7}
+\begin{paste}{ugxCliffordDiracPageFull7}{ugxCliffordDiracPageEmpty7}
+\pastebutton{ugxCliffordDiracPageFull7}{\hidepaste}
+\tab{5}\spadcommand{
+rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)
+\bound{rhs }\free{lhs g gam m n r s }}
+\indentrel{3}\begin{verbatim}
+   (7)  - 4e e e e
+            1 2 3 4
+       Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxCliffordDiracPageEmpty7}
+\begin{paste}{ugxCliffordDiracPageEmpty7}{ugxCliffordDiracPagePatch7}
+\pastebutton{ugxCliffordDiracPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{
+rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)
+\bound{rhs }\free{lhs g gam m n r s }}
+\end{paste}\end{patch}
+
 @
 \section{complex.ht}
 \pagehead{ComplexXmpPage}{complex.ht}{Complex}
@@ -4107,6 +8025,283 @@ You can \spadfunFrom{factor}{Complex} Gaussian integers.
 \autobuttons
 \end{page}
 
+\begin{patch}{ComplexXmpPagePatch1}
+\begin{paste}{ComplexXmpPageFull1}{ComplexXmpPageEmpty1}
+\pastebutton{ComplexXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a := complex(4/3,5/2)\bound{a }}
+\indentrel{3}\begin{verbatim}
+        4   5
+   (1)  Ä + Ä %i
+        3   2
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty1}
+\begin{paste}{ComplexXmpPageEmpty1}{ComplexXmpPagePatch1}
+\pastebutton{ComplexXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a := complex(4/3,5/2)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch2}
+\begin{paste}{ComplexXmpPageFull2}{ComplexXmpPageEmpty2}
+\pastebutton{ComplexXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{b := complex(4/3,-5/2)\bound{b }}
+\indentrel{3}\begin{verbatim}
+        4   5
+   (2)  Ä - Ä %i
+        3   2
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty2}
+\begin{paste}{ComplexXmpPageEmpty2}{ComplexXmpPagePatch2}
+\pastebutton{ComplexXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{b := complex(4/3,-5/2)\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch3}
+\begin{paste}{ComplexXmpPageFull3}{ComplexXmpPageEmpty3}
+\pastebutton{ComplexXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{a + b\free{a b }}
+\indentrel{3}\begin{verbatim}
+        8
+   (3)  Ä
+        3
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty3}
+\begin{paste}{ComplexXmpPageEmpty3}{ComplexXmpPagePatch3}
+\pastebutton{ComplexXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a + b\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch4}
+\begin{paste}{ComplexXmpPageFull4}{ComplexXmpPageEmpty4}
+\pastebutton{ComplexXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{a - b\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (4)  5%i
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty4}
+\begin{paste}{ComplexXmpPageEmpty4}{ComplexXmpPagePatch4}
+\pastebutton{ComplexXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{a - b\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch5}
+\begin{paste}{ComplexXmpPageFull5}{ComplexXmpPageEmpty5}
+\pastebutton{ComplexXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a * b\free{a b }}
+\indentrel{3}\begin{verbatim}
+        289
+   (5)  ÄÄÄ
+         36
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty5}
+\begin{paste}{ComplexXmpPageEmpty5}{ComplexXmpPagePatch5}
+\pastebutton{ComplexXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a * b\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch6}
+\begin{paste}{ComplexXmpPageFull6}{ComplexXmpPageEmpty6}
+\pastebutton{ComplexXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{a / b\free{a b }\bound{adb }}
+\indentrel{3}\begin{verbatim}
+          161   240
+   (6)  - ÄÄÄ + ÄÄÄ %i
+          289   289
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty6}
+\begin{paste}{ComplexXmpPageEmpty6}{ComplexXmpPagePatch6}
+\pastebutton{ComplexXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{a / b\free{a b }\bound{adb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch7}
+\begin{paste}{ComplexXmpPageFull7}{ComplexXmpPageEmpty7}
+\pastebutton{ComplexXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{adb }}
+\indentrel{3}\begin{verbatim}
+        - 15 + 8%i
+   (7)  ÄÄÄÄÄÄÄÄÄÄ
+         15 + 8%i
+                         Type: Fraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty7}
+\begin{paste}{ComplexXmpPageEmpty7}{ComplexXmpPagePatch7}
+\pastebutton{ComplexXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{adb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch8}
+\begin{paste}{ComplexXmpPageFull8}{ComplexXmpPageEmpty8}
+\pastebutton{ComplexXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{3.4 + 6.7 * \%i}
+\indentrel{3}\begin{verbatim}
+   (8)  3.4 + 6.7 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty8}
+\begin{paste}{ComplexXmpPageEmpty8}{ComplexXmpPagePatch8}
+\pastebutton{ComplexXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{3.4 + 6.7 * \%i}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch9}
+\begin{paste}{ComplexXmpPageFull9}{ComplexXmpPageEmpty9}
+\pastebutton{ComplexXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{conjugate a\free{a }}
+\indentrel{3}\begin{verbatim}
+        4   5
+   (9)  Ä - Ä %i
+        3   2
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty9}
+\begin{paste}{ComplexXmpPageEmpty9}{ComplexXmpPagePatch9}
+\pastebutton{ComplexXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{conjugate a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch10}
+\begin{paste}{ComplexXmpPageFull10}{ComplexXmpPageEmpty10}
+\pastebutton{ComplexXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{norm a\free{a }}
+\indentrel{3}\begin{verbatim}
+         289
+   (10)  ÄÄÄ
+          36
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty10}
+\begin{paste}{ComplexXmpPageEmpty10}{ComplexXmpPagePatch10}
+\pastebutton{ComplexXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{norm a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch11}
+\begin{paste}{ComplexXmpPageFull11}{ComplexXmpPageEmpty11}
+\pastebutton{ComplexXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{real a\free{a }}
+\indentrel{3}\begin{verbatim}
+         4
+   (11)  Ä
+         3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty11}
+\begin{paste}{ComplexXmpPageEmpty11}{ComplexXmpPagePatch11}
+\pastebutton{ComplexXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{real a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch12}
+\begin{paste}{ComplexXmpPageFull12}{ComplexXmpPageEmpty12}
+\pastebutton{ComplexXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{imag a\free{a }}
+\indentrel{3}\begin{verbatim}
+         5
+   (12)  Ä
+         2
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty12}
+\begin{paste}{ComplexXmpPageEmpty12}{ComplexXmpPagePatch12}
+\pastebutton{ComplexXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{imag a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch13}
+\begin{paste}{ComplexXmpPageFull13}{ComplexXmpPageEmpty13}
+\pastebutton{ComplexXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{gcd(13 - 13*\%i,31 + 27*\%i)}
+\indentrel{3}\begin{verbatim}
+   (13)  5 + %i
+                                  Type: Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty13}
+\begin{paste}{ComplexXmpPageEmpty13}{ComplexXmpPagePatch13}
+\pastebutton{ComplexXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{gcd(13 - 13*\%i,31 + 27*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch14}
+\begin{paste}{ComplexXmpPageFull14}{ComplexXmpPageEmpty14}
+\pastebutton{ComplexXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lcm(13 - 13*\%i,31 + 27*\%i)}
+\indentrel{3}\begin{verbatim}
+   (14)  143 - 39%i
+                                  Type: Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty14}
+\begin{paste}{ComplexXmpPageEmpty14}{ComplexXmpPagePatch14}
+\pastebutton{ComplexXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lcm(13 - 13*\%i,31 + 27*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch15}
+\begin{paste}{ComplexXmpPageFull15}{ComplexXmpPageEmpty15}
+\pastebutton{ComplexXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{factor(13 - 13*\%i)}
+\indentrel{3}\begin{verbatim}
+   (15)  - (1 + %i)(2 + 3%i)(3 + 2%i)
+                         Type: Factored Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty15}
+\begin{paste}{ComplexXmpPageEmpty15}{ComplexXmpPagePatch15}
+\pastebutton{ComplexXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{factor(13 - 13*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPagePatch16}
+\begin{paste}{ComplexXmpPageFull16}{ComplexXmpPageEmpty16}
+\pastebutton{ComplexXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{factor complex(2,0)}
+\indentrel{3}\begin{verbatim}
+                      2
+   (16)  - %i (1 + %i)
+                         Type: Factored Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ComplexXmpPageEmpty16}
+\begin{paste}{ComplexXmpPageEmpty16}{ComplexXmpPagePatch16}
+\pastebutton{ComplexXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{factor complex(2,0)}
+\end{paste}\end{patch}
+
 @
 \section{contfrac.ht}
 \pagehead{ContinuedFractionXmpPage}{contfrac.ht}{ContinuedFraction}
@@ -4412,6 +8607,508 @@ is the expansion of \texht{$\sqrt{11}$}{the square root of \spad{11}}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ContinuedFractionXmpPagePatch1}
+\begin{paste}{ContinuedFractionXmpPageFull1}{ContinuedFractionXmpPageEmpty1}
+\pastebutton{ContinuedFractionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{c := continuedFraction(314159/100000)\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (1)
+           1 ³     1  ³     1 ³     1  ³     1 ³     1 ³
+     3 + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
+         ³ 7     ³ 15     ³ 1     ³ 25     ³ 1     ³ 7
+   + 
+       1 ³
+     ÚÄÄÄÙ
+     ³ 4
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty1}
+\begin{paste}{ContinuedFractionXmpPageEmpty1}
+{ContinuedFractionXmpPagePatch1}
+\pastebutton{ContinuedFractionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{c := continuedFraction(314159/100000)\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch2}
+\begin{paste}{ContinuedFractionXmpPageFull2}
+{ContinuedFractionXmpPageEmpty2}
+\pastebutton{ContinuedFractionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{partialQuotients c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (2)  [3,7,15,1,25,1,7,4]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty2}
+\begin{paste}{ContinuedFractionXmpPageEmpty2}
+{ContinuedFractionXmpPagePatch2}
+\pastebutton{ContinuedFractionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{partialQuotients c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch3}
+\begin{paste}{ContinuedFractionXmpPageFull3}
+{ContinuedFractionXmpPageEmpty3}
+\pastebutton{ContinuedFractionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{convergents c\free{c }}
+\indentrel{3}\begin{verbatim}
+           22 333 355 9208 9563 76149 314159
+   (3)  [3,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ]
+            7 106 113 2931 3044 24239 100000
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty3}
+\begin{paste}{ContinuedFractionXmpPageEmpty3}
+{ContinuedFractionXmpPagePatch3}
+\pastebutton{ContinuedFractionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{convergents c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch4}
+\begin{paste}{ContinuedFractionXmpPageFull4}
+{ContinuedFractionXmpPageEmpty4}
+\pastebutton{ContinuedFractionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{approximants c\free{c }}
+\indentrel{3}\begin{verbatim}
+                                      ______
+           22 333 355 9208 9563 76149 314159
+   (4)  [3,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ]
+            7 106 113 2931 3044 24239 100000
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty4}
+\begin{paste}{ContinuedFractionXmpPageEmpty4}
+{ContinuedFractionXmpPagePatch4}
+\pastebutton{ContinuedFractionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{approximants c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch5}
+\begin{paste}{ContinuedFractionXmpPageFull5}
+{ContinuedFractionXmpPageEmpty5}
+\pastebutton{ContinuedFractionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{pq := partialQuotients(1/c)\free{c }\bound{pq }}
+\indentrel{3}\begin{verbatim}
+   (5)  [0,3,7,15,1,25,1,7,4]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty5}
+\begin{paste}{ContinuedFractionXmpPageEmpty5}
+{ContinuedFractionXmpPagePatch5}
+\pastebutton{ContinuedFractionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{pq := partialQuotients(1/c)\free{c }\bound{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch6}
+\begin{paste}{ContinuedFractionXmpPageFull6}
+{ContinuedFractionXmpPageEmpty6}
+\pastebutton{ContinuedFractionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{
+continuedFraction(first pq,repeating [1],rest pq)\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (6)
+       1 ³     1 ³     1  ³     1 ³     1  ³     1 ³
+     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ
+     ³ 3     ³ 7     ³ 15     ³ 1     ³ 25     ³ 1
+   + 
+       1 ³     1 ³
+     ÚÄÄÄÙ + ÚÄÄÄÙ
+     ³ 7     ³ 4
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty6}
+\begin{paste}{ContinuedFractionXmpPageEmpty6}
+{ContinuedFractionXmpPagePatch6}
+\pastebutton{ContinuedFractionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{
+continuedFraction(first pq,repeating [1],rest pq)\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch7}
+\begin{paste}{ContinuedFractionXmpPageFull7}
+{ContinuedFractionXmpPageEmpty7}
+\pastebutton{ContinuedFractionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{
+z:=continuedFraction(3,repeating [1],repeating [3,6])\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (7)
+           1 ³     1 ³     1 ³     1 ³     1 ³     1 ³
+     3 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
+         ³ 3     ³ 6     ³ 3     ³ 6     ³ 3     ³ 6
+   + 
+       1 ³     1 ³     1 ³     1 ³
+     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ...
+     ³ 3     ³ 6     ³ 3     ³ 6
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty7}
+\begin{paste}{ContinuedFractionXmpPageEmpty7}
+{ContinuedFractionXmpPagePatch7}
+\pastebutton{ContinuedFractionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{
+z:=continuedFraction(3,repeating [1],repeating [3,6])\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch8}
+\begin{paste}{ContinuedFractionXmpPageFull8}
+{ContinuedFractionXmpPageEmpty8}
+\pastebutton{ContinuedFractionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{
+dens:Stream Integer := cons(1,generate((x+->x+4),6))\bound{dens }}
+\indentrel{3}\begin{verbatim}
+   (8)  [1,6,10,14,18,22,26,30,34,38,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty8}
+\begin{paste}{ContinuedFractionXmpPageEmpty8}
+{ContinuedFractionXmpPagePatch8}
+\pastebutton{ContinuedFractionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{
+dens:Stream Integer := cons(1,generate((x+->x+4),6))\bound{dens }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch9}
+\begin{paste}{ContinuedFractionXmpPageFull9}
+{ContinuedFractionXmpPageEmpty9}
+\pastebutton{ContinuedFractionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{
+cf := continuedFraction(0,repeating [1],dens)\free{dens }\bound{cf }}
+\indentrel{3}\begin{verbatim}
+   (9)
+       1 ³     1 ³     1  ³     1  ³     1  ³     1  ³
+     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ
+     ³ 1     ³ 6     ³ 10     ³ 14     ³ 18     ³ 22
+   + 
+       1  ³     1  ³     1  ³     1  ³
+     ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ...
+     ³ 26     ³ 30     ³ 34     ³ 38
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty9}
+\begin{paste}{ContinuedFractionXmpPageEmpty9}
+{ContinuedFractionXmpPagePatch9}
+\pastebutton{ContinuedFractionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{
+cf := continuedFraction(0,repeating [1],dens)\free{dens }\bound{cf }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch10}
+\begin{paste}{ContinuedFractionXmpPageFull10}
+{ContinuedFractionXmpPageEmpty10}
+\pastebutton{ContinuedFractionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{ccf := convergents cf\free{cf }\bound{ccf }}
+\indentrel{3}\begin{verbatim}
+   (10)
+          6  61   860  15541  342762   8927353
+   [0, 1, Ä, ÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄ,
+          7  71  1001  18089  398959  10391023
+    268163352   9126481321
+    ÄÄÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄÄÄÄ, ...]
+    312129649  10622799089
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty10}
+\begin{paste}{ContinuedFractionXmpPageEmpty10}
+{ContinuedFractionXmpPagePatch10}
+\pastebutton{ContinuedFractionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{ccf := convergents cf\free{cf }\bound{ccf }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch11}
+\begin{paste}{ContinuedFractionXmpPageFull11}
+{ContinuedFractionXmpPageEmpty11}
+\pastebutton{ContinuedFractionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{
+eConvergents := [2*e + 1 for e in ccf]\bound{ec }\free{ccf }}
+\indentrel{3}\begin{verbatim}
+   (11)
+          19  193  2721  49171  1084483  28245729
+   [1, 3, ÄÄ, ÄÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄ,
+           7   71  1001  18089   398959  10391023
+    848456353  28875761731
+    ÄÄÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄÄÄÄ, ...]
+    312129649  10622799089
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty11}
+\begin{paste}{ContinuedFractionXmpPageEmpty11}
+{ContinuedFractionXmpPagePatch11}
+\pastebutton{ContinuedFractionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{
+eConvergents := [2*e + 1 for e in ccf]\bound{ec }\free{ccf }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch12}
+\begin{paste}{ContinuedFractionXmpPageFull12}
+{ContinuedFractionXmpPageEmpty12}
+\pastebutton{ContinuedFractionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{eConvergents :: Stream Float\free{ec }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [1.0, 3.0, 2.7142857142 857142857,
+    2.7183098591 549295775, 2.7182817182 817182817,
+    2.7182818287 356957267, 2.7182818284 585634113,
+    2.7182818284 590458514, 2.7182818284 590452348,
+    2.7182818284 590452354, ...]
+                                     Type: Stream Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty12}
+\begin{paste}{ContinuedFractionXmpPageEmpty12}
+{ContinuedFractionXmpPagePatch12}
+\pastebutton{ContinuedFractionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{eConvergents :: Stream Float\free{ec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch13}
+\begin{paste}{ContinuedFractionXmpPageFull13}
+{ContinuedFractionXmpPageEmpty13}
+\pastebutton{ContinuedFractionXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{exp 1.0}
+\indentrel{3}\begin{verbatim}
+   (13)  2.7182818284 590452354
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty13}
+\begin{paste}{ContinuedFractionXmpPageEmpty13}
+{ContinuedFractionXmpPagePatch13}
+\pastebutton{ContinuedFractionXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{exp 1.0}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch14}
+\begin{paste}{ContinuedFractionXmpPageFull14}
+{ContinuedFractionXmpPageEmpty14}
+\pastebutton{ContinuedFractionXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{
+cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])
+\bound{cf1 }}
+\indentrel{3}\begin{verbatim}
+   (14)
+           1 ³     9 ³     25 ³     49 ³     81 ³
+     1 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ
+         ³ 2     ³ 2     ³ 2      ³ 2      ³ 2
+   + 
+     121 ³     169 ³     225 ³     289 ³     361 ³
+   ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ...
+   ³  2      ³  2      ³  2      ³  2      ³  2
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty14}
+\begin{paste}{ContinuedFractionXmpPageEmpty14}
+{ContinuedFractionXmpPagePatch14}
+\pastebutton{ContinuedFractionXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{
+cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])
+\bound{cf1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch15}
+\begin{paste}{ContinuedFractionXmpPageFull15}
+{ContinuedFractionXmpPageEmpty15}
+\pastebutton{ContinuedFractionXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{ccf := convergents cf\free{cf1 }\bound{ccf1 }}
+\indentrel{3}\begin{verbatim}
+   (15)
+      3 15 105 315 3465 45045 45045 765765 14549535
+   [1,Ä,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄ,...]
+      2 13  76 263 2578 36979 33976 622637 11064338
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty15}
+\begin{paste}{ContinuedFractionXmpPageEmpty15}
+{ContinuedFractionXmpPagePatch15}
+\pastebutton{ContinuedFractionXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{ccf := convergents cf\free{cf1 }\bound{ccf1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch16}
+\begin{paste}{ContinuedFractionXmpPageFull16}
+{ContinuedFractionXmpPageEmpty16}
+\pastebutton{ContinuedFractionXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{
+piConvergents := [4/p for p in ccf]\bound{piConvergents }\free{ccf1 }}
+\indentrel{3}\begin{verbatim}
+   (16)
+       8  52  304  1052  10312  147916  135904  2490548
+   [4, Ä, ÄÄ, ÄÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄÄ,
+       3  15  105   315   3465   45045   45045   765765
+    44257352
+    ÄÄÄÄÄÄÄÄ, ...]
+    14549535
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty16}
+\begin{paste}{ContinuedFractionXmpPageEmpty16}
+{ContinuedFractionXmpPagePatch16}
+\pastebutton{ContinuedFractionXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{
+piConvergents := [4/p for p in ccf]\bound{piConvergents }\free{ccf1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch17}
+\begin{paste}{ContinuedFractionXmpPageFull17}
+{ContinuedFractionXmpPageEmpty17}
+\pastebutton{ContinuedFractionXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{piConvergents :: Stream Float\free{piConvergents }}
+\indentrel{3}\begin{verbatim}
+   (17)
+   [4.0, 2.6666666666 666666667, 3.4666666666 666666667,
+    2.8952380952 380952381, 3.3396825396 825396825,
+    2.9760461760 461760462, 3.2837384837 384837385,
+    3.0170718170 718170718, 3.2523659347 188758953,
+    3.0418396189 294022111, ...]
+                                     Type: Stream Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty17}
+\begin{paste}{ContinuedFractionXmpPageEmpty17}
+{ContinuedFractionXmpPagePatch17}
+\pastebutton{ContinuedFractionXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{piConvergents :: Stream Float\free{piConvergents }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch18}
+\begin{paste}{ContinuedFractionXmpPageFull18}
+{ContinuedFractionXmpPageEmpty18}
+\pastebutton{ContinuedFractionXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{continuedFraction((- 122 + 597*\%i)/(4 - 4*\%i))}
+\indentrel{3}\begin{verbatim}
+                            1    ³         1     ³
+   (18)  - 90 + 59%i + ÚÄÄÄÄÄÄÄÄÄÙ + ÚÄÄÄÄÄÄÄÄÄÄÄÙ
+                       ³ 1 - 2%i     ³ - 1 + 2%i
+                Type: ContinuedFraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty18}
+\begin{paste}{ContinuedFractionXmpPageEmpty18}
+{ContinuedFractionXmpPagePatch18}
+\pastebutton{ContinuedFractionXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{continuedFraction((- 122 + 597*\%i)/(4 - 4*\%i))}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch19}
+\begin{paste}{ContinuedFractionXmpPageFull19}
+{ContinuedFractionXmpPageEmpty19}
+\pastebutton{ContinuedFractionXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{
+r : Fraction UnivariatePolynomial(x,Fraction Integer)\bound{rdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty19}
+\begin{paste}{ContinuedFractionXmpPageEmpty19}
+{ContinuedFractionXmpPagePatch19}
+\pastebutton{ContinuedFractionXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{
+r : Fraction UnivariatePolynomial(x,Fraction Integer)\bound{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch20}
+\begin{paste}{ContinuedFractionXmpPageFull20}
+{ContinuedFractionXmpPageEmpty20}
+\pastebutton{ContinuedFractionXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{
+r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))\free{rdec }\bound{r }}
+\indentrel{3}\begin{verbatim}
+           2
+          x  - 3x + 2
+   (20)  ÄÄÄÄÄÄÄÄÄÄÄÄ
+          2
+         x  - 7x + 12
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty20}
+\begin{paste}{ContinuedFractionXmpPageEmpty20}
+{ContinuedFractionXmpPagePatch20}
+\pastebutton{ContinuedFractionXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{
+r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))\free{rdec }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch21}
+\begin{paste}{ContinuedFractionXmpPageFull21}
+{ContinuedFractionXmpPageEmpty21}
+\pastebutton{ContinuedFractionXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{continuedFraction r\free{r }}
+\indentrel{3}\begin{verbatim}
+                  1    ³         1     ³
+   (21)  1 + ÚÄÄÄÄÄÄÄÄÄÙ + ÚÄÄÄÄÄÄÄÄÄÄÄÙ
+             ³ 1     9     ³ 16     40
+             ³ Ä x - Ä     ³ ÄÄ x - ÄÄ
+             ³ 4     8     ³  3      3
+Type: ContinuedFraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty21}
+\begin{paste}{ContinuedFractionXmpPageEmpty21}
+{ContinuedFractionXmpPagePatch21}
+\pastebutton{ContinuedFractionXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{continuedFraction r\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPagePatch22}
+\begin{paste}{ContinuedFractionXmpPageFull22}
+{ContinuedFractionXmpPageEmpty22}
+\pastebutton{ContinuedFractionXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{
+[i*i for i in convergents(z) :: Stream Float]\free{z }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [9.0, 11.1111111111 11111111, 10.9944598337 9501385,
+    11.0002777777 77777778, 10.9999860763 98799786,
+    11.0000006979 29731039, 10.9999999650 15834446,
+    11.0000000017 53603304, 10.9999999999 12099531,
+    11.0000000000 04406066, ...]
+                                     Type: Stream Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ContinuedFractionXmpPageEmpty22}
+\begin{paste}{ContinuedFractionXmpPageEmpty22}
+{ContinuedFractionXmpPagePatch22}
+\pastebutton{ContinuedFractionXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{
+[i*i for i in convergents(z) :: Stream Float]\free{z }}
+\end{paste}\end{patch}
+
 @
 \section{cphelp.ht}
 \pagehead{CPHelp}{cphelp.ht}{Control Panel Bits}
@@ -4638,13 +9335,15 @@ The number of cubes with 4 red vertices and 4 blue vertices.
 The number of labeled graphs with degree sequence \spad{2 2 2 1 1}
 with no loops or multiple edges.
 }{
-\spadpaste{cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
+\spadpaste{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
 }
 \xtc{
 Again, but
 with loops allowed but not multiple edges.
 }{
-\spadpaste{cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
+\spadpaste{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
 }
 \xtc{
 Again, but
@@ -4665,8 +9364,8 @@ we are at liberty to evaluate the
 components any way we please.
 For example we can produce enumerating generating functions.
 {CycleIndicators}
-This is done by providing a function \spad{f} on an integer \spad{i} to the
-value required of \subscriptIt{s}{i},
+This is done by providing a function \spad{f} on an integer \spad{i} 
+to the value required of \subscriptIt{s}{i},
 and then evaluating \spad{eval(f, cycleindex)}.
 \xtc{
 }{
@@ -4809,6 +9508,882 @@ The smallest is
 \autobuttons
 \end{page}
 
+\begin{patch}{CycleIndicatorsXmpPagePatch1}
+\begin{paste}{CycleIndicatorsXmpPageFull1}{CycleIndicatorsXmpPageEmpty1}
+\pastebutton{CycleIndicatorsXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)expose EVALCYC}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty1}
+\begin{paste}{CycleIndicatorsXmpPageEmpty1}{CycleIndicatorsXmpPagePatch1}
+\pastebutton{CycleIndicatorsXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)expose EVALCYC}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch2}
+\begin{paste}{CycleIndicatorsXmpPageFull2}{CycleIndicatorsXmpPageEmpty2}
+\pastebutton{CycleIndicatorsXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{complete 1}
+\indentrel{3}\begin{verbatim}
+   (1)  (1)
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty2}
+\begin{paste}{CycleIndicatorsXmpPageEmpty2}{CycleIndicatorsXmpPagePatch2}
+\pastebutton{CycleIndicatorsXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{complete 1}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch3}
+\begin{paste}{CycleIndicatorsXmpPageFull3}{CycleIndicatorsXmpPageEmpty3}
+\pastebutton{CycleIndicatorsXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{complete 2}
+\indentrel{3}\begin{verbatim}
+        1       1   2
+   (2)  Ä (2) + Ä (1 )
+        2       2
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty3}
+\begin{paste}{CycleIndicatorsXmpPageEmpty3}{CycleIndicatorsXmpPagePatch3}
+\pastebutton{CycleIndicatorsXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{complete 2}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch4}
+\begin{paste}{CycleIndicatorsXmpPageFull4}{CycleIndicatorsXmpPageEmpty4}
+\pastebutton{CycleIndicatorsXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{complete 3}
+\indentrel{3}\begin{verbatim}
+        1       1         1   3
+   (3)  Ä (3) + Ä (2 1) + Ä (1 )
+        3       2         6
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty4}
+\begin{paste}{CycleIndicatorsXmpPageEmpty4}{CycleIndicatorsXmpPagePatch4}
+\pastebutton{CycleIndicatorsXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{complete 3}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch5}
+\begin{paste}{CycleIndicatorsXmpPageFull5}{CycleIndicatorsXmpPageEmpty5}
+\pastebutton{CycleIndicatorsXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{complete 7}
+\indentrel{3}\begin{verbatim}
+   (4)
+     1       1          1          1     2     1
+     Ä (7) + Ä (6 1) + ÄÄ (5 2) + ÄÄ (5 1 ) + ÄÄ (4 3)
+     7       6         10         10          12
+   + 
+     1            1     3     1   2      1     2
+     Ä (4 2 1) + ÄÄ (4 1 ) + ÄÄ (3 1) + ÄÄ (3 2 )
+     8           24          18         24
+   + 
+      1       2     1     4     1   3      1   2 3
+     ÄÄ (3 2 1 ) + ÄÄ (3 1 ) + ÄÄ (2 1) + ÄÄ (2 1 )
+     12            72          48         48
+   + 
+      1      5      1    7
+     ÄÄÄ (2 1 ) + ÄÄÄÄ (1 )
+     240          5040
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty5}
+\begin{paste}{CycleIndicatorsXmpPageEmpty5}{CycleIndicatorsXmpPagePatch5}
+\pastebutton{CycleIndicatorsXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{complete 7}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch6}
+\begin{paste}{CycleIndicatorsXmpPageFull6}{CycleIndicatorsXmpPageEmpty6}
+\pastebutton{CycleIndicatorsXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{elementary 7}
+\indentrel{3}\begin{verbatim}
+   (5)
+     1       1          1          1     2     1
+     Ä (7) - Ä (6 1) - ÄÄ (5 2) + ÄÄ (5 1 ) - ÄÄ (4 3)
+     7       6         10         10          12
+   + 
+     1            1     3     1   2      1     2
+     Ä (4 2 1) - ÄÄ (4 1 ) + ÄÄ (3 1) + ÄÄ (3 2 )
+     8           24          18         24
+   + 
+        1       2     1     4     1   3      1   2 3
+     - ÄÄ (3 2 1 ) + ÄÄ (3 1 ) - ÄÄ (2 1) + ÄÄ (2 1 )
+       12            72          48         48
+   + 
+        1      5      1    7
+     - ÄÄÄ (2 1 ) + ÄÄÄÄ (1 )
+       240          5040
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty6}
+\begin{paste}{CycleIndicatorsXmpPageEmpty6}{CycleIndicatorsXmpPagePatch6}
+\pastebutton{CycleIndicatorsXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{elementary 7}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch7}
+\begin{paste}{CycleIndicatorsXmpPageFull7}{CycleIndicatorsXmpPageEmpty7}
+\pastebutton{CycleIndicatorsXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{alternating 7}
+\indentrel{3}\begin{verbatim}
+   (6)
+     2       1     2    1           1   2      1     2
+     Ä (7) + Ä (5 1 ) + Ä (4 2 1) + Ä (3 1) + ÄÄ (3 2 )
+     7       5          4           9         12
+   + 
+      1     4     1   2 3      1    7
+     ÄÄ (3 1 ) + ÄÄ (2 1 ) + ÄÄÄÄ (1 )
+     36          24          2520
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty7}
+\begin{paste}{CycleIndicatorsXmpPageEmpty7}{CycleIndicatorsXmpPagePatch7}
+\pastebutton{CycleIndicatorsXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{alternating 7}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch8}
+\begin{paste}{CycleIndicatorsXmpPageFull8}{CycleIndicatorsXmpPageEmpty8}
+\pastebutton{CycleIndicatorsXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{cyclic 7}
+\indentrel{3}\begin{verbatim}
+        6       1   7
+   (7)  Ä (7) + Ä (1 )
+        7       7
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty8}
+\begin{paste}{CycleIndicatorsXmpPageEmpty8}{CycleIndicatorsXmpPagePatch8}
+\pastebutton{CycleIndicatorsXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{cyclic 7}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch9}
+\begin{paste}{CycleIndicatorsXmpPageFull9}{CycleIndicatorsXmpPageEmpty9}
+\pastebutton{CycleIndicatorsXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{dihedral 7}
+\indentrel{3}\begin{verbatim}
+        3       1   3      1   7
+   (8)  Ä (7) + Ä (2 1) + ÄÄ (1 )
+        7       2         14
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty9}
+\begin{paste}{CycleIndicatorsXmpPageEmpty9}{CycleIndicatorsXmpPagePatch9}
+\pastebutton{CycleIndicatorsXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{dihedral 7}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch10}
+\begin{paste}{CycleIndicatorsXmpPageFull10}{CycleIndicatorsXmpPageEmpty10}
+\pastebutton{CycleIndicatorsXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{graphs 5}
+\indentrel{3}\begin{verbatim}
+   (9)
+     1           1   2    1   2     1   3     1   4 2
+     Ä (6 3 1) + Ä (5 ) + Ä (4 2) + Ä (3 1) + Ä (2 1 )
+     6           5        4         6         8
+   + 
+      1   3 4     1    10
+     ÄÄ (2 1 ) + ÄÄÄ (1  )
+     12          120
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty10}
+\begin{paste}{CycleIndicatorsXmpPageEmpty10}{CycleIndicatorsXmpPagePatch10}
+\pastebutton{CycleIndicatorsXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{graphs 5}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch11}
+\begin{paste}{CycleIndicatorsXmpPageFull11}{CycleIndicatorsXmpPageEmpty11}
+\pastebutton{CycleIndicatorsXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{cap(complete 2**2, complete 2*complete 1**2)}
+\indentrel{3}\begin{verbatim}
+   (10)  4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty11}
+\begin{paste}{CycleIndicatorsXmpPageEmpty11}{CycleIndicatorsXmpPagePatch11}
+\pastebutton{CycleIndicatorsXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{cap(complete 2**2, complete 2*complete 1**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch12}
+\begin{paste}{CycleIndicatorsXmpPageFull12}{CycleIndicatorsXmpPageEmpty12}
+\pastebutton{CycleIndicatorsXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{cap(elementary 2**2, complete 2*complete 1**2)}
+\indentrel{3}\begin{verbatim}
+   (11)  2
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty12}
+\begin{paste}{CycleIndicatorsXmpPageEmpty12}{CycleIndicatorsXmpPagePatch12}
+\pastebutton{CycleIndicatorsXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{cap(elementary 2**2, complete 2*complete 1**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch13}
+\begin{paste}{CycleIndicatorsXmpPageFull13}{CycleIndicatorsXmpPageEmpty13}
+\pastebutton{CycleIndicatorsXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)}
+\indentrel{3}\begin{verbatim}
+   (12)  24
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty13}
+\begin{paste}{CycleIndicatorsXmpPageEmpty13}{CycleIndicatorsXmpPagePatch13}
+\pastebutton{CycleIndicatorsXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch14}
+\begin{paste}{CycleIndicatorsXmpPageFull14}{CycleIndicatorsXmpPageEmpty14}
+\pastebutton{CycleIndicatorsXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{
+cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)}
+\indentrel{3}\begin{verbatim}
+   (13)  8
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty14}
+\begin{paste}{CycleIndicatorsXmpPageEmpty14}{CycleIndicatorsXmpPagePatch14}
+\pastebutton{CycleIndicatorsXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{
+cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch15}
+\begin{paste}{CycleIndicatorsXmpPageFull15}{CycleIndicatorsXmpPageEmpty15}
+\pastebutton{CycleIndicatorsXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)}
+\indentrel{3}\begin{verbatim}
+   (14)  8
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty15}
+\begin{paste}{CycleIndicatorsXmpPageEmpty15}{CycleIndicatorsXmpPagePatch15}
+\pastebutton{CycleIndicatorsXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch16}
+\begin{paste}{CycleIndicatorsXmpPageFull16}{CycleIndicatorsXmpPageEmpty16}
+\pastebutton{CycleIndicatorsXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{
+eval(cup(complete 3*complete 2*complete 1, _
+     cup(complete 2**2*complete 1**2,complete 2**3)))}
+\indentrel{3}\begin{verbatim}
+   (15)  1500
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty16}
+\begin{paste}{CycleIndicatorsXmpPageEmpty16}{CycleIndicatorsXmpPagePatch16}
+\pastebutton{CycleIndicatorsXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{
+eval(cup(complete 3*complete 2*complete 1, _
+     cup(complete 2**2*complete 1**2,complete 2**3)))}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch17}
+\begin{paste}{CycleIndicatorsXmpPageFull17}{CycleIndicatorsXmpPageEmpty17}
+\pastebutton{CycleIndicatorsXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{square:=dihedral 4}
+\indentrel{3}\begin{verbatim}
+         1       3   2    1     2    1   4
+   (16)  Ä (4) + Ä (2 ) + Ä (2 1 ) + Ä (1 )
+         4       8        4          8
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty17}
+\begin{paste}{CycleIndicatorsXmpPageEmpty17}{CycleIndicatorsXmpPagePatch17}
+\pastebutton{CycleIndicatorsXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{square:=dihedral 4}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch18}
+\begin{paste}{CycleIndicatorsXmpPageFull18}{CycleIndicatorsXmpPageEmpty18}
+\pastebutton{CycleIndicatorsXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{cap(complete 2**2,square)}
+\indentrel{3}\begin{verbatim}
+   (17)  2
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty18}
+\begin{paste}{CycleIndicatorsXmpPageEmpty18}{CycleIndicatorsXmpPagePatch18}
+\pastebutton{CycleIndicatorsXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{cap(complete 2**2,square)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch19}
+\begin{paste}{CycleIndicatorsXmpPageFull19}{CycleIndicatorsXmpPageEmpty19}
+\pastebutton{CycleIndicatorsXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{cap(complete 3*complete 2**2,dihedral 7)}
+\indentrel{3}\begin{verbatim}
+   (18)  18
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty19}
+\begin{paste}{CycleIndicatorsXmpPageEmpty19}{CycleIndicatorsXmpPagePatch19}
+\pastebutton{CycleIndicatorsXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{cap(complete 3*complete 2**2,dihedral 7)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch20}
+\begin{paste}{CycleIndicatorsXmpPageFull20}{CycleIndicatorsXmpPageEmpty20}
+\pastebutton{CycleIndicatorsXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{cap(graphs 5,complete 7*complete 3)}
+\indentrel{3}\begin{verbatim}
+   (19)  4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty20}
+\begin{paste}{CycleIndicatorsXmpPageEmpty20}{CycleIndicatorsXmpPagePatch20}
+\pastebutton{CycleIndicatorsXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{cap(graphs 5,complete 7*complete 3)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch21}
+\begin{paste}{CycleIndicatorsXmpPageFull21}{CycleIndicatorsXmpPageEmpty21}
+\pastebutton{CycleIndicatorsXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{s(x) == powerSum(x)}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty21}
+\begin{paste}{CycleIndicatorsXmpPageEmpty21}{CycleIndicatorsXmpPagePatch21}
+\pastebutton{CycleIndicatorsXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{s(x) == powerSum(x)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch22}
+\begin{paste}{CycleIndicatorsXmpPageFull22}{CycleIndicatorsXmpPageEmpty22}
+\pastebutton{CycleIndicatorsXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{
+cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)}
+\indentrel{3}\begin{verbatim}
+         1   2    1   2 2    3   4     1   8
+   (21)  Ä (4 ) + Ä (3 1 ) + Ä (2 ) + ÄÄ (1 )
+         4        3          8        24
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty22}
+\begin{paste}{CycleIndicatorsXmpPageEmpty22}{CycleIndicatorsXmpPagePatch22}
+\pastebutton{CycleIndicatorsXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{
+cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch23}
+\begin{paste}{CycleIndicatorsXmpPageFull23}{CycleIndicatorsXmpPageEmpty23}
+\pastebutton{CycleIndicatorsXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{cap(complete 4**2,cube)}
+\indentrel{3}\begin{verbatim}
+   (22)  7
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty23}
+\begin{paste}{CycleIndicatorsXmpPageEmpty23}{CycleIndicatorsXmpPagePatch23}
+\pastebutton{CycleIndicatorsXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{cap(complete 4**2,cube)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch24}
+\begin{paste}{CycleIndicatorsXmpPageFull24}{CycleIndicatorsXmpPageEmpty24}
+\pastebutton{CycleIndicatorsXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
+\indentrel{3}\begin{verbatim}
+   (23)  7
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty24}
+\begin{paste}{CycleIndicatorsXmpPageEmpty24}{CycleIndicatorsXmpPagePatch24}
+\pastebutton{CycleIndicatorsXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch25}
+\begin{paste}{CycleIndicatorsXmpPageFull25}{CycleIndicatorsXmpPageEmpty25}
+\pastebutton{CycleIndicatorsXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
+\indentrel{3}\begin{verbatim}
+   (24)  17
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty25}
+\begin{paste}{CycleIndicatorsXmpPageEmpty25}{CycleIndicatorsXmpPagePatch25}
+\pastebutton{CycleIndicatorsXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch26}
+\begin{paste}{CycleIndicatorsXmpPageFull26}{CycleIndicatorsXmpPageEmpty26}
+\pastebutton{CycleIndicatorsXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))}
+\indentrel{3}\begin{verbatim}
+   (25)  10
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty26}
+\begin{paste}{CycleIndicatorsXmpPageEmpty26}{CycleIndicatorsXmpPagePatch26}
+\pastebutton{CycleIndicatorsXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch27}
+\begin{paste}{CycleIndicatorsXmpPageFull27}{CycleIndicatorsXmpPageEmpty27}
+\pastebutton{CycleIndicatorsXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))}
+\indentrel{3}\begin{verbatim}
+   (26)  23
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty27}
+\begin{paste}{CycleIndicatorsXmpPageEmpty27}{CycleIndicatorsXmpPagePatch27}
+\pastebutton{CycleIndicatorsXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{
+cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch28}
+\begin{paste}{CycleIndicatorsXmpPageFull28}{CycleIndicatorsXmpPageEmpty28}
+\pastebutton{CycleIndicatorsXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{x: ULS(FRAC INT,'x,0) := 'x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (27)  x
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty28}
+\begin{paste}{CycleIndicatorsXmpPageEmpty28}{CycleIndicatorsXmpPagePatch28}
+\pastebutton{CycleIndicatorsXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{x: ULS(FRAC INT,'x,0) := 'x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch29}
+\begin{paste}{CycleIndicatorsXmpPageFull29}{CycleIndicatorsXmpPageEmpty29}
+\pastebutton{CycleIndicatorsXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0)\bound{zodec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty29}
+\begin{paste}{CycleIndicatorsXmpPageEmpty29}{CycleIndicatorsXmpPagePatch29}
+\pastebutton{CycleIndicatorsXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0)\bound{zodec }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch30}
+\begin{paste}{CycleIndicatorsXmpPageFull30}{CycleIndicatorsXmpPageEmpty30}
+\pastebutton{CycleIndicatorsXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{Integers: INT -> ULS(FRAC INT, 'x, 0)\bound{idec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty30}
+\begin{paste}{CycleIndicatorsXmpPageEmpty30}{CycleIndicatorsXmpPagePatch30}
+\pastebutton{CycleIndicatorsXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{Integers: INT -> ULS(FRAC INT, 'x, 0)\bound{idec }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch31}
+\begin{paste}{CycleIndicatorsXmpPageFull31}{CycleIndicatorsXmpPageEmpty31}
+\pastebutton{CycleIndicatorsXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{ZeroOrOne n == 1+x**n\free{x zodec }\bound{zo }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty31}
+\begin{paste}{CycleIndicatorsXmpPageEmpty31}{CycleIndicatorsXmpPagePatch31}
+\pastebutton{CycleIndicatorsXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{ZeroOrOne n == 1+x**n\free{x zodec }\bound{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch32}
+\begin{paste}{CycleIndicatorsXmpPageFull32}{CycleIndicatorsXmpPageEmpty32}
+\pastebutton{CycleIndicatorsXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{ZeroOrOne 5\free{zo }}
+\indentrel{3}\begin{verbatim}
+              5
+   (31)  1 + x
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty32}
+\begin{paste}{CycleIndicatorsXmpPageEmpty32}{CycleIndicatorsXmpPagePatch32}
+\pastebutton{CycleIndicatorsXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{ZeroOrOne 5\free{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch33}
+\begin{paste}{CycleIndicatorsXmpPageFull33}{CycleIndicatorsXmpPageEmpty33}
+\pastebutton{CycleIndicatorsXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{Integers n == 1/(1-x**n)\free{x idec }\bound{i }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty33}
+\begin{paste}{CycleIndicatorsXmpPageEmpty33}{CycleIndicatorsXmpPagePatch33}
+\pastebutton{CycleIndicatorsXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{Integers n == 1/(1-x**n)\free{x idec }\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch34}
+\begin{paste}{CycleIndicatorsXmpPageFull34}{CycleIndicatorsXmpPageEmpty34}
+\pastebutton{CycleIndicatorsXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{Integers 5\free{i }}
+\indentrel{3}\begin{verbatim}
+              5    10      11
+   (33)  1 + x  + x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty34}
+\begin{paste}{CycleIndicatorsXmpPageEmpty34}{CycleIndicatorsXmpPagePatch34}
+\pastebutton{CycleIndicatorsXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{Integers 5\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch35}
+\begin{paste}{CycleIndicatorsXmpPageFull35}{CycleIndicatorsXmpPageEmpty35}
+\pastebutton{CycleIndicatorsXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{eval(ZeroOrOne, graphs 5)\free{zo }}
+\indentrel{3}\begin{verbatim}
+   (34)
+               2     3     4     5     6     7     8    9
+     1 + x + 2x  + 4x  + 6x  + 6x  + 6x  + 4x  + 2x  + x
+   + 
+      10      11
+     x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty35}
+\begin{paste}{CycleIndicatorsXmpPageEmpty35}{CycleIndicatorsXmpPagePatch35}
+\pastebutton{CycleIndicatorsXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{eval(ZeroOrOne, graphs 5)\free{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch36}
+\begin{paste}{CycleIndicatorsXmpPageFull36}{CycleIndicatorsXmpPageEmpty36}
+\pastebutton{CycleIndicatorsXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{eval(ZeroOrOne,dihedral 8)\free{zo }}
+\indentrel{3}\begin{verbatim}
+                   2     3     4     5     6    7    8
+   (35)  1 + x + 4x  + 5x  + 8x  + 5x  + 4x  + x  + x
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty36}
+\begin{paste}{CycleIndicatorsXmpPageEmpty36}{CycleIndicatorsXmpPagePatch36}
+\pastebutton{CycleIndicatorsXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{eval(ZeroOrOne,dihedral 8)\free{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch37}
+\begin{paste}{CycleIndicatorsXmpPageFull37}{CycleIndicatorsXmpPageEmpty37}
+\pastebutton{CycleIndicatorsXmpPageFull37}{\hidepaste}
+\tab{5}\spadcommand{eval(Integers,complete 4)\free{i }}
+\indentrel{3}\begin{verbatim}
+   (36)
+               2     3     4     5     6      7      8
+     1 + x + 2x  + 3x  + 5x  + 6x  + 9x  + 11x  + 15x
+   + 
+        9      10      11
+     18x  + 23x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty37}
+\begin{paste}{CycleIndicatorsXmpPageEmpty37}{CycleIndicatorsXmpPagePatch37}
+\pastebutton{CycleIndicatorsXmpPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{eval(Integers,complete 4)\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch38}
+\begin{paste}{CycleIndicatorsXmpPageFull38}{CycleIndicatorsXmpPageEmpty38}
+\pastebutton{CycleIndicatorsXmpPageFull38}{\hidepaste}
+\tab{5}\spadcommand{eval(Integers,elementary 4)\free{i }}
+\indentrel{3}\begin{verbatim}
+   (37)
+      6    7     8     9     10     11     12      13
+     x  + x  + 2x  + 3x  + 5x   + 6x   + 9x   + 11x
+   + 
+        14      15      16      17
+     15x   + 18x   + 23x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty38}
+\begin{paste}{CycleIndicatorsXmpPageEmpty38}{CycleIndicatorsXmpPagePatch38}
+\pastebutton{CycleIndicatorsXmpPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{eval(Integers,elementary 4)\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch39}
+\begin{paste}{CycleIndicatorsXmpPageFull39}{CycleIndicatorsXmpPageEmpty39}
+\pastebutton{CycleIndicatorsXmpPageFull39}{\hidepaste}
+\tab{5}\spadcommand{eval(ZeroOrOne,cube)\free{zo }}
+\indentrel{3}\begin{verbatim}
+                   2     3     4     5     6    7    8
+   (38)  1 + x + 3x  + 3x  + 7x  + 3x  + 3x  + x  + x
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty39}
+\begin{paste}{CycleIndicatorsXmpPageEmpty39}{CycleIndicatorsXmpPagePatch39}
+\pastebutton{CycleIndicatorsXmpPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{eval(ZeroOrOne,cube)\free{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch40}
+\begin{paste}{CycleIndicatorsXmpPageFull40}{CycleIndicatorsXmpPageEmpty40}
+\pastebutton{CycleIndicatorsXmpPageFull40}{\hidepaste}
+\tab{5}\spadcommand{eval(Integers,cube)\free{i }}
+\indentrel{3}\begin{verbatim}
+   (39)
+               2     3      4      5      6       7
+     1 + x + 4x  + 7x  + 21x  + 37x  + 85x  + 151x
+   + 
+         8       9       10      11
+     292x  + 490x  + 848x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty40}
+\begin{paste}{CycleIndicatorsXmpPageEmpty40}{CycleIndicatorsXmpPagePatch40}
+\pastebutton{CycleIndicatorsXmpPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{eval(Integers,cube)\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch41}
+\begin{paste}{CycleIndicatorsXmpPageFull41}{CycleIndicatorsXmpPageEmpty41}
+\pastebutton{CycleIndicatorsXmpPageFull41}{\hidepaste}
+\tab{5}\spadcommand{eval(Integers,graphs 5)\free{i }}
+\indentrel{3}\begin{verbatim}
+   (40)
+               2     3      4      5      6       7
+     1 + x + 3x  + 7x  + 17x  + 35x  + 76x  + 149x
+   + 
+         8       9       10      11
+     291x  + 539x  + 974x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty41}
+\begin{paste}{CycleIndicatorsXmpPageEmpty41}{CycleIndicatorsXmpPagePatch41}
+\pastebutton{CycleIndicatorsXmpPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{eval(Integers,graphs 5)\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch42}
+\begin{paste}{CycleIndicatorsXmpPageFull42}{CycleIndicatorsXmpPageEmpty42}
+\pastebutton{CycleIndicatorsXmpPageFull42}{\hidepaste}
+\tab{5}\spadcommand{eval(ZeroOrOne ,graphs 15)\free{zo }}
+\indentrel{3}\begin{verbatim}
+   (41)
+               2     3      4      5      6       7
+     1 + x + 2x  + 5x  + 11x  + 26x  + 68x  + 177x
+   + 
+         8        9        10      11
+     496x  + 1471x  + 4583x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty42}
+\begin{paste}{CycleIndicatorsXmpPageEmpty42}{CycleIndicatorsXmpPagePatch42}
+\pastebutton{CycleIndicatorsXmpPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{eval(ZeroOrOne ,graphs 15)\free{zo }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch43}
+\begin{paste}{CycleIndicatorsXmpPageFull43}{CycleIndicatorsXmpPageEmpty43}
+\pastebutton{CycleIndicatorsXmpPageFull43}{\hidepaste}
+\tab{5}\spadcommand{cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)}
+\indentrel{3}\begin{verbatim}
+   (42)  49958972383320
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty43}
+\begin{paste}{CycleIndicatorsXmpPageEmpty43}{CycleIndicatorsXmpPagePatch43}
+\pastebutton{CycleIndicatorsXmpPageEmpty43}{\showpaste}
+\tab{5}\spadcommand{
+cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch44}
+\begin{paste}{CycleIndicatorsXmpPageFull44}{CycleIndicatorsXmpPageEmpty44}
+\pastebutton{CycleIndicatorsXmpPageFull44}{\hidepaste}
+\tab{5}\spadcommand{sf3221:= SFunction [3,2,2,1]\bound{sf3221 }}
+\indentrel{3}\begin{verbatim}
+   (43)
+      1          1     2     1   2     1
+     ÄÄ (6 2) - ÄÄ (6 1 ) - ÄÄ (4 ) + ÄÄ (4 3 1)
+     12         12          16        12
+   + 
+      1     4     1   2      1   2 2     1     2
+     ÄÄ (4 1 ) - ÄÄ (3 2) + ÄÄ (3 1 ) - ÄÄ (3 2 1)
+     24          36         36          24
+   + 
+        1       3     1     5     1    4     1   3 2
+     - ÄÄ (3 2 1 ) - ÄÄ (3 1 ) - ÄÄÄ (2 ) + ÄÄ (2 1 )
+       36            72          192        48
+   + 
+      1   2 4     1      6     1    8
+     ÄÄ (2 1 ) - ÄÄÄ (2 1 ) + ÄÄÄ (1 )
+     96          144          576
+             Type: SymmetricPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty44}
+\begin{paste}{CycleIndicatorsXmpPageEmpty44}{CycleIndicatorsXmpPagePatch44}
+\pastebutton{CycleIndicatorsXmpPageEmpty44}{\showpaste}
+\tab{5}\spadcommand{sf3221:= SFunction [3,2,2,1]\bound{sf3221 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch45}
+\begin{paste}{CycleIndicatorsXmpPageFull45}{CycleIndicatorsXmpPageEmpty45}
+\pastebutton{CycleIndicatorsXmpPageFull45}{\hidepaste}
+\tab{5}\spadcommand{cap(sf3221,complete 2**4)\free{sf3221 }}
+\indentrel{3}\begin{verbatim}
+   (44)  3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty45}
+\begin{paste}{CycleIndicatorsXmpPageEmpty45}{CycleIndicatorsXmpPagePatch45}
+\pastebutton{CycleIndicatorsXmpPageEmpty45}{\showpaste}
+\tab{5}\spadcommand{cap(sf3221,complete 2**4)\free{sf3221 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch46}
+\begin{paste}{CycleIndicatorsXmpPageFull46}{CycleIndicatorsXmpPageEmpty46}
+\pastebutton{CycleIndicatorsXmpPageFull46}{\hidepaste}
+\tab{5}\spadcommand{cap(sf3221, powerSum 1**8)\free{sf3221 }}
+\indentrel{3}\begin{verbatim}
+   (45)  70
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty46}
+\begin{paste}{CycleIndicatorsXmpPageEmpty46}{CycleIndicatorsXmpPagePatch46}
+\pastebutton{CycleIndicatorsXmpPageEmpty46}{\showpaste}
+\tab{5}\spadcommand{cap(sf3221, powerSum 1**8)\free{sf3221 }}
+\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPagePatch47}
+\begin{paste}{CycleIndicatorsXmpPageFull47}{CycleIndicatorsXmpPageEmpty47}
+\pastebutton{CycleIndicatorsXmpPageFull47}{\hidepaste}
+\tab{5}\spadcommand{eval(Integers, sf3221)\free{i sf3221 }}
+\indentrel{3}\begin{verbatim}
+   (46)
+      9     10     11      12      13      14      15
+     x  + 3x   + 7x   + 14x   + 27x   + 47x   + 79x
+   + 
+         16       17       18       19      20
+     126x   + 196x   + 294x   + 432x   + O(x  )
+    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{CycleIndicatorsXmpPageEmpty47}
+\begin{paste}{CycleIndicatorsXmpPageEmpty47}{CycleIndicatorsXmpPagePatch47}
+\pastebutton{CycleIndicatorsXmpPageEmpty47}{\showpaste}
+\tab{5}\spadcommand{eval(Integers, sf3221)\free{i sf3221 }}
+\end{paste}\end{patch}
+
 @
 \section{coverex.ht}
 \pagehead{ExampleCoverPage}{coverex.ht}{Examples Of Axiom Commands}
@@ -4866,7 +10441,205 @@ The smallest is
 \spadpaste{f := integrate(sqrt(1 + t**3),t) \bound{f}}
 \spadpaste{differentiate(f,t) \free{f}}
 \spadpaste{differentiate(f * t**2,t) \free{f}}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexdiffPatch1}
+\begin{paste}{MenuexdiffFull1}{MenuexdiffEmpty1}
+\pastebutton{MenuexdiffFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
+\indentrel{3}\begin{verbatim}
+              2                  2
+             x                  x
+   (1)  2x %e  sin(x) + cos(x)%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty1}
+\begin{paste}{MenuexdiffEmpty1}{MenuexdiffPatch1}
+\pastebutton{MenuexdiffEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch2}
+\begin{paste}{MenuexdiffFull2}{MenuexdiffEmpty2}
+\pastebutton{MenuexdiffFull2}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
+\indentrel{3}\begin{verbatim}
+                         2    2
+        (- 2x sin(x) + (y  + x )cos(x))tan(y)
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                    4     2 2    4
+                   y  + 2x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty2}
+\begin{paste}{MenuexdiffEmpty2}{MenuexdiffPatch2}
+\pastebutton{MenuexdiffEmpty2}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch3}
+\begin{paste}{MenuexdiffFull3}{MenuexdiffEmpty3}
+\pastebutton{MenuexdiffFull3}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
+\indentrel{3}\begin{verbatim}
+   (3)
+         2    2             2
+       (y  + x )sin(x)tan(y)  - 2y sin(x)tan(y)
+     + 
+         2    2
+       (y  + x )sin(x)
+  /
+      4     2 2    4
+     y  + 2x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty3}
+\begin{paste}{MenuexdiffEmpty3}{MenuexdiffPatch3}
+\pastebutton{MenuexdiffEmpty3}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch4}
+\begin{paste}{MenuexdiffFull4}{MenuexdiffEmpty4}
+\pastebutton{MenuexdiffFull4}{\hidepaste}
+\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
+\indentrel{3}\begin{verbatim}
+                             2
+            4      2        x
+   (4)  (16x  + 48x  + 12)%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty4}
+\begin{paste}{MenuexdiffEmpty4}{MenuexdiffPatch4}
+\pastebutton{MenuexdiffEmpty4}{\showpaste}
+\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch5}
+\begin{paste}{MenuexdiffFull5}{MenuexdiffEmpty5}
+\pastebutton{MenuexdiffFull5}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
+\indentrel{3}\begin{verbatim}
+                           3     2
+        8x y sin(x) + (- 2y  - 2x y)cos(x)
+   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               6     2 4     4 2    6
+              y  + 3x y  + 3x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty5}
+\begin{paste}{MenuexdiffEmpty5}{MenuexdiffPatch5}
+\pastebutton{MenuexdiffEmpty5}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch6}
+\begin{paste}{MenuexdiffFull6}{MenuexdiffEmpty6}
+\pastebutton{MenuexdiffFull6}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
+\indentrel{3}\begin{verbatim}
+   (6)
+           2     3             4     2 2     4
+   (- 40x y  + 8x )sin(x) + (6y  + 4x y  - 2x )cos(x)
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              8     2 6     4 4     6 2    8
+             y  + 4x y  + 6x y  + 4x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty6}
+\begin{paste}{MenuexdiffEmpty6}{MenuexdiffPatch6}
+\pastebutton{MenuexdiffEmpty6}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch7}
+\begin{paste}{MenuexdiffFull7}{MenuexdiffEmpty7}
+\pastebutton{MenuexdiffFull7}{\hidepaste}
+\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
+\indentrel{3}\begin{verbatim}
+                    4      3
+            (- 84x y  + 24x y)sin(z)
+   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         12     2 9     4 6     6 3    8
+        y   + 4x y  + 6x y  + 4x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty7}
+\begin{paste}{MenuexdiffEmpty7}{MenuexdiffPatch7}
+\pastebutton{MenuexdiffEmpty7}{\showpaste}
+\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch8}
+\begin{paste}{MenuexdiffFull8}{MenuexdiffEmpty8}
+\pastebutton{MenuexdiffFull8}{\hidepaste}
+\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
+\indentrel{3}\begin{verbatim}
+           t  ÚÄÄÄÄÄÄÄ¿
+         Ú¿   ³  3
+   (8)   ³   \³%N  + 1 d%N
+        ÀÙ
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty8}
+\begin{paste}{MenuexdiffEmpty8}{MenuexdiffPatch8}
+\pastebutton{MenuexdiffEmpty8}{\showpaste}
+\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch9}
+\begin{paste}{MenuexdiffFull9}{MenuexdiffEmpty9}
+\pastebutton{MenuexdiffFull9}{\hidepaste}
+\tab{5}\spadcommand{differentiate(f,t)\free{f }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄ¿
+         ³ 3
+   (9)  \³t  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty9}
+\begin{paste}{MenuexdiffEmpty9}{MenuexdiffPatch9}
+\pastebutton{MenuexdiffEmpty9}{\showpaste}
+\tab{5}\spadcommand{differentiate(f,t)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffPatch10}
+\begin{paste}{MenuexdiffFull10}{MenuexdiffEmpty10}
+\pastebutton{MenuexdiffFull10}{\hidepaste}
+\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
+\indentrel{3}\begin{verbatim}
+              t  ÚÄÄÄÄÄÄÄ¿          ÚÄÄÄÄÄÄ¿
+            Ú¿   ³  3             2 ³ 3
+   (10)  2t ³   \³%N  + 1 d%N  + t \³t  + 1
+           ÀÙ
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexdiffEmpty10}
+\begin{paste}{MenuexdiffEmpty10}{MenuexdiffPatch10}
+\pastebutton{MenuexdiffEmpty10}{\showpaste}
+\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexint}{coverex.ht}{Integration}
@@ -4920,7 +10693,312 @@ The smallest is
 \menudownlink{An Integral of a Non-elementary Function}{ExIntNonElementary}
 \spadpaste{integrate(exp(-x**2) * erf(x) / 
 (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexintPatch1}
+\begin{paste}{MenuexintFull1}{MenuexintEmpty1}
+\pastebutton{MenuexintFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\indentrel{3}\begin{verbatim}
+              3     2
+        atan(x  + 3x  + 3x + 1)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   3
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty1}
+\begin{paste}{MenuexintEmpty1}{MenuexintPatch1}
+\pastebutton{MenuexintEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch2}
+\begin{paste}{MenuexintFull2}{MenuexintEmpty2}
+\pastebutton{MenuexintFull2}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (2)
+           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+           ³         2
+           ³- 93%%CE0  + 12
+         ( ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%CE0)
+          \³       31
+      *
+         log
+                             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+                             ³         2
+                             ³- 93%%CE0  + 12           2
+              (62%%CE0 + 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%CE0
+                            \³       31
+            + 
+              - 31%%CE0 + 18x - 4
+     + 
+             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+             ³         2
+             ³- 93%%CE0  + 12
+         (-  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%CE0)
+            \³       31
+      *
+         log
+                               ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+                               ³         2
+                               ³- 93%%CE0  + 12
+              (- 62%%CE0 - 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                              \³       31
+            + 
+                     2
+              62%%CE0  - 31%%CE0 + 18x - 4
+     + 
+                           2
+       2%%CE0 log(- 62%%CE0  + 31%%CE0 + 9x + 4)
+  /
+     2
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty2}
+\begin{paste}{MenuexintEmpty2}{MenuexintPatch2}
+\pastebutton{MenuexintEmpty2}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch3}
+\begin{paste}{MenuexintFull3}{MenuexintEmpty3}
+\pastebutton{MenuexintFull3}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
+\indentrel{3}\begin{verbatim}
+               3
+        31%%CE0  - 3%%CE0 - 1
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                  31
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty3}
+\begin{paste}{MenuexintEmpty3}{MenuexintPatch3}
+\pastebutton{MenuexintEmpty3}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch4}
+\begin{paste}{MenuexintFull4}{MenuexintEmpty4}
+\pastebutton{MenuexintFull4}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+               2      ÚÄÄÄ¿
+             (x  - a)\³- a  + 2a x         ÚÄ¿
+         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
+                      2             atan(ÄÄÄÄÄ)
+                     x  + a                a
+   (4)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
+                     ÚÄÄÄ¿               ÚÄ¿
+                   2\³- a               \³a
+               Type: Union(List Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty4}
+\begin{paste}{MenuexintEmpty4}{MenuexintPatch4}
+\pastebutton{MenuexintEmpty4}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch5}
+\begin{paste}{MenuexintFull5}{MenuexintEmpty5}
+\pastebutton{MenuexintFull5}{\hidepaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+              ÚÄÄÄ¿              ÚÄÄÄ¿
+            x\³- a  + a        x\³- a  - a
+        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄ¿              ÚÄÄÄ¿
+               \³- a              \³- a
+   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                        ÚÄÄÄ¿
+                      2\³- a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty5}
+\begin{paste}{MenuexintEmpty5}{MenuexintPatch5}
+\pastebutton{MenuexintEmpty5}{\showpaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch6}
+\begin{paste}{MenuexintFull6}{MenuexintEmpty6}
+\pastebutton{MenuexintFull6}{\hidepaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\indentrel{3}\begin{verbatim}
+   (6)
+        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
+   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                              4
+                          440b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty6}
+\begin{paste}{MenuexintEmpty6}{MenuexintPatch6}
+\pastebutton{MenuexintEmpty6}{\showpaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch7}
+\begin{paste}{MenuexintFull7}{MenuexintEmpty7}
+\pastebutton{MenuexintFull7}{\hidepaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\indentrel{3}\begin{verbatim}
+   (7)
+       -
+              2 2 ÚÄ¿
+            2b x \³3
+         *
+                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+            log(\³a \³b x + a   + \³a   \³b x + a + a)
+     + 
+         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+       4b x \³3 log(\³a   \³b x + a - a)
+     + 
+                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
+          2 2     2\³3 \³a   \³b x + a + a\³3
+       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                               3a
+     + 
+                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
+       (12b x - 9a)\³3 \³a \³b x + a
+  /
+        2 2 ÚÄ¿3ÚÄ¿
+     18a x \³3 \³a
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty7}
+\begin{paste}{MenuexintEmpty7}{MenuexintPatch7}
+\pastebutton{MenuexintEmpty7}{\showpaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch8}
+\begin{paste}{MenuexintFull8}{MenuexintEmpty8}
+\pastebutton{MenuexintFull8}{\hidepaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\indentrel{3}\begin{verbatim}
+           x      ÚÄÄÄÄÄÄÄÄ¿
+         Ú¿  log(\³b + %N a  + 1)
+   (8)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%N
+        ÀÙ            %N
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty8}
+\begin{paste}{MenuexintEmpty8}{MenuexintPatch8}
+\pastebutton{MenuexintEmpty8}{\showpaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch9}
+\begin{paste}{MenuexintFull9}{MenuexintEmpty9}
+\pastebutton{MenuexintFull9}{\hidepaste}
+\tab{5}\spadcommand{
+integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/_
+          (sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
+\indentrel{3}\begin{verbatim}
+   (9)
+                          ÚÄÄÄÄÄ¿
+                 - 2cosh(\³x + b  + 1) - 2x
+     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
+          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
+   + 
+         ÚÄÄÄÄÄ¿
+     - 2\³x + b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty9}
+\begin{paste}{MenuexintEmpty9}{MenuexintPatch9}
+\pastebutton{MenuexintEmpty9}{\showpaste}
+\tab{5}\spadcommand{
+integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/_
+          (sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch10}
+\begin{paste}{MenuexintFull10}{MenuexintEmpty10}
+\pastebutton{MenuexintFull10}{\hidepaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\indentrel{3}\begin{verbatim}
+   (10)
+                 atan(x) 2             atan(x) 2
+       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
+                    3                     3
+     + 
+               atan(x)
+       18x tan(ÄÄÄÄÄÄÄ)
+                  3
+  /
+     18
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty10}
+\begin{paste}{MenuexintEmpty10}{MenuexintPatch10}
+\pastebutton{MenuexintEmpty10}{\showpaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch11}
+\begin{paste}{MenuexintFull11}{MenuexintEmpty11}
+\pastebutton{MenuexintFull11}{\hidepaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
+\indentrel{3}\begin{verbatim}
+             ÚÄÄÄÄÄÄÄÄÄÄ¿
+           2\³log(x) + x
+   (11)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+             log(x) + x
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty11}
+\begin{paste}{MenuexintEmpty11}{MenuexintPatch11}
+\pastebutton{MenuexintEmpty11}{\showpaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexintPatch12}
+\begin{paste}{MenuexintFull12}{MenuexintEmpty12}
+\pastebutton{MenuexintFull12}{\hidepaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\indentrel{3}\begin{verbatim}
+                      ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
+         (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
+                               erf(x) + 1
+   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                         8erf(x) - 8
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexintEmpty12}
+\begin{paste}{MenuexintEmpty12}{MenuexintPatch12}
+\pastebutton{MenuexintEmpty12}{\showpaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) /
+ (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexlap}{coverex.ht}{Laplace Transforms}
@@ -4949,7 +11027,122 @@ The smallest is
 \spadpaste{laplace(exp(a*t+b)*Ei(c*t), t, s)}
 \menudownlink{Laplace transform of special functions}{ExLapSpecial2}
 \spadpaste{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexlapPatch1}
+\begin{paste}{MenuexlapFull1}{MenuexlapEmpty1}
+\pastebutton{MenuexlapFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
+\indentrel{3}\begin{verbatim}
+                            1
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         5       4      2 3      3 2     4     5
+        s  + 5a s  + 10a s  + 10a s  + 5a s + a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty1}
+\begin{paste}{MenuexlapEmpty1}{MenuexlapPatch1}
+\pastebutton{MenuexlapEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapPatch2}
+\begin{paste}{MenuexlapFull2}{MenuexlapEmpty2}
+\pastebutton{MenuexlapFull2}{\hidepaste}
+\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
+\indentrel{3}\begin{verbatim}
+             3
+           4a
+   (2)  ÄÄÄÄÄÄÄÄ
+         4     4
+        s  + 4a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty2}
+\begin{paste}{MenuexlapEmpty2}{MenuexlapPatch2}
+\pastebutton{MenuexlapEmpty2}{\showpaste}
+\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapPatch3}
+\begin{paste}{MenuexlapFull3}{MenuexlapEmpty3}
+\pastebutton{MenuexlapFull3}{\hidepaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\indentrel{3}\begin{verbatim}
+             2    2
+   (3)  log(s  + a ) - 2log(s)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty3}
+\begin{paste}{MenuexlapEmpty3}{MenuexlapPatch3}
+\pastebutton{MenuexlapEmpty3}{\showpaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapPatch4}
+\begin{paste}{MenuexlapFull4}{MenuexlapEmpty4}
+\pastebutton{MenuexlapFull4}{\hidepaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\indentrel{3}\begin{verbatim}
+   (4)  - log(s - a) + log(s - b)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty4}
+\begin{paste}{MenuexlapEmpty4}{MenuexlapPatch4}
+\pastebutton{MenuexlapEmpty4}{\showpaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapPatch5}
+\begin{paste}{MenuexlapFull5}{MenuexlapEmpty5}
+\pastebutton{MenuexlapFull5}{\hidepaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\indentrel{3}\begin{verbatim}
+          b    s + c - a
+        %e log(ÄÄÄÄÄÄÄÄÄ)
+                   c
+   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              s - a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty5}
+\begin{paste}{MenuexlapEmpty5}{MenuexlapPatch5}
+\pastebutton{MenuexlapEmpty5}{\showpaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapPatch6}
+\begin{paste}{MenuexlapFull6}{MenuexlapEmpty6}
+\pastebutton{MenuexlapFull6}{\hidepaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\indentrel{3}\begin{verbatim}
+               2    2
+              s  + b             d
+        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
+                  2              s
+                 b
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                     2s
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlapEmpty6}
+\begin{paste}{MenuexlapEmpty6}{MenuexlapPatch6}
+\pastebutton{MenuexlapEmpty6}{\showpaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexlimit}{coverex.ht}{Limits}
@@ -4983,7 +11176,229 @@ The smallest is
 \spadpaste{complexLimit((2 + z)/(1 - z),z = \%infinity)}
 \spadpaste{limit(sin(x)/x,x = \%plusInfinity)}
 \spadpaste{complexLimit(sin(x)/x,x = \%infinity)}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexlimitPatch1}
+\begin{paste}{MenuexlimitFull1}{MenuexlimitEmpty1}
+\pastebutton{MenuexlimitFull1}{\hidepaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\indentrel{3}\begin{verbatim}
+          1
+   (1)  - Ä
+          2
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty1}
+\begin{paste}{MenuexlimitEmpty1}{MenuexlimitPatch1}
+\pastebutton{MenuexlimitEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch2}
+\begin{paste}{MenuexlimitFull2}{MenuexlimitEmpty2}
+\pastebutton{MenuexlimitFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+        a
+   (2)  Ä
+        b
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty2}
+\begin{paste}{MenuexlimitEmpty2}{MenuexlimitPatch2}
+\pastebutton{MenuexlimitEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch3}
+\begin{paste}{MenuexlimitFull3}{MenuexlimitEmpty3}
+\pastebutton{MenuexlimitFull3}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\indentrel{3}\begin{verbatim}
+   (3)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty3}
+\begin{paste}{MenuexlimitEmpty3}{MenuexlimitPatch3}
+\pastebutton{MenuexlimitEmpty3}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch4}
+\begin{paste}{MenuexlimitFull4}{MenuexlimitEmpty4}
+\pastebutton{MenuexlimitFull4}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (4)  [leftHandLimit= "failed",rightHandLimit= 0]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty4}
+\begin{paste}{MenuexlimitEmpty4}{MenuexlimitPatch4}
+\pastebutton{MenuexlimitEmpty4}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch5}
+\begin{paste}{MenuexlimitFull5}{MenuexlimitEmpty5}
+\pastebutton{MenuexlimitFull5}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\indentrel{3}\begin{verbatim}
+   (5)  [leftHandLimit= - 1,rightHandLimit= 1]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty5}
+\begin{paste}{MenuexlimitEmpty5}{MenuexlimitPatch5}
+\pastebutton{MenuexlimitEmpty5}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch6}
+\begin{paste}{MenuexlimitFull6}{MenuexlimitEmpty6}
+\pastebutton{MenuexlimitFull6}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\indentrel{3}\begin{verbatim}
+                            1                    1
+   (6)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
+                           ÚÄ¿                  ÚÄ¿
+                          \³2                  \³2
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty6}
+\begin{paste}{MenuexlimitEmpty6}{MenuexlimitPatch6}
+\pastebutton{MenuexlimitEmpty6}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch7}
+\begin{paste}{MenuexlimitFull7}{MenuexlimitEmpty7}
+\pastebutton{MenuexlimitFull7}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+         ÚÄ¿
+        \³3
+   (7)  ÄÄÄÄ
+          5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty7}
+\begin{paste}{MenuexlimitEmpty7}{MenuexlimitPatch7}
+\pastebutton{MenuexlimitEmpty7}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch8}
+\begin{paste}{MenuexlimitFull8}{MenuexlimitEmpty8}
+\pastebutton{MenuexlimitFull8}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\indentrel{3}\begin{verbatim}
+           ÚÄ¿
+          \³3
+   (8)  - ÄÄÄÄ
+            5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty8}
+\begin{paste}{MenuexlimitEmpty8}{MenuexlimitPatch8}
+\pastebutton{MenuexlimitEmpty8}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch9}
+\begin{paste}{MenuexlimitFull9}{MenuexlimitEmpty9}
+\pastebutton{MenuexlimitFull9}{\hidepaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty9}
+\begin{paste}{MenuexlimitEmpty9}{MenuexlimitPatch9}
+\pastebutton{MenuexlimitEmpty9}{\showpaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch10}
+\begin{paste}{MenuexlimitFull10}{MenuexlimitEmpty10}
+\pastebutton{MenuexlimitFull10}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (10)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty10}
+\begin{paste}{MenuexlimitEmpty10}{MenuexlimitPatch10}
+\pastebutton{MenuexlimitEmpty10}{\showpaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch11}
+\begin{paste}{MenuexlimitFull11}{MenuexlimitEmpty11}
+\pastebutton{MenuexlimitFull11}{\hidepaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (11)  - 1
+   Type: OnePointCompletion Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty11}
+\begin{paste}{MenuexlimitEmpty11}{MenuexlimitPatch11}
+\pastebutton{MenuexlimitEmpty11}{\showpaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch12}
+\begin{paste}{MenuexlimitFull12}{MenuexlimitEmpty12}
+\pastebutton{MenuexlimitFull12}{\hidepaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+   (12)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty12}
+\begin{paste}{MenuexlimitEmpty12}{MenuexlimitPatch12}
+\pastebutton{MenuexlimitEmpty12}{\showpaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitPatch13}
+\begin{paste}{MenuexlimitFull13}{MenuexlimitEmpty13}
+\pastebutton{MenuexlimitFull13}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (13)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexlimitEmpty13}
+\begin{paste}{MenuexlimitEmpty13}{MenuexlimitPatch13}
+\pastebutton{MenuexlimitEmpty13}{\showpaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexmatrix}{coverex.ht}{Matrices}
@@ -5028,7 +11443,349 @@ determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
 \spadpaste{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]])) }
 \menudownlink{Rank of a Matrix}{ExRankMatrix}
 \spadpaste{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexmatrixPatch1}
+\begin{paste}{MenuexmatrixFull1}{MenuexmatrixEmpty1}
+\pastebutton{MenuexmatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  - 2   1 ¿
+   (1)  ³           ³
+        À4   2   - 4Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty1}
+\begin{paste}{MenuexmatrixEmpty1}{MenuexmatrixPatch1}
+\pastebutton{MenuexmatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch2}
+\begin{paste}{MenuexmatrixFull2}{MenuexmatrixEmpty2}
+\pastebutton{MenuexmatrixFull2}{\hidepaste}
+\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú1    0    2 ¿
+        ³            ³
+   (2)  ³20  30   10 ³
+        ³            ³
+        À0   200  100Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty2}
+\begin{paste}{MenuexmatrixEmpty2}{MenuexmatrixPatch2}
+\pastebutton{MenuexmatrixEmpty2}{\showpaste}
+\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch3}
+\begin{paste}{MenuexmatrixFull3}{MenuexmatrixEmpty3}
+\pastebutton{MenuexmatrixFull3}{\hidepaste}
+\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2  3¿
+   (3)  ³       ³
+        À2  4  6Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty3}
+\begin{paste}{MenuexmatrixEmpty3}{MenuexmatrixPatch3}
+\pastebutton{MenuexmatrixEmpty3}{\showpaste}
+\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch4}
+\begin{paste}{MenuexmatrixFull4}{MenuexmatrixEmpty4}
+\pastebutton{MenuexmatrixFull4}{\hidepaste}
+\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú2  0  4¿
+   (4)  ³       ³
+        À6  6  2Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty4}
+\begin{paste}{MenuexmatrixEmpty4}{MenuexmatrixPatch4}
+\pastebutton{MenuexmatrixEmpty4}{\showpaste}
+\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch5}
+\begin{paste}{MenuexmatrixFull5}{MenuexmatrixEmpty5}
+\pastebutton{MenuexmatrixFull5}{\hidepaste}
+\tab{5}\spadcommand{100 * m1\free{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú100  - 200   100 ¿
+   (5)  ³                 ³
+        À400   200   - 400Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty5}
+\begin{paste}{MenuexmatrixEmpty5}{MenuexmatrixPatch5}
+\pastebutton{MenuexmatrixEmpty5}{\showpaste}
+\tab{5}\spadcommand{100 * m1\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch6}
+\begin{paste}{MenuexmatrixFull6}{MenuexmatrixEmpty6}
+\pastebutton{MenuexmatrixFull6}{\hidepaste}
+\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú- 39   140    82  ¿
+   (6)  ³                  ³
+        À 44   - 740  - 372Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty6}
+\begin{paste}{MenuexmatrixEmpty6}{MenuexmatrixPatch6}
+\pastebutton{MenuexmatrixEmpty6}{\showpaste}
+\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch7}
+\begin{paste}{MenuexmatrixFull7}{MenuexmatrixEmpty7}
+\pastebutton{MenuexmatrixFull7}{\hidepaste}
+\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú40  662   321¿
+   (7)  ³             ³
+        À78  1318  648Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty7}
+\begin{paste}{MenuexmatrixEmpty7}{MenuexmatrixPatch7}
+\pastebutton{MenuexmatrixEmpty7}{\showpaste}
+\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch8}
+\begin{paste}{MenuexmatrixFull8}{MenuexmatrixEmpty8}
+\pastebutton{MenuexmatrixFull8}{\hidepaste}
+\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [4,8]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty8}
+\begin{paste}{MenuexmatrixEmpty8}{MenuexmatrixPatch8}
+\pastebutton{MenuexmatrixEmpty8}{\showpaste}
+\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch9}
+\begin{paste}{MenuexmatrixFull9}{MenuexmatrixEmpty9}
+\pastebutton{MenuexmatrixFull9}{\hidepaste}
+\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
+\indentrel{3}\begin{verbatim}
+        Ú1  0  0  0  0¿
+        ³             ³
+        ³0  2  0  0  0³
+        ³             ³
+   (9)  ³0  0  3  0  0³
+        ³             ³
+        ³0  0  0  2  0³
+        ³             ³
+        À0  0  0  0  1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty9}
+\begin{paste}{MenuexmatrixEmpty9}{MenuexmatrixPatch9}
+\pastebutton{MenuexmatrixEmpty9}{\showpaste}
+\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch10}
+\begin{paste}{MenuexmatrixFull10}{MenuexmatrixEmpty10}
+\pastebutton{MenuexmatrixFull10}{\hidepaste}
+\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
+\indentrel{3}\begin{verbatim}
+         Ú1   2   3 ¿
+         ³          ³
+   (10)  ³6   7   8 ³
+         ³          ³
+         À11  12  13Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty10}
+\begin{paste}{MenuexmatrixEmpty10}{MenuexmatrixPatch10}
+\pastebutton{MenuexmatrixEmpty10}{\showpaste}
+\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch11}
+\begin{paste}{MenuexmatrixFull11}{MenuexmatrixEmpty11}
+\pastebutton{MenuexmatrixFull11}{\hidepaste}
+\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\indentrel{3}\begin{verbatim}
+         Ú1  2  3  11  12  13¿
+   (11)  ³                   ³
+         À6  7  8  55  77  88Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty11}
+\begin{paste}{MenuexmatrixEmpty11}{MenuexmatrixPatch11}
+\pastebutton{MenuexmatrixEmpty11}{\showpaste}
+\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch12}
+\begin{paste}{MenuexmatrixFull12}{MenuexmatrixEmpty12}
+\pastebutton{MenuexmatrixFull12}{\hidepaste}
+\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\indentrel{3}\begin{verbatim}
+         Ú1   2   3 ¿
+         ³          ³
+         ³6   7   8 ³
+   (12)  ³          ³
+         ³11  12  13³
+         ³          ³
+         À55  77  88Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty12}
+\begin{paste}{MenuexmatrixEmpty12}{MenuexmatrixPatch12}
+\pastebutton{MenuexmatrixEmpty12}{\showpaste}
+\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch13}
+\begin{paste}{MenuexmatrixFull13}{MenuexmatrixEmpty13}
+\pastebutton{MenuexmatrixFull13}{\hidepaste}
+\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
+\indentrel{3}\begin{verbatim}
+         Ú0   1   2   3   4 ¿
+         ³                  ³
+   (13)  ³5   6   7   8   9 ³
+         ³                  ³
+         À10  11  12  13  14Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty13}
+\begin{paste}{MenuexmatrixEmpty13}{MenuexmatrixPatch13}
+\pastebutton{MenuexmatrixEmpty13}{\showpaste}
+\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch14}
+\begin{paste}{MenuexmatrixFull14}{MenuexmatrixEmpty14}
+\pastebutton{MenuexmatrixFull14}{\hidepaste}
+\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
+\indentrel{3}\begin{verbatim}
+         Ú0  5  10  3   4 ¿
+         ³                ³
+   (14)  ³1  6  11  8   9 ³
+         ³                ³
+         À2  7  12  13  14Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty14}
+\begin{paste}{MenuexmatrixEmpty14}{MenuexmatrixPatch14}
+\pastebutton{MenuexmatrixEmpty14}{\showpaste}
+\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch15}
+\begin{paste}{MenuexmatrixFull15}{MenuexmatrixEmpty15}
+\pastebutton{MenuexmatrixFull15}{\hidepaste}
+\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
+\indentrel{3}\begin{verbatim}
+          2        3
+   (15)  z  + y + u  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty15}
+\begin{paste}{MenuexmatrixEmpty15}{MenuexmatrixPatch15}
+\pastebutton{MenuexmatrixEmpty15}{\showpaste}
+\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch16}
+\begin{paste}{MenuexmatrixFull16}{MenuexmatrixEmpty16}
+\pastebutton{MenuexmatrixFull16}{\hidepaste}
+\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
+\indentrel{3}\begin{verbatim}
+   (16)  - 48
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty16}
+\begin{paste}{MenuexmatrixEmpty16}{MenuexmatrixPatch16}
+\pastebutton{MenuexmatrixEmpty16}{\showpaste}
+\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch17}
+\begin{paste}{MenuexmatrixFull17}{MenuexmatrixEmpty17}
+\pastebutton{MenuexmatrixFull17}{\hidepaste}
+\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
+\indentrel{3}\begin{verbatim}
+         Ú  2        5 ¿
+         ³- Ä  - 1   Ä ³
+         ³  7        7 ³
+         ³             ³
+   (17)  ³ 8          6³
+         ³ Ä    1   - Ä³
+         ³ 7          7³
+         ³             ³
+         À- 1  - 1   1 Ù
+               Type: Union(Matrix Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty17}
+\begin{paste}{MenuexmatrixEmpty17}{MenuexmatrixPatch17}
+\pastebutton{MenuexmatrixEmpty17}{\showpaste}
+\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixPatch18}
+\begin{paste}{MenuexmatrixFull18}{MenuexmatrixEmpty18}
+\pastebutton{MenuexmatrixFull18}{\hidepaste}
+\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
+\indentrel{3}\begin{verbatim}
+   (18)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexmatrixEmpty18}
+\begin{paste}{MenuexmatrixEmpty18}{MenuexmatrixPatch18}
+\pastebutton{MenuexmatrixEmpty18}{\showpaste}
+\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexplot2d}{coverex.ht}{2-D Graphics}
@@ -5047,7 +11804,60 @@ determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
 \graphpaste{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
 \menudownlink{Plotting Plane Algebraic Curves}{ExPlot2DAlgebraic}
 \graphpaste{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{Menuexplot2dPatch1}
+\begin{paste}{Menuexplot2dFull1}{Menuexplot2dEmpty1}
+\pastebutton{Menuexplot2dFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d1}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dEmpty1}
+\begin{paste}{Menuexplot2dEmpty1}{Menuexplot2dPatch1}
+\pastebutton{Menuexplot2dEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dPatch2}
+\begin{paste}{Menuexplot2dFull2}{Menuexplot2dEmpty2}
+\pastebutton{Menuexplot2dFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d2}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dEmpty2}
+\begin{paste}{Menuexplot2dEmpty2}{Menuexplot2dPatch2}
+\pastebutton{Menuexplot2dEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dPatch3}
+\begin{paste}{Menuexplot2dFull3}{Menuexplot2dEmpty3}
+\pastebutton{Menuexplot2dFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d3}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dEmpty3}
+\begin{paste}{Menuexplot2dEmpty3}{Menuexplot2dPatch3}
+\pastebutton{Menuexplot2dEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dPatch4}
+\begin{paste}{Menuexplot2dFull4}{Menuexplot2dEmpty4}
+\pastebutton{Menuexplot2dFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d4}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot2dEmpty4}
+\begin{paste}{Menuexplot2dEmpty4}{Menuexplot2dPatch4}
+\pastebutton{Menuexplot2dEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexplot3d}{coverex.ht}{3-D Graphics}
@@ -5066,7 +11876,73 @@ u=0..\%pi,v=0..2*\%pi)}
 \menudownlink{Plotting Parametric Curves}{ExPlot3DParametricCurve}
 \graphpaste{draw(curve(cos(t),sin(t),t),t=0..6)}
 \graphpaste{draw(curve(t,t**2,t**3),t=-3..3)}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{Menuexplot3dPatch1}
+\begin{paste}{Menuexplot3dFull1}{Menuexplot3dEmpty1}
+\pastebutton{Menuexplot3dFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d1}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dEmpty1}
+\begin{paste}{Menuexplot3dEmpty1}{Menuexplot3dPatch1}
+\pastebutton{Menuexplot3dEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dPatch2}
+\begin{paste}{Menuexplot3dFull2}{Menuexplot3dEmpty2}
+\pastebutton{Menuexplot3dFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d2}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dEmpty2}
+\begin{paste}{Menuexplot3dEmpty2}{Menuexplot3dPatch2}
+\pastebutton{Menuexplot3dEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dPatch3}
+\begin{paste}{Menuexplot3dFull3}{Menuexplot3dEmpty3}
+\pastebutton{Menuexplot3dFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d3}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dEmpty3}
+\begin{paste}{Menuexplot3dEmpty3}{Menuexplot3dPatch3}
+\pastebutton{Menuexplot3dEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dPatch4}
+\begin{paste}{Menuexplot3dFull4}{Menuexplot3dEmpty4}
+\pastebutton{Menuexplot3dFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d4}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dEmpty4}
+\begin{paste}{Menuexplot3dEmpty4}{Menuexplot3dPatch4}
+\pastebutton{Menuexplot3dEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dPatch5}
+\begin{paste}{Menuexplot3dFull5}{Menuexplot3dEmpty5}
+\pastebutton{Menuexplot3dFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d5}}
+\end{paste}\end{patch}
+
+\begin{patch}{Menuexplot3dEmpty5}
+\begin{paste}{Menuexplot3dEmpty5}{Menuexplot3dPatch5}
+\pastebutton{Menuexplot3dEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexseries}{coverex.ht}{Series}
@@ -5092,7 +11968,232 @@ u=0..\%pi,v=0..2*\%pi)}
 {ExSeriesSubstitution}
 \spadpaste{f := taylor(exp(x)) \bound{f2}}
 \spadpaste{eval(f,1.0) \free{f2}}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexseriesPatch1}
+\begin{paste}{MenuexseriesFull1}{MenuexseriesEmpty1}
+\pastebutton{MenuexseriesFull1}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)
+            3        5        7          9
+           a   3    a   5    a    7     a     9
+     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+            6      120      5040      362880
+   + 
+           11
+          a      11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty1}
+\begin{paste}{MenuexseriesEmpty1}{MenuexseriesPatch1}
+\pastebutton{MenuexseriesEmpty1}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch2}
+\begin{paste}{MenuexseriesFull2}{MenuexseriesEmpty2}
+\pastebutton{MenuexseriesFull2}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
+\indentrel{3}\begin{verbatim}
+   (2)
+         %pi x          %pi x      %pi
+     sin(ÄÄÄÄÄ) + x cos(ÄÄÄÄÄ)(a - ÄÄÄ)
+           4              4         4
+   + 
+        2    %pi x                3    %pi x
+       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+               4         %pi 2           4         %pi 3
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+             2            4            6            4
+   + 
+      4    %pi x                5    %pi x
+     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+             4         %pi 4           4         %pi 5
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+          24            4           120           4
+   + 
+        6    %pi x                7    %pi x
+       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+               4         %pi 6           4         %pi 7
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+            720           4          5040           4
+   + 
+      8    %pi x                9    %pi x
+     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+             4         %pi 8           4         %pi 9
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+         40320          4         362880          4
+   + 
+        10    %pi x
+       x  sin(ÄÄÄÄÄ)
+                4         %pi 10          %pi 11
+     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)   + O((a - ÄÄÄ)  )
+          3628800          4               4
+Type: UnivariatePuiseuxSeries(Expression Integer,a,pi/4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty2}
+\begin{paste}{MenuexseriesEmpty2}{MenuexseriesPatch2}
+\pastebutton{MenuexseriesEmpty2}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch3}
+\begin{paste}{MenuexseriesFull3}{MenuexseriesEmpty3}
+\pastebutton{MenuexseriesFull3}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (3)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty3}
+\begin{paste}{MenuexseriesEmpty3}{MenuexseriesPatch3}
+\pastebutton{MenuexseriesEmpty3}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch4}
+\begin{paste}{MenuexseriesFull4}{MenuexseriesEmpty4}
+\pastebutton{MenuexseriesFull4}{\hidepaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\indentrel{3}\begin{verbatim}
+   (4)
+                2     3     4     5     6     7     8
+     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
+   + 
+        9      10      11
+     10x  + 11x   + O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty4}
+\begin{paste}{MenuexseriesEmpty4}{MenuexseriesPatch4}
+\pastebutton{MenuexseriesEmpty4}{\showpaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch5}
+\begin{paste}{MenuexseriesFull5}{MenuexseriesEmpty5}
+\pastebutton{MenuexseriesFull5}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty5}
+\begin{paste}{MenuexseriesEmpty5}{MenuexseriesPatch5}
+\pastebutton{MenuexseriesEmpty5}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch6}
+\begin{paste}{MenuexseriesFull6}{MenuexseriesEmpty6}
+\pastebutton{MenuexseriesFull6}{\hidepaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (6)
+         1  2   1  3   1  4   1  5   1  6   1  7   1  8
+     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
+         2      3      4      5      6      7      8
+   + 
+     1  9    1  10    1  11      12
+     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
+     9      10       11
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty6}
+\begin{paste}{MenuexseriesEmpty6}{MenuexseriesPatch6}
+\pastebutton{MenuexseriesEmpty6}{\showpaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch7}
+\begin{paste}{MenuexseriesFull7}{MenuexseriesEmpty7}
+\pastebutton{MenuexseriesFull7}{\hidepaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (7)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty7}
+\begin{paste}{MenuexseriesEmpty7}{MenuexseriesPatch7}
+\pastebutton{MenuexseriesEmpty7}{\showpaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch8}
+\begin{paste}{MenuexseriesFull8}{MenuexseriesEmpty8}
+\pastebutton{MenuexseriesFull8}{\hidepaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (8)
+             1  2   1  3    1  4    1   5    1   6
+     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
+   5040      40320      362880      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty8}
+\begin{paste}{MenuexseriesEmpty8}{MenuexseriesPatch8}
+\pastebutton{MenuexseriesEmpty8}{\showpaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesPatch9}
+\begin{paste}{MenuexseriesFull9}{MenuexseriesEmpty9}
+\pastebutton{MenuexseriesFull9}{\hidepaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [1.0, 2.0, 2.5, 2.6666666666 666666667,
+    2.7083333333 333333333, 2.7166666666 666666667,
+    2.7180555555 555555556, 2.7182539682 53968254,
+    2.7182787698 412698413, 2.7182815255 731922399, ...]
+                          Type: Stream Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexseriesEmpty9}
+\begin{paste}{MenuexseriesEmpty9}{MenuexseriesPatch9}
+\pastebutton{MenuexseriesEmpty9}{\showpaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{Menuexsum}{coverex.ht}{Summations}
@@ -5128,7 +12229,243 @@ u=0..\%pi,v=0..2*\%pi)}
 \spadpaste{sum(k * x**k,k = 1..n)}
 \menudownlink{Infinite Sums}{ExSumInfinite}
 \spadpaste{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
-\endmenu\endscroll\end{page}
+\endmenu\endscroll
+\end{page}
+
+\begin{patch}{MenuexsumPatch1}
+\begin{paste}{MenuexsumFull1}{MenuexsumEmpty1}
+\pastebutton{MenuexsumFull1}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1..15]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty1}
+\begin{paste}{MenuexsumEmpty1}{MenuexsumPatch1}
+\pastebutton{MenuexsumEmpty1}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1..15]}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch2}
+\begin{paste}{MenuexsumFull2}{MenuexsumEmpty2}
+\pastebutton{MenuexsumFull2}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
+\indentrel{3}\begin{verbatim}
+   (2)  120
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty2}
+\begin{paste}{MenuexsumEmpty2}{MenuexsumPatch2}
+\pastebutton{MenuexsumEmpty2}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch3}
+\begin{paste}{MenuexsumFull3}{MenuexsumEmpty3}
+\pastebutton{MenuexsumFull3}{\hidepaste}
+\tab{5}\spadcommand{[n**2 for n in 5..20]}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
+    256, 289, 324, 361, 400]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty3}
+\begin{paste}{MenuexsumEmpty3}{MenuexsumPatch3}
+\pastebutton{MenuexsumEmpty3}{\showpaste}
+\tab{5}\spadcommand{[n**2 for n in 5..20]}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch4}
+\begin{paste}{MenuexsumFull4}{MenuexsumEmpty4}
+\pastebutton{MenuexsumFull4}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
+\indentrel{3}\begin{verbatim}
+   (4)  2840
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty4}
+\begin{paste}{MenuexsumEmpty4}{MenuexsumPatch4}
+\pastebutton{MenuexsumEmpty4}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch5}
+\begin{paste}{MenuexsumFull5}{MenuexsumEmpty5}
+\pastebutton{MenuexsumFull5}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
+\indentrel{3}\begin{verbatim}
+   (5)  2.7182818284 590452354
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty5}
+\begin{paste}{MenuexsumEmpty5}{MenuexsumPatch5}
+\pastebutton{MenuexsumEmpty5}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch6}
+\begin{paste}{MenuexsumFull6}{MenuexsumEmpty6}
+\pastebutton{MenuexsumFull6}{\hidepaste}
+\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
+\indentrel{3}\begin{verbatim}
+          3     2         3     2
+        2b  + 3b  + b - 2a  + 3a  - a
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                      6
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty6}
+\begin{paste}{MenuexsumEmpty6}{MenuexsumPatch6}
+\pastebutton{MenuexsumEmpty6}{\showpaste}
+\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch7}
+\begin{paste}{MenuexsumFull7}{MenuexsumEmpty7}
+\pastebutton{MenuexsumFull7}{\hidepaste}
+\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
+\indentrel{3}\begin{verbatim}
+   (7)  5525
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty7}
+\begin{paste}{MenuexsumEmpty7}{MenuexsumPatch7}
+\pastebutton{MenuexsumEmpty7}{\showpaste}
+\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch8}
+\begin{paste}{MenuexsumFull8}{MenuexsumEmpty8}
+\pastebutton{MenuexsumFull8}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
+\indentrel{3}\begin{verbatim}
+   (8)  5525
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty8}
+\begin{paste}{MenuexsumEmpty8}{MenuexsumPatch8}
+\pastebutton{MenuexsumEmpty8}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch9}
+\begin{paste}{MenuexsumFull9}{MenuexsumEmpty9}
+\pastebutton{MenuexsumFull9}{\hidepaste}
+\tab{5}\spadcommand{sum(k**3,k = 1..n)}
+\indentrel{3}\begin{verbatim}
+         4     3    2
+        n  + 2n  + n
+   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              4
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty9}
+\begin{paste}{MenuexsumEmpty9}{MenuexsumPatch9}
+\pastebutton{MenuexsumEmpty9}{\showpaste}
+\tab{5}\spadcommand{sum(k**3,k = 1..n)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch10}
+\begin{paste}{MenuexsumFull10}{MenuexsumEmpty10}
+\pastebutton{MenuexsumFull10}{\hidepaste}
+\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
+\indentrel{3}\begin{verbatim}
+          4     3    2
+         n  + 2n  + n
+   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               4
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty10}
+\begin{paste}{MenuexsumEmpty10}{MenuexsumPatch10}
+\pastebutton{MenuexsumEmpty10}{\showpaste}
+\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch11}
+\begin{paste}{MenuexsumFull11}{MenuexsumEmpty11}
+\pastebutton{MenuexsumFull11}{\hidepaste}
+\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
+\indentrel{3}\begin{verbatim}
+   (11)
+            3      2           3      2
+       (128b  + 48b  + 4b - 54a  + 27a  - 3a)d
+     + 
+            2             2        2       2             2
+       (192b  + 48b - 108a  + 36a)c  + 192b  + 48b - 108a
+     + 
+       36a
+  /
+        2
+     (2c  + 2)d
+           Type: Union(Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty11}
+\begin{paste}{MenuexsumEmpty11}{MenuexsumPatch11}
+\pastebutton{MenuexsumEmpty11}{\showpaste}
+\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch12}
+\begin{paste}{MenuexsumFull12}{MenuexsumEmpty12}
+\pastebutton{MenuexsumFull12}{\hidepaste}
+\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
+\indentrel{3}\begin{verbatim}
+             2               n
+         (n x  + (- n - 1)x)x  + x
+   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 2
+                x  - 2x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty12}
+\begin{paste}{MenuexsumEmpty12}{MenuexsumPatch12}
+\pastebutton{MenuexsumEmpty12}{\showpaste}
+\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
+\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumPatch13}
+\begin{paste}{MenuexsumFull13}{MenuexsumEmpty13}
+\pastebutton{MenuexsumFull13}{\hidepaste}
+\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+         3
+   (13)  Ä
+         4
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MenuexsumEmpty13}
+\begin{paste}{MenuexsumEmpty13}{MenuexsumPatch13}
+\pastebutton{MenuexsumEmpty13}{\showpaste}
+\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
+\end{paste}\end{patch}
 
 @
 \section{decimal.ht}
@@ -5192,6 +12529,142 @@ These numbers are bona fide algebraic objects.
 \autobuttons
 \end{page}
 
+\begin{patch}{DecimalExpansionXmpPagePatch1}
+\begin{paste}{DecimalExpansionXmpPageFull1}{DecimalExpansionXmpPageEmpty1}
+\pastebutton{DecimalExpansionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{r := decimal(22/7)\bound{r }}
+\indentrel{3}\begin{verbatim}
+          ______
+   (1)  3.142857
+                                 Type: DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty1}
+\begin{paste}{DecimalExpansionXmpPageEmpty1}{DecimalExpansionXmpPagePatch1}
+\pastebutton{DecimalExpansionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{r := decimal(22/7)\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch2}
+\begin{paste}{DecimalExpansionXmpPageFull2}{DecimalExpansionXmpPageEmpty2}
+\pastebutton{DecimalExpansionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{r + decimal(6/7)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (2)  4
+                                 Type: DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty2}
+\begin{paste}{DecimalExpansionXmpPageEmpty2}{DecimalExpansionXmpPagePatch2}
+\pastebutton{DecimalExpansionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{r + decimal(6/7)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch3}
+\begin{paste}{DecimalExpansionXmpPageFull3}{DecimalExpansionXmpPageEmpty3}
+\pastebutton{DecimalExpansionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[decimal(1/i) for i in 350..354]}
+\indentrel{3}\begin{verbatim}
+   (3)
+        ______    ______         __
+   [0.00285714, 0.002849, 0.0028409,
+      ________________________________
+    0.00283286118980169971671388101983,
+
+     0.0
+       OVERBAR
+          02824858757062146892655367231638418079096045197
+            74011299435
+     ]
+                            Type: List DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty3}
+\begin{paste}{DecimalExpansionXmpPageEmpty3}{DecimalExpansionXmpPagePatch3}
+\pastebutton{DecimalExpansionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[decimal(1/i) for i in 350..354]}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch4}
+\begin{paste}{DecimalExpansionXmpPageFull4}{DecimalExpansionXmpPageEmpty4}
+\pastebutton{DecimalExpansionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{decimal(1/2049)}
+\indentrel{3}\begin{verbatim}
+   (4)
+   0.
+     OVERBAR
+        0004880429477794045876037091264031234748657881893
+          60663738408979990239141044411908247925817471937
+          53050268423621278672523182040019521717911176183
+          50414836505612493899463152757442654953635919960
+          95656417764763299170326988775012201073694485114
+          69009272816007808687164470473401659346022449975
+          59785261102977061981454367984382625671059053196
+          6813079551
+                                 Type: DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty4}
+\begin{paste}{DecimalExpansionXmpPageEmpty4}{DecimalExpansionXmpPagePatch4}
+\pastebutton{DecimalExpansionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{decimal(1/2049)}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch5}
+\begin{paste}{DecimalExpansionXmpPageFull5}{DecimalExpansionXmpPageEmpty5}
+\pastebutton{DecimalExpansionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)\bound{p }}
+\indentrel{3}\begin{verbatim}
+             2     _      _
+   (5)  0.25x  + 0.6x + 0.4
+                      Type: Polynomial DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty5}
+\begin{paste}{DecimalExpansionXmpPageEmpty5}{DecimalExpansionXmpPagePatch5}
+\pastebutton{DecimalExpansionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch6}
+\begin{paste}{DecimalExpansionXmpPageFull6}{DecimalExpansionXmpPageEmpty6}
+\pastebutton{DecimalExpansionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q := differentiate(p, x)\free{p }\bound{q }}
+\indentrel{3}\begin{verbatim}
+                 _
+   (6)  0.5x + 0.6
+                      Type: Polynomial DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty6}
+\begin{paste}{DecimalExpansionXmpPageEmpty6}{DecimalExpansionXmpPagePatch6}
+\pastebutton{DecimalExpansionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q := differentiate(p, x)\free{p }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPagePatch7}
+\begin{paste}{DecimalExpansionXmpPageFull7}{DecimalExpansionXmpPageEmpty7}
+\pastebutton{DecimalExpansionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
+\indentrel{3}\begin{verbatim}
+              _
+   (7)  x + 1.3
+                      Type: Polynomial DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DecimalExpansionXmpPageEmpty7}
+\begin{paste}{DecimalExpansionXmpPageEmpty7}{DecimalExpansionXmpPagePatch7}
+\pastebutton{DecimalExpansionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
+\end{paste}\end{patch}
+
 @
 \section{derham.ht}
 \pagehead{DeRhamComplexXmpPage}{derham.ht}{DeRhamComplex}
@@ -5405,6 +12878,597 @@ consists of the eight forms: \spad{1}, \spad{dx}, \spad{dy}, \spad{dz},
 \autobuttons
 \end{page}
 
+\begin{patch}{DeRhamComplexXmpPagePatch1}
+\begin{paste}{DeRhamComplexXmpPageFull1}{DeRhamComplexXmpPageEmpty1}
+\pastebutton{DeRhamComplexXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{coefRing := Integer\bound{coefRing }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty1}
+\begin{paste}{DeRhamComplexXmpPageEmpty1}{DeRhamComplexXmpPagePatch1}
+\pastebutton{DeRhamComplexXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{coefRing := Integer\bound{coefRing }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch2}
+\begin{paste}{DeRhamComplexXmpPageFull2}{DeRhamComplexXmpPageEmpty2}
+\pastebutton{DeRhamComplexXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{lv : List Symbol := [x,y,z]\bound{lv }}
+\indentrel{3}\begin{verbatim}
+   (2)  [x,y,z]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty2}
+\begin{paste}{DeRhamComplexXmpPageEmpty2}{DeRhamComplexXmpPagePatch2}
+\pastebutton{DeRhamComplexXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{lv : List Symbol := [x,y,z]\bound{lv }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch3}
+\begin{paste}{DeRhamComplexXmpPageFull3}{DeRhamComplexXmpPageEmpty3}
+\pastebutton{DeRhamComplexXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{der := DERHAM(coefRing,lv)\free{coefRing }\free{lv }\bound{der }}
+\indentrel{3}\begin{verbatim}
+   (3)  DeRhamComplex(Integer,[x,y,z])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty3}
+\begin{paste}{DeRhamComplexXmpPageEmpty3}{DeRhamComplexXmpPagePatch3}
+\pastebutton{DeRhamComplexXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{der := DERHAM(coefRing,lv)\free{coefRing }\free{lv }\bound{der }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch4}
+\begin{paste}{DeRhamComplexXmpPageFull4}{DeRhamComplexXmpPageEmpty4}
+\pastebutton{DeRhamComplexXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{R := Expression coefRing\free{coefRing }\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (4)  Expression Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty4}
+\begin{paste}{DeRhamComplexXmpPageEmpty4}{DeRhamComplexXmpPagePatch4}
+\pastebutton{DeRhamComplexXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{R := Expression coefRing\free{coefRing }\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch5}
+\begin{paste}{DeRhamComplexXmpPageFull5}{DeRhamComplexXmpPageEmpty5}
+\pastebutton{DeRhamComplexXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f : R := x**2*y*z-5*x**3*y**2*z**5\free{R }\bound{f }}
+\indentrel{3}\begin{verbatim}
+            3 2 5    2
+   (5)  - 5x y z  + x y z
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty5}
+\begin{paste}{DeRhamComplexXmpPageEmpty5}{DeRhamComplexXmpPagePatch5}
+\pastebutton{DeRhamComplexXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f : R := x**2*y*z-5*x**3*y**2*z**5\free{R }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch6}
+\begin{paste}{DeRhamComplexXmpPageFull6}{DeRhamComplexXmpPageEmpty6}
+\pastebutton{DeRhamComplexXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2\free{R }\bound{g }}
+\indentrel{3}\begin{verbatim}
+            2     3 2       2
+   (6)  - 7z sin(x y ) + y z cos(z)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty6}
+\begin{paste}{DeRhamComplexXmpPageEmpty6}{DeRhamComplexXmpPagePatch6}
+\pastebutton{DeRhamComplexXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2\free{R }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch7}
+\begin{paste}{DeRhamComplexXmpPageFull7}{DeRhamComplexXmpPageEmpty7}
+\pastebutton{DeRhamComplexXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{h : R :=x*y*z-2*x**3*y*z**2\free{R }\bound{h }}
+\indentrel{3}\begin{verbatim}
+            3   2
+   (7)  - 2x y z  + x y z
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty7}
+\begin{paste}{DeRhamComplexXmpPageEmpty7}{DeRhamComplexXmpPagePatch7}
+\pastebutton{DeRhamComplexXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{h : R :=x*y*z-2*x**3*y*z**2\free{R }\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch8}
+\begin{paste}{DeRhamComplexXmpPageFull8}{DeRhamComplexXmpPageEmpty8}
+\pastebutton{DeRhamComplexXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{dx : der := generator(1)\free{der }\bound{dx }}
+\indentrel{3}\begin{verbatim}
+   (8)  dx
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty8}
+\begin{paste}{DeRhamComplexXmpPageEmpty8}{DeRhamComplexXmpPagePatch8}
+\pastebutton{DeRhamComplexXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{dx : der := generator(1)\free{der }\bound{dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch9}
+\begin{paste}{DeRhamComplexXmpPageFull9}{DeRhamComplexXmpPageEmpty9}
+\pastebutton{DeRhamComplexXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{dy : der := generator(2)\free{der }\bound{dy }}
+\indentrel{3}\begin{verbatim}
+   (9)  dy
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty9}
+\begin{paste}{DeRhamComplexXmpPageEmpty9}{DeRhamComplexXmpPagePatch9}
+\pastebutton{DeRhamComplexXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{dy : der := generator(2)\free{der }\bound{dy }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch10}
+\begin{paste}{DeRhamComplexXmpPageFull10}{DeRhamComplexXmpPageEmpty10}
+\pastebutton{DeRhamComplexXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{dz : der := generator(3)\free{der }\bound{dz }}
+\indentrel{3}\begin{verbatim}
+   (10)  dz
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty10}
+\begin{paste}{DeRhamComplexXmpPageEmpty10}{DeRhamComplexXmpPagePatch10}
+\pastebutton{DeRhamComplexXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{dz : der := generator(3)\free{der }\bound{dz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch11}
+\begin{paste}{DeRhamComplexXmpPageFull11}{DeRhamComplexXmpPageEmpty11}
+\pastebutton{DeRhamComplexXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[dx,dy,dz] := [generator(i)$der for i in 1..3]\free{der }\bound{dxyz }}
+\indentrel{3}\begin{verbatim}
+   (11)  [dx,dy,dz]
+              Type: List DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty11}
+\begin{paste}{DeRhamComplexXmpPageEmpty11}{DeRhamComplexXmpPagePatch11}
+\pastebutton{DeRhamComplexXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[dx,dy,dz] := [generator(i)$der for i in 1..3]\free{der }\bound{dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch12}
+\begin{paste}{DeRhamComplexXmpPageFull12}{DeRhamComplexXmpPageEmpty12}
+\pastebutton{DeRhamComplexXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{alpha : der := f*dx + g*dy + h*dz\bound{alpha }\free{der f g h dxyz }}
+\indentrel{3}\begin{verbatim}
+   (12)
+          3   2
+     (- 2x y z  + x y z)dz
+   + 
+        2     3 2       2                 3 2 5    2
+   (- 7z sin(x y ) + y z cos(z))dy + (- 5x y z  + x y z)dx
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty12}
+\begin{paste}{DeRhamComplexXmpPageEmpty12}{DeRhamComplexXmpPagePatch12}
+\pastebutton{DeRhamComplexXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{alpha : der := f*dx + g*dy + h*dz\bound{alpha }\free{der f g h dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch13}
+\begin{paste}{DeRhamComplexXmpPageFull13}{DeRhamComplexXmpPageEmpty13}
+\pastebutton{DeRhamComplexXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{beta : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy\bound{beta }\free{der f g h dxyz }}
+\indentrel{3}\begin{verbatim}
+   (13)  x dy + cos(tan(x y z) + x y z)dx
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty13}
+\begin{paste}{DeRhamComplexXmpPageEmpty13}{DeRhamComplexXmpPagePatch13}
+\pastebutton{DeRhamComplexXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{beta : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy\bound{beta }\free{der f g h dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch14}
+\begin{paste}{DeRhamComplexXmpPageFull14}{DeRhamComplexXmpPageEmpty14}
+\pastebutton{DeRhamComplexXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential alpha;\free{alpha }\bound{ed }}
+\indentrel{3}\begin{verbatim}
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty14}
+\begin{paste}{DeRhamComplexXmpPageEmpty14}{DeRhamComplexXmpPagePatch14}
+\pastebutton{DeRhamComplexXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential alpha;\free{alpha }\bound{ed }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch15}
+\begin{paste}{DeRhamComplexXmpPageFull15}{DeRhamComplexXmpPageEmpty15}
+\pastebutton{DeRhamComplexXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential \%\free{ed }}
+\indentrel{3}\begin{verbatim}
+   (15)  0
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty15}
+\begin{paste}{DeRhamComplexXmpPageEmpty15}{DeRhamComplexXmpPagePatch15}
+\pastebutton{DeRhamComplexXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential \%\free{ed }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch16}
+\begin{paste}{DeRhamComplexXmpPageFull16}{DeRhamComplexXmpPageEmpty16}
+\pastebutton{DeRhamComplexXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{gamma := alpha * beta\bound{gamma }\free{alpha }\free{beta }}
+\indentrel{3}\begin{verbatim}
+   (16)
+        4   2    2
+     (2x y z  - x y z)dy dz
+   + 
+        3   2
+     (2x y z  - x y z)cos(tan(x y z) + x y z)dx dz
+   + 
+              2     3 2       2
+           (7z sin(x y ) - y z cos(z))
+        *
+           cos(tan(x y z) + x y z)
+       + 
+             4 2 5    3
+         - 5x y z  + x y z
+    *
+       dx dy
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty16}
+\begin{paste}{DeRhamComplexXmpPageEmpty16}{DeRhamComplexXmpPagePatch16}
+\pastebutton{DeRhamComplexXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{gamma := alpha * beta\bound{gamma }\free{alpha }\free{beta }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch17}
+\begin{paste}{DeRhamComplexXmpPageFull17}{DeRhamComplexXmpPageEmpty17}
+\pastebutton{DeRhamComplexXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta))\free{alpha beta gamma }}
+\indentrel{3}\begin{verbatim}
+   (17)  0
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty17}
+\begin{paste}{DeRhamComplexXmpPageEmpty17}{DeRhamComplexXmpPagePatch17}
+\pastebutton{DeRhamComplexXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta))\free{alpha beta gamma }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch18}
+\begin{paste}{DeRhamComplexXmpPageFull18}{DeRhamComplexXmpPageEmpty18}
+\pastebutton{DeRhamComplexXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{a : BOP := operator('a)\bound{ao }}
+\indentrel{3}\begin{verbatim}
+   (18)  a
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty18}
+\begin{paste}{DeRhamComplexXmpPageEmpty18}{DeRhamComplexXmpPagePatch18}
+\pastebutton{DeRhamComplexXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{a : BOP := operator('a)\bound{ao }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch19}
+\begin{paste}{DeRhamComplexXmpPageFull19}{DeRhamComplexXmpPageEmpty19}
+\pastebutton{DeRhamComplexXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{b : BOP := operator('b)\bound{bo }}
+\indentrel{3}\begin{verbatim}
+   (19)  b
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty19}
+\begin{paste}{DeRhamComplexXmpPageEmpty19}{DeRhamComplexXmpPagePatch19}
+\pastebutton{DeRhamComplexXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{b : BOP := operator('b)\bound{bo }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch20}
+\begin{paste}{DeRhamComplexXmpPageFull20}{DeRhamComplexXmpPageEmpty20}
+\pastebutton{DeRhamComplexXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{c : BOP := operator('c)\bound{co }}
+\indentrel{3}\begin{verbatim}
+   (20)  c
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty20}
+\begin{paste}{DeRhamComplexXmpPageEmpty20}{DeRhamComplexXmpPagePatch20}
+\pastebutton{DeRhamComplexXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{c : BOP := operator('c)\bound{co }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch21}
+\begin{paste}{DeRhamComplexXmpPageFull21}{DeRhamComplexXmpPageEmpty21}
+\pastebutton{DeRhamComplexXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz\bound{sigma }\free{ao bo co dxyz }}
+\indentrel{3}\begin{verbatim}
+   (21)  c(x,y,z)dz + b(x,y,z)dy + a(x,y,z)dx
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty21}
+\begin{paste}{DeRhamComplexXmpPageEmpty21}{DeRhamComplexXmpPagePatch21}
+\pastebutton{DeRhamComplexXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz\bound{sigma }\free{ao bo co dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch22}
+\begin{paste}{DeRhamComplexXmpPageFull22}{DeRhamComplexXmpPageEmpty22}
+\pastebutton{DeRhamComplexXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz\bound{theta }\free{ao bo co dxyz }}
+\indentrel{3}\begin{verbatim}
+   (22)  c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty22}
+\begin{paste}{DeRhamComplexXmpPageEmpty22}{DeRhamComplexXmpPagePatch22}
+\pastebutton{DeRhamComplexXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz\bound{theta }\free{ao bo co dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch23}
+\begin{paste}{DeRhamComplexXmpPageFull23}{DeRhamComplexXmpPageEmpty23}
+\pastebutton{DeRhamComplexXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{totalDifferential(a(x,y,z))$der\free{ao der }}
+\indentrel{3}\begin{verbatim}
+   (23)  a  (x,y,z)dz + a  (x,y,z)dy + a  (x,y,z)dx
+          ,3             ,2             ,1
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty23}
+\begin{paste}{DeRhamComplexXmpPageEmpty23}{DeRhamComplexXmpPagePatch23}
+\pastebutton{DeRhamComplexXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{totalDifferential(a(x,y,z))$der\free{ao der }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch24}
+\begin{paste}{DeRhamComplexXmpPageFull24}{DeRhamComplexXmpPageEmpty24}
+\pastebutton{DeRhamComplexXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential sigma\free{sigma }}
+\indentrel{3}\begin{verbatim}
+   (24)
+     (c  (x,y,z) - b  (x,y,z))dy dz
+       ,2           ,3
+   + 
+     (c  (x,y,z) - a  (x,y,z))dx dz
+       ,1           ,3
+   + 
+     (b  (x,y,z) - a  (x,y,z))dx dy
+       ,1           ,2
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty24}
+\begin{paste}{DeRhamComplexXmpPageEmpty24}{DeRhamComplexXmpPagePatch24}
+\pastebutton{DeRhamComplexXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential sigma\free{sigma }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch25}
+\begin{paste}{DeRhamComplexXmpPageFull25}{DeRhamComplexXmpPageEmpty25}
+\pastebutton{DeRhamComplexXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential theta\free{theta }}
+\indentrel{3}\begin{verbatim}
+   (25)  (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
+           ,1           ,2           ,3
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty25}
+\begin{paste}{DeRhamComplexXmpPageEmpty25}{DeRhamComplexXmpPagePatch25}
+\pastebutton{DeRhamComplexXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential theta\free{theta }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch26}
+\begin{paste}{DeRhamComplexXmpPageFull26}{DeRhamComplexXmpPageEmpty26}
+\pastebutton{DeRhamComplexXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{one : der := 1\bound{one }\free{der }}
+\indentrel{3}\begin{verbatim}
+   (26)  1
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty26}
+\begin{paste}{DeRhamComplexXmpPageEmpty26}{DeRhamComplexXmpPagePatch26}
+\pastebutton{DeRhamComplexXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{one : der := 1\bound{one }\free{der }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch27}
+\begin{paste}{DeRhamComplexXmpPageFull27}{DeRhamComplexXmpPageEmpty27}
+\pastebutton{DeRhamComplexXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{g1 : der := a([x,t,y,u,v,z,e]) * one\free{der one ao }\bound{g1 }}
+\indentrel{3}\begin{verbatim}
+   (27)  a(x,t,y,u,v,z,e)
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty27}
+\begin{paste}{DeRhamComplexXmpPageEmpty27}{DeRhamComplexXmpPagePatch27}
+\pastebutton{DeRhamComplexXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{g1 : der := a([x,t,y,u,v,z,e]) * one\free{der one ao }\bound{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch28}
+\begin{paste}{DeRhamComplexXmpPageFull28}{DeRhamComplexXmpPageEmpty28}
+\pastebutton{DeRhamComplexXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one\free{der one ao }\bound{h1 }}
+\indentrel{3}\begin{verbatim}
+   (28)  a(x,y,x,t,x,z,y,r,u,x)
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty28}
+\begin{paste}{DeRhamComplexXmpPageEmpty28}{DeRhamComplexXmpPagePatch28}
+\pastebutton{DeRhamComplexXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one\free{der one ao }\bound{h1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch29}
+\begin{paste}{DeRhamComplexXmpPageFull29}{DeRhamComplexXmpPageEmpty29}
+\pastebutton{DeRhamComplexXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential g1\free{g1 }}
+\indentrel{3}\begin{verbatim}
+   (29)
+     a  (x,t,y,u,v,z,e)dz + a  (x,t,y,u,v,z,e)dy
+      ,6                     ,3
+   + 
+     a  (x,t,y,u,v,z,e)dx
+      ,1
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty29}
+\begin{paste}{DeRhamComplexXmpPageEmpty29}{DeRhamComplexXmpPagePatch29}
+\pastebutton{DeRhamComplexXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential g1\free{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch30}
+\begin{paste}{DeRhamComplexXmpPageFull30}{DeRhamComplexXmpPageEmpty30}
+\pastebutton{DeRhamComplexXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{exteriorDifferential h1\free{h1 }}
+\indentrel{3}\begin{verbatim}
+   (30)
+     a  (x,y,x,t,x,z,y,r,u,x)dz
+      ,6
+   + 
+           a  (x,y,x,t,x,z,y,r,u,x)
+            ,7
+         + 
+           a  (x,y,x,t,x,z,y,r,u,x)
+            ,2
+    *
+       dy
+   + 
+         a   (x,y,x,t,x,z,y,r,u,x)
+          ,10
+       + 
+         a  (x,y,x,t,x,z,y,r,u,x)
+          ,5
+       + 
+       a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
+        ,3                         ,1
+    *
+       dx
+                   Type: DeRhamComplex(Integer,[x,y,z])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty30}
+\begin{paste}{DeRhamComplexXmpPageEmpty30}{DeRhamComplexXmpPagePatch30}
+\pastebutton{DeRhamComplexXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{exteriorDifferential h1\free{h1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch31}
+\begin{paste}{DeRhamComplexXmpPageFull31}{DeRhamComplexXmpPageEmpty31}
+\pastebutton{DeRhamComplexXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{coefficient(gamma, dx*dy)\free{gamma dxyz }}
+\indentrel{3}\begin{verbatim}
+   (31)
+        2     3 2       2
+     (7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z)
+   + 
+         4 2 5    3
+     - 5x y z  + x y z
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty31}
+\begin{paste}{DeRhamComplexXmpPageEmpty31}{DeRhamComplexXmpPagePatch31}
+\pastebutton{DeRhamComplexXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{coefficient(gamma, dx*dy)\free{gamma dxyz }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch32}
+\begin{paste}{DeRhamComplexXmpPageFull32}{DeRhamComplexXmpPageEmpty32}
+\pastebutton{DeRhamComplexXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{coefficient(gamma, one)\free{gamma one }}
+\indentrel{3}\begin{verbatim}
+   (32)  0
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty32}
+\begin{paste}{DeRhamComplexXmpPageEmpty32}{DeRhamComplexXmpPagePatch32}
+\pastebutton{DeRhamComplexXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{coefficient(gamma, one)\free{gamma one }}
+\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPagePatch33}
+\begin{paste}{DeRhamComplexXmpPageFull33}{DeRhamComplexXmpPageEmpty33}
+\pastebutton{DeRhamComplexXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{coefficient(g1,one)\free{g1 one }}
+\indentrel{3}\begin{verbatim}
+   (33)  a(x,t,y,u,v,z,e)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DeRhamComplexXmpPageEmpty33}
+\begin{paste}{DeRhamComplexXmpPageEmpty33}{DeRhamComplexXmpPagePatch33}
+\pastebutton{DeRhamComplexXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{coefficient(g1,one)\free{g1 one }}
+\end{paste}\end{patch}
+
 @
 \section{dfloat.ht}
 \pagehead{DoubleFloatXmpPage}{dfloat.ht}{DoubleFloat}
@@ -5516,6 +13580,170 @@ Section 8.1\ignore{ugProblemNumeric}, and
 \autobuttons
 \end{page}
 
+\begin{patch}{DoubleFloatXmpPagePatch1}
+\begin{paste}{DoubleFloatXmpPageFull1}{DoubleFloatXmpPageEmpty1}
+\pastebutton{DoubleFloatXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{2.71828}
+\indentrel{3}\begin{verbatim}
+   (1)  2.71828
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty1}
+\begin{paste}{DoubleFloatXmpPageEmpty1}{DoubleFloatXmpPagePatch1}
+\pastebutton{DoubleFloatXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{2.71828}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch2}
+\begin{paste}{DoubleFloatXmpPageFull2}{DoubleFloatXmpPageEmpty2}
+\pastebutton{DoubleFloatXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{2.71828@DoubleFloat}
+\indentrel{3}\begin{verbatim}
+   (2)  2.71828
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty2}
+\begin{paste}{DoubleFloatXmpPageEmpty2}{DoubleFloatXmpPagePatch2}
+\pastebutton{DoubleFloatXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{2.71828@DoubleFloat}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch3}
+\begin{paste}{DoubleFloatXmpPageFull3}{DoubleFloatXmpPageEmpty3}
+\pastebutton{DoubleFloatXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{2.71828 :: DoubleFloat}
+\indentrel{3}\begin{verbatim}
+   (3)  2.71828
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty3}
+\begin{paste}{DoubleFloatXmpPageEmpty3}{DoubleFloatXmpPagePatch3}
+\pastebutton{DoubleFloatXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{2.71828 :: DoubleFloat}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch4}
+\begin{paste}{DoubleFloatXmpPageFull4}{DoubleFloatXmpPageEmpty4}
+\pastebutton{DoubleFloatXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{eApprox : DoubleFloat := 2.71828\bound{eApprox }}
+\indentrel{3}\begin{verbatim}
+   (4)  2.71828
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty4}
+\begin{paste}{DoubleFloatXmpPageEmpty4}{DoubleFloatXmpPagePatch4}
+\pastebutton{DoubleFloatXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{eApprox : DoubleFloat := 2.71828\bound{eApprox }}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch5}
+\begin{paste}{DoubleFloatXmpPageFull5}{DoubleFloatXmpPageEmpty5}
+\pastebutton{DoubleFloatXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{avg : List DoubleFloat -> DoubleFloat\bound{avgDec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty5}
+\begin{paste}{DoubleFloatXmpPageEmpty5}{DoubleFloatXmpPagePatch5}
+\pastebutton{DoubleFloatXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{avg : List DoubleFloat -> DoubleFloat\bound{avgDec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch6}
+\begin{paste}{DoubleFloatXmpPageFull6}{DoubleFloatXmpPageEmpty6}
+\pastebutton{DoubleFloatXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{avg l ==
+  empty? l => 0 :: DoubleFloat
+  reduce(_+,l) / \#l
+\bound{avg }\free{avgDec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty6}
+\begin{paste}{DoubleFloatXmpPageEmpty6}{DoubleFloatXmpPagePatch6}
+\pastebutton{DoubleFloatXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{avg l ==
+  empty? l => 0 :: DoubleFloat
+  reduce(_+,l) / \#l
+\bound{avg }\free{avgDec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch7}
+\begin{paste}{DoubleFloatXmpPageFull7}{DoubleFloatXmpPageEmpty7}
+\pastebutton{DoubleFloatXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{avg []\free{avg }}
+\indentrel{3}\begin{verbatim}
+   (7)  0.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty7}
+\begin{paste}{DoubleFloatXmpPageEmpty7}{DoubleFloatXmpPagePatch7}
+\pastebutton{DoubleFloatXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{avg []\free{avg }}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch8}
+\begin{paste}{DoubleFloatXmpPageFull8}{DoubleFloatXmpPageEmpty8}
+\pastebutton{DoubleFloatXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{avg [3.4,9.7,-6.8]\free{avg }}
+\indentrel{3}\begin{verbatim}
+   (8)  2.1
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty8}
+\begin{paste}{DoubleFloatXmpPageEmpty8}{DoubleFloatXmpPagePatch8}
+\pastebutton{DoubleFloatXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{avg [3.4,9.7,-6.8]\free{avg }}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch9}
+\begin{paste}{DoubleFloatXmpPageFull9}{DoubleFloatXmpPageEmpty9}
+\pastebutton{DoubleFloatXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{cos(3.1415926)$DoubleFloat}
+\indentrel{3}\begin{verbatim}
+   (9)  - 0.999999999999999
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty9}
+\begin{paste}{DoubleFloatXmpPageEmpty9}{DoubleFloatXmpPagePatch9}
+\pastebutton{DoubleFloatXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{cos(3.1415926)$DoubleFloat}
+\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPagePatch10}
+\begin{paste}{DoubleFloatXmpPageFull10}{DoubleFloatXmpPageEmpty10}
+\pastebutton{DoubleFloatXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{cos(3.1415926 :: DoubleFloat)}
+\indentrel{3}\begin{verbatim}
+   (10)  - 0.999999999999999
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DoubleFloatXmpPageEmpty10}
+\begin{paste}{DoubleFloatXmpPageEmpty10}{DoubleFloatXmpPagePatch10}
+\pastebutton{DoubleFloatXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{cos(3.1415926 :: DoubleFloat)}
+\end{paste}\end{patch}
+
 @
 \section{dmp.ht}
 \pagehead{DistributedMultivariatePolyXmpPage}{dmp.ht}
@@ -5606,7 +13834,169 @@ in Section 2.7\ignore{ugTypesConvert},
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch1}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull1}{DistributedMultivariatePolynomialXmpPageEmpty1}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(d1,d2,d3) : DMP([z,y,x],FRAC INT)\bound{d1dec d2dec d3dec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty1}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty1}{DistributedMultivariatePolynomialXmpPagePatch1}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(d1,d2,d3) : DMP([z,y,x],FRAC INT)\bound{d1dec d2dec d3dec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch2}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull2}{DistributedMultivariatePolynomialXmpPageEmpty2}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{d1 := -4*z + 4*y**2*x + 16*x**2 + 1\bound{d1 }\free{d1dec }}
+\indentrel{3}\begin{verbatim}
+                 2       2
+   (2)  - 4z + 4y x + 16x  + 1
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty2}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty2}{DistributedMultivariatePolynomialXmpPagePatch2}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{d1 := -4*z + 4*y**2*x + 16*x**2 + 1\bound{d1 }\free{d1dec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch3}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull3}{DistributedMultivariatePolynomialXmpPageEmpty3}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{d2 := 2*z*y**2 + 4*x + 1\bound{d2 }\free{d2dec }}
+\indentrel{3}\begin{verbatim}
+            2
+   (3)  2z y  + 4x + 1
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty3}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty3}{DistributedMultivariatePolynomialXmpPagePatch3}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{d2 := 2*z*y**2 + 4*x + 1\bound{d2 }\free{d2dec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch4}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull4}{DistributedMultivariatePolynomialXmpPageEmpty4}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{d3 := 2*z*x**2 - 2*y**2 - x\bound{d3 }\free{d3dec }}
+\indentrel{3}\begin{verbatim}
+            2     2
+   (4)  2z x  - 2y  - x
+Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty4}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty4}{DistributedMultivariatePolynomialXmpPagePatch4}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{d3 := 2*z*x**2 - 2*y**2 - x\bound{d3 }\free{d3dec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch5}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull5}{DistributedMultivariatePolynomialXmpPageEmpty5}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{groebner [d1,d2,d3]\free{d1 d2 d3 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+   [
+           1568  6   1264  5    6   4   182  3   2047  2
+       z - ÄÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x
+           2745       305      305      549       610
+     + 
+          103      2857
+       - ÄÄÄÄ x - ÄÄÄÄÄ
+         2745     10980
+     ,
+
+        2    112  6    84  5   1264  4    13  3    84  2
+       y  + ÄÄÄÄ x  - ÄÄÄ x  - ÄÄÄÄ x  - ÄÄÄ x  + ÄÄÄ x
+            2745      305       305      549      305
+     + 
+       1772       2
+       ÄÄÄÄ x + ÄÄÄÄ
+       2745     2745
+     ,
+     7   29  6   17  4   11  3    1  2   15     1
+    x  + ÄÄ x  - ÄÄ x  - ÄÄ x  + ÄÄ x  + ÄÄ x + Ä]
+          4      16       8      32      16     4
+Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty5}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty5}{DistributedMultivariatePolynomialXmpPagePatch5}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{groebner [d1,d2,d3]\free{d1 d2 d3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch6}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull6}{DistributedMultivariatePolynomialXmpPageEmpty6}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{(n1,n2,n3) : HDMP([z,y,x],FRAC INT)\bound{ndec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty6}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty6}{DistributedMultivariatePolynomialXmpPagePatch6}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{(n1,n2,n3) : HDMP([z,y,x],FRAC INT)\bound{ndec }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch7}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull7}{DistributedMultivariatePolynomialXmpPageEmpty7}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{(n1,n2,n3) := (d1,d2,d3)\free{ndec }\bound{n }\free{d1 d2 d3 }}
+\indentrel{3}\begin{verbatim}
+            2     2
+   (7)  2z x  - 2y  - x
+Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty7}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty7}{DistributedMultivariatePolynomialXmpPagePatch7}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{(n1,n2,n3) := (d1,d2,d3)\free{ndec }\bound{n }\free{d1 d2 d3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch8}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageFull8}{DistributedMultivariatePolynomialXmpPageEmpty8}
+\pastebutton{DistributedMultivariatePolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{groebner [n1,n2,n3]\free{n }}
+\indentrel{3}\begin{verbatim}
+   (8)
+     4     3   3  2   1     1
+   [y  + 2x  - Ä x  + Ä z - Ä,
+               2      2     8
+     4   29  3   1  2   7        9     1     2        1
+    x  + ÄÄ x  - Ä y  - Ä z x - ÄÄ x - Ä, z y  + 2x + Ä,
+          4      8      4       16     4              2
+     2      2       1     2    2   1
+    y x + 4x  - z + Ä, z x  - y  - Ä x,
+                    4              2
+     2     2     2   1     3
+    z  - 4y  + 2x  - Ä z - Ä x]
+                     4     2
+Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty8}
+\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty8}{DistributedMultivariatePolynomialXmpPagePatch8}
+\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{groebner [n1,n2,n3]\free{n }}
+\end{paste}\end{patch}
 
 @
 \section{eq.ht}
@@ -5689,6 +14079,200 @@ all one has to do is ask!
 \autobuttons
 \end{page}
 
+\begin{patch}{EquationXmpPagePatch1}
+\begin{paste}{EquationXmpPageFull1}{EquationXmpPageEmpty1}
+\pastebutton{EquationXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{eq1 := 3*x + 4*y = 5\bound{eq1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  4y + 3x= 5
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty1}
+\begin{paste}{EquationXmpPageEmpty1}{EquationXmpPagePatch1}
+\pastebutton{EquationXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{eq1 := 3*x + 4*y = 5\bound{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch2}
+\begin{paste}{EquationXmpPageFull2}{EquationXmpPageEmpty2}
+\pastebutton{EquationXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{eq2 := 2*x + 2*y = 3\bound{eq2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  2y + 2x= 3
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty2}
+\begin{paste}{EquationXmpPageEmpty2}{EquationXmpPagePatch2}
+\pastebutton{EquationXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eq2 := 2*x + 2*y = 3\bound{eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch3}
+\begin{paste}{EquationXmpPageFull3}{EquationXmpPageEmpty3}
+\pastebutton{EquationXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{lhs eq1\free{eq1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  4y + 3x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty3}
+\begin{paste}{EquationXmpPageEmpty3}{EquationXmpPagePatch3}
+\pastebutton{EquationXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{lhs eq1\free{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch4}
+\begin{paste}{EquationXmpPageFull4}{EquationXmpPageEmpty4}
+\pastebutton{EquationXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{rhs eq1\free{eq1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  5
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty4}
+\begin{paste}{EquationXmpPageEmpty4}{EquationXmpPagePatch4}
+\pastebutton{EquationXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{rhs eq1\free{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch5}
+\begin{paste}{EquationXmpPageFull5}{EquationXmpPageEmpty5}
+\pastebutton{EquationXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{eq1 + eq2\free{eq1 eq2 }}
+\indentrel{3}\begin{verbatim}
+   (5)  6y + 5x= 8
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty5}
+\begin{paste}{EquationXmpPageEmpty5}{EquationXmpPagePatch5}
+\pastebutton{EquationXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{eq1 + eq2\free{eq1 eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch6}
+\begin{paste}{EquationXmpPageFull6}{EquationXmpPageEmpty6}
+\pastebutton{EquationXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{eq1 * eq2\free{eq1 eq2 }}
+\indentrel{3}\begin{verbatim}
+          2             2
+   (6)  8y  + 14x y + 6x = 15
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty6}
+\begin{paste}{EquationXmpPageEmpty6}{EquationXmpPagePatch6}
+\pastebutton{EquationXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{eq1 * eq2\free{eq1 eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch7}
+\begin{paste}{EquationXmpPageFull7}{EquationXmpPageEmpty7}
+\pastebutton{EquationXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{2*eq2 - eq1\free{eq1 eq2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  x= 1
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty7}
+\begin{paste}{EquationXmpPageEmpty7}{EquationXmpPagePatch7}
+\pastebutton{EquationXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{2*eq2 - eq1\free{eq1 eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch8}
+\begin{paste}{EquationXmpPageFull8}{EquationXmpPageEmpty8}
+\pastebutton{EquationXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{eq1**2\free{eq1 }}
+\indentrel{3}\begin{verbatim}
+           2             2
+   (8)  16y  + 24x y + 9x = 25
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty8}
+\begin{paste}{EquationXmpPageEmpty8}{EquationXmpPagePatch8}
+\pastebutton{EquationXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{eq1**2\free{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch9}
+\begin{paste}{EquationXmpPageFull9}{EquationXmpPageEmpty9}
+\pastebutton{EquationXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{if x+1 = y then "equal" else "unequal"}
+\indentrel{3}\begin{verbatim}
+   (9)  "unequal"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty9}
+\begin{paste}{EquationXmpPageEmpty9}{EquationXmpPagePatch9}
+\pastebutton{EquationXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{if x+1 = y then "equal" else "unequal"}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch10}
+\begin{paste}{EquationXmpPageFull10}{EquationXmpPageEmpty10}
+\pastebutton{EquationXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{eqpol := x+1 = y\bound{eqpol }}
+\indentrel{3}\begin{verbatim}
+   (10)  x + 1= y
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty10}
+\begin{paste}{EquationXmpPageEmpty10}{EquationXmpPagePatch10}
+\pastebutton{EquationXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{eqpol := x+1 = y\bound{eqpol }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch11}
+\begin{paste}{EquationXmpPageFull11}{EquationXmpPageEmpty11}
+\pastebutton{EquationXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{if eqpol then "equal" else "unequal"\free{eqpol }}
+\indentrel{3}\begin{verbatim}
+   (11)  "unequal"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty11}
+\begin{paste}{EquationXmpPageEmpty11}{EquationXmpPagePatch11}
+\pastebutton{EquationXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{if eqpol then "equal" else "unequal"\free{eqpol }}
+\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPagePatch12}
+\begin{paste}{EquationXmpPageFull12}{EquationXmpPageEmpty12}
+\pastebutton{EquationXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{eqpol::Boolean\free{eqpol }}
+\indentrel{3}\begin{verbatim}
+   (12)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EquationXmpPageEmpty12}
+\begin{paste}{EquationXmpPageEmpty12}{EquationXmpPagePatch12}
+\pastebutton{EquationXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{eqpol::Boolean\free{eqpol }}
+\end{paste}\end{patch}
+
 @
 \section{eqtbl.ht}
 \pagehead{EqTableXmpPage}{eqtbl.ht}{EqTable}
@@ -5741,6 +14325,102 @@ can be stored under each.
 \autobuttons
 \end{page}
 
+\begin{patch}{EqTableXmpPagePatch1}
+\begin{paste}{EqTableXmpPageFull1}{EqTableXmpPageEmpty1}
+\pastebutton{EqTableXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{e: EqTable(List Integer, Integer) := table()\bound{e }}
+\indentrel{3}\begin{verbatim}
+   (1)  table()
+                    Type: EqTable(List Integer,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty1}
+\begin{paste}{EqTableXmpPageEmpty1}{EqTableXmpPagePatch1}
+\pastebutton{EqTableXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{e: EqTable(List Integer, Integer) := table()\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPagePatch2}
+\begin{paste}{EqTableXmpPageFull2}{EqTableXmpPageEmpty2}
+\pastebutton{EqTableXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{l1 := [1,2,3]\bound{l1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty2}
+\begin{paste}{EqTableXmpPageEmpty2}{EqTableXmpPagePatch2}
+\pastebutton{EqTableXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{l1 := [1,2,3]\bound{l1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPagePatch3}
+\begin{paste}{EqTableXmpPageFull3}{EqTableXmpPageEmpty3}
+\pastebutton{EqTableXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{l2 := [1,2,3]\bound{l2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty3}
+\begin{paste}{EqTableXmpPageEmpty3}{EqTableXmpPagePatch3}
+\pastebutton{EqTableXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{l2 := [1,2,3]\bound{l2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPagePatch4}
+\begin{paste}{EqTableXmpPageFull4}{EqTableXmpPageEmpty4}
+\pastebutton{EqTableXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{e.l1 := 111\free{e l1 }\bound{e1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  111
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty4}
+\begin{paste}{EqTableXmpPageEmpty4}{EqTableXmpPagePatch4}
+\pastebutton{EqTableXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{e.l1 := 111\free{e l1 }\bound{e1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPagePatch5}
+\begin{paste}{EqTableXmpPageFull5}{EqTableXmpPageEmpty5}
+\pastebutton{EqTableXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{e.l2 := 222\free{e1 l2 }\bound{e2 }}
+\indentrel{3}\begin{verbatim}
+   (5)  222
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty5}
+\begin{paste}{EqTableXmpPageEmpty5}{EqTableXmpPagePatch5}
+\pastebutton{EqTableXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{e.l2 := 222\free{e1 l2 }\bound{e2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPagePatch6}
+\begin{paste}{EqTableXmpPageFull6}{EqTableXmpPageEmpty6}
+\pastebutton{EqTableXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{e.l1\free{e2 l1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  111
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{EqTableXmpPageEmpty6}
+\begin{paste}{EqTableXmpPageEmpty6}{EqTableXmpPagePatch6}
+\pastebutton{EqTableXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{e.l1\free{e2 l1 }}
+\end{paste}\end{patch}
+
 @
 \section{evalex.ht}
 \pagehead{PrefixEval}{evalex.ht}{Example of Standard Evaluation}
@@ -5778,7 +14458,24 @@ for {\em op a}.
 Try it:
 \example{cos(2)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{PrefixEvalPatch1}
+\begin{paste}{PrefixEvalFull1}{PrefixEvalEmpty1}
+\pastebutton{PrefixEvalFull1}{\hidepaste}
+\tab{5}\spadcommand{cos(2)}
+\indentrel{3}\begin{verbatim}
+   (1)  cos(2)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PrefixEvalEmpty1}
+\begin{paste}{PrefixEvalEmpty1}{PrefixEvalPatch1}
+\pastebutton{PrefixEvalEmpty1}{\showpaste}
+\tab{5}\spadcommand{cos(2)}
+\end{paste}\end{patch}
 
 @
 \pagehead{InfixEval}{evalex.ht}{Example of Standard Evaluation}
@@ -5820,7 +14517,24 @@ produce {\em 5.4}.
 Try it:
 \example{2 + 3.4}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{InfixEvalPatch1}
+\begin{paste}{InfixEvalFull1}{InfixEvalEmpty1}
+\pastebutton{InfixEvalFull1}{\hidepaste}
+\tab{5}\spadcommand{2 + 3.4}
+\indentrel{3}\begin{verbatim}
+   (1)  5.4
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{InfixEvalEmpty1}
+\begin{paste}{InfixEvalEmpty1}{InfixEvalPatch1}
+\pastebutton{InfixEvalEmpty1}{\showpaste}
+\tab{5}\spadcommand{2 + 3.4}
+\end{paste}\end{patch}
 
 @
 \section{exdiff.ht}
@@ -5834,7 +14548,26 @@ For example, to compute the derivative of {\em sin(x) * exp(x**2)}
 with respect to the variable {\em x}, issue the following command:
 \spadpaste{differentiate(sin(x) * exp(x**2),x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffBasicPatch1}
+\begin{paste}{ExDiffBasicFull1}{ExDiffBasicEmpty1}
+\pastebutton{ExDiffBasicFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
+\indentrel{3}\begin{verbatim}
+              2                  2
+             x                  x
+   (1)  2x %e  sin(x) + cos(x)%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffBasicEmpty1}
+\begin{paste}{ExDiffBasicEmpty1}{ExDiffBasicPatch1}
+\pastebutton{ExDiffBasicEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDiffSeveralVariables}{exdiff.ht}
@@ -5849,7 +14582,52 @@ For example:
 \spadpaste{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
 \spadpaste{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffSeveralVariablesPatch1}
+\begin{paste}{ExDiffSeveralVariablesFull1}{ExDiffSeveralVariablesEmpty1}
+\pastebutton{ExDiffSeveralVariablesFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
+\indentrel{3}\begin{verbatim}
+                         2    2
+        (- 2x sin(x) + (y  + x )cos(x))tan(y)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                    4     2 2    4
+                   y  + 2x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffSeveralVariablesEmpty1}
+\begin{paste}{ExDiffSeveralVariablesEmpty1}{ExDiffSeveralVariablesPatch1}
+\pastebutton{ExDiffSeveralVariablesEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExDiffSeveralVariablesPatch2}
+\begin{paste}{ExDiffSeveralVariablesFull2}{ExDiffSeveralVariablesEmpty2}
+\pastebutton{ExDiffSeveralVariablesFull2}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
+\indentrel{3}\begin{verbatim}
+   (2)
+         2    2             2
+       (y  + x )sin(x)tan(y)  - 2y sin(x)tan(y)
+     + 
+         2    2
+       (y  + x )sin(x)
+  /
+      4     2 2    4
+     y  + 2x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffSeveralVariablesEmpty2}
+\begin{paste}{ExDiffSeveralVariablesEmpty2}{ExDiffSeveralVariablesPatch2}
+\pastebutton{ExDiffSeveralVariablesEmpty2}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDiffHigherOrder}{exdiff.ht}{Derivatives of Higher Order}
@@ -5862,7 +14640,26 @@ For example, to compute the fourth derivative of {\em exp(x**2)}, issue the
 following command:
 \spadpaste{differentiate(exp(x**2),x,4)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffHigherOrderPatch1}
+\begin{paste}{ExDiffHigherOrderFull1}{ExDiffHigherOrderEmpty1}
+\pastebutton{ExDiffHigherOrderFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
+\indentrel{3}\begin{verbatim}
+                             2
+            4      2        x
+   (1)  (16x  + 48x  + 12)%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffHigherOrderEmpty1}
+\begin{paste}{ExDiffHigherOrderEmpty1}{ExDiffHigherOrderPatch1}
+\pastebutton{ExDiffHigherOrderEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDiffMultipleI}{exdiff.ht}{Multiple Derivatives I}
@@ -5882,7 +14679,49 @@ For example, the following command differentiates the same function with
 respect to {\em x} and then twice with respect to {\em y}.
 \spadpaste{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffMultipleIPatch1}
+\begin{paste}{ExDiffMultipleIFull1}{ExDiffMultipleIEmpty1}
+\pastebutton{ExDiffMultipleIFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
+\indentrel{3}\begin{verbatim}
+                           3     2
+        8x y sin(x) + (- 2y  - 2x y)cos(x)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               6     2 4     4 2    6
+              y  + 3x y  + 3x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffMultipleIEmpty1}
+\begin{paste}{ExDiffMultipleIEmpty1}{ExDiffMultipleIPatch1}
+\pastebutton{ExDiffMultipleIEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
+\end{paste}\end{patch}
+
+\begin{patch}{ExDiffMultipleIPatch2}
+\begin{paste}{ExDiffMultipleIFull2}{ExDiffMultipleIEmpty2}
+\pastebutton{ExDiffMultipleIFull2}{\hidepaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
+\indentrel{3}\begin{verbatim}
+   (2)
+           2     3             4     2 2     4
+   (- 40x y  + 8x )sin(x) + (6y  + 4x y  - 2x )cos(x)
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              8     2 6     4 4     6 2    8
+             y  + 4x y  + 6x y  + 4x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffMultipleIEmpty2}
+\begin{paste}{ExDiffMultipleIEmpty2}{ExDiffMultipleIPatch2}
+\pastebutton{ExDiffMultipleIEmpty2}{\showpaste}
+\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDiffMultipleII}{exdiff.ht}{Multiple Derivatives II}
@@ -5897,7 +14736,28 @@ then three times with respect to {\em z},
 issue the following command:
 \spadpaste{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffMultipleIIPatch1}
+\begin{paste}{ExDiffMultipleIIFull1}{ExDiffMultipleIIEmpty1}
+\pastebutton{ExDiffMultipleIIFull1}{\hidepaste}
+\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
+\indentrel{3}\begin{verbatim}
+                    4      3
+            (- 84x y  + 24x y)sin(z)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         12     2 9     4 6     6 3    8
+        y   + 4x y  + 6x y  + 4x y  + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffMultipleIIEmpty1}
+\begin{paste}{ExDiffMultipleIIEmpty1}{ExDiffMultipleIIPatch1}
+\pastebutton{ExDiffMultipleIIEmpty1}{\showpaste}
+\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDiffFormalIntegral}{exdiff.ht}
@@ -5915,7 +14775,64 @@ combination with other functions:
 \spadpaste{differentiate(f,t) \free{f}}
 \spadpaste{differentiate(f * t**2,t) \free{f}}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDiffFormalIntegralPatch1}
+\begin{paste}{ExDiffFormalIntegralFull1}{ExDiffFormalIntegralEmpty1}
+\pastebutton{ExDiffFormalIntegralFull1}{\hidepaste}
+\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
+\indentrel{3}\begin{verbatim}
+           t  ÚÄÄÄÄÄÄÄ¿
+         Ú¿   ³  3
+   (1)   ³   \³%N  + 1 d%N
+        ÀÙ
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffFormalIntegralEmpty1}
+\begin{paste}{ExDiffFormalIntegralEmpty1}{ExDiffFormalIntegralPatch1}
+\pastebutton{ExDiffFormalIntegralEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExDiffFormalIntegralPatch2}
+\begin{paste}{ExDiffFormalIntegralFull2}{ExDiffFormalIntegralEmpty2}
+\pastebutton{ExDiffFormalIntegralFull2}{\hidepaste}
+\tab{5}\spadcommand{differentiate(f,t)\free{f }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄ¿
+         ³ 3
+   (2)  \³t  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffFormalIntegralEmpty2}
+\begin{paste}{ExDiffFormalIntegralEmpty2}{ExDiffFormalIntegralPatch2}
+\pastebutton{ExDiffFormalIntegralEmpty2}{\showpaste}
+\tab{5}\spadcommand{differentiate(f,t)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExDiffFormalIntegralPatch3}
+\begin{paste}{ExDiffFormalIntegralFull3}{ExDiffFormalIntegralEmpty3}
+\pastebutton{ExDiffFormalIntegralFull3}{\hidepaste}
+\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
+\indentrel{3}\begin{verbatim}
+             t  ÚÄÄÄÄÄÄÄ¿          ÚÄÄÄÄÄÄ¿
+           Ú¿   ³  3             2 ³ 3
+   (3)  2t ³   \³%N  + 1 d%N  + t \³t  + 1
+          ÀÙ
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDiffFormalIntegralEmpty3}
+\begin{paste}{ExDiffFormalIntegralEmpty3}{ExDiffFormalIntegralPatch3}
+\pastebutton{ExDiffFormalIntegralEmpty3}{\showpaste}
+\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExitXmpPage}{exit.ht}{Exit}
@@ -5979,6 +14896,112 @@ See \downlink{``User-Defined Functions, Macros and Rules''}
 \autobuttons
 \end{page}
 
+\begin{patch}{ExitXmpPagePatch1}
+\begin{paste}{ExitXmpPageFull1}{ExitXmpPageEmpty1}
+\pastebutton{ExitXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{n := 0\bound{n }}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty1}
+\begin{paste}{ExitXmpPageEmpty1}{ExitXmpPagePatch1}
+\pastebutton{ExitXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{n := 0\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPagePatch2}
+\begin{paste}{ExitXmpPageFull2}{ExitXmpPageEmpty2}
+\pastebutton{ExitXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{gasp(): Exit ==
+    free n
+    n := n + 1
+    error "Oh no!"
+\bound{gasp }\free{n }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty2}
+\begin{paste}{ExitXmpPageEmpty2}{ExitXmpPagePatch2}
+\pastebutton{ExitXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{gasp(): Exit ==
+    free n
+    n := n + 1
+    error "Oh no!"
+\bound{gasp }\free{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPagePatch3}
+\begin{paste}{ExitXmpPageFull3}{ExitXmpPageEmpty3}
+\pastebutton{ExitXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{half(k) ==
+  if odd? k then gasp()
+  else k quo 2
+\bound{half }\free{gasp }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty3}
+\begin{paste}{ExitXmpPageEmpty3}{ExitXmpPagePatch3}
+\pastebutton{ExitXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{half(k) ==
+  if odd? k then gasp()
+  else k quo 2
+\bound{half }\free{gasp }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPagePatch4}
+\begin{paste}{ExitXmpPageFull4}{ExitXmpPageEmpty4}
+\pastebutton{ExitXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{half 4\free{half }\bound{app1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty4}
+\begin{paste}{ExitXmpPageEmpty4}{ExitXmpPagePatch4}
+\pastebutton{ExitXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{half 4\free{half }\bound{app1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPagePatch5}
+\begin{paste}{ExitXmpPageFull5}{ExitXmpPageEmpty5}
+\pastebutton{ExitXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{half 3\free{half app1 }\bound{app2 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty5}
+\begin{paste}{ExitXmpPageEmpty5}{ExitXmpPagePatch5}
+\pastebutton{ExitXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{half 3\free{half app1 }\bound{app2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPagePatch6}
+\begin{paste}{ExitXmpPageFull6}{ExitXmpPageEmpty6}
+\pastebutton{ExitXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{n\free{app2 }}
+\indentrel{3}\begin{verbatim}
+   (5)  1
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExitXmpPageEmpty6}
+\begin{paste}{ExitXmpPageEmpty6}{ExitXmpPagePatch6}
+\pastebutton{ExitXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{n\free{app2 }}
+\end{paste}\end{patch}
+
 @
 \section{exlap.ht}
 \pagehead{ExLapSimplePole}{exlap.ht}{Laplace transform with a single pole}
@@ -5992,6 +15015,25 @@ answer.
 \endscroll
 \autobuttons\end{page}
 
+\begin{patch}{ExLapSimplePolePatch1}
+\begin{paste}{ExLapSimplePoleFull1}{ExLapSimplePoleEmpty1}
+\pastebutton{ExLapSimplePoleFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
+\indentrel{3}\begin{verbatim}
+                            1
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         5       4      2 3      3 2     4     5
+        s  + 5a s  + 10a s  + 10a s  + 5a s + a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapSimplePoleEmpty1}
+\begin{paste}{ExLapSimplePoleEmpty1}{ExLapSimplePolePatch1}
+\pastebutton{ExLapSimplePoleEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ExLapTrigTrigh}{exlap.ht}
 {Laplace transform of a trigonometric function}
@@ -6005,6 +15047,26 @@ logarithms.
 \endscroll
 \autobuttons\end{page}
 
+\begin{patch}{ExLapTrigTrighPatch1}
+\begin{paste}{ExLapTrigTrighFull1}{ExLapTrigTrighEmpty1}
+\pastebutton{ExLapTrigTrighFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
+\indentrel{3}\begin{verbatim}
+             3
+           4a
+   (1)  ÄÄÄÄÄÄÄÄ
+         4     4
+        s  + 4a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapTrigTrighEmpty1}
+\begin{paste}{ExLapTrigTrighEmpty1}{ExLapTrigTrighPatch1}
+\pastebutton{ExLapTrigTrighEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ExLapDefInt}{exlap.ht}
 {Laplace transform requiring a definite integration}
@@ -6018,7 +15080,25 @@ transform between a symbol and infinity. We use the full power of
 Axiom's integrator in such cases.
 \spadpaste{laplace(2/t * (1 - cos(a*t)), t, s)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLapDefIntPatch1}
+\begin{paste}{ExLapDefIntFull1}{ExLapDefIntEmpty1}
+\pastebutton{ExLapDefIntFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\indentrel{3}\begin{verbatim}
+             2    2
+   (1)  log(s  + a ) - 2log(s)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapDefIntEmpty1}
+\begin{paste}{ExLapDefIntEmpty1}{ExLapDefIntPatch1}
+\pastebutton{ExLapDefIntEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLapExpExp}{exlap.ht}{Laplace transform of exponentials}
@@ -6029,7 +15109,24 @@ This is another example where it is necessary to
 integrate the result of another laplace transform.
 \spadpaste{laplace((exp(a*t) - exp(b*t))/t, t, s)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLapExpExpPatch1}
+\begin{paste}{ExLapExpExpFull1}{ExLapExpExpEmpty1}
+\pastebutton{ExLapExpExpFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\indentrel{3}\begin{verbatim}
+   (1)  - log(s - a) + log(s - b)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapExpExpEmpty1}
+\begin{paste}{ExLapExpExpEmpty1}{ExLapExpExpPatch1}
+\pastebutton{ExLapExpExpEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLapSpecial1}{exlap.ht}
@@ -6042,7 +15139,50 @@ linear exponential integrals among them.
 \beginscroll
 \spadpaste{laplace(exp(a*t+b)*Ei(c*t), t, s)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLapSpecial1Patch1}
+\begin{paste}{ExLapSpecial1Full1}{ExLapSpecial1Empty1}
+\pastebutton{ExLapSpecial1Full1}{\hidepaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\indentrel{3}\begin{verbatim}
+          b    s + c - a
+        %e log(ÄÄÄÄÄÄÄÄÄ)
+                   c
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              s - a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapSpecial1Empty1}
+\begin{paste}{ExLapSpecial1Empty1}{ExLapSpecial1Patch1}
+\pastebutton{ExLapSpecial1Empty1}{\showpaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLapSpecial2Patch1}
+\begin{paste}{ExLapSpecial2Full1}{ExLapSpecial2Empty1}
+\pastebutton{ExLapSpecial2Full1}{\hidepaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\indentrel{3}\begin{verbatim}
+               2    2
+              s  + b             d
+        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
+                  2              s
+                 b
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                     2s
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLapSpecial2Empty1}
+\begin{paste}{ExLapSpecial2Empty1}{ExLapSpecial2Patch1}
+\pastebutton{ExLapSpecial2Empty1}{\showpaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLapSpecial2}{exlap.ht}{Laplace transform of special functions}
@@ -6080,7 +15220,96 @@ algebraic number from the expression and displays its defining polynomial.
 \spadpaste{definingPolynomial(tower(\%).2::EXPR INT) \free{i}}
 
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntRationalFunctionPatch1}
+\begin{paste}{ExIntRationalFunctionFull1}{ExIntRationalFunctionEmpty1}
+\pastebutton{ExIntRationalFunctionFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\indentrel{3}\begin{verbatim}
+              3     2
+        atan(x  + 3x  + 3x + 1)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   3
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalFunctionEmpty1}
+\begin{paste}{ExIntRationalFunctionEmpty1}{ExIntRationalFunctionPatch1}
+\pastebutton{ExIntRationalFunctionEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalFunctionPatch2}
+\begin{paste}{ExIntRationalFunctionFull2}{ExIntRationalFunctionEmpty2}
+\pastebutton{ExIntRationalFunctionFull2}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (2)
+           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+           ³        2
+           ³- 93%%H0  + 12
+         ( ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%H0)
+          \³      31
+      *
+         log
+                            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+                            ³        2
+                            ³- 93%%H0  + 12          2
+              (62%%H0 + 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%H0
+                           \³      31
+            + 
+              - 31%%H0 + 18x - 4
+     + 
+             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+             ³        2
+             ³- 93%%H0  + 12
+         (-  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%H0)
+            \³      31
+      *
+         log
+                              ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+                              ³        2
+                              ³- 93%%H0  + 12          2
+              (- 62%%H0 - 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%H0
+                             \³      31
+            + 
+              - 31%%H0 + 18x - 4
+     + 
+                         2
+       2%%H0 log(- 62%%H0  + 31%%H0 + 9x + 4)
+  /
+     2
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalFunctionEmpty2}
+\begin{paste}{ExIntRationalFunctionEmpty2}{ExIntRationalFunctionPatch2}
+\pastebutton{ExIntRationalFunctionEmpty2}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalFunctionPatch3}
+\begin{paste}{ExIntRationalFunctionFull3}{ExIntRationalFunctionEmpty3}
+\pastebutton{ExIntRationalFunctionFull3}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
+\indentrel{3}\begin{verbatim}
+              3
+        31%%H0  - 3%%H0 - 1
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 31
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalFunctionEmpty3}
+\begin{paste}{ExIntRationalFunctionEmpty3}{ExIntRationalFunctionPatch3}
+\pastebutton{ExIntRationalFunctionEmpty3}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntRationalWithRealParameter}{exint.ht}
@@ -6095,7 +15324,31 @@ sign assumptions, Axiom returns all possible answers.
 \spadpaste{integrate(1/(x**2 + a),x)}
 The integrate command generally assumes that all parameters are real.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntRationalWithRealParameterPatch1}
+\begin{paste}{ExIntRationalWithRealParameterFull1}{ExIntRationalWithRealParameterEmpty1}
+\pastebutton{ExIntRationalWithRealParameterFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+               2      ÚÄÄÄ¿
+             (x  - a)\³- a  + 2a x         ÚÄ¿
+         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
+                      2             atan(ÄÄÄÄÄ)
+                     x  + a                a
+   (1)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
+                     ÚÄÄÄ¿               ÚÄ¿
+                   2\³- a               \³a
+               Type: Union(List Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalWithRealParameterEmpty1}
+\begin{paste}{ExIntRationalWithRealParameterEmpty1}{ExIntRationalWithRealParameterPatch1}
+\pastebutton{ExIntRationalWithRealParameterEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntRationalWithComplexParameter}{exint.ht}
@@ -6110,7 +15363,31 @@ You can request
 this answer by prepending the word `complex' to the command name:
 \spadpaste{complexIntegrate(1/(x**2 + a),x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntRationalWithComplexParameterPatch1}
+\begin{paste}{ExIntRationalWithComplexParameterFull1}{ExIntRationalWithComplexParameterEmpty1}
+\pastebutton{ExIntRationalWithComplexParameterFull1}{\hidepaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+              ÚÄÄÄ¿              ÚÄÄÄ¿
+            x\³- a  + a        x\³- a  - a
+        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄ¿              ÚÄÄÄ¿
+               \³- a              \³- a
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                        ÚÄÄÄ¿
+                      2\³- a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRationalWithComplexParameterEmpty1}
+\begin{paste}{ExIntRationalWithComplexParameterEmpty1}{ExIntRationalWithComplexParameterPatch1}
+\pastebutton{ExIntRationalWithComplexParameterEmpty1}{\showpaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntTwoSimilarIntegrands}{exint.ht}
@@ -6130,7 +15407,65 @@ is guaranteed to find what new constants must be added in order to
 find a solution:
 \spadpaste{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntTwoSimilarIntegrandsPatch1}
+\begin{paste}{ExIntTwoSimilarIntegrandsFull1}{ExIntTwoSimilarIntegrandsEmpty1}
+\pastebutton{ExIntTwoSimilarIntegrandsFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\indentrel{3}\begin{verbatim}
+   (1)
+        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
+   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                              4
+                          440b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntTwoSimilarIntegrandsEmpty1}
+\begin{paste}{ExIntTwoSimilarIntegrandsEmpty1}{ExIntTwoSimilarIntegrandsPatch1}
+\pastebutton{ExIntTwoSimilarIntegrandsEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExIntTwoSimilarIntegrandsPatch2}
+\begin{paste}{ExIntTwoSimilarIntegrandsFull2}{ExIntTwoSimilarIntegrandsEmpty2}
+\pastebutton{ExIntTwoSimilarIntegrandsFull2}{\hidepaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\indentrel{3}\begin{verbatim}
+   (2)
+       -
+              2 2 ÚÄ¿
+            2b x \³3
+         *
+                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+            log(\³a \³b x + a   + \³a   \³b x + a + a)
+     + 
+         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+       4b x \³3 log(\³a   \³b x + a - a)
+     + 
+                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
+          2 2     2\³3 \³a   \³b x + a + a\³3
+       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                               3a
+     + 
+                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
+       (12b x - 9a)\³3 \³a \³b x + a
+  /
+        2 2 ÚÄ¿3ÚÄ¿
+     18a x \³3 \³a
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntTwoSimilarIntegrandsEmpty2}
+\begin{paste}{ExIntTwoSimilarIntegrandsEmpty2}{ExIntTwoSimilarIntegrandsPatch2}
+\pastebutton{ExIntTwoSimilarIntegrandsEmpty2}{\showpaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntNoSolution}{exint.ht}{An Integral Which Does Not Exist}
@@ -6147,7 +15482,27 @@ When Axiom returns an integral sign, it has proved
 that no answer exists as an elementary function.
 \spadpaste{integrate(log(1 + sqrt(a*x + b)) / x,x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntNoSolutionPatch1}
+\begin{paste}{ExIntNoSolutionFull1}{ExIntNoSolutionEmpty1}
+\pastebutton{ExIntNoSolutionFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\indentrel{3}\begin{verbatim}
+           x      ÚÄÄÄÄÄÄÄÄ¿
+         Ú¿  log(\³b + %T a  + 1)
+   (1)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%T
+        ÀÙ            %T
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntNoSolutionEmpty1}
+\begin{paste}{ExIntNoSolutionEmpty1}{ExIntNoSolutionPatch1}
+\pastebutton{ExIntNoSolutionEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\end{paste}\end{patch}
 
 @
 \begin{verbatim}
@@ -6175,7 +15530,33 @@ find in tables:
 Whenever possible, Axiom tries to express the answer using the functions
 present in the integrand.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntTrigPatch1}
+\begin{paste}{ExIntTrigFull1}{ExIntTrigEmpty1}
+\pastebutton{ExIntTrigFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
+\indentrel{3}\begin{verbatim}
+   (1)
+                          ÚÄÄÄÄÄ¿
+                 - 2cosh(\³x + b  + 1) - 2x
+     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
+          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
+   + 
+         ÚÄÄÄÄÄ¿
+     - 2\³x + b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntTrigEmpty1}
+\begin{paste}{ExIntTrigEmpty1}{ExIntTrigPatch1}
+\pastebutton{ExIntTrigEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
+\end{paste}
+\end{patch}
 
 @
 \pagehead{ExIntAlgebraicRelation}{exint.ht}
@@ -6192,7 +15573,33 @@ The discovery of this algebraic relationship is necessary
 for correctly integrating this function.
 \downlink{Details.}{ExIntAlgebraicRelationExplain} \space{1}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntAlgebraicRelationPatch1}
+\begin{paste}{ExIntAlgebraicRelationFull1}{ExIntAlgebraicRelationEmpty1}
+\pastebutton{ExIntAlgebraicRelationFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\indentrel{3}\begin{verbatim}
+   (1)
+                 atan(x) 2             atan(x) 2
+       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
+                    3                     3
+     + 
+               atan(x)
+       18x tan(ÄÄÄÄÄÄÄ)
+                  3
+  /
+     18
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntAlgebraicRelationEmpty1}
+\begin{paste}{ExIntAlgebraicRelationEmpty1}{ExIntAlgebraicRelationPatch1}
+\pastebutton{ExIntAlgebraicRelationEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntAlgebraicRelationExplain}{exint.ht}
@@ -6234,7 +15641,27 @@ This is an example of a mixed function where
 the algebraic layer is over the transcendental one.
 \spadpaste{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntRadicalOfTranscendentalPatch1}
+\begin{paste}{ExIntRadicalOfTranscendentalFull1}{ExIntRadicalOfTranscendentalEmpty1}
+\pastebutton{ExIntRadicalOfTranscendentalFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄÄÄÄÄÄÄ¿
+          2\³log(x) + x
+   (1)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+            log(x) + x
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntRadicalOfTranscendentalEmpty1}
+\begin{paste}{ExIntRadicalOfTranscendentalEmpty1}{ExIntRadicalOfTranscendentalPatch1}
+\pastebutton{ExIntRadicalOfTranscendentalEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExIntNonElementary}{exint.ht}
@@ -6247,7 +15674,28 @@ handle some of them:
 \spadpaste{integrate(exp(-x**2) * erf(x) / 
 (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExIntNonElementaryPatch1}
+\begin{paste}{ExIntNonElementaryFull1}{ExIntNonElementaryEmpty1}
+\pastebutton{ExIntNonElementaryFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\indentrel{3}\begin{verbatim}
+                     ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
+        (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
+                              erf(x) + 1
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                        8erf(x) - 8
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExIntNonElementaryEmpty1}
+\begin{paste}{ExIntNonElementaryEmpty1}{ExIntNonElementaryPatch1}
+\pastebutton{ExIntNonElementaryEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\end{paste}\end{patch}
 
 @
 \section{exlimit.ht}
@@ -6270,7 +15718,26 @@ the left is different from the limit from the right.
 wish to ask for a one-sided limit.
 \downlink{How.  }{ExLimitOneSided}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitBasicPatch1}
+\begin{paste}{ExLimitBasicFull1}{ExLimitBasicEmpty1}
+\pastebutton{ExLimitBasicFull1}{\hidepaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\indentrel{3}\begin{verbatim}
+          1
+   (1)  - Ä
+          2
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitBasicEmpty1}
+\begin{paste}{ExLimitBasicEmpty1}{ExLimitBasicPatch1}
+\pastebutton{ExLimitBasicEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLimitParameter}{exlimit.ht}{Limits of Functions with Parameters}
@@ -6283,7 +15750,26 @@ Here's an example:
 \spadpaste{limit(sinh(a*x)/tan(b*x),x = 0)}
 % answer := a/b
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitParameterPatch1}
+\begin{paste}{ExLimitParameterFull1}{ExLimitParameterEmpty1}
+\pastebutton{ExLimitParameterFull1}{\hidepaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+        a
+   (1)  Ä
+        b
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitParameterEmpty1}
+\begin{paste}{ExLimitParameterEmpty1}{ExLimitParameterPatch1}
+\pastebutton{ExLimitParameterEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLimitOneSided}{exlimit.ht}{One-sided Limits}
@@ -6306,7 +15792,40 @@ will indicate when you try to take a two-sided limit:
 \spadpaste{limit(x * log(x),x = 0)}
 % answer := [left = "failed",right = 0]
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitOneSidedPatch1}
+\begin{paste}{ExLimitOneSidedFull1}{ExLimitOneSidedEmpty1}
+\pastebutton{ExLimitOneSidedFull1}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitOneSidedEmpty1}
+\begin{paste}{ExLimitOneSidedEmpty1}{ExLimitOneSidedPatch1}
+\pastebutton{ExLimitOneSidedEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitOneSidedPatch2}
+\begin{paste}{ExLimitOneSidedFull2}{ExLimitOneSidedEmpty2}
+\pastebutton{ExLimitOneSidedFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (2)  [leftHandLimit= "failed",rightHandLimit= 0]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitOneSidedEmpty2}
+\begin{paste}{ExLimitOneSidedEmpty2}{ExLimitOneSidedPatch2}
+\pastebutton{ExLimitOneSidedEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLimitTwoSided}{exlimit.ht}{Two-sided Limits}
@@ -6331,7 +15850,43 @@ Here's another example, this time using a more complicated function:
 \spadpaste{limit(sqrt(1 - cos(t))/t,t = 0)}
 % answer := [left = -sqrt(1/2),right = sqrt(1/2)]
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitTwoSidedPatch1}
+\begin{paste}{ExLimitTwoSidedFull1}{ExLimitTwoSidedEmpty1}
+\pastebutton{ExLimitTwoSidedFull1}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)  [leftHandLimit= - 1,rightHandLimit= 1]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitTwoSidedEmpty1}
+\begin{paste}{ExLimitTwoSidedEmpty1}{ExLimitTwoSidedPatch1}
+\pastebutton{ExLimitTwoSidedEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitTwoSidedPatch2}
+\begin{paste}{ExLimitTwoSidedFull2}{ExLimitTwoSidedEmpty2}
+\pastebutton{ExLimitTwoSidedFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\indentrel{3}\begin{verbatim}
+                            1                    1
+   (2)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
+                           ÚÄ¿                  ÚÄ¿
+                          \³2                  \³2
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitTwoSidedEmpty2}
+\begin{paste}{ExLimitTwoSidedEmpty2}{ExLimitTwoSidedPatch2}
+\pastebutton{ExLimitTwoSidedEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLimitInfinite}{exlimit.ht}{Limits at Infinity}
@@ -6345,7 +15900,46 @@ To do this, use the constants \spad{\%plusInfinity} and
 \spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
 \spadpaste{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitInfinitePatch1}
+\begin{paste}{ExLimitInfiniteFull1}{ExLimitInfiniteEmpty1}
+\pastebutton{ExLimitInfiniteFull1}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+         ÚÄ¿
+        \³3
+   (1)  ÄÄÄÄ
+          5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitInfiniteEmpty1}
+\begin{paste}{ExLimitInfiniteEmpty1}{ExLimitInfinitePatch1}
+\pastebutton{ExLimitInfiniteEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitInfinitePatch2}
+\begin{paste}{ExLimitInfiniteFull2}{ExLimitInfiniteEmpty2}
+\pastebutton{ExLimitInfiniteFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\indentrel{3}\begin{verbatim}
+           ÚÄ¿
+          \³3
+   (2)  - ÄÄÄÄ
+            5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitInfiniteEmpty2}
+\begin{paste}{ExLimitInfiniteEmpty2}{ExLimitInfinitePatch2}
+\pastebutton{ExLimitInfiniteEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExLimitRealComplex}{exlimit.ht}{Real Limits vs. Complex Limits}
@@ -6367,7 +15961,41 @@ does not approach any limit as \spad{z} tends to \spad{0} in the complex plane.
 Axiom indicates this when we call the function \spadfun{complexLimit}:
 \spadpaste{complexLimit(z * sin(1/z),z = 0)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitRealComplexPatch1}
+\begin{paste}{ExLimitRealComplexFull1}{ExLimitRealComplexEmpty1}
+\pastebutton{ExLimitRealComplexFull1}{\hidepaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitRealComplexEmpty1}
+\begin{paste}{ExLimitRealComplexEmpty1}{ExLimitRealComplexPatch1}
+\pastebutton{ExLimitRealComplexEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitRealComplexPatch2}
+\begin{paste}{ExLimitRealComplexFull2}{ExLimitRealComplexEmpty2}
+\pastebutton{ExLimitRealComplexFull2}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (2)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitRealComplexEmpty2}
+\begin{paste}{ExLimitRealComplexEmpty2}{ExLimitRealComplexPatch2}
+\pastebutton{ExLimitRealComplexEmpty2}{\showpaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\end{paste}
+\end{patch}
 
 @
 \pagehead{ExLimitComplexInfinite}{exlimit.ht}{Complex Limits at Infinity}
@@ -6387,7 +16015,56 @@ For example:
 \spadpaste{limit(sin(x)/x,x = \%plusInfinity)}
 \spadpaste{complexLimit(sin(x)/x,x = \%infinity)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExLimitComplexInfinitePatch1}
+\begin{paste}{ExLimitComplexInfiniteFull1}{ExLimitComplexInfiniteEmpty1}
+\pastebutton{ExLimitComplexInfiniteFull1}{\hidepaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (1)  - 1
+   Type: OnePointCompletion Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitComplexInfiniteEmpty1}
+\begin{paste}{ExLimitComplexInfiniteEmpty1}{ExLimitComplexInfinitePatch1}
+\pastebutton{ExLimitComplexInfiniteEmpty1}{\showpaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitComplexInfinitePatch2}
+\begin{paste}{ExLimitComplexInfiniteFull2}{ExLimitComplexInfiniteEmpty2}
+\pastebutton{ExLimitComplexInfiniteFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+   (2)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitComplexInfiniteEmpty2}
+\begin{paste}{ExLimitComplexInfiniteEmpty2}{ExLimitComplexInfinitePatch2}
+\pastebutton{ExLimitComplexInfiniteEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExLimitComplexInfinitePatch3}
+\begin{paste}{ExLimitComplexInfiniteFull3}{ExLimitComplexInfiniteEmpty3}
+\pastebutton{ExLimitComplexInfiniteFull3}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (3)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExLimitComplexInfiniteEmpty3}
+\begin{paste}{ExLimitComplexInfiniteEmpty3}{ExLimitComplexInfinitePatch3}
+\pastebutton{ExLimitComplexInfiniteEmpty3}{\showpaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\end{paste}\end{patch}
 
 @
 \section{exmatrix.ht}
@@ -6415,7 +16092,153 @@ that the matrix and vector have compatible dimensions.
 However, the dimensions of the matrices must be compatible in order for
 Axiom to perform an operation - otherwise an error message will occur.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExMatrixBasicFunctionPatch1}
+\begin{paste}{ExMatrixBasicFunctionFull1}{ExMatrixBasicFunctionEmpty1}
+\pastebutton{ExMatrixBasicFunctionFull1}{\hidepaste}
+\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  - 2   1 ¿
+   (1)  ³           ³
+        À4   2   - 4Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty1}
+\begin{paste}{ExMatrixBasicFunctionEmpty1}{ExMatrixBasicFunctionPatch1}
+\pastebutton{ExMatrixBasicFunctionEmpty1}{\showpaste}
+\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch2}
+\begin{paste}{ExMatrixBasicFunctionFull2}{ExMatrixBasicFunctionEmpty2}
+\pastebutton{ExMatrixBasicFunctionFull2}{\hidepaste}
+\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú1    0    2 ¿
+        ³            ³
+   (2)  ³20  30   10 ³
+        ³            ³
+        À0   200  100Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty2}
+\begin{paste}{ExMatrixBasicFunctionEmpty2}{ExMatrixBasicFunctionPatch2}
+\pastebutton{ExMatrixBasicFunctionEmpty2}{\showpaste}
+\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch3}
+\begin{paste}{ExMatrixBasicFunctionFull3}{ExMatrixBasicFunctionEmpty3}
+\pastebutton{ExMatrixBasicFunctionFull3}{\hidepaste}
+\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2  3¿
+   (3)  ³       ³
+        À2  4  6Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty3}
+\begin{paste}{ExMatrixBasicFunctionEmpty3}{ExMatrixBasicFunctionPatch3}
+\pastebutton{ExMatrixBasicFunctionEmpty3}{\showpaste}
+\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch4}
+\begin{paste}{ExMatrixBasicFunctionFull4}{ExMatrixBasicFunctionEmpty4}
+\pastebutton{ExMatrixBasicFunctionFull4}{\hidepaste}
+\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú2  0  4¿
+   (4)  ³       ³
+        À6  6  2Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty4}
+\begin{paste}{ExMatrixBasicFunctionEmpty4}{ExMatrixBasicFunctionPatch4}
+\pastebutton{ExMatrixBasicFunctionEmpty4}{\showpaste}
+\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch5}
+\begin{paste}{ExMatrixBasicFunctionFull5}{ExMatrixBasicFunctionEmpty5}
+\pastebutton{ExMatrixBasicFunctionFull5}{\hidepaste}
+\tab{5}\spadcommand{100 * m1\free{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú100  - 200   100 ¿
+   (5)  ³                 ³
+        À400   200   - 400Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty5}
+\begin{paste}{ExMatrixBasicFunctionEmpty5}{ExMatrixBasicFunctionPatch5}
+\pastebutton{ExMatrixBasicFunctionEmpty5}{\showpaste}
+\tab{5}\spadcommand{100 * m1\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch6}
+\begin{paste}{ExMatrixBasicFunctionFull6}{ExMatrixBasicFunctionEmpty6}
+\pastebutton{ExMatrixBasicFunctionFull6}{\hidepaste}
+\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú- 39   140    82  ¿
+   (6)  ³                  ³
+        À 44   - 740  - 372Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty6}
+\begin{paste}{ExMatrixBasicFunctionEmpty6}{ExMatrixBasicFunctionPatch6}
+\pastebutton{ExMatrixBasicFunctionEmpty6}{\showpaste}
+\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch7}
+\begin{paste}{ExMatrixBasicFunctionFull7}{ExMatrixBasicFunctionEmpty7}
+\pastebutton{ExMatrixBasicFunctionFull7}{\hidepaste}
+\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú40  662   321¿
+   (7)  ³             ³
+        À78  1318  648Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty7}
+\begin{paste}{ExMatrixBasicFunctionEmpty7}{ExMatrixBasicFunctionPatch7}
+\pastebutton{ExMatrixBasicFunctionEmpty7}{\showpaste}
+\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionPatch8}
+\begin{paste}{ExMatrixBasicFunctionFull8}{ExMatrixBasicFunctionEmpty8}
+\pastebutton{ExMatrixBasicFunctionFull8}{\hidepaste}
+\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [4,8]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExMatrixBasicFunctionEmpty8}
+\begin{paste}{ExMatrixBasicFunctionEmpty8}{ExMatrixBasicFunctionPatch8}
+\pastebutton{ExMatrixBasicFunctionEmpty8}{\showpaste}
+\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
+\end{paste}
+\end{patch}
 
 @
 \pagehead{ExConstructMatrix}{exmatrix.ht}{Constructing new Matrices}
@@ -6457,7 +16280,132 @@ matrix i\spad{b}.
 changes the submatrix of \spad{b} consisting of the first 3 rows and columns
 to its transpose.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExConstructMatrixPatch1}
+\begin{paste}{ExConstructMatrixFull1}{ExConstructMatrixEmpty1}
+\pastebutton{ExConstructMatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
+\indentrel{3}\begin{verbatim}
+        Ú1  0  0  0  0¿
+        ³             ³
+        ³0  2  0  0  0³
+        ³             ³
+   (1)  ³0  0  3  0  0³
+        ³             ³
+        ³0  0  0  2  0³
+        ³             ³
+        À0  0  0  0  1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty1}
+\begin{paste}{ExConstructMatrixEmpty1}{ExConstructMatrixPatch1}
+\pastebutton{ExConstructMatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
+\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixPatch2}
+\begin{paste}{ExConstructMatrixFull2}{ExConstructMatrixEmpty2}
+\pastebutton{ExConstructMatrixFull2}{\hidepaste}
+\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
+\indentrel{3}\begin{verbatim}
+        Ú1   2   3 ¿
+        ³          ³
+   (2)  ³6   7   8 ³
+        ³          ³
+        À11  12  13Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty2}
+\begin{paste}{ExConstructMatrixEmpty2}{ExConstructMatrixPatch2}
+\pastebutton{ExConstructMatrixEmpty2}{\showpaste}
+\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixPatch3}
+\begin{paste}{ExConstructMatrixFull3}{ExConstructMatrixEmpty3}
+\pastebutton{ExConstructMatrixFull3}{\hidepaste}
+\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\indentrel{3}\begin{verbatim}
+        Ú1  2  3  11  12  13¿
+   (3)  ³                   ³
+        À6  7  8  55  77  88Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty3}
+\begin{paste}{ExConstructMatrixEmpty3}{ExConstructMatrixPatch3}
+\pastebutton{ExConstructMatrixEmpty3}{\showpaste}
+\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixPatch4}
+\begin{paste}{ExConstructMatrixFull4}{ExConstructMatrixEmpty4}
+\pastebutton{ExConstructMatrixFull4}{\hidepaste}
+\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\indentrel{3}\begin{verbatim}
+        Ú1   2   3 ¿
+        ³          ³
+        ³6   7   8 ³
+   (4)  ³          ³
+        ³11  12  13³
+        ³          ³
+        À55  77  88Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty4}
+\begin{paste}{ExConstructMatrixEmpty4}{ExConstructMatrixPatch4}
+\pastebutton{ExConstructMatrixEmpty4}{\showpaste}
+\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
+\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixPatch5}
+\begin{paste}{ExConstructMatrixFull5}{ExConstructMatrixEmpty5}
+\pastebutton{ExConstructMatrixFull5}{\hidepaste}
+\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
+\indentrel{3}\begin{verbatim}
+        Ú0   1   2   3   4 ¿
+        ³                  ³
+   (5)  ³5   6   7   8   9 ³
+        ³                  ³
+        À10  11  12  13  14Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty5}
+\begin{paste}{ExConstructMatrixEmpty5}{ExConstructMatrixPatch5}
+\pastebutton{ExConstructMatrixEmpty5}{\showpaste}
+\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixPatch6}
+\begin{paste}{ExConstructMatrixFull6}{ExConstructMatrixEmpty6}
+\pastebutton{ExConstructMatrixFull6}{\hidepaste}
+\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
+\indentrel{3}\begin{verbatim}
+        Ú0  5  10  3   4 ¿
+        ³                ³
+   (6)  ³1  6  11  8   9 ³
+        ³                ³
+        À2  7  12  13  14Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExConstructMatrixEmpty6}
+\begin{paste}{ExConstructMatrixEmpty6}{ExConstructMatrixPatch6}
+\pastebutton{ExConstructMatrixEmpty6}{\showpaste}
+\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExTraceMatrix}{exmatrix.ht}{Trace of a Matrix}
@@ -6471,7 +16419,25 @@ For example `trace' for a four by four Vandermonde matrix.
 \spadpaste{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],
 [1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExTraceMatrixPatch1}
+\begin{paste}{ExTraceMatrixFull1}{ExTraceMatrixEmpty1}
+\pastebutton{ExTraceMatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
+\indentrel{3}\begin{verbatim}
+         2        3
+   (1)  z  + y + u  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExTraceMatrixEmpty1}
+\begin{paste}{ExTraceMatrixEmpty1}{ExTraceMatrixPatch1}
+\pastebutton{ExTraceMatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExDeterminantMatrix}{exmatrix.ht}{Determinant of a Matrix}
@@ -6483,7 +16449,25 @@ over a commutative ring, that is a ring whose multiplication is
 commutative.
 \spadpaste{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExDeterminantMatrixPatch1}
+\begin{paste}{ExDeterminantMatrixFull1}{ExDeterminantMatrixEmpty1}
+\pastebutton{ExDeterminantMatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
+\indentrel{3}\begin{verbatim}
+   (1)  - 48
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExDeterminantMatrixEmpty1}
+\begin{paste}{ExDeterminantMatrixEmpty1}{ExDeterminantMatrixPatch1}
+\pastebutton{ExDeterminantMatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
+\end{paste}
+\end{patch}
 
 @
 \pagehead{ExInverseMatrix}{exmatrix.ht}{Inverse of a Matrix}
@@ -6494,7 +16478,32 @@ The function \spadfun{inverse} computes the inverse of a square matrix.
 \spadpaste{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]])) }
 (If the inverse doesn't exist, then Axiom returns `failed'.)
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExInverseMatrixPatch1}
+\begin{paste}{ExInverseMatrixFull1}{ExInverseMatrixEmpty1}
+\pastebutton{ExInverseMatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
+\indentrel{3}\begin{verbatim}
+        Ú  2        5 ¿
+        ³- Ä  - 1   Ä ³
+        ³  7        7 ³
+        ³             ³
+   (1)  ³ 8          6³
+        ³ Ä    1   - Ä³
+        ³ 7          7³
+        ³             ³
+        À- 1  - 1   1 Ù
+               Type: Union(Matrix Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExInverseMatrixEmpty1}
+\begin{paste}{ExInverseMatrixEmpty1}{ExInverseMatrixPatch1}
+\pastebutton{ExInverseMatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExRankMatrix}{exmatrix.ht}{Rank of a Matrix}
@@ -6504,7 +16513,24 @@ The function \spadfun{inverse} computes the inverse of a square matrix.
 The function \spadfun{rank} gives you the rank of a matrix:
 \spadpaste{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExRankMatrixPatch1}
+\begin{paste}{ExRankMatrixFull1}{ExRankMatrixEmpty1}
+\pastebutton{ExRankMatrixFull1}{\hidepaste}
+\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
+\indentrel{3}\begin{verbatim}
+   (1)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExRankMatrixEmpty1}
+\begin{paste}{ExRankMatrixEmpty1}{ExRankMatrixPatch1}
+\pastebutton{ExRankMatrixEmpty1}{\showpaste}
+\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
+\end{paste}\end{patch}
 
 @
 \section{expr.ht}
@@ -6719,6 +16745,429 @@ rewrite rules for expressions.
 \autobuttons
 \end{page}
 
+\begin{patch}{ExpressionXmpPagePatch1}
+\begin{paste}{ExpressionXmpPageFull1}{ExpressionXmpPageEmpty1}
+\pastebutton{ExpressionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{sin(x) + 3*cos(x)**2}
+\indentrel{3}\begin{verbatim}
+                        2
+   (1)  sin(x) + 3cos(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty1}
+\begin{paste}{ExpressionXmpPageEmpty1}{ExpressionXmpPagePatch1}
+\pastebutton{ExpressionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{sin(x) + 3*cos(x)**2}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch2}
+\begin{paste}{ExpressionXmpPageFull2}{ExpressionXmpPageEmpty2}
+\pastebutton{ExpressionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{tan(x) - 3.45*x}
+\indentrel{3}\begin{verbatim}
+   (2)  tan(x) - 3.45 x
+                                 Type: Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty2}
+\begin{paste}{ExpressionXmpPageEmpty2}{ExpressionXmpPagePatch2}
+\pastebutton{ExpressionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{tan(x) - 3.45*x}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch3}
+\begin{paste}{ExpressionXmpPageFull3}{ExpressionXmpPageEmpty3}
+\pastebutton{ExpressionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))}
+\indentrel{3}\begin{verbatim}
+   (3)
+          ÚÄ¿ 2         ÚÄÄ¿      ÚÄ¿         ÚÄÄ¿ 2
+   - tan(\³7 )  + 2sin(\³11 )tan(\³7 ) - sin(\³11 )
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                     cos(y - x) - 4
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty3}
+\begin{paste}{ExpressionXmpPageEmpty3}{ExpressionXmpPagePatch3}
+\pastebutton{ExpressionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch4}
+\begin{paste}{ExpressionXmpPageFull4}{ExpressionXmpPageEmpty4}
+\pastebutton{ExpressionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{log(exp x)@Expression(Integer)}
+\indentrel{3}\begin{verbatim}
+   (4)  x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty4}
+\begin{paste}{ExpressionXmpPageEmpty4}{ExpressionXmpPagePatch4}
+\pastebutton{ExpressionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{log(exp x)@Expression(Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch5}
+\begin{paste}{ExpressionXmpPageFull5}{ExpressionXmpPageEmpty5}
+\pastebutton{ExpressionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{log(exp x)@Expression(Complex Integer)}
+\indentrel{3}\begin{verbatim}
+              x
+   (5)  log(%e )
+                       Type: Expression Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty5}
+\begin{paste}{ExpressionXmpPageEmpty5}{ExpressionXmpPagePatch5}
+\pastebutton{ExpressionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{log(exp x)@Expression(Complex Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch6}
+\begin{paste}{ExpressionXmpPageFull6}{ExpressionXmpPageEmpty6}
+\pastebutton{ExpressionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{sqrt 3 + sqrt(2 + sqrt(-5))\bound{algnum1 }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄÄÄÄÄ¿
+         ³ ÚÄÄÄ¿         ÚÄ¿
+   (6)  \³\³- 5  + 2  + \³3
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty6}
+\begin{paste}{ExpressionXmpPageEmpty6}{ExpressionXmpPagePatch6}
+\pastebutton{ExpressionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{sqrt 3 + sqrt(2 + sqrt(-5))\bound{algnum1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch7}
+\begin{paste}{ExpressionXmpPageFull7}{ExpressionXmpPageEmpty7}
+\pastebutton{ExpressionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{\% :: Expression Integer\free{algnum1 }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄÄÄÄÄ¿
+         ³ ÚÄÄÄ¿         ÚÄ¿
+   (7)  \³\³- 5  + 2  + \³3
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty7}
+\begin{paste}{ExpressionXmpPageEmpty7}{ExpressionXmpPagePatch7}
+\pastebutton{ExpressionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{\% :: Expression Integer\free{algnum1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch8}
+\begin{paste}{ExpressionXmpPageFull8}{ExpressionXmpPageEmpty8}
+\pastebutton{ExpressionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{height mainKernel sin(x + 4)}
+\indentrel{3}\begin{verbatim}
+   (8)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty8}
+\begin{paste}{ExpressionXmpPageEmpty8}{ExpressionXmpPagePatch8}
+\pastebutton{ExpressionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{height mainKernel sin(x + 4)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch9}
+\begin{paste}{ExpressionXmpPageFull9}{ExpressionXmpPageEmpty9}
+\pastebutton{ExpressionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) )\bound{e }}
+\indentrel{3}\begin{verbatim}
+                2
+        - sin(x)  + 8sin(x) - 16
+   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 ÚÄÄÄ¿
+              2y\³- y  - 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty9}
+\begin{paste}{ExpressionXmpPageEmpty9}{ExpressionXmpPagePatch9}
+\pastebutton{ExpressionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) )\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch10}
+\begin{paste}{ExpressionXmpPageFull10}{ExpressionXmpPageEmpty10}
+\pastebutton{ExpressionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{numer e\free{e }}
+\indentrel{3}\begin{verbatim}
+                 2
+   (10)  - sin(x)  + 8sin(x) - 16
+Type: SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty10}
+\begin{paste}{ExpressionXmpPageEmpty10}{ExpressionXmpPagePatch10}
+\pastebutton{ExpressionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{numer e\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch11}
+\begin{paste}{ExpressionXmpPageFull11}{ExpressionXmpPageEmpty11}
+\pastebutton{ExpressionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{denom e\free{e }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄ¿
+   (11)  2y\³- y  - 1
+Type: SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty11}
+\begin{paste}{ExpressionXmpPageEmpty11}{ExpressionXmpPagePatch11}
+\pastebutton{ExpressionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{denom e\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch12}
+\begin{paste}{ExpressionXmpPageFull12}{ExpressionXmpPageEmpty12}
+\pastebutton{ExpressionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{D(e, x)\free{e }}
+\indentrel{3}\begin{verbatim}
+   (12)
+                                      ÚÄÄÄ¿
+       (4y cos(x)sin(x) - 16y cos(x))\³- y
+     + 
+       - 2cos(x)sin(x) + 8cos(x)
+  /
+        ÚÄÄÄ¿     3
+     4y\³- y  + 4y  - 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty12}
+\begin{paste}{ExpressionXmpPageEmpty12}{ExpressionXmpPagePatch12}
+\pastebutton{ExpressionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{D(e, x)\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch13}
+\begin{paste}{ExpressionXmpPageFull13}{ExpressionXmpPageEmpty13}
+\pastebutton{ExpressionXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{D(e, [x, y], [1, 2])\free{e }}
+\indentrel{3}\begin{verbatim}
+   (13)
+                   7       4
+           (- 2304y  + 960y )cos(x)sin(x)
+         + 
+                 7        4
+           (9216y  - 3840y )cos(x)
+      *
+          ÚÄÄÄ¿
+         \³- y
+     + 
+              9        6       3
+       (- 960y  + 2160y  - 180y  - 3)cos(x)sin(x)
+     + 
+             9        6       3
+       (3840y  - 8640y  + 720y  + 12)cos(x)
+  /
+            12        9        6       3      ÚÄÄÄ¿
+       (256y   - 1792y  + 1120y  - 112y  + 1)\³- y
+     + 
+              11        8       5      2
+       - 1024y   + 1792y  - 448y  + 16y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty13}
+\begin{paste}{ExpressionXmpPageEmpty13}{ExpressionXmpPagePatch13}
+\pastebutton{ExpressionXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{D(e, [x, y], [1, 2])\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch14}
+\begin{paste}{ExpressionXmpPageFull14}{ExpressionXmpPageEmpty14}
+\pastebutton{ExpressionXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{complexNumeric(cos(2 - 3*\%i))}
+\indentrel{3}\begin{verbatim}
+   (14)
+   - 4.1896256909 688072301 + 9.1092278937 55336598 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty14}
+\begin{paste}{ExpressionXmpPageEmpty14}{ExpressionXmpPagePatch14}
+\pastebutton{ExpressionXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{complexNumeric(cos(2 - 3*\%i))}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch15}
+\begin{paste}{ExpressionXmpPageFull15}{ExpressionXmpPageEmpty15}
+\pastebutton{ExpressionXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{numeric(tan 3.8)}
+\indentrel{3}\begin{verbatim}
+   (15)  0.7735560905 0312607286
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty15}
+\begin{paste}{ExpressionXmpPageEmpty15}{ExpressionXmpPagePatch15}
+\pastebutton{ExpressionXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{numeric(tan 3.8)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch16}
+\begin{paste}{ExpressionXmpPageFull16}{ExpressionXmpPageEmpty16}
+\pastebutton{ExpressionXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{e2 := cos(x**2 - y + 3)\bound{e2 }}
+\indentrel{3}\begin{verbatim}
+                  2
+   (16)  cos(y - x  - 3)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty16}
+\begin{paste}{ExpressionXmpPageEmpty16}{ExpressionXmpPagePatch16}
+\pastebutton{ExpressionXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{e2 := cos(x**2 - y + 3)\bound{e2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch17}
+\begin{paste}{ExpressionXmpPageFull17}{ExpressionXmpPageEmpty17}
+\pastebutton{ExpressionXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{e3 := asin(e2) - \%pi/2\free{e2 }\bound{e3 }}
+\indentrel{3}\begin{verbatim}
+                2
+   (17)  - y + x  + 3
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty17}
+\begin{paste}{ExpressionXmpPageEmpty17}{ExpressionXmpPagePatch17}
+\pastebutton{ExpressionXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{e3 := asin(e2) - \%pi/2\free{e2 }\bound{e3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch18}
+\begin{paste}{ExpressionXmpPageFull18}{ExpressionXmpPageEmpty18}
+\pastebutton{ExpressionXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{e3 :: Polynomial Integer\free{e3 }}
+\indentrel{3}\begin{verbatim}
+                2
+   (18)  - y + x  + 3
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty18}
+\begin{paste}{ExpressionXmpPageEmpty18}{ExpressionXmpPagePatch18}
+\pastebutton{ExpressionXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{e3 :: Polynomial Integer\free{e3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch19}
+\begin{paste}{ExpressionXmpPageFull19}{ExpressionXmpPageEmpty19}
+\pastebutton{ExpressionXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{e3 :: DMP([x, y], Integer)\free{e3 }}
+\indentrel{3}\begin{verbatim}
+          2
+   (19)  x  - y + 3
+ Type: DistributedMultivariatePolynomial([x,y],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty19}
+\begin{paste}{ExpressionXmpPageEmpty19}{ExpressionXmpPagePatch19}
+\pastebutton{ExpressionXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{e3 :: DMP([x, y], Integer)\free{e3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch20}
+\begin{paste}{ExpressionXmpPageFull20}{ExpressionXmpPageEmpty20}
+\pastebutton{ExpressionXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{sin \%pi}
+\indentrel{3}\begin{verbatim}
+   (20)  0
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty20}
+\begin{paste}{ExpressionXmpPageEmpty20}{ExpressionXmpPagePatch20}
+\pastebutton{ExpressionXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{sin \%pi}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch21}
+\begin{paste}{ExpressionXmpPageFull21}{ExpressionXmpPageEmpty21}
+\pastebutton{ExpressionXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{cos(\%pi / 4)}
+\indentrel{3}\begin{verbatim}
+          ÚÄ¿
+         \³2
+   (21)  ÄÄÄÄ
+           2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty21}
+\begin{paste}{ExpressionXmpPageEmpty21}{ExpressionXmpPagePatch21}
+\pastebutton{ExpressionXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{cos(\%pi / 4)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch22}
+\begin{paste}{ExpressionXmpPageFull22}{ExpressionXmpPageEmpty22}
+\pastebutton{ExpressionXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1\bound{tan6 }}
+\indentrel{3}\begin{verbatim}
+               6          4          2
+   (22)  tan(x)  + 3tan(x)  + 3tan(x)  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty22}
+\begin{paste}{ExpressionXmpPageEmpty22}{ExpressionXmpPagePatch22}
+\pastebutton{ExpressionXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1\bound{tan6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPagePatch23}
+\begin{paste}{ExpressionXmpPageFull23}{ExpressionXmpPageEmpty23}
+\pastebutton{ExpressionXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{simplify \%\free{tan6 }}
+\indentrel{3}\begin{verbatim}
+            1
+   (23)  ÄÄÄÄÄÄÄ
+               6
+         cos(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExpressionXmpPageEmpty23}
+\begin{paste}{ExpressionXmpPageEmpty23}{ExpressionXmpPagePatch23}
+\pastebutton{ExpressionXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{simplify \%\free{tan6 }}
+\end{paste}\end{patch}
+
 @
 \section{explot2d.ht}
 \pagehead{ExPlot2DFunctions}{explot2d.ht}{Plotting Functions of One Variable}
@@ -6729,7 +17178,21 @@ To plot a function {\em y = f(x)}, you need only specify the function and the
 interval on which it is to be plotted.
 \graphpaste{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExPlot2DFunctionsPatch1}
+\begin{paste}{ExPlot2DFunctionsFull1}{ExPlot2DFunctionsEmpty1}
+\pastebutton{ExPlot2DFunctionsFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dfunctions1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dfunctions1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot2DFunctionsEmpty1}
+\begin{paste}{ExPlot2DFunctionsEmpty1}{ExPlot2DFunctionsPatch1}
+\pastebutton{ExPlot2DFunctionsEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExPlot2DParametric}{explot2d.ht}{Plotting Parametric Curves}
@@ -6743,7 +17206,22 @@ as arguments of the function `curve', then give
 the interval over which {\em t} is to range.
 \graphpaste{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExPlot2DParametricPatch1}
+\begin{paste}{ExPlot2DParametricFull1}{ExPlot2DParametricEmpty1}
+\pastebutton{ExPlot2DParametricFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dparametric1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dparametric1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot2DParametricEmpty1}
+\begin{paste}{ExPlot2DParametricEmpty1}{ExPlot2DParametricPatch1}
+\pastebutton{ExPlot2DParametricEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
+\end{paste}
+\end{patch}
 
 @
 \pagehead{ExPlot2DPolar}{explot2d.ht}{Plotting Using Polar Coordinates}
@@ -6757,7 +17235,21 @@ call the function 'draw' and specify the function {\em f(theta)} and the
 interval over which {\em theta} is to range.
 \graphpaste{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExPlot2DPolarPatch1}
+\begin{paste}{ExPlot2DPolarFull1}{ExPlot2DPolarEmpty1}
+\pastebutton{ExPlot2DPolarFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dpolar1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dpolar1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot2DPolarEmpty1}
+\begin{paste}{ExPlot2DPolarEmpty1}{ExPlot2DPolarPatch1}
+\pastebutton{ExPlot2DPolarEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExPlot2DAlgebraic}{explot2d.ht}{Plotting Plane Algebraic Curves}
@@ -6771,7 +17263,21 @@ Here's an example:
 \graphpaste{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
 Here the region of the sketch is {\em -2 <= x <= 2, -2 <= y <= 1}.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExPlot2DAlgebraicPatch1}
+\begin{paste}{ExPlot2DAlgebraicFull1}{ExPlot2DAlgebraicEmpty1}
+\pastebutton{ExPlot2DAlgebraicFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dalgebraic1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dalgebraic1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot2DAlgebraicEmpty1}
+\begin{paste}{ExPlot2DAlgebraicEmpty1}{ExPlot2DAlgebraicPatch1}
+\pastebutton{ExPlot2DAlgebraicEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
+\end{paste}\end{patch}
 
 @
 \section{explot3d.ht}
@@ -6785,8 +17291,23 @@ For example, here's how you plot the function {\em z = cos(x*y)} as the
 variables {\em x} and {\em y} both range between -3 and 3:
 \graphpaste{draw(cos(x*y),x = -3..3,y = -3..3)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
  
+\begin{patch}{ExPlot3DFunctionsPatch1}
+\begin{paste}{ExPlot3DFunctionsFull1}{ExPlot3DFunctionsEmpty1}
+\pastebutton{ExPlot3DFunctionsFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dfunctions1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dfunctions1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DFunctionsEmpty1}
+\begin{paste}{ExPlot3DFunctionsEmpty1}{ExPlot3DFunctionsPatch1}
+\pastebutton{ExPlot3DFunctionsEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
+\end{paste}
+\end{patch}
+
 @
 \pagehead{ExPlot3DParametricSurface}{explot3d.ht}
 {Plotting Parametric Surfaces}
@@ -6805,8 +17326,35 @@ u=0..\%pi,v=0..2*\%pi)}
 Here's a cone:
 \graphpaste{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
  
+\begin{patch}{ExPlot3DParametricSurfacePatch1}
+\begin{paste}{ExPlot3DParametricSurfaceFull1}{ExPlot3DParametricSurfaceEmpty1}
+\pastebutton{ExPlot3DParametricSurfaceFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametricsurface1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametricsurface1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricSurfaceEmpty1}
+\begin{paste}{ExPlot3DParametricSurfaceEmpty1}{ExPlot3DParametricSurfacePatch1}
+\pastebutton{ExPlot3DParametricSurfaceEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricSurfacePatch2}
+\begin{paste}{ExPlot3DParametricSurfaceFull2}{ExPlot3DParametricSurfaceEmpty2}
+\pastebutton{ExPlot3DParametricSurfaceFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametricsurface2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametricsurface2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricSurfaceEmpty2}
+\begin{paste}{ExPlot3DParametricSurfaceEmpty2}{ExPlot3DParametricSurfacePatch2}
+\pastebutton{ExPlot3DParametricSurfaceEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ExPlot3DParametricCurve}{explot3d.ht}{Plotting Parametric Curves}
 <<explot3d.ht>>=
@@ -6822,7 +17370,35 @@ Here is a spiral:
 Here is the {\em twisted cubic curve}:
 \graphpaste{draw(curve(t,t**2,t**3),t=-3..3)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExPlot3DParametricCurvePatch1}
+\begin{paste}{ExPlot3DParametricCurveFull1}{ExPlot3DParametricCurveEmpty1}
+\pastebutton{ExPlot3DParametricCurveFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametriccurve1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametriccurve1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricCurveEmpty1}
+\begin{paste}{ExPlot3DParametricCurveEmpty1}{ExPlot3DParametricCurvePatch1}
+\pastebutton{ExPlot3DParametricCurveEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricCurvePatch2}
+\begin{paste}{ExPlot3DParametricCurveFull2}{ExPlot3DParametricCurveEmpty2}
+\pastebutton{ExPlot3DParametricCurveFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametriccurve2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametriccurve2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ExPlot3DParametricCurveEmpty2}
+\begin{paste}{ExPlot3DParametricCurveEmpty2}{ExPlot3DParametricCurvePatch2}
+\pastebutton{ExPlot3DParametricCurveEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
+\end{paste}
+\end{patch}
 
 @
 \section{expose.ht}
@@ -6972,8 +17548,83 @@ You can have {\em sin(a*x)} expanded in powers of {\em (a - \%pi/4)} by
 issuing the following command:
 \spadpaste{series(sin(a*x),a = \%pi/4)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
  
+\begin{patch}{ExSeriesConvertPatch1}
+\begin{paste}{ExSeriesConvertFull1}{ExSeriesConvertEmpty1}
+\pastebutton{ExSeriesConvertFull1}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)
+            3        5        7          9
+           a   3    a   5    a    7     a     9
+     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+            6      120      5040      362880
+   + 
+           11
+          a      11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesConvertEmpty1}
+\begin{paste}{ExSeriesConvertEmpty1}{ExSeriesConvertPatch1}
+\pastebutton{ExSeriesConvertEmpty1}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesConvertPatch2}
+\begin{paste}{ExSeriesConvertFull2}{ExSeriesConvertEmpty2}
+\pastebutton{ExSeriesConvertFull2}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
+\indentrel{3}\begin{verbatim}
+   (2)
+         %pi x          %pi x      %pi
+     sin(ÄÄÄÄÄ) + x cos(ÄÄÄÄÄ)(a - ÄÄÄ)
+           4              4         4
+   + 
+        2    %pi x                3    %pi x
+       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+               4         %pi 2           4         %pi 3
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+             2            4            6            4
+   + 
+      4    %pi x                5    %pi x
+     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+             4         %pi 4           4         %pi 5
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+          24            4           120           4
+   + 
+        6    %pi x                7    %pi x
+       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+               4         %pi 6           4         %pi 7
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+            720           4          5040           4
+   + 
+      8    %pi x                9    %pi x
+     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
+             4         %pi 8           4         %pi 9
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
+         40320          4         362880          4
+   + 
+        10    %pi x
+       x  sin(ÄÄÄÄÄ)
+                4         %pi 10          %pi 11
+     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)   + O((a - ÄÄÄ)  )
+          3628800          4               4
+Type: UnivariatePuiseuxSeries(Expression Integer,a,pi/4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesConvertEmpty2}
+\begin{paste}{ExSeriesConvertEmpty2}{ExSeriesConvertPatch2}
+\pastebutton{ExSeriesConvertEmpty2}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ExSeriesManipulate}{exseries.ht}{Manipulating Power Series}
 <<exseries.ht>>=
@@ -6987,8 +17638,52 @@ Now compute the square of that series:
 \spadpaste{f ** 2 \free{f}}
 It's as easy as 1, 2, 3,...
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
  
+\begin{patch}{ExSeriesManipulatePatch1}
+\begin{paste}{ExSeriesManipulateFull1}{ExSeriesManipulateEmpty1}
+\pastebutton{ExSeriesManipulateFull1}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (1)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesManipulateEmpty1}
+\begin{paste}{ExSeriesManipulateEmpty1}{ExSeriesManipulatePatch1}
+\pastebutton{ExSeriesManipulateEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesManipulatePatch2}
+\begin{paste}{ExSeriesManipulateFull2}{ExSeriesManipulateEmpty2}
+\pastebutton{ExSeriesManipulateFull2}{\hidepaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\indentrel{3}\begin{verbatim}
+   (2)
+                2     3     4     5     6     7     8
+     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
+   + 
+        9      10      11
+     10x  + 11x   + O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesManipulateEmpty2}
+\begin{paste}{ExSeriesManipulateEmpty2}{ExSeriesManipulatePatch2}
+\pastebutton{ExSeriesManipulateEmpty2}{\showpaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\end{paste}
+\end{patch}
+
 @
 \pagehead{ExSeriesFunctions}{exseries.ht}{Functions on Power Series}
 <<exseries.ht>>=
@@ -7005,8 +17700,74 @@ and then apply these functions to the series:
 \spadpaste{g := log(f) \free{f1} \bound{g}}
 \spadpaste{exp(g) \free{g}}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
  
+\begin{patch}{ExSeriesFunctionsPatch1}
+\begin{paste}{ExSeriesFunctionsFull1}{ExSeriesFunctionsEmpty1}
+\pastebutton{ExSeriesFunctionsFull1}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesFunctionsEmpty1}
+\begin{paste}{ExSeriesFunctionsEmpty1}{ExSeriesFunctionsPatch1}
+\pastebutton{ExSeriesFunctionsEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesFunctionsPatch2}
+\begin{paste}{ExSeriesFunctionsFull2}{ExSeriesFunctionsEmpty2}
+\pastebutton{ExSeriesFunctionsFull2}{\hidepaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (2)
+         1  2   1  3   1  4   1  5   1  6   1  7   1  8
+     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
+         2      3      4      5      6      7      8
+   + 
+     1  9    1  10    1  11      12
+     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
+     9      10       11
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesFunctionsEmpty2}
+\begin{paste}{ExSeriesFunctionsEmpty2}{ExSeriesFunctionsPatch2}
+\pastebutton{ExSeriesFunctionsEmpty2}{\showpaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesFunctionsPatch3}
+\begin{paste}{ExSeriesFunctionsFull3}{ExSeriesFunctionsEmpty3}
+\pastebutton{ExSeriesFunctionsFull3}{\hidepaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (3)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesFunctionsEmpty3}
+\begin{paste}{ExSeriesFunctionsEmpty3}{ExSeriesFunctionsPatch3}
+\pastebutton{ExSeriesFunctionsEmpty3}{\showpaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ExSeriesSubstitution}{exseries.ht}
 {Substituting Numerical Values in Power Series}
@@ -7024,7 +17785,51 @@ Now you evaluate the series at the value {\em 1.0}:
 \spadpaste{eval(f,1.0) \free{f2}}
 You get a sequence of partial sums.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSeriesSubstitutionPatch1}
+\begin{paste}{ExSeriesSubstitutionFull1}{ExSeriesSubstitutionEmpty1}
+\pastebutton{ExSeriesSubstitutionFull1}{\hidepaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+             1  2   1  3    1  4    1   5    1   6
+     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
+   5040      40320      362880      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesSubstitutionEmpty1}
+\begin{paste}{ExSeriesSubstitutionEmpty1}{ExSeriesSubstitutionPatch1}
+\pastebutton{ExSeriesSubstitutionEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesSubstitutionPatch2}
+\begin{paste}{ExSeriesSubstitutionFull2}{ExSeriesSubstitutionEmpty2}
+\pastebutton{ExSeriesSubstitutionFull2}{\hidepaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (2)
+   [1.0, 2.0, 2.5, 2.6666666666 666666667,
+    2.7083333333 333333333, 2.7166666666 666666667,
+    2.7180555555 555555556, 2.7182539682 53968254,
+    2.7182787698 412698413, 2.7182815255 731922399, ...]
+                          Type: Stream Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSeriesSubstitutionEmpty2}
+\begin{paste}{ExSeriesSubstitutionEmpty2}{ExSeriesSubstitutionPatch2}
+\pastebutton{ExSeriesSubstitutionEmpty2}{\showpaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\end{paste}\end{patch}
 
 @
 \section{exsum.ht}
@@ -7040,7 +17845,40 @@ To sum the entries of a list, simply put {\em +/} in front of the list.
 For example, the following command will sum the integers from 1 to 15:
 \spadpaste{reduce(+,[i for i in 1..15])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumListEntriesIPatch1}
+\begin{paste}{ExSumListEntriesIFull1}{ExSumListEntriesIEmpty1}
+\pastebutton{ExSumListEntriesIFull1}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1..15]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIEmpty1}
+\begin{paste}{ExSumListEntriesIEmpty1}{ExSumListEntriesIPatch1}
+\pastebutton{ExSumListEntriesIEmpty1}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1..15]}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIPatch2}
+\begin{paste}{ExSumListEntriesIFull2}{ExSumListEntriesIEmpty2}
+\pastebutton{ExSumListEntriesIFull2}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
+\indentrel{3}\begin{verbatim}
+   (2)  120
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIEmpty2}
+\begin{paste}{ExSumListEntriesIEmpty2}{ExSumListEntriesIPatch2}
+\pastebutton{ExSumListEntriesIEmpty2}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumListEntriesII}{exsum.ht}{Summing the Entries of a List II}
@@ -7055,7 +17893,42 @@ the integers between {\em 5} and {\em 20}:
 You can also compute the sum of the entries of this list:
 \spadpaste{reduce(+,[n**2 for n in 5..20])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumListEntriesIIPatch1}
+\begin{paste}{ExSumListEntriesIIFull1}{ExSumListEntriesIIEmpty1}
+\pastebutton{ExSumListEntriesIIFull1}{\hidepaste}
+\tab{5}\spadcommand{[n**2 for n in 5..20]}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
+    256, 289, 324, 361, 400]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIIEmpty1}
+\begin{paste}{ExSumListEntriesIIEmpty1}{ExSumListEntriesIIPatch1}
+\pastebutton{ExSumListEntriesIIEmpty1}{\showpaste}
+\tab{5}\spadcommand{[n**2 for n in 5..20]}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIIPatch2}
+\begin{paste}{ExSumListEntriesIIFull2}{ExSumListEntriesIIEmpty2}
+\pastebutton{ExSumListEntriesIIFull2}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
+\indentrel{3}\begin{verbatim}
+   (2)  2840
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumListEntriesIIEmpty2}
+\begin{paste}{ExSumListEntriesIIEmpty2}{ExSumListEntriesIIPatch2}
+\pastebutton{ExSumListEntriesIIEmpty2}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumApproximateE}{exsum.ht}{Approximating $e$}
@@ -7066,7 +17939,24 @@ You can obtain a numerical approximation of the number {\em e} by summing the
 entries of the following list:
 \spadpaste{reduce(+,[1.0/factorial(n) for n in 0..20])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumApproximateEPatch1}
+\begin{paste}{ExSumApproximateEFull1}{ExSumApproximateEEmpty1}
+\pastebutton{ExSumApproximateEFull1}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
+\indentrel{3}\begin{verbatim}
+   (1)  2.7182818284 590452354
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumApproximateEEmpty1}
+\begin{paste}{ExSumApproximateEEmpty1}{ExSumApproximateEPatch1}
+\pastebutton{ExSumApproximateEEmpty1}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumClosedForm}{exsum.ht}{Closed Form Summations}
@@ -7088,7 +17978,59 @@ for {\em a} and {\em b} in our formula:
 \spadpaste{eval(s,[a,b],[1,25]) \free{s}}
 \spadpaste{reduce(+,[i**2 for i in 1..25])}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumClosedFormPatch1}
+\begin{paste}{ExSumClosedFormFull1}{ExSumClosedFormEmpty1}
+\pastebutton{ExSumClosedFormFull1}{\hidepaste}
+\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
+\indentrel{3}\begin{verbatim}
+          3     2         3     2
+        2b  + 3b  + b - 2a  + 3a  - a
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                      6
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumClosedFormEmpty1}
+\begin{paste}{ExSumClosedFormEmpty1}{ExSumClosedFormPatch1}
+\pastebutton{ExSumClosedFormEmpty1}{\showpaste}
+\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSumClosedFormPatch2}
+\begin{paste}{ExSumClosedFormFull2}{ExSumClosedFormEmpty2}
+\pastebutton{ExSumClosedFormFull2}{\hidepaste}
+\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
+\indentrel{3}\begin{verbatim}
+   (2)  5525
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumClosedFormEmpty2}
+\begin{paste}{ExSumClosedFormEmpty2}{ExSumClosedFormPatch2}
+\pastebutton{ExSumClosedFormEmpty2}{\showpaste}
+\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSumClosedFormPatch3}
+\begin{paste}{ExSumClosedFormFull3}{ExSumClosedFormEmpty3}
+\pastebutton{ExSumClosedFormFull3}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
+\indentrel{3}\begin{verbatim}
+   (3)  5525
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumClosedFormEmpty3}
+\begin{paste}{ExSumClosedFormEmpty3}{ExSumClosedFormPatch3}
+\pastebutton{ExSumClosedFormEmpty3}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumCubes}{exsum.ht}{Sums of Cubes}
@@ -7102,7 +18044,46 @@ Then compute the square of the sum of the integers from {\em 1} to {\em n}:
 \spadpaste{sum(k,k = 1..n) ** 2}
 The answers are the same.
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumCubesPatch1}
+\begin{paste}{ExSumCubesFull1}{ExSumCubesEmpty1}
+\pastebutton{ExSumCubesFull1}{\hidepaste}
+\tab{5}\spadcommand{sum(k**3,k = 1..n)}
+\indentrel{3}\begin{verbatim}
+         4     3    2
+        n  + 2n  + n
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              4
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumCubesEmpty1}
+\begin{paste}{ExSumCubesEmpty1}{ExSumCubesPatch1}
+\pastebutton{ExSumCubesEmpty1}{\showpaste}
+\tab{5}\spadcommand{sum(k**3,k = 1..n)}
+\end{paste}\end{patch}
+
+\begin{patch}{ExSumCubesPatch2}
+\begin{paste}{ExSumCubesFull2}{ExSumCubesEmpty2}
+\pastebutton{ExSumCubesFull2}{\hidepaste}
+\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
+\indentrel{3}\begin{verbatim}
+         4     3    2
+        n  + 2n  + n
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              4
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumCubesEmpty2}
+\begin{paste}{ExSumCubesEmpty2}{ExSumCubesPatch2}
+\pastebutton{ExSumCubesEmpty2}{\showpaste}
+\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumPolynomial}{exsum.ht}{Sums of Polynomials}
@@ -7114,7 +18095,34 @@ when {\em f} is any polynomial in {\em k}, even
 one with parameters.
 \spadpaste{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumPolynomialPatch1}
+\begin{paste}{ExSumPolynomialFull1}{ExSumPolynomialEmpty1}
+\pastebutton{ExSumPolynomialFull1}{\hidepaste}
+\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
+\indentrel{3}\begin{verbatim}
+   (1)
+            3      2           3      2
+       (128b  + 48b  + 4b - 54a  + 27a  - 3a)d
+     + 
+            2             2        2       2             2
+       (192b  + 48b - 108a  + 36a)c  + 192b  + 48b - 108a
+     + 
+       36a
+  /
+        2
+     (2c  + 2)d
+           Type: Union(Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumPolynomialEmpty1}
+\begin{paste}{ExSumPolynomialEmpty1}{ExSumPolynomialPatch1}
+\pastebutton{ExSumPolynomialEmpty1}{\showpaste}
+\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
+\end{paste}\end{patch}
 
 @
 \begin{verbatim}
@@ -7141,7 +18149,28 @@ f which are not rational functions in {\em k}.
 Here's an example:
 \spadpaste{sum(k * x**k,k = 1..n)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumGeneralFunctionPatch1}
+\begin{paste}{ExSumGeneralFunctionFull1}{ExSumGeneralFunctionEmpty1}
+\pastebutton{ExSumGeneralFunctionFull1}{\hidepaste}
+\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
+\indentrel{3}\begin{verbatim}
+            2               n
+        (n x  + (- n - 1)x)x  + x
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                2
+               x  - 2x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumGeneralFunctionEmpty1}
+\begin{paste}{ExSumGeneralFunctionEmpty1}{ExSumGeneralFunctionPatch1}
+\pastebutton{ExSumGeneralFunctionEmpty1}{\showpaste}
+\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
+\end{paste}\end{patch}
 
 @
 \pagehead{ExSumInfinite}{exsum.ht}{Infinite Sums}
@@ -7157,7 +18186,26 @@ ranges from
 Use {\em \%plusInfinity} to denote `plus infinity'.
 \spadpaste{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
 \endscroll
-\autobuttons\end{page}
+\autobuttons
+\end{page}
+
+\begin{patch}{ExSumInfinitePatch1}
+\begin{paste}{ExSumInfiniteFull1}{ExSumInfiniteEmpty1}
+\pastebutton{ExSumInfiniteFull1}{\hidepaste}
+\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+        3
+   (1)  Ä
+        4
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ExSumInfiniteEmpty1}
+\begin{paste}{ExSumInfiniteEmpty1}{ExSumInfinitePatch1}
+\pastebutton{ExSumInfiniteEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
+\end{paste}\end{patch}
 
 @
 \section{farray.ht}
@@ -7284,7 +18332,264 @@ The previous value is returned.
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{FlexibleArrayXmpPagePatch1}
+\begin{paste}{FlexibleArrayXmpPageFull1}{FlexibleArrayXmpPageEmpty1}
+\pastebutton{FlexibleArrayXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{flexibleArray [i for i in 1..6]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3,4,5,6]
+                    Type: FlexibleArray PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty1}
+\begin{paste}{FlexibleArrayXmpPageEmpty1}{FlexibleArrayXmpPagePatch1}
+\pastebutton{FlexibleArrayXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{flexibleArray [i for i in 1..6]}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch2}
+\begin{paste}{FlexibleArrayXmpPageFull2}{FlexibleArrayXmpPageEmpty2}
+\pastebutton{FlexibleArrayXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f : FARRAY INT := new(6,0)\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0,0,0,0,0,0]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty2}
+\begin{paste}{FlexibleArrayXmpPageEmpty2}{FlexibleArrayXmpPagePatch2}
+\pastebutton{FlexibleArrayXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f : FARRAY INT := new(6,0)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch3}
+\begin{paste}{FlexibleArrayXmpPageFull3}{FlexibleArrayXmpPageEmpty3}
+\pastebutton{FlexibleArrayXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..6 repeat f.i := i; f\bound{f1 }\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,2,3,4,5,6]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty3}
+\begin{paste}{FlexibleArrayXmpPageEmpty3}{FlexibleArrayXmpPagePatch3}
+\pastebutton{FlexibleArrayXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for i in 1..6 repeat f.i := i; f\bound{f1 }\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch4}
+\begin{paste}{FlexibleArrayXmpPageFull4}{FlexibleArrayXmpPageEmpty4}
+\pastebutton{FlexibleArrayXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{physicalLength f\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty4}
+\begin{paste}{FlexibleArrayXmpPageEmpty4}{FlexibleArrayXmpPagePatch4}
+\pastebutton{FlexibleArrayXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{physicalLength f\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch5}
+\begin{paste}{FlexibleArrayXmpPageFull5}{FlexibleArrayXmpPageEmpty5}
+\pastebutton{FlexibleArrayXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{concat!(f,11)\bound{f2 }\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1,2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty5}
+\begin{paste}{FlexibleArrayXmpPageEmpty5}{FlexibleArrayXmpPagePatch5}
+\pastebutton{FlexibleArrayXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{concat!(f,11)\bound{f2 }\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch6}
+\begin{paste}{FlexibleArrayXmpPageFull6}{FlexibleArrayXmpPageEmpty6}
+\pastebutton{FlexibleArrayXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{physicalLength f\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty6}
+\begin{paste}{FlexibleArrayXmpPageEmpty6}{FlexibleArrayXmpPagePatch6}
+\pastebutton{FlexibleArrayXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{physicalLength f\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch7}
+\begin{paste}{FlexibleArrayXmpPageFull7}{FlexibleArrayXmpPageEmpty7}
+\pastebutton{FlexibleArrayXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{physicalLength!(f,15)\bound{f3 }\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1,2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty7}
+\begin{paste}{FlexibleArrayXmpPageEmpty7}{FlexibleArrayXmpPagePatch7}
+\pastebutton{FlexibleArrayXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{physicalLength!(f,15)\bound{f3 }\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch8}
+\begin{paste}{FlexibleArrayXmpPageFull8}{FlexibleArrayXmpPageEmpty8}
+\pastebutton{FlexibleArrayXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{concat!(f,f)\bound{f4 }\free{f3 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [1,2,3,4,5,6,11,1,2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty8}
+\begin{paste}{FlexibleArrayXmpPageEmpty8}{FlexibleArrayXmpPagePatch8}
+\pastebutton{FlexibleArrayXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{concat!(f,f)\bound{f4 }\free{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch9}
+\begin{paste}{FlexibleArrayXmpPageFull9}{FlexibleArrayXmpPageEmpty9}
+\pastebutton{FlexibleArrayXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{insert!(22,f,1)\bound{f5 }\free{f4 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [22,1,2,3,4,5,6,11,1,2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty9}
+\begin{paste}{FlexibleArrayXmpPageEmpty9}{FlexibleArrayXmpPagePatch9}
+\pastebutton{FlexibleArrayXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{insert!(22,f,1)\bound{f5 }\free{f4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch10}
+\begin{paste}{FlexibleArrayXmpPageFull10}{FlexibleArrayXmpPageEmpty10}
+\pastebutton{FlexibleArrayXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{g := f(10..)\bound{g }\free{f5 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty10}
+\begin{paste}{FlexibleArrayXmpPageEmpty10}{FlexibleArrayXmpPagePatch10}
+\pastebutton{FlexibleArrayXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{g := f(10..)\bound{g }\free{f5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch11}
+\begin{paste}{FlexibleArrayXmpPageFull11}{FlexibleArrayXmpPageEmpty11}
+\pastebutton{FlexibleArrayXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{insert!(g,f,1)\bound{g1 }\free{g f5 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [2,3,4,5,6,11,22,1,2,3,4,5,6,11,1,2,3,4,5,6,11]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty11}
+\begin{paste}{FlexibleArrayXmpPageEmpty11}{FlexibleArrayXmpPagePatch11}
+\pastebutton{FlexibleArrayXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{insert!(g,f,1)\bound{g1 }\free{g f5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch12}
+\begin{paste}{FlexibleArrayXmpPageFull12}{FlexibleArrayXmpPageEmpty12}
+\pastebutton{FlexibleArrayXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{merge!(sort! f, sort! g)\bound{f6 }\free{g f5 }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
+    6, 6, 6, 6, 11, 11, 11, 11, 22]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty12}
+\begin{paste}{FlexibleArrayXmpPageEmpty12}{FlexibleArrayXmpPagePatch12}
+\pastebutton{FlexibleArrayXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{merge!(sort! f, sort! g)\bound{f6 }\free{g f5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch13}
+\begin{paste}{FlexibleArrayXmpPageFull13}{FlexibleArrayXmpPageEmpty13}
+\pastebutton{FlexibleArrayXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{removeDuplicates! f\bound{f7 }\free{f6 }}
+\indentrel{3}\begin{verbatim}
+   (13)  [1,2,3,4,5,6,11,22]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty13}
+\begin{paste}{FlexibleArrayXmpPageEmpty13}{FlexibleArrayXmpPagePatch13}
+\pastebutton{FlexibleArrayXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{removeDuplicates! f\bound{f7 }\free{f6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch14}
+\begin{paste}{FlexibleArrayXmpPageFull14}{FlexibleArrayXmpPageEmpty14}
+\pastebutton{FlexibleArrayXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{select!(i +-> even? i,f)\bound{f8 }\free{f7 }}
+\indentrel{3}\begin{verbatim}
+   (14)  [2,4,6,22]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty14}
+\begin{paste}{FlexibleArrayXmpPageEmpty14}{FlexibleArrayXmpPagePatch14}
+\pastebutton{FlexibleArrayXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{select!(i +-> even? i,f)\bound{f8 }\free{f7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch15}
+\begin{paste}{FlexibleArrayXmpPageFull15}{FlexibleArrayXmpPageEmpty15}
+\pastebutton{FlexibleArrayXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{physicalLength f\free{b8 }}
+\indentrel{3}\begin{verbatim}
+   (15)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty15}
+\begin{paste}{FlexibleArrayXmpPageEmpty15}{FlexibleArrayXmpPagePatch15}
+\pastebutton{FlexibleArrayXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{physicalLength f\free{b8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPagePatch16}
+\begin{paste}{FlexibleArrayXmpPageFull16}{FlexibleArrayXmpPageEmpty16}
+\pastebutton{FlexibleArrayXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{shrinkable(false)$FlexibleArray(Integer)}
+\indentrel{3}\begin{verbatim}
+   (16)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FlexibleArrayXmpPageEmpty16}
+\begin{paste}{FlexibleArrayXmpPageEmpty16}{FlexibleArrayXmpPagePatch16}
+\pastebutton{FlexibleArrayXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{shrinkable(false)$FlexibleArray(Integer)}
+\end{paste}\end{patch}
 
 @
 \section{file.ht}
@@ -7392,6 +18697,212 @@ For more information on related topics, see
 \autobuttons
 \end{page}
 
+\begin{patch}{FileXmpPagePatch1}
+\begin{paste}{FileXmpPageFull1}{FileXmpPageEmpty1}
+\pastebutton{FileXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ifile:File List Integer:=open("/tmp/jazz1","output")\bound{ifile }}
+\indentrel{3}\begin{verbatim}
+   (1)  "/tmp/jazz1"
+                                Type: File List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty1}
+\begin{paste}{FileXmpPageEmpty1}{FileXmpPagePatch1}
+\pastebutton{FileXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ifile:File List Integer:=open("/tmp/jazz1","output")\bound{ifile }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch2}
+\begin{paste}{FileXmpPageFull2}{FileXmpPageEmpty2}
+\pastebutton{FileXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{write!(ifile, [-1,2,3])\free{ifile }\bound{ifile1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [- 1,2,3]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty2}
+\begin{paste}{FileXmpPageEmpty2}{FileXmpPagePatch2}
+\pastebutton{FileXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{write!(ifile, [-1,2,3])\free{ifile }\bound{ifile1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch3}
+\begin{paste}{FileXmpPageFull3}{FileXmpPageEmpty3}
+\pastebutton{FileXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{write!(ifile, [10,-10,0,111])\free{ifile1 }\bound{ifile2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [10,- 10,0,111]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty3}
+\begin{paste}{FileXmpPageEmpty3}{FileXmpPagePatch3}
+\pastebutton{FileXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{write!(ifile, [10,-10,0,111])\free{ifile1 }\bound{ifile2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch4}
+\begin{paste}{FileXmpPageFull4}{FileXmpPageEmpty4}
+\pastebutton{FileXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{write!(ifile, [7])\free{ifile2 }\bound{ifile3 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [7]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty4}
+\begin{paste}{FileXmpPageEmpty4}{FileXmpPagePatch4}
+\pastebutton{FileXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{write!(ifile, [7])\free{ifile2 }\bound{ifile3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch5}
+\begin{paste}{FileXmpPageFull5}{FileXmpPageEmpty5}
+\pastebutton{FileXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{reopen!(ifile, "input")\free{ifile3 }\bound{ifile4 }}
+\indentrel{3}\begin{verbatim}
+   (5)  "/tmp/jazz1"
+                                Type: File List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty5}
+\begin{paste}{FileXmpPageEmpty5}{FileXmpPagePatch5}
+\pastebutton{FileXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{reopen!(ifile, "input")\free{ifile3 }\bound{ifile4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch6}
+\begin{paste}{FileXmpPageFull6}{FileXmpPageEmpty6}
+\pastebutton{FileXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{read! ifile\free{ifile4 }\bound{ifile5 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [- 1,2,3]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty6}
+\begin{paste}{FileXmpPageEmpty6}{FileXmpPagePatch6}
+\pastebutton{FileXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{read! ifile\free{ifile4 }\bound{ifile5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch7}
+\begin{paste}{FileXmpPageFull7}{FileXmpPageEmpty7}
+\pastebutton{FileXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{read! ifile\free{ifile5 }\bound{ifile6 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [10,- 10,0,111]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty7}
+\begin{paste}{FileXmpPageEmpty7}{FileXmpPagePatch7}
+\pastebutton{FileXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{read! ifile\free{ifile5 }\bound{ifile6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch8}
+\begin{paste}{FileXmpPageFull8}{FileXmpPageEmpty8}
+\pastebutton{FileXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{readIfCan! ifile\free{ifile6 }\bound{ifile7 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [7]
+                          Type: Union(List Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty8}
+\begin{paste}{FileXmpPageEmpty8}{FileXmpPagePatch8}
+\pastebutton{FileXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{readIfCan! ifile\free{ifile6 }\bound{ifile7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch9}
+\begin{paste}{FileXmpPageFull9}{FileXmpPageEmpty9}
+\pastebutton{FileXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{readIfCan! ifile\free{ifile7 }\bound{ifile8 }}
+\indentrel{3}\begin{verbatim}
+   (9)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty9}
+\begin{paste}{FileXmpPageEmpty9}{FileXmpPagePatch9}
+\pastebutton{FileXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{readIfCan! ifile\free{ifile7 }\bound{ifile8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch10}
+\begin{paste}{FileXmpPageFull10}{FileXmpPageEmpty10}
+\pastebutton{FileXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{iomode ifile\free{ifile }}
+\indentrel{3}\begin{verbatim}
+   (10)  "input"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty10}
+\begin{paste}{FileXmpPageEmpty10}{FileXmpPagePatch10}
+\pastebutton{FileXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{iomode ifile\free{ifile }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch11}
+\begin{paste}{FileXmpPageFull11}{FileXmpPageEmpty11}
+\pastebutton{FileXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{name ifile\free{ifile }}
+\indentrel{3}\begin{verbatim}
+   (11)  "/tmp/jazz1"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty11}
+\begin{paste}{FileXmpPageEmpty11}{FileXmpPagePatch11}
+\pastebutton{FileXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{name ifile\free{ifile }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch12}
+\begin{paste}{FileXmpPageFull12}{FileXmpPageEmpty12}
+\pastebutton{FileXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{close! ifile\free{ifile }\bound{ifileA }}
+\indentrel{3}\begin{verbatim}
+   (12)  "/tmp/jazz1"
+                                Type: File List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty12}
+\begin{paste}{FileXmpPageEmpty12}{FileXmpPagePatch12}
+\pastebutton{FileXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{close! ifile\free{ifile }\bound{ifileA }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPagePatch13}
+\begin{paste}{FileXmpPageFull13}{FileXmpPageEmpty13}
+\pastebutton{FileXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{)system rm /tmp/jazz1\free{ifileA }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileXmpPageEmpty13}
+\begin{paste}{FileXmpPageEmpty13}{FileXmpPagePatch13}
+\pastebutton{FileXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{)system rm /tmp/jazz1\free{ifileA }}
+\end{paste}\end{patch}
+
 @
 \section{float.ht}
 \pagehead{FloatXmpPage}{float.ht}{Float}
@@ -7479,6 +18990,54 @@ numbers.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFloatIntroPagePatch1}
+\begin{paste}{ugxFloatIntroPageFull1}{ugxFloatIntroPageEmpty1}
+\pastebutton{ugxFloatIntroPageFull1}{\hidepaste}
+\tab{5}\spadcommand{1.234}
+\indentrel{3}\begin{verbatim}
+   (1)  1.234
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatIntroPageEmpty1}
+\begin{paste}{ugxFloatIntroPageEmpty1}{ugxFloatIntroPagePatch1}
+\pastebutton{ugxFloatIntroPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{1.234}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatIntroPagePatch2}
+\begin{paste}{ugxFloatIntroPageFull2}{ugxFloatIntroPageEmpty2}
+\pastebutton{ugxFloatIntroPageFull2}{\hidepaste}
+\tab{5}\spadcommand{1.234E2}
+\indentrel{3}\begin{verbatim}
+   (2)  123.4
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatIntroPageEmpty2}
+\begin{paste}{ugxFloatIntroPageEmpty2}{ugxFloatIntroPagePatch2}
+\pastebutton{ugxFloatIntroPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{1.234E2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatIntroPagePatch3}
+\begin{paste}{ugxFloatIntroPageFull3}{ugxFloatIntroPageEmpty3}
+\pastebutton{ugxFloatIntroPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sqrt(1.2 + 2.3 / 3.4 ** 4.5)}
+\indentrel{3}\begin{verbatim}
+   (3)  1.0996972790 671286226
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatIntroPageEmpty3}
+\begin{paste}{ugxFloatIntroPageEmpty3}{ugxFloatIntroPagePatch3}
+\pastebutton{ugxFloatIntroPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sqrt(1.2 + 2.3 / 3.4 ** 4.5)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFloatConvertPage}{float.ht}{Conversion Functions}
 \pageto{notitle}{ugTypesConvertPage}
@@ -7590,6 +19149,292 @@ general, be represented exactly.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFloatConvertPagePatch1}
+\begin{paste}{ugxFloatConvertPageFull1}{ugxFloatConvertPageEmpty1}
+\pastebutton{ugxFloatConvertPageFull1}{\hidepaste}
+\tab{5}\spadcommand{i := 3 :: Float\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (1)  3.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty1}
+\begin{paste}{ugxFloatConvertPageEmpty1}{ugxFloatConvertPagePatch1}
+\pastebutton{ugxFloatConvertPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{i := 3 :: Float\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch2}
+\begin{paste}{ugxFloatConvertPageFull2}{ugxFloatConvertPageEmpty2}
+\pastebutton{ugxFloatConvertPageFull2}{\hidepaste}
+\tab{5}\spadcommand{i :: Integer\free{i }}
+\indentrel{3}\begin{verbatim}
+   (2)  3
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty2}
+\begin{paste}{ugxFloatConvertPageEmpty2}{ugxFloatConvertPagePatch2}
+\pastebutton{ugxFloatConvertPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{i :: Integer\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch3}
+\begin{paste}{ugxFloatConvertPageFull3}{ugxFloatConvertPageEmpty3}
+\pastebutton{ugxFloatConvertPageFull3}{\hidepaste}
+\tab{5}\spadcommand{i :: Fraction Integer\free{i }}
+\indentrel{3}\begin{verbatim}
+   (3)  3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty3}
+\begin{paste}{ugxFloatConvertPageEmpty3}{ugxFloatConvertPagePatch3}
+\pastebutton{ugxFloatConvertPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i :: Fraction Integer\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch4}
+\begin{paste}{ugxFloatConvertPageFull4}{ugxFloatConvertPageEmpty4}
+\pastebutton{ugxFloatConvertPageFull4}{\hidepaste}
+\tab{5}\spadcommand{r := 3/7 :: Float\bound{r }}
+\indentrel{3}\begin{verbatim}
+   (4)  0.42857 14285 71428 57143
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty4}
+\begin{paste}{ugxFloatConvertPageEmpty4}{ugxFloatConvertPagePatch4}
+\pastebutton{ugxFloatConvertPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{r := 3/7 :: Float\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch5}
+\begin{paste}{ugxFloatConvertPageFull5}{ugxFloatConvertPageEmpty5}
+\pastebutton{ugxFloatConvertPageFull5}{\hidepaste}
+\tab{5}\spadcommand{r :: Fraction Integer\free{r }}
+\indentrel{3}\begin{verbatim}
+        3
+   (5)  Ä
+        7
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty5}
+\begin{paste}{ugxFloatConvertPageEmpty5}{ugxFloatConvertPagePatch5}
+\pastebutton{ugxFloatConvertPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{r :: Fraction Integer\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch6}
+\begin{paste}{ugxFloatConvertPageFull6}{ugxFloatConvertPageEmpty6}
+\pastebutton{ugxFloatConvertPageFull6}{\hidepaste}
+\tab{5}\spadcommand{r :: Integer\free{r }}
+\indentrel{3}\begin{verbatim}
+   0.42857 14285 71428 57143
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty6}
+\begin{paste}{ugxFloatConvertPageEmpty6}{ugxFloatConvertPagePatch6}
+\pastebutton{ugxFloatConvertPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{r :: Integer\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch7}
+\begin{paste}{ugxFloatConvertPageFull7}{ugxFloatConvertPageEmpty7}
+\pastebutton{ugxFloatConvertPageFull7}{\hidepaste}
+\tab{5}\spadcommand{truncate 3.6}
+\indentrel{3}\begin{verbatim}
+   (6)  3.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty7}
+\begin{paste}{ugxFloatConvertPageEmpty7}{ugxFloatConvertPagePatch7}
+\pastebutton{ugxFloatConvertPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{truncate 3.6}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch8}
+\begin{paste}{ugxFloatConvertPageFull8}{ugxFloatConvertPageEmpty8}
+\pastebutton{ugxFloatConvertPageFull8}{\hidepaste}
+\tab{5}\spadcommand{round 3.6}
+\indentrel{3}\begin{verbatim}
+   (7)  4.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty8}
+\begin{paste}{ugxFloatConvertPageEmpty8}{ugxFloatConvertPagePatch8}
+\pastebutton{ugxFloatConvertPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{round 3.6}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch9}
+\begin{paste}{ugxFloatConvertPageFull9}{ugxFloatConvertPageEmpty9}
+\pastebutton{ugxFloatConvertPageFull9}{\hidepaste}
+\tab{5}\spadcommand{truncate(-3.6)}
+\indentrel{3}\begin{verbatim}
+   (8)  - 3.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty9}
+\begin{paste}{ugxFloatConvertPageEmpty9}{ugxFloatConvertPagePatch9}
+\pastebutton{ugxFloatConvertPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{truncate(-3.6)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch10}
+\begin{paste}{ugxFloatConvertPageFull10}{ugxFloatConvertPageEmpty10}
+\pastebutton{ugxFloatConvertPageFull10}{\hidepaste}
+\tab{5}\spadcommand{round(-3.6)}
+\indentrel{3}\begin{verbatim}
+   (9)  - 4.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty10}
+\begin{paste}{ugxFloatConvertPageEmpty10}{ugxFloatConvertPagePatch10}
+\pastebutton{ugxFloatConvertPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{round(-3.6)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch11}
+\begin{paste}{ugxFloatConvertPageFull11}{ugxFloatConvertPageEmpty11}
+\pastebutton{ugxFloatConvertPageFull11}{\hidepaste}
+\tab{5}\spadcommand{fractionPart 3.6}
+\indentrel{3}\begin{verbatim}
+   (10)  0.6
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty11}
+\begin{paste}{ugxFloatConvertPageEmpty11}{ugxFloatConvertPagePatch11}
+\pastebutton{ugxFloatConvertPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{fractionPart 3.6}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch12}
+\begin{paste}{ugxFloatConvertPageFull12}{ugxFloatConvertPageEmpty12}
+\pastebutton{ugxFloatConvertPageFull12}{\hidepaste}
+\tab{5}\spadcommand{digits 40\bound{d40 }}
+\indentrel{3}\begin{verbatim}
+   (11)  20
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty12}
+\begin{paste}{ugxFloatConvertPageEmpty12}{ugxFloatConvertPagePatch12}
+\pastebutton{ugxFloatConvertPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{digits 40\bound{d40 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch13}
+\begin{paste}{ugxFloatConvertPageFull13}{ugxFloatConvertPageEmpty13}
+\pastebutton{ugxFloatConvertPageFull13}{\hidepaste}
+\tab{5}\spadcommand{sqrt 0.2}
+\indentrel{3}\begin{verbatim}
+   (12)
+   0.44721 35954 99957 93928 18347 33746 25524 70881
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty13}
+\begin{paste}{ugxFloatConvertPageEmpty13}{ugxFloatConvertPagePatch13}
+\pastebutton{ugxFloatConvertPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{sqrt 0.2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch14}
+\begin{paste}{ugxFloatConvertPageFull14}{ugxFloatConvertPageEmpty14}
+\pastebutton{ugxFloatConvertPageFull14}{\hidepaste}
+\tab{5}\spadcommand{pi()$Float\free{d40 }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   3.14159 26535 89793 23846 26433 83279 50288 4197
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty14}
+\begin{paste}{ugxFloatConvertPageEmpty14}{ugxFloatConvertPagePatch14}
+\pastebutton{ugxFloatConvertPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{pi()$Float\free{d40 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch15}
+\begin{paste}{ugxFloatConvertPageFull15}{ugxFloatConvertPageEmpty15}
+\pastebutton{ugxFloatConvertPageFull15}{\hidepaste}
+\tab{5}\spadcommand{digits 500\bound{d1000 }}
+\indentrel{3}\begin{verbatim}
+   (14)  40
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty15}
+\begin{paste}{ugxFloatConvertPageEmpty15}{ugxFloatConvertPagePatch15}
+\pastebutton{ugxFloatConvertPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{digits 500\bound{d1000 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch16}
+\begin{paste}{ugxFloatConvertPageFull16}{ugxFloatConvertPageEmpty16}
+\pastebutton{ugxFloatConvertPageFull16}{\hidepaste}
+\tab{5}\spadcommand{pi()$Float\free{d1000 }}
+\indentrel{3}\begin{verbatim}
+   (15)
+  3.14159 26535 89793 23846 26433 83279 50288 41971 69399
+   37510 58209 74944 59230 78164 06286 20899 86280 34825 
+  34211 70679 82148 08651 32823 06647 09384 46095 50582 2
+  3172 53594 08128 48111 74502 84102 70193 85211 05559 64
+  462 29489 54930 38196 44288 10975 66593 34461 28475 648
+  23 37867 83165 27120 19091 45648 56692 34603 48610 4543
+  2 66482 13393 60726 02491 41273 72458 70066 06315 58817
+   48815 20920 96282 92540 91715 36436 78925 90360 01133 
+  05305 48820 46652 13841 46951 94151 16094 33057 27036 5
+  7595 91953 09218 61173 81932 61179 31051 18548 07446 23
+  799 62749 56735 18857 52724 89122 79381 83011 9491
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty16}
+\begin{paste}{ugxFloatConvertPageEmpty16}{ugxFloatConvertPagePatch16}
+\pastebutton{ugxFloatConvertPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{pi()$Float\free{d1000 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPagePatch17}
+\begin{paste}{ugxFloatConvertPageFull17}{ugxFloatConvertPageEmpty17}
+\pastebutton{ugxFloatConvertPageFull17}{\hidepaste}
+\tab{5}\spadcommand{digits 20}
+\indentrel{3}\begin{verbatim}
+   (16)  500
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatConvertPageEmpty17}
+\begin{paste}{ugxFloatConvertPageEmpty17}{ugxFloatConvertPagePatch17}
+\pastebutton{ugxFloatConvertPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{digits 20}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFloatOutputPage}{float.ht}{Output Functions}
 <<float.ht>>=
@@ -7654,6 +19499,133 @@ This resets the output printing to the default behavior.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFloatOutputPagePatch1}
+\begin{paste}{ugxFloatOutputPageFull1}{ugxFloatOutputPageEmpty1}
+\pastebutton{ugxFloatOutputPageFull1}{\hidepaste}
+\tab{5}\spadcommand{outputSpacing 0; x := sqrt 0.2\bound{x }\bound{os0 }}
+\indentrel{3}\begin{verbatim}
+   (1)  0.44721359549995793928
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty1}
+\begin{paste}{ugxFloatOutputPageEmpty1}{ugxFloatOutputPagePatch1}
+\pastebutton{ugxFloatOutputPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{outputSpacing 0; x := sqrt 0.2\bound{x }\bound{os0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch2}
+\begin{paste}{ugxFloatOutputPageFull2}{ugxFloatOutputPageEmpty2}
+\pastebutton{ugxFloatOutputPageFull2}{\hidepaste}
+\tab{5}\spadcommand{outputSpacing 5; x\bound{os5 }\free{x }}
+\indentrel{3}\begin{verbatim}
+   (2)  0.44721 35954 99957 93928
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty2}
+\begin{paste}{ugxFloatOutputPageEmpty2}{ugxFloatOutputPagePatch2}
+\pastebutton{ugxFloatOutputPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{outputSpacing 5; x\bound{os5 }\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch3}
+\begin{paste}{ugxFloatOutputPageFull3}{ugxFloatOutputPageEmpty3}
+\pastebutton{ugxFloatOutputPageFull3}{\hidepaste}
+\tab{5}\spadcommand{y := x/10**10\bound{y }\free{x os5 }}
+\indentrel{3}\begin{verbatim}
+   (3)  0.44721 35954 99957 93928 E -10
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty3}
+\begin{paste}{ugxFloatOutputPageEmpty3}{ugxFloatOutputPagePatch3}
+\pastebutton{ugxFloatOutputPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{y := x/10**10\bound{y }\free{x os5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch4}
+\begin{paste}{ugxFloatOutputPageFull4}{ugxFloatOutputPageEmpty4}
+\pastebutton{ugxFloatOutputPageFull4}{\hidepaste}
+\tab{5}\spadcommand{outputFloating(); x\bound{of }\free{os5 x }}
+\indentrel{3}\begin{verbatim}
+   (4)  0.44721 35954 99957 93928 E 0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty4}
+\begin{paste}{ugxFloatOutputPageEmpty4}{ugxFloatOutputPagePatch4}
+\pastebutton{ugxFloatOutputPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{outputFloating(); x\bound{of }\free{os5 x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch5}
+\begin{paste}{ugxFloatOutputPageFull5}{ugxFloatOutputPageEmpty5}
+\pastebutton{ugxFloatOutputPageFull5}{\hidepaste}
+\tab{5}\spadcommand{outputFixed(); y\bound{ox }\free{os5 y }}
+\indentrel{3}\begin{verbatim}
+   (5)  0.00000 00000 44721 35954 99957 93928
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty5}
+\begin{paste}{ugxFloatOutputPageEmpty5}{ugxFloatOutputPagePatch5}
+\pastebutton{ugxFloatOutputPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{outputFixed(); y\bound{ox }\free{os5 y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch6}
+\begin{paste}{ugxFloatOutputPageFull6}{ugxFloatOutputPageEmpty6}
+\pastebutton{ugxFloatOutputPageFull6}{\hidepaste}
+\tab{5}\spadcommand{outputFloating 2; y\bound{of2 }\free{os5 y }}
+\indentrel{3}\begin{verbatim}
+   (6)  0.45 E -10
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty6}
+\begin{paste}{ugxFloatOutputPageEmpty6}{ugxFloatOutputPagePatch6}
+\pastebutton{ugxFloatOutputPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{outputFloating 2; y\bound{of2 }\free{os5 y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch7}
+\begin{paste}{ugxFloatOutputPageFull7}{ugxFloatOutputPageEmpty7}
+\pastebutton{ugxFloatOutputPageFull7}{\hidepaste}
+\tab{5}\spadcommand{outputFixed 2; x\bound{ox2 }\free{os5 x }}
+\indentrel{3}\begin{verbatim}
+   (7)  0.45
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty7}
+\begin{paste}{ugxFloatOutputPageEmpty7}{ugxFloatOutputPagePatch7}
+\pastebutton{ugxFloatOutputPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{outputFixed 2; x\bound{ox2 }\free{os5 x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPagePatch8}
+\begin{paste}{ugxFloatOutputPageFull8}{ugxFloatOutputPageEmpty8}
+\pastebutton{ugxFloatOutputPageFull8}{\hidepaste}
+\tab{5}\spadcommand{outputGeneral()}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatOutputPageEmpty8}
+\begin{paste}{ugxFloatOutputPageEmpty8}{ugxFloatOutputPagePatch8}
+\pastebutton{ugxFloatOutputPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{outputGeneral()}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFloatHilbertPage}{float.ht}
 {An Example: Determinant of a Hilbert Matrix}
@@ -7724,7 +19696,191 @@ Reset \spadfunFrom{digits}{Float} to its default value.
 \autobuttons
 \end{page}
 
-@
+\begin{patch}{ugxFloatHilbertPagePatch1}
+\begin{paste}{ugxFloatHilbertPageFull1}{ugxFloatHilbertPageEmpty1}
+\pastebutton{ugxFloatHilbertPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a: Matrix Fraction Integer := matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]\bound{a }}
+\indentrel{3}\begin{verbatim}
+        Ú    1   1   1   1   1   1   1   1    1¿
+        ³1   Ä   Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ³
+        ³    2   3   4   5   6   7   8   9   10³
+        ³                                      ³
+        ³1   1   1   1   1   1   1   1    1   1³
+        ³Ä   Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ³
+        ³2   3   4   5   6   7   8   9   10  11³
+        ³                                      ³
+        ³1   1   1   1   1   1   1    1   1   1³
+        ³Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ³
+        ³3   4   5   6   7   8   9   10  11  12³
+        ³                                      ³
+        ³1   1   1   1   1   1    1   1   1   1³
+        ³Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³4   5   6   7   8   9   10  11  12  13³
+        ³                                      ³
+        ³1   1   1   1   1    1   1   1   1   1³
+        ³Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³5   6   7   8   9   10  11  12  13  14³
+   (1)  ³                                      ³
+        ³1   1   1   1    1   1   1   1   1   1³
+        ³Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³6   7   8   9   10  11  12  13  14  15³
+        ³                                      ³
+        ³1   1   1    1   1   1   1   1   1   1³
+        ³Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³7   8   9   10  11  12  13  14  15  16³
+        ³                                      ³
+        ³1   1    1   1   1   1   1   1   1   1³
+        ³Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³8   9   10  11  12  13  14  15  16  17³
+        ³                                      ³
+        ³1    1   1   1   1   1   1   1   1   1³
+        ³Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        ³9   10  11  12  13  14  15  16  17  18³
+        ³                                      ³
+        ³ 1   1   1   1   1   1   1   1   1   1³
+        ³ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
+        À10  11  12  13  14  15  16  17  18  19Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty1}
+\begin{paste}{ugxFloatHilbertPageEmpty1}{ugxFloatHilbertPagePatch1}
+\pastebutton{ugxFloatHilbertPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a: Matrix Fraction Integer := matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch2}
+\begin{paste}{ugxFloatHilbertPageFull2}{ugxFloatHilbertPageEmpty2}
+\pastebutton{ugxFloatHilbertPageFull2}{\hidepaste}
+\tab{5}\spadcommand{d:= determinant a\free{a }\bound{d }}
+\indentrel{3}\begin{verbatim}
+   (2)
+                             1
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+   46206893947914691316295628839036278726983680000000000
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty2}
+\begin{paste}{ugxFloatHilbertPageEmpty2}{ugxFloatHilbertPagePatch2}
+\pastebutton{ugxFloatHilbertPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{d:= determinant a\free{a }\bound{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch3}
+\begin{paste}{ugxFloatHilbertPageFull3}{ugxFloatHilbertPageEmpty3}
+\pastebutton{ugxFloatHilbertPageFull3}{\hidepaste}
+\tab{5}\spadcommand{d :: Float\free{d }}
+\indentrel{3}\begin{verbatim}
+   (3)  0.21641 79226 43149 18691 E -52
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty3}
+\begin{paste}{ugxFloatHilbertPageEmpty3}{ugxFloatHilbertPagePatch3}
+\pastebutton{ugxFloatHilbertPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{d :: Float\free{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch4}
+\begin{paste}{ugxFloatHilbertPageFull4}{ugxFloatHilbertPageEmpty4}
+\pastebutton{ugxFloatHilbertPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b: Matrix DoubleFloat := matrix [[1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9];\bound{b }}
+\indentrel{3}\begin{verbatim}
+                               Type: Matrix DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty4}
+\begin{paste}{ugxFloatHilbertPageEmpty4}{ugxFloatHilbertPagePatch4}
+\pastebutton{ugxFloatHilbertPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b: Matrix DoubleFloat := matrix [[1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9];\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch5}
+\begin{paste}{ugxFloatHilbertPageFull5}{ugxFloatHilbertPageEmpty5}
+\pastebutton{ugxFloatHilbertPageFull5}{\hidepaste}
+\tab{5}\spadcommand{determinant b\free{b }}
+\indentrel{3}\begin{verbatim}
+   (5)  2.1643677945721411e-53
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty5}
+\begin{paste}{ugxFloatHilbertPageEmpty5}{ugxFloatHilbertPagePatch5}
+\pastebutton{ugxFloatHilbertPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{determinant b\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch6}
+\begin{paste}{ugxFloatHilbertPageFull6}{ugxFloatHilbertPageEmpty6}
+\pastebutton{ugxFloatHilbertPageFull6}{\hidepaste}
+\tab{5}\spadcommand{digits 40\bound{d40 }}
+\indentrel{3}\begin{verbatim}
+   (6)  20
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty6}
+\begin{paste}{ugxFloatHilbertPageEmpty6}{ugxFloatHilbertPagePatch6}
+\pastebutton{ugxFloatHilbertPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{digits 40\bound{d40 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch7}
+\begin{paste}{ugxFloatHilbertPageFull7}{ugxFloatHilbertPageEmpty7}
+\pastebutton{ugxFloatHilbertPageFull7}{\hidepaste}
+\tab{5}\spadcommand{c: Matrix Float := matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9];\free{d40 }\bound{c }}
+\indentrel{3}\begin{verbatim}
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty7}
+\begin{paste}{ugxFloatHilbertPageEmpty7}{ugxFloatHilbertPagePatch7}
+\pastebutton{ugxFloatHilbertPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{c: Matrix Float := matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9];\free{d40 }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch8}
+\begin{paste}{ugxFloatHilbertPageFull8}{ugxFloatHilbertPageEmpty8}
+\pastebutton{ugxFloatHilbertPageFull8}{\hidepaste}
+\tab{5}\spadcommand{determinant c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (8)
+   0.21641 79226 43149 18690 60594 98362 26174 36159 E -52
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty8}
+\begin{paste}{ugxFloatHilbertPageEmpty8}{ugxFloatHilbertPagePatch8}
+\pastebutton{ugxFloatHilbertPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{determinant c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPagePatch9}
+\begin{paste}{ugxFloatHilbertPageFull9}{ugxFloatHilbertPageEmpty9}
+\pastebutton{ugxFloatHilbertPageFull9}{\hidepaste}
+\tab{5}\spadcommand{digits 20}
+\indentrel{3}\begin{verbatim}
+   (9)  40
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFloatHilbertPageEmpty9}
+\begin{paste}{ugxFloatHilbertPageEmpty9}{ugxFloatHilbertPagePatch9}
+\pastebutton{ugxFloatHilbertPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{digits 20}
+\end{paste}\end{patch}
+
+f@
 \section{fname.ht}
 \pagehead{FileNameXmpPage}{fname.ht}{FileName}
 <<fname.ht>>=
@@ -7855,6 +20011,293 @@ with the given extension, and the same defaults are used.
 \autobuttons
 \end{page}
 
+\begin{patch}{FileNameXmpPagePatch1}
+\begin{paste}{FileNameXmpPageFull1}{FileNameXmpPageEmpty1}
+\pastebutton{FileNameXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{fn: FileName\bound{fndecl }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty1}
+\begin{paste}{FileNameXmpPageEmpty1}{FileNameXmpPagePatch1}
+\pastebutton{FileNameXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{fn: FileName\bound{fndecl }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch2}
+\begin{paste}{FileNameXmpPageFull2}{FileNameXmpPageEmpty2}
+\pastebutton{FileNameXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }}
+\indentrel{3}\begin{verbatim}
+   (2)  "/spad/src/input/fname.input"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty2}
+\begin{paste}{FileNameXmpPageEmpty2}{FileNameXmpPagePatch2}
+\pastebutton{FileNameXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch3}
+\begin{paste}{FileNameXmpPageFull3}{FileNameXmpPageEmpty3}
+\pastebutton{FileNameXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{directory fn\free{fn }}
+\indentrel{3}\begin{verbatim}
+   (3)  "/spad/src/input"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty3}
+\begin{paste}{FileNameXmpPageEmpty3}{FileNameXmpPagePatch3}
+\pastebutton{FileNameXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{directory fn\free{fn }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch4}
+\begin{paste}{FileNameXmpPageFull4}{FileNameXmpPageEmpty4}
+\pastebutton{FileNameXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{name fn\free{fn }}
+\indentrel{3}\begin{verbatim}
+   (4)  "fname"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty4}
+\begin{paste}{FileNameXmpPageEmpty4}{FileNameXmpPagePatch4}
+\pastebutton{FileNameXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{name fn\free{fn }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch5}
+\begin{paste}{FileNameXmpPageFull5}{FileNameXmpPageEmpty5}
+\pastebutton{FileNameXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{extension fn\free{fn }}
+\indentrel{3}\begin{verbatim}
+   (5)  "input"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty5}
+\begin{paste}{FileNameXmpPageEmpty5}{FileNameXmpPagePatch5}
+\pastebutton{FileNameXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{extension fn\free{fn }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch6}
+\begin{paste}{FileNameXmpPageFull6}{FileNameXmpPageEmpty6}
+\pastebutton{FileNameXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  "/u/smwatt/work/fname.input"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty6}
+\begin{paste}{FileNameXmpPageEmpty6}{FileNameXmpPagePatch6}
+\pastebutton{FileNameXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch7}
+\begin{paste}{FileNameXmpPageFull7}{FileNameXmpPageEmpty7}
+\pastebutton{FileNameXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }}
+\indentrel{3}\begin{verbatim}
+   (7)  "/tmp"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty7}
+\begin{paste}{FileNameXmpPageEmpty7}{FileNameXmpPagePatch7}
+\pastebutton{FileNameXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch8}
+\begin{paste}{FileNameXmpPageFull8}{FileNameXmpPageEmpty8}
+\pastebutton{FileNameXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }}
+\indentrel{3}\begin{verbatim}
+   (8)  "/tmp/table.spad"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty8}
+\begin{paste}{FileNameXmpPageEmpty8}{FileNameXmpPagePatch8}
+\pastebutton{FileNameXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch9}
+\begin{paste}{FileNameXmpPageFull9}{FileNameXmpPageEmpty9}
+\pastebutton{FileNameXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }}
+\indentrel{3}\begin{verbatim}
+   (9)  "letter"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty9}
+\begin{paste}{FileNameXmpPageEmpty9}{FileNameXmpPagePatch9}
+\pastebutton{FileNameXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch10}
+\begin{paste}{FileNameXmpPageFull10}{FileNameXmpPageEmpty10}
+\pastebutton{FileNameXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{exists? "/etc/passwd"}
+\indentrel{3}\begin{verbatim}
+   (10)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty10}
+\begin{paste}{FileNameXmpPageEmpty10}{FileNameXmpPagePatch10}
+\pastebutton{FileNameXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{exists? "/etc/passwd"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch11}
+\begin{paste}{FileNameXmpPageFull11}{FileNameXmpPageEmpty11}
+\pastebutton{FileNameXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{readable? "/etc/passwd"}
+\indentrel{3}\begin{verbatim}
+   (11)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty11}
+\begin{paste}{FileNameXmpPageEmpty11}{FileNameXmpPagePatch11}
+\pastebutton{FileNameXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{readable? "/etc/passwd"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch12}
+\begin{paste}{FileNameXmpPageFull12}{FileNameXmpPageEmpty12}
+\pastebutton{FileNameXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{readable? "/etc/security/passwd"}
+\indentrel{3}\begin{verbatim}
+   (12)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty12}
+\begin{paste}{FileNameXmpPageEmpty12}{FileNameXmpPagePatch12}
+\pastebutton{FileNameXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{readable? "/etc/security/passwd"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch13}
+\begin{paste}{FileNameXmpPageFull13}{FileNameXmpPageEmpty13}
+\pastebutton{FileNameXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{readable? "/ect/passwd"}
+\indentrel{3}\begin{verbatim}
+   (13)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty13}
+\begin{paste}{FileNameXmpPageEmpty13}{FileNameXmpPagePatch13}
+\pastebutton{FileNameXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{readable? "/ect/passwd"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch14}
+\begin{paste}{FileNameXmpPageFull14}{FileNameXmpPageEmpty14}
+\pastebutton{FileNameXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{writable? "/etc/passwd"}
+\indentrel{3}\begin{verbatim}
+   (14)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty14}
+\begin{paste}{FileNameXmpPageEmpty14}{FileNameXmpPagePatch14}
+\pastebutton{FileNameXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{writable? "/etc/passwd"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch15}
+\begin{paste}{FileNameXmpPageFull15}{FileNameXmpPageEmpty15}
+\pastebutton{FileNameXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{writable? "/dev/null"}
+\indentrel{3}\begin{verbatim}
+   (15)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty15}
+\begin{paste}{FileNameXmpPageEmpty15}{FileNameXmpPagePatch15}
+\pastebutton{FileNameXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{writable? "/dev/null"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch16}
+\begin{paste}{FileNameXmpPageFull16}{FileNameXmpPageEmpty16}
+\pastebutton{FileNameXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{writable? "/etc/DoesNotExist"}
+\indentrel{3}\begin{verbatim}
+   (16)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty16}
+\begin{paste}{FileNameXmpPageEmpty16}{FileNameXmpPagePatch16}
+\pastebutton{FileNameXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{writable? "/etc/DoesNotExist"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch17}
+\begin{paste}{FileNameXmpPageFull17}{FileNameXmpPageEmpty17}
+\pastebutton{FileNameXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{writable? "/tmp/DoesNotExist"}
+\indentrel{3}\begin{verbatim}
+   (17)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty17}
+\begin{paste}{FileNameXmpPageEmpty17}{FileNameXmpPagePatch17}
+\pastebutton{FileNameXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{writable? "/tmp/DoesNotExist"}
+\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPagePatch18}
+\begin{paste}{FileNameXmpPageFull18}{FileNameXmpPageEmpty18}
+\pastebutton{FileNameXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }}
+\indentrel{3}\begin{verbatim}
+   (18)  "/tmp/xxx82222.yy"
+                                         Type: FileName
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FileNameXmpPageEmpty18}
+\begin{paste}{FileNameXmpPageEmpty18}{FileNameXmpPagePatch18}
+\pastebutton{FileNameXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }}
+\end{paste}\end{patch}
+
 @
 \section{fr.ht}
 \pagehead{FactoredXmpPage}{fr.ht}{Factored}
@@ -7970,6 +20413,156 @@ Neither of these operations returns the unit.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFactoredDecompPagePatch1}
+\begin{paste}{ugxFactoredDecompPageFull1}{ugxFactoredDecompPageEmpty1}
+\pastebutton{ugxFactoredDecompPageFull1}{\hidepaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (1)  2 7 11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty1}
+\begin{paste}{ugxFactoredDecompPageEmpty1}{ugxFactoredDecompPagePatch1}
+\pastebutton{ugxFactoredDecompPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch2}
+\begin{paste}{ugxFactoredDecompPageFull2}{ugxFactoredDecompPageEmpty2}
+\pastebutton{ugxFactoredDecompPageFull2}{\hidepaste}
+\tab{5}\spadcommand{unit(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (2)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty2}
+\begin{paste}{ugxFactoredDecompPageEmpty2}{ugxFactoredDecompPagePatch2}
+\pastebutton{ugxFactoredDecompPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{unit(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch3}
+\begin{paste}{ugxFactoredDecompPageFull3}{ugxFactoredDecompPageEmpty3}
+\pastebutton{ugxFactoredDecompPageFull3}{\hidepaste}
+\tab{5}\spadcommand{numberOfFactors(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (3)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty3}
+\begin{paste}{ugxFactoredDecompPageEmpty3}{ugxFactoredDecompPagePatch3}
+\pastebutton{ugxFactoredDecompPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{numberOfFactors(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch4}
+\begin{paste}{ugxFactoredDecompPageFull4}{ugxFactoredDecompPageEmpty4}
+\pastebutton{ugxFactoredDecompPageFull4}{\hidepaste}
+\tab{5}\spadcommand{[nthFactor(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\indentrel{3}\begin{verbatim}
+   (4)  [2,7,11]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty4}
+\begin{paste}{ugxFactoredDecompPageEmpty4}{ugxFactoredDecompPagePatch4}
+\pastebutton{ugxFactoredDecompPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{[nthFactor(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch5}
+\begin{paste}{ugxFactoredDecompPageFull5}{ugxFactoredDecompPageEmpty5}
+\pastebutton{ugxFactoredDecompPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[nthExponent(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\indentrel{3}\begin{verbatim}
+   (5)  [3,2,1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty5}
+\begin{paste}{ugxFactoredDecompPageEmpty5}{ugxFactoredDecompPagePatch5}
+\pastebutton{ugxFactoredDecompPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[nthExponent(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch6}
+\begin{paste}{ugxFactoredDecompPageFull6}{ugxFactoredDecompPageEmpty6}
+\pastebutton{ugxFactoredDecompPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[nthFlag(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\indentrel{3}\begin{verbatim}
+   (6)  ["prime","prime","prime"]
+         Type: List Union("nil","sqfr","irred","prime")
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty6}
+\begin{paste}{ugxFactoredDecompPageEmpty6}{ugxFactoredDecompPagePatch6}
+\pastebutton{ugxFactoredDecompPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[nthFlag(g,i) for i in 1..numberOfFactors(g)]\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch7}
+\begin{paste}{ugxFactoredDecompPageFull7}{ugxFactoredDecompPageEmpty7}
+\pastebutton{ugxFactoredDecompPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factorList(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [[flg= "prime",fctr= 2,xpnt= 3],
+    [flg= "prime",fctr= 7,xpnt= 2],
+    [flg= "prime",fctr= 11,xpnt= 1]]
+Type: List Record(flg: Union("nil","sqfr","irred","prime"),fctr: Integer,xpnt: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty7}
+\begin{paste}{ugxFactoredDecompPageEmpty7}{ugxFactoredDecompPagePatch7}
+\pastebutton{ugxFactoredDecompPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factorList(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch8}
+\begin{paste}{ugxFactoredDecompPageFull8}{ugxFactoredDecompPageEmpty8}
+\pastebutton{ugxFactoredDecompPageFull8}{\hidepaste}
+\tab{5}\spadcommand{factors(g)\free{g }\bound{prev1 }}
+\indentrel{3}\begin{verbatim}
+   (8)
+   [[factor= 2,exponent= 3], [factor= 7,exponent= 2],
+    [factor= 11,exponent= 1]]
+   Type: List Record(factor: Integer,exponent: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty8}
+\begin{paste}{ugxFactoredDecompPageEmpty8}{ugxFactoredDecompPagePatch8}
+\pastebutton{ugxFactoredDecompPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{factors(g)\free{g }\bound{prev1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPagePatch9}
+\begin{paste}{ugxFactoredDecompPageFull9}{ugxFactoredDecompPageEmpty9}
+\pastebutton{ugxFactoredDecompPageFull9}{\hidepaste}
+\tab{5}\spadcommand{first(\%).factor\free{prev1 }}
+\indentrel{3}\begin{verbatim}
+   (9)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredDecompPageEmpty9}
+\begin{paste}{ugxFactoredDecompPageEmpty9}{ugxFactoredDecompPagePatch9}
+\pastebutton{ugxFactoredDecompPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{first(\%).factor\free{prev1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFactoredExpandPage}{fr.ht}{Expanding Factored Objects}
 \pagepic{ps/v71ugxfactoredexpandpage.eps}{ugxFactoredExpandPage}
@@ -8001,6 +20594,55 @@ but with multiplicity one, you could do it this way.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFactoredExpandPagePatch1}
+\begin{paste}{ugxFactoredExpandPageFull1}{ugxFactoredExpandPageEmpty1}
+\pastebutton{ugxFactoredExpandPageFull1}{\hidepaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (1)  2 7 11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredExpandPageEmpty1}
+\begin{paste}{ugxFactoredExpandPageEmpty1}{ugxFactoredExpandPagePatch1}
+\pastebutton{ugxFactoredExpandPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredExpandPagePatch2}
+\begin{paste}{ugxFactoredExpandPageFull2}{ugxFactoredExpandPageEmpty2}
+\pastebutton{ugxFactoredExpandPageFull2}{\hidepaste}
+\tab{5}\spadcommand{expand(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (2)  4312
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredExpandPageEmpty2}
+\begin{paste}{ugxFactoredExpandPageEmpty2}{ugxFactoredExpandPagePatch2}
+\pastebutton{ugxFactoredExpandPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{expand(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredExpandPagePatch3}
+\begin{paste}{ugxFactoredExpandPageFull3}{ugxFactoredExpandPageEmpty3}
+\pastebutton{ugxFactoredExpandPageFull3}{\hidepaste}
+\tab{5}\spadcommand{reduce(*,[t.factor for t in factors(g)])\free{g }}
+\indentrel{3}\begin{verbatim}
+   (3)  154
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredExpandPageEmpty3}
+\begin{paste}{ugxFactoredExpandPageEmpty3}{ugxFactoredExpandPagePatch3}
+\pastebutton{ugxFactoredExpandPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{reduce(*,[t.factor for t in factors(g)])\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFactoredArithPage}{fr.ht}{Arithmetic with Factored Objects}
 \pagepic{ps/v71ugxfactoredarithpage.eps}{ugxFactoredArithPage}
@@ -8084,6 +20726,238 @@ package calling
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFactoredArithPagePatch1}
+\begin{paste}{ugxFactoredArithPageFull1}{ugxFactoredArithPageEmpty1}
+\pastebutton{ugxFactoredArithPageFull1}{\hidepaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (1)  2 7 11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty1}
+\begin{paste}{ugxFactoredArithPageEmpty1}{ugxFactoredArithPagePatch1}
+\pastebutton{ugxFactoredArithPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{g := factor(4312)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch2}
+\begin{paste}{ugxFactoredArithPageFull2}{ugxFactoredArithPageEmpty2}
+\pastebutton{ugxFactoredArithPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := factor(246960)\bound{f }}
+\indentrel{3}\begin{verbatim}
+         4 2   3
+   (2)  2 3 5 7
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty2}
+\begin{paste}{ugxFactoredArithPageEmpty2}{ugxFactoredArithPagePatch2}
+\pastebutton{ugxFactoredArithPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := factor(246960)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch3}
+\begin{paste}{ugxFactoredArithPageFull3}{ugxFactoredArithPageEmpty3}
+\pastebutton{ugxFactoredArithPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f * g\free{f g }}
+\indentrel{3}\begin{verbatim}
+         7 2   5
+   (3)  2 3 5 7 11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty3}
+\begin{paste}{ugxFactoredArithPageEmpty3}{ugxFactoredArithPagePatch3}
+\pastebutton{ugxFactoredArithPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f * g\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch4}
+\begin{paste}{ugxFactoredArithPageFull4}{ugxFactoredArithPageEmpty4}
+\pastebutton{ugxFactoredArithPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f**500\free{f }}
+\indentrel{3}\begin{verbatim}
+         2000 1000 500 1500
+   (4)  2    3    5   7
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty4}
+\begin{paste}{ugxFactoredArithPageEmpty4}{ugxFactoredArithPagePatch4}
+\pastebutton{ugxFactoredArithPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f**500\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch5}
+\begin{paste}{ugxFactoredArithPageFull5}{ugxFactoredArithPageEmpty5}
+\pastebutton{ugxFactoredArithPageFull5}{\hidepaste}
+\tab{5}\spadcommand{gcd(f,g)\free{f g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (5)  2 7
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty5}
+\begin{paste}{ugxFactoredArithPageEmpty5}{ugxFactoredArithPagePatch5}
+\pastebutton{ugxFactoredArithPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{gcd(f,g)\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch6}
+\begin{paste}{ugxFactoredArithPageFull6}{ugxFactoredArithPageEmpty6}
+\pastebutton{ugxFactoredArithPageFull6}{\hidepaste}
+\tab{5}\spadcommand{lcm(f,g)\free{f g }}
+\indentrel{3}\begin{verbatim}
+         4 2   3
+   (6)  2 3 5 7 11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty6}
+\begin{paste}{ugxFactoredArithPageEmpty6}{ugxFactoredArithPagePatch6}
+\pastebutton{ugxFactoredArithPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{lcm(f,g)\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch7}
+\begin{paste}{ugxFactoredArithPageFull7}{ugxFactoredArithPageEmpty7}
+\pastebutton{ugxFactoredArithPageFull7}{\hidepaste}
+\tab{5}\spadcommand{f + g\free{f g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (7)  2 7 641
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty7}
+\begin{paste}{ugxFactoredArithPageEmpty7}{ugxFactoredArithPagePatch7}
+\pastebutton{ugxFactoredArithPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f + g\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch8}
+\begin{paste}{ugxFactoredArithPageFull8}{ugxFactoredArithPageEmpty8}
+\pastebutton{ugxFactoredArithPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f - g\free{f g }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (8)  2 7 619
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty8}
+\begin{paste}{ugxFactoredArithPageEmpty8}{ugxFactoredArithPagePatch8}
+\pastebutton{ugxFactoredArithPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f - g\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch9}
+\begin{paste}{ugxFactoredArithPageFull9}{ugxFactoredArithPageEmpty9}
+\pastebutton{ugxFactoredArithPageFull9}{\hidepaste}
+\tab{5}\spadcommand{zero?(factor(0))}
+\indentrel{3}\begin{verbatim}
+   (9)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty9}
+\begin{paste}{ugxFactoredArithPageEmpty9}{ugxFactoredArithPagePatch9}
+\pastebutton{ugxFactoredArithPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{zero?(factor(0))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch10}
+\begin{paste}{ugxFactoredArithPageFull10}{ugxFactoredArithPageEmpty10}
+\pastebutton{ugxFactoredArithPageFull10}{\hidepaste}
+\tab{5}\spadcommand{zero?(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (10)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty10}
+\begin{paste}{ugxFactoredArithPageEmpty10}{ugxFactoredArithPagePatch10}
+\pastebutton{ugxFactoredArithPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{zero?(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch11}
+\begin{paste}{ugxFactoredArithPageFull11}{ugxFactoredArithPageEmpty11}
+\pastebutton{ugxFactoredArithPageFull11}{\hidepaste}
+\tab{5}\spadcommand{one?(factor(1))}
+\indentrel{3}\begin{verbatim}
+   (11)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty11}
+\begin{paste}{ugxFactoredArithPageEmpty11}{ugxFactoredArithPagePatch11}
+\pastebutton{ugxFactoredArithPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{one?(factor(1))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch12}
+\begin{paste}{ugxFactoredArithPageFull12}{ugxFactoredArithPageEmpty12}
+\pastebutton{ugxFactoredArithPageFull12}{\hidepaste}
+\tab{5}\spadcommand{one?(f)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (12)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty12}
+\begin{paste}{ugxFactoredArithPageEmpty12}{ugxFactoredArithPagePatch12}
+\pastebutton{ugxFactoredArithPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{one?(f)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch13}
+\begin{paste}{ugxFactoredArithPageFull13}{ugxFactoredArithPageEmpty13}
+\pastebutton{ugxFactoredArithPageFull13}{\hidepaste}
+\tab{5}\spadcommand{0$Factored(Integer)}
+\indentrel{3}\begin{verbatim}
+   (13)  0
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty13}
+\begin{paste}{ugxFactoredArithPageEmpty13}{ugxFactoredArithPagePatch13}
+\pastebutton{ugxFactoredArithPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{0$Factored(Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPagePatch14}
+\begin{paste}{ugxFactoredArithPageFull14}{ugxFactoredArithPageEmpty14}
+\pastebutton{ugxFactoredArithPageFull14}{\hidepaste}
+\tab{5}\spadcommand{1$Factored(Integer)}
+\indentrel{3}\begin{verbatim}
+   (14)  1
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredArithPageEmpty14}
+\begin{paste}{ugxFactoredArithPageEmpty14}{ugxFactoredArithPagePatch14}
+\pastebutton{ugxFactoredArithPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{1$Factored(Integer)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFactoredNewPage}{fr.ht}{Creating New Factored Objects}
 \pagepic{ps/v71ugxfactorednewpage.eps}{ugxFactoredNewPage}
@@ -8145,6 +21019,123 @@ returned by \spadfunFrom{factorList}{Factored}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFactoredNewPagePatch1}
+\begin{paste}{ugxFactoredNewPageFull1}{ugxFactoredNewPageEmpty1}
+\pastebutton{ugxFactoredNewPageFull1}{\hidepaste}
+\tab{5}\spadcommand{nilFactor(24,2)\bound{prev2 }}
+\indentrel{3}\begin{verbatim}
+          2
+   (1)  24
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty1}
+\begin{paste}{ugxFactoredNewPageEmpty1}{ugxFactoredNewPagePatch1}
+\pastebutton{ugxFactoredNewPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{nilFactor(24,2)\bound{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch2}
+\begin{paste}{ugxFactoredNewPageFull2}{ugxFactoredNewPageEmpty2}
+\pastebutton{ugxFactoredNewPageFull2}{\hidepaste}
+\tab{5}\spadcommand{nthFlag(\%,1)\free{prev2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  "nil"
+                                 Type: Union("nil",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty2}
+\begin{paste}{ugxFactoredNewPageEmpty2}{ugxFactoredNewPagePatch2}
+\pastebutton{ugxFactoredNewPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{nthFlag(\%,1)\free{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch3}
+\begin{paste}{ugxFactoredNewPageFull3}{ugxFactoredNewPageEmpty3}
+\pastebutton{ugxFactoredNewPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sqfrFactor(30,2)\bound{prev3 }}
+\indentrel{3}\begin{verbatim}
+          2
+   (3)  30
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty3}
+\begin{paste}{ugxFactoredNewPageEmpty3}{ugxFactoredNewPagePatch3}
+\pastebutton{ugxFactoredNewPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sqfrFactor(30,2)\bound{prev3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch4}
+\begin{paste}{ugxFactoredNewPageFull4}{ugxFactoredNewPageEmpty4}
+\pastebutton{ugxFactoredNewPageFull4}{\hidepaste}
+\tab{5}\spadcommand{irreducibleFactor(13,10)\bound{prev4 }}
+\indentrel{3}\begin{verbatim}
+          10
+   (4)  13
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty4}
+\begin{paste}{ugxFactoredNewPageEmpty4}{ugxFactoredNewPagePatch4}
+\pastebutton{ugxFactoredNewPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{irreducibleFactor(13,10)\bound{prev4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch5}
+\begin{paste}{ugxFactoredNewPageFull5}{ugxFactoredNewPageEmpty5}
+\pastebutton{ugxFactoredNewPageFull5}{\hidepaste}
+\tab{5}\spadcommand{primeFactor(11,5)\bound{prev5 }}
+\indentrel{3}\begin{verbatim}
+          5
+   (5)  11
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty5}
+\begin{paste}{ugxFactoredNewPageEmpty5}{ugxFactoredNewPagePatch5}
+\pastebutton{ugxFactoredNewPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{primeFactor(11,5)\bound{prev5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch6}
+\begin{paste}{ugxFactoredNewPageFull6}{ugxFactoredNewPageEmpty6}
+\pastebutton{ugxFactoredNewPageFull6}{\hidepaste}
+\tab{5}\spadcommand{h := factor(-720)\bound{h }}
+\indentrel{3}\begin{verbatim}
+           4 2
+   (6)  - 2 3 5
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty6}
+\begin{paste}{ugxFactoredNewPageEmpty6}{ugxFactoredNewPagePatch6}
+\pastebutton{ugxFactoredNewPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{h := factor(-720)\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPagePatch7}
+\begin{paste}{ugxFactoredNewPageFull7}{ugxFactoredNewPageEmpty7}
+\pastebutton{ugxFactoredNewPageFull7}{\hidepaste}
+\tab{5}\spadcommand{h - makeFR(unit(h),factorList(h))\free{h }}
+\indentrel{3}\begin{verbatim}
+   (7)  0
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredNewPageEmpty7}
+\begin{paste}{ugxFactoredNewPageEmpty7}{ugxFactoredNewPagePatch7}
+\pastebutton{ugxFactoredNewPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{h - makeFR(unit(h),factorList(h))\free{h }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxFactoredVarPage}{fr.ht}{Factored Objects with Variables}
 \pagepic{ps/v71ugxfactoredvarpage.eps}{ugxFactoredVarPage}
@@ -8182,6 +21173,91 @@ You can differentiate with respect to a variable.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxFactoredVarPagePatch1}
+\begin{paste}{ugxFactoredVarPageFull1}{ugxFactoredVarPageEmpty1}
+\pastebutton{ugxFactoredVarPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (1)
+      2            2      2                  2
+   (4x  - 12x + 9)y  + (4x  - 12x + 9)y + 28x  - 84x + 63
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPageEmpty1}
+\begin{paste}{ugxFactoredVarPageEmpty1}{ugxFactoredVarPagePatch1}
+\pastebutton{ugxFactoredVarPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPagePatch2}
+\begin{paste}{ugxFactoredVarPageFull2}{ugxFactoredVarPageEmpty2}
+\pastebutton{ugxFactoredVarPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fp := factor(p)\free{p }\bound{fp }}
+\indentrel{3}\begin{verbatim}
+                2  2
+   (2)  (2x - 3) (y  + y + 7)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPageEmpty2}
+\begin{paste}{ugxFactoredVarPageEmpty2}{ugxFactoredVarPagePatch2}
+\pastebutton{ugxFactoredVarPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fp := factor(p)\free{p }\bound{fp }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPagePatch3}
+\begin{paste}{ugxFactoredVarPageFull3}{ugxFactoredVarPageEmpty3}
+\pastebutton{ugxFactoredVarPageFull3}{\hidepaste}
+\tab{5}\spadcommand{D(p,x)\free{p }}
+\indentrel{3}\begin{verbatim}
+                  2
+   (3)  (8x - 12)y  + (8x - 12)y + 56x - 84
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPageEmpty3}
+\begin{paste}{ugxFactoredVarPageEmpty3}{ugxFactoredVarPagePatch3}
+\pastebutton{ugxFactoredVarPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{D(p,x)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPagePatch4}
+\begin{paste}{ugxFactoredVarPageFull4}{ugxFactoredVarPageEmpty4}
+\pastebutton{ugxFactoredVarPageFull4}{\hidepaste}
+\tab{5}\spadcommand{D(fp,x)\free{fp }\bound{prev1 }}
+\indentrel{3}\begin{verbatim}
+                   2
+   (4)  4(2x - 3)(y  + y + 7)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPageEmpty4}
+\begin{paste}{ugxFactoredVarPageEmpty4}{ugxFactoredVarPagePatch4}
+\pastebutton{ugxFactoredVarPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{D(fp,x)\free{fp }\bound{prev1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPagePatch5}
+\begin{paste}{ugxFactoredVarPageFull5}{ugxFactoredVarPageEmpty5}
+\pastebutton{ugxFactoredVarPageFull5}{\hidepaste}
+\tab{5}\spadcommand{numberOfFactors(\%)\free{prev1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxFactoredVarPageEmpty5}
+\begin{paste}{ugxFactoredVarPageEmpty5}{ugxFactoredVarPagePatch5}
+\pastebutton{ugxFactoredVarPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{numberOfFactors(\%)\free{prev1 }}
+\end{paste}\end{patch}
+
 @
 \section{fr2.ht}
 \pagehead{FactoredFnsTwoXmpPage}{fr2.ht}{FactoredFunctions2}
@@ -8245,6 +21321,103 @@ Section 8.13\ignore{ugProblemGalois}.
 \autobuttons
 \end{page}
 
+\begin{patch}{FactoredFnsTwoXmpPagePatch1}
+\begin{paste}{FactoredFnsTwoXmpPageFull1}{FactoredFnsTwoXmpPageEmpty1}
+\pastebutton{FactoredFnsTwoXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{double(x) == x + x\bound{double }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty1}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty1}{FactoredFnsTwoXmpPagePatch1}
+\pastebutton{FactoredFnsTwoXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{double(x) == x + x\bound{double }}
+\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPagePatch2}
+\begin{paste}{FactoredFnsTwoXmpPageFull2}{FactoredFnsTwoXmpPageEmpty2}
+\pastebutton{FactoredFnsTwoXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := factor(720)\bound{f }}
+\indentrel{3}\begin{verbatim}
+         4 2
+   (2)  2 3 5
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty2}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty2}{FactoredFnsTwoXmpPagePatch2}
+\pastebutton{FactoredFnsTwoXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := factor(720)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPagePatch3}
+\begin{paste}{FactoredFnsTwoXmpPageFull3}{FactoredFnsTwoXmpPageEmpty3}
+\pastebutton{FactoredFnsTwoXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{map(double,f)\free{f }\free{double }}
+\indentrel{3}\begin{verbatim}
+           4 2
+   (3)  2 4 6 10
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty3}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty3}{FactoredFnsTwoXmpPagePatch3}
+\pastebutton{FactoredFnsTwoXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{map(double,f)\free{f }\free{double }}
+\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPagePatch4}
+\begin{paste}{FactoredFnsTwoXmpPageFull4}{FactoredFnsTwoXmpPageEmpty4}
+\pastebutton{FactoredFnsTwoXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{makePoly(b) == x + b\bound{makePoly }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty4}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty4}{FactoredFnsTwoXmpPagePatch4}
+\pastebutton{FactoredFnsTwoXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{makePoly(b) == x + b\bound{makePoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPagePatch5}
+\begin{paste}{FactoredFnsTwoXmpPageFull5}{FactoredFnsTwoXmpPageEmpty5}
+\pastebutton{FactoredFnsTwoXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{g := map(makePoly,f)\free{f }\free{makePoly }\bound{g }}
+\indentrel{3}\begin{verbatim}
+                      4       2
+   (5)  (x + 1)(x + 2) (x + 3) (x + 5)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty5}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty5}{FactoredFnsTwoXmpPagePatch5}
+\pastebutton{FactoredFnsTwoXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{g := map(makePoly,f)\free{f }\free{makePoly }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPagePatch6}
+\begin{paste}{FactoredFnsTwoXmpPageFull6}{FactoredFnsTwoXmpPageEmpty6}
+\pastebutton{FactoredFnsTwoXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{nthFlag(g,1)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (6)  "nil"
+                                 Type: Union("nil",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FactoredFnsTwoXmpPageEmpty6}
+\begin{paste}{FactoredFnsTwoXmpPageEmpty6}{FactoredFnsTwoXmpPagePatch6}
+\pastebutton{FactoredFnsTwoXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{nthFlag(g,1)\free{g }}
+\end{paste}\end{patch}
+
 @
 \section{frac.ht}
 \pagehead{FractionXmpPage}{frac.ht}{Fraction}
@@ -8348,6 +21521,225 @@ in Section 2.7\ignore{ugTypesConvert}.
 \autobuttons
 \end{page}
 
+\begin{patch}{FractionXmpPagePatch1}
+\begin{paste}{FractionXmpPageFull1}{FractionXmpPageEmpty1}
+\pastebutton{FractionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a := 11/12\bound{a }}
+\indentrel{3}\begin{verbatim}
+        11
+   (1)  ÄÄ
+        12
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty1}
+\begin{paste}{FractionXmpPageEmpty1}{FractionXmpPagePatch1}
+\pastebutton{FractionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a := 11/12\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch2}
+\begin{paste}{FractionXmpPageFull2}{FractionXmpPageEmpty2}
+\pastebutton{FractionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{b := 23/24\bound{b }}
+\indentrel{3}\begin{verbatim}
+        23
+   (2)  ÄÄ
+        24
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty2}
+\begin{paste}{FractionXmpPageEmpty2}{FractionXmpPagePatch2}
+\pastebutton{FractionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{b := 23/24\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch3}
+\begin{paste}{FractionXmpPageFull3}{FractionXmpPageEmpty3}
+\pastebutton{FractionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{3 - a*b**2 + a + b/a\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+        313271
+   (3)  ÄÄÄÄÄÄ
+         76032
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty3}
+\begin{paste}{FractionXmpPageEmpty3}{FractionXmpPagePatch3}
+\pastebutton{FractionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{3 - a*b**2 + a + b/a\free{a }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch4}
+\begin{paste}{FractionXmpPageFull4}{FractionXmpPageEmpty4}
+\pastebutton{FractionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{numer(a)\free{a }}
+\indentrel{3}\begin{verbatim}
+   (4)  11
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty4}
+\begin{paste}{FractionXmpPageEmpty4}{FractionXmpPagePatch4}
+\pastebutton{FractionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{numer(a)\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch5}
+\begin{paste}{FractionXmpPageFull5}{FractionXmpPageEmpty5}
+\pastebutton{FractionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{denom(b)\free{b }}
+\indentrel{3}\begin{verbatim}
+   (5)  24
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty5}
+\begin{paste}{FractionXmpPageEmpty5}{FractionXmpPagePatch5}
+\pastebutton{FractionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{denom(b)\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch6}
+\begin{paste}{FractionXmpPageFull6}{FractionXmpPageEmpty6}
+\pastebutton{FractionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)\bound{r }}
+\indentrel{3}\begin{verbatim}
+         2
+        x  + 2x + 1
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄ
+         2
+        x  - 2x + 1
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty6}
+\begin{paste}{FractionXmpPageEmpty6}{FractionXmpPagePatch6}
+\pastebutton{FractionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch7}
+\begin{paste}{FractionXmpPageFull7}{FractionXmpPageEmpty7}
+\pastebutton{FractionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factor(r)\free{r }}
+\indentrel{3}\begin{verbatim}
+         2
+        x  + 2x + 1
+   (7)  ÄÄÄÄÄÄÄÄÄÄÄ
+         2
+        x  - 2x + 1
+             Type: Factored Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty7}
+\begin{paste}{FractionXmpPageEmpty7}{FractionXmpPagePatch7}
+\pastebutton{FractionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factor(r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch8}
+\begin{paste}{FractionXmpPageFull8}{FractionXmpPageEmpty8}
+\pastebutton{FractionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{map(factor,r)\free{r }}
+\indentrel{3}\begin{verbatim}
+               2
+        (x + 1)
+   (8)  ÄÄÄÄÄÄÄÄ
+               2
+        (x - 1)
+             Type: Fraction Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty8}
+\begin{paste}{FractionXmpPageEmpty8}{FractionXmpPagePatch8}
+\pastebutton{FractionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{map(factor,r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch9}
+\begin{paste}{FractionXmpPageFull9}{FractionXmpPageEmpty9}
+\pastebutton{FractionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{continuedFraction(7/12)}
+\indentrel{3}\begin{verbatim}
+          1 ³     1 ³     1 ³     1 ³
+   (9)  ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
+        ³ 1     ³ 1     ³ 2     ³ 2
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty9}
+\begin{paste}{FractionXmpPageEmpty9}{FractionXmpPagePatch9}
+\pastebutton{FractionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{continuedFraction(7/12)}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch10}
+\begin{paste}{FractionXmpPageFull10}{FractionXmpPageEmpty10}
+\pastebutton{FractionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{partialFraction(7,12)}
+\indentrel{3}\begin{verbatim}
+              3   1
+   (10)  1 - ÄÄ + Ä
+              2   3
+             2
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty10}
+\begin{paste}{FractionXmpPageEmpty10}{FractionXmpPagePatch10}
+\pastebutton{FractionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{partialFraction(7,12)}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch11}
+\begin{paste}{FractionXmpPageFull11}{FractionXmpPageEmpty11}
+\pastebutton{FractionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{g := 2/3 + 4/5*\%i\bound{g }}
+\indentrel{3}\begin{verbatim}
+         2   4
+   (11)  Ä + Ä %i
+         3   5
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty11}
+\begin{paste}{FractionXmpPageEmpty11}{FractionXmpPagePatch11}
+\pastebutton{FractionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{g := 2/3 + 4/5*\%i\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPagePatch12}
+\begin{paste}{FractionXmpPageFull12}{FractionXmpPageEmpty12}
+\pastebutton{FractionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{g :: FRAC COMPLEX INT\free{g }}
+\indentrel{3}\begin{verbatim}
+         10 + 12%i
+   (12)  ÄÄÄÄÄÄÄÄÄ
+             15
+                         Type: Fraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionXmpPageEmpty12}
+\begin{paste}{FractionXmpPageEmpty12}{FractionXmpPagePatch12}
+\pastebutton{FractionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{g :: FRAC COMPLEX INT\free{g }}
+\end{paste}\end{patch}
+
 @
 \section{fparfrac.ht}
 \pagehead{FullPartialFracExpansionXmpPage}{fparfrac.ht}
@@ -8455,6 +21847,417 @@ decompositions.
 \autobuttons
 \end{page}
 
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch1}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull1}{FullPartialFractionExpansionXmpPageEmpty1}
+\pastebutton{FullPartialFractionExpansionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Fx := FRAC UP(x, FRAC INT)\bound{Fx }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   Fraction UnivariatePolynomial(x,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty1}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty1}{FullPartialFractionExpansionXmpPagePatch1}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Fx := FRAC UP(x, FRAC INT)\bound{Fx }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch2}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull2}{FullPartialFractionExpansionXmpPageEmpty2}
+\pastebutton{FullPartialFractionExpansionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2)\bound{f }\free{Fx }}
+\indentrel{3}\begin{verbatim}
+                     36
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         5     4     3     2
+        x  - 2x  - 2x  + 4x  + x - 2
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty2}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty2}{FullPartialFractionExpansionXmpPagePatch2}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2)\bound{f }\free{Fx }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch3}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull3}{FullPartialFractionExpansionXmpPageEmpty3}
+\pastebutton{FullPartialFractionExpansionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\bound{g }\free{f }}
+\indentrel{3}\begin{verbatim}
+          4       4        ÄÄ¿      - 3%A - 6
+   (3)  ÄÄÄÄÄ - ÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄ
+        x - 2   x + 1      ÄÄÙ              2
+                          2         (x - %A)
+                        %A  - 1= 0
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty3}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty3}{FullPartialFractionExpansionXmpPagePatch3}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\bound{g }\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch4}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull4}{FullPartialFractionExpansionXmpPageEmpty4}
+\pastebutton{FullPartialFractionExpansionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g :: Fx\free{g }}
+\indentrel{3}\begin{verbatim}
+                     36
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         5     4     3     2
+        x  - 2x  - 2x  + 4x  + x - 2
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty4}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty4}{FullPartialFractionExpansionXmpPagePatch4}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g :: Fx\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch5}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull5}{FullPartialFractionExpansionXmpPageEmpty5}
+\pastebutton{FullPartialFractionExpansionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{g5 := D(g, 5)\free{g }\bound{g5 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+        480        480        ÄÄ¿      2160%A + 4320
+   - ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+            6          6      ÄÄÙ                7
+     (x - 2)    (x + 1)      2           (x - %A)
+                           %A  - 1= 0
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty5}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty5}{FullPartialFractionExpansionXmpPagePatch5}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{g5 := D(g, 5)\free{g }\bound{g5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch6}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull6}{FullPartialFractionExpansionXmpPageEmpty6}
+\pastebutton{FullPartialFractionExpansionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{f5 := D(f, 5)\free{f }\bound{f5 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+                10           9            8            7
+       - 544320x   + 4354560x  - 14696640x  + 28615680x
+     + 
+                  6            5            4            3
+       - 40085280x  + 46656000x  - 39411360x  + 18247680x
+     + 
+                 2
+       - 5870880x  + 3317760x + 246240
+  /
+        20      19      18      17       16       15
+       x   - 12x   + 53x   - 76x   - 159x   + 676x
+     + 
+             14        13        12        11        10
+       - 391x   - 1596x   + 2527x   + 1148x   - 4977x
+     + 
+            9        8        7        6        5       4
+       1372x  + 4907x  - 3444x  - 2381x  + 2924x  + 276x
+     + 
+              3       2
+       - 1184x  + 208x  + 192x - 64
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty6}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty6}{FullPartialFractionExpansionXmpPagePatch6}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{f5 := D(f, 5)\free{f }\bound{f5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch7}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull7}{FullPartialFractionExpansionXmpPageEmpty7}
+\pastebutton{FullPartialFractionExpansionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g5::Fx - f5\free{Fx g5 f5 }}
+\indentrel{3}\begin{verbatim}
+   (7)  0
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty7}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty7}{FullPartialFractionExpansionXmpPagePatch7}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g5::Fx - f5\free{Fx g5 f5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch8}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull8}{FullPartialFractionExpansionXmpPageEmpty8}
+\pastebutton{FullPartialFractionExpansionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)\free{Fx }\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+                       6    5
+                      x  - x
+   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         7     6     5     3     2
+        x  - 4x  + 3x  + 9x  - 6x  - 4x - 8
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty8}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty8}{FullPartialFractionExpansionXmpPagePatch8}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)\free{Fx }\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch9}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull9}{FullPartialFractionExpansionXmpPageEmpty9}
+\pastebutton{FullPartialFractionExpansionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f2 }\bound{g2 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+      1952       464        32
+      ÄÄÄÄ       ÄÄÄ        ÄÄ
+      2401       343        49
+     ÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
+      x - 2          2          3
+              (x - 2)    (x - 2)
+   + 
+                         179       135
+                      - ÄÄÄÄ %A + ÄÄÄÄ
+           ÄÄ¿          2401      2401
+           >          ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+           ÄÄÙ             x - %A
+       2
+     %A  + %A + 1= 0
+   + 
+                       37        20
+                      ÄÄÄÄ %A + ÄÄÄÄ
+           ÄÄ¿        1029      1029
+           >          ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+           ÄÄÙ                   2
+       2                 (x - %A)
+     %A  + %A + 1= 0
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty9}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty9}{FullPartialFractionExpansionXmpPagePatch9}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f2 }\bound{g2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch10}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull10}{FullPartialFractionExpansionXmpPageEmpty10}
+\pastebutton{FullPartialFractionExpansionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f2 g2 Fx }}
+\indentrel{3}\begin{verbatim}
+   (10)  0
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty10}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty10}{FullPartialFractionExpansionXmpPagePatch10}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f2 g2 Fx }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch11}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull11}{FullPartialFractionExpansionXmpPageEmpty11}
+\pastebutton{FullPartialFractionExpansionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{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)\free{Fx }\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+             7     5      3
+           2x  - 7x  + 26x  + 8x
+   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+          8     6     4     2
+         x  - 5x  + 6x  + 4x  - 8
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty11}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty11}{FullPartialFractionExpansionXmpPagePatch11}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{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)\free{Fx }\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch12}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull12}{FullPartialFractionExpansionXmpPageEmpty12}
+\pastebutton{FullPartialFractionExpansionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f3 }\bound{g3 }}
+\indentrel{3}\begin{verbatim}
+   (12)
+                    1
+                    Ä
+        ÄÄ¿         2        ÄÄ¿          1
+        >        ÄÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄ
+        ÄÄÙ      x - %A      ÄÄÙ              3
+       2                    2         (x - %A)
+     %A  - 2= 0           %A  - 2= 0
+   + 
+                    1
+                    Ä
+        ÄÄ¿         2
+        >        ÄÄÄÄÄÄ
+        ÄÄÙ      x - %A
+       2
+     %A  + 1= 0
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty12}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty12}{FullPartialFractionExpansionXmpPagePatch12}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f3 }\bound{g3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch13}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull13}{FullPartialFractionExpansionXmpPageEmpty13}
+\pastebutton{FullPartialFractionExpansionXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f3 g3 Fx }}
+\indentrel{3}\begin{verbatim}
+   (13)  0
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty13}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty13}{FullPartialFractionExpansionXmpPagePatch13}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f3 g3 Fx }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch14}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull14}{FullPartialFractionExpansionXmpPageEmpty14}
+\pastebutton{FullPartialFractionExpansionXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{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)\free{Fx }\bound{f4 }}
+\indentrel{3}\begin{verbatim}
+   (14)
+      3
+     x
+  /
+        21     20     19     18      17      16      15
+       x   + 2x   + 4x   + 7x   + 10x   + 17x   + 22x
+     + 
+          14      13      12      11      10      9      8
+       30x   + 36x   + 40x   + 47x   + 46x   + 49x  + 43x
+     + 
+          7      6      5      4      3     2
+       38x  + 32x  + 23x  + 19x  + 10x  + 7x  + 2x + 1
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty14}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty14}{FullPartialFractionExpansionXmpPagePatch14}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{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)\free{Fx }\bound{f4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch15}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull15}{FullPartialFractionExpansionXmpPageEmpty15}
+\pastebutton{FullPartialFractionExpansionXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f4 }\bound{g4 }}
+\indentrel{3}\begin{verbatim}
+   (15)
+                  1                        1      19
+                  Ä %A                     Ä %A - ÄÄ
+        ÄÄ¿       2             ÄÄ¿        9      27
+        >        ÄÄÄÄÄÄ +       >          ÄÄÄÄÄÄÄÄÄ
+        ÄÄÙ      x - %A         ÄÄÙ          x - %A
+       2                    2
+     %A  + 1= 0           %A  + %A + 1= 0
+   + 
+                       1       1
+                      ÄÄ %A - ÄÄ
+           ÄÄ¿        27      27
+           >          ÄÄÄÄÄÄÄÄÄÄ
+           ÄÄÙ                 2
+       2               (x - %A)
+     %A  + %A + 1= 0
+   + 
+     SIGMA
+          5     2
+        %A  + %A  + 1= 0
+    ,
+               96556567040   4   420961732891   3
+            - ÄÄÄÄÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄÄÄÄÄ %A
+              912390759099       912390759099
+          + 
+               59101056149   2   373545875923
+            - ÄÄÄÄÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄÄÄÄÄ %A
+              912390759099       912390759099
+          + 
+            529673492498
+            ÄÄÄÄÄÄÄÄÄÄÄÄ
+            912390759099
+       /
+          x - %A
+   + 
+     SIGMA
+          5     2
+        %A  + %A  + 1= 0
+    ,
+               5580868   4    2024443   3    4321919   2
+            - ÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄ %A
+              94070601       94070601       94070601
+          + 
+               84614        5070620
+            - ÄÄÄÄÄÄÄ %A - ÄÄÄÄÄÄÄÄ
+              1542141      94070601
+       /
+                  2
+          (x - %A)
+   + 
+     SIGMA
+          5     2
+        %A  + %A  + 1= 0
+    ,
+             1610957   4    2763014   3    2016775   2
+            ÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄ %A
+            94070601       94070601       94070601
+          + 
+             266953        4529359
+            ÄÄÄÄÄÄÄÄ %A + ÄÄÄÄÄÄÄÄ
+            94070601      94070601
+       /
+                  3
+          (x - %A)
+Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty15}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty15}{FullPartialFractionExpansionXmpPagePatch15}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{g := fullPartialFraction f\free{f4 }\bound{g4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPagePatch16}
+\begin{paste}{FullPartialFractionExpansionXmpPageFull16}{FullPartialFractionExpansionXmpPageEmpty16}
+\pastebutton{FullPartialFractionExpansionXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f4 g4 Fx }}
+\indentrel{3}\begin{verbatim}
+   (16)  0
+Type: Fraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FullPartialFractionExpansionXmpPageEmpty16}
+\begin{paste}{FullPartialFractionExpansionXmpPageEmpty16}{FullPartialFractionExpansionXmpPagePatch16}
+\pastebutton{FullPartialFractionExpansionXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{g :: Fx - f\free{f4 g4 Fx }}
+\end{paste}\end{patch}
+
 @
 \section{function.ht}
 \pagehead{FunctionPage}{function.ht}{Functions in Axiom}
@@ -8528,6 +22331,92 @@ similar to the one for polynomials:
 \autobuttons
 \end{page}
 
+\begin{patch}{RationatFunctionPagePatch1}
+\begin{paste}{RationatFunctionPageFull1}{RationatFunctionPageEmpty1}
+\pastebutton{RationatFunctionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := (x - y) / (x + y)\bound{f }}
+\indentrel{3}\begin{verbatim}
+        - y + x
+   (1)  ÄÄÄÄÄÄÄ
+         y + x
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPageEmpty1}
+\begin{paste}{RationatFunctionPageEmpty1}{RationatFunctionPagePatch1}
+\pastebutton{RationatFunctionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := (x - y) / (x + y)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPagePatch2}
+\begin{paste}{RationatFunctionPageFull2}{RationatFunctionPageEmpty2}
+\pastebutton{RationatFunctionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{numer f\free{f }}
+\indentrel{3}\begin{verbatim}
+   (2)  - y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPageEmpty2}
+\begin{paste}{RationatFunctionPageEmpty2}{RationatFunctionPagePatch2}
+\pastebutton{RationatFunctionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{numer f\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPagePatch3}
+\begin{paste}{RationatFunctionPageFull3}{RationatFunctionPageEmpty3}
+\pastebutton{RationatFunctionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{denom f\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPageEmpty3}
+\begin{paste}{RationatFunctionPageEmpty3}{RationatFunctionPagePatch3}
+\pastebutton{RationatFunctionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{denom f\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPagePatch4}
+\begin{paste}{RationatFunctionPageFull4}{RationatFunctionPageEmpty4}
+\pastebutton{RationatFunctionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{eval(f, x = 1/x)\free{f }}
+\indentrel{3}\begin{verbatim}
+        - x y + 1
+   (4)  ÄÄÄÄÄÄÄÄÄ
+         x y + 1
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPageEmpty4}
+\begin{paste}{RationatFunctionPageEmpty4}{RationatFunctionPagePatch4}
+\pastebutton{RationatFunctionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{eval(f, x = 1/x)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPagePatch5}
+\begin{paste}{RationatFunctionPageFull5}{RationatFunctionPageEmpty5}
+\pastebutton{RationatFunctionPageFull5}{\hidepaste}
+\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
+\indentrel{3}\begin{verbatim}
+        y - x
+   (5)  ÄÄÄÄÄ
+        y + x
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationatFunctionPageEmpty5}
+\begin{paste}{RationatFunctionPageEmpty5}{RationatFunctionPagePatch5}
+\pastebutton{RationatFunctionPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
+\end{paste}\end{patch}
+
 @
 \pagehead{AlgebraicFunctionPage}{function.ht}{Algebraic Functions}
 <<function.ht>>=
@@ -8556,7 +22445,119 @@ Use \spadfun{ratDenom} to remove the algebraic quantities
 from the denominator:
 \spadpaste{ratDenom g\free{g}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{AlgebraicFunctionPagePatch1}
+\begin{paste}{AlgebraicFunctionPageFull1}{AlgebraicFunctionPageEmpty1}
+\pastebutton{AlgebraicFunctionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := sqrt(1 + x ** (1/3))\bound{f }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄÄÄ¿
+         ³3ÚÄ¿
+   (1)  \³\³x  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty1}
+\begin{paste}{AlgebraicFunctionPageEmpty1}{AlgebraicFunctionPagePatch1}
+\pastebutton{AlgebraicFunctionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := sqrt(1 + x ** (1/3))\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPagePatch2}
+\begin{paste}{AlgebraicFunctionPageFull2}{AlgebraicFunctionPageEmpty2}
+\pastebutton{AlgebraicFunctionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{y := rootOf(y**3 + y**2 - x*y + x**3 - 1, y)\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (2)  y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty2}
+\begin{paste}{AlgebraicFunctionPageEmpty2}{AlgebraicFunctionPagePatch2}
+\pastebutton{AlgebraicFunctionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{y := rootOf(y**3 + y**2 - x*y + x**3 - 1, y)\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPagePatch3}
+\begin{paste}{AlgebraicFunctionPageFull3}{AlgebraicFunctionPageEmpty3}
+\pastebutton{AlgebraicFunctionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{differentiate(y, x)\free{y }}
+\indentrel{3}\begin{verbatim}
+                 2
+           y - 3x
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄ
+          2
+        3y  + 2y - x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty3}
+\begin{paste}{AlgebraicFunctionPageEmpty3}{AlgebraicFunctionPagePatch3}
+\pastebutton{AlgebraicFunctionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{differentiate(y, x)\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPagePatch4}
+\begin{paste}{AlgebraicFunctionPageFull4}{AlgebraicFunctionPageEmpty4}
+\pastebutton{AlgebraicFunctionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(y + 1) ** 3\free{y }}
+\indentrel{3}\begin{verbatim}
+          2               3
+   (4)  2y  + (x + 3)y - x  + 2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty4}
+\begin{paste}{AlgebraicFunctionPageEmpty4}{AlgebraicFunctionPagePatch4}
+\pastebutton{AlgebraicFunctionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(y + 1) ** 3\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPagePatch5}
+\begin{paste}{AlgebraicFunctionPageFull5}{AlgebraicFunctionPageEmpty5}
+\pastebutton{AlgebraicFunctionPageFull5}{\hidepaste}
+\tab{5}\spadcommand{g := inv f\bound{g }\free{y }}
+\indentrel{3}\begin{verbatim}
+             1
+   (5)  ÄÄÄÄÄÄÄÄÄÄÄ
+         ÚÄÄÄÄÄÄÄÄ¿
+         ³3ÚÄ¿
+        \³\³x  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty5}
+\begin{paste}{AlgebraicFunctionPageEmpty5}{AlgebraicFunctionPagePatch5}
+\pastebutton{AlgebraicFunctionPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{g := inv f\bound{g }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPagePatch6}
+\begin{paste}{AlgebraicFunctionPageFull6}{AlgebraicFunctionPageEmpty6}
+\pastebutton{AlgebraicFunctionPageFull6}{\hidepaste}
+\tab{5}\spadcommand{ratDenom g\free{g }}
+\indentrel{3}\begin{verbatim}
+                           ÚÄÄÄÄÄÄÄÄ¿
+         3ÚÄ¿2   3ÚÄ¿      ³3ÚÄ¿
+        (\³x   - \³x  + 1)\³\³x  + 1
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                    x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AlgebraicFunctionPageEmpty6}
+\begin{paste}{AlgebraicFunctionPageEmpty6}{AlgebraicFunctionPagePatch6}
+\pastebutton{AlgebraicFunctionPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{ratDenom g\free{g }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ElementaryFunctionPage}{function.ht}{Elementary Functions}
@@ -8573,7 +22574,62 @@ case of polynomials. It's also possible to substitute expressions
 for kernels instead of variables:
 \spadpaste{eval(f, log y = acosh(x + sqrt y))\free{f}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ElementaryFunctionPagePatch1}
+\begin{paste}{ElementaryFunctionPageFull1}{ElementaryFunctionPageEmpty1}
+\pastebutton{ElementaryFunctionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := x * log y * sin(1/(x+y))\bound{f }}
+\indentrel{3}\begin{verbatim}
+                      1
+   (1)  x log(y)sin(ÄÄÄÄÄ)
+                    y + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ElementaryFunctionPageEmpty1}
+\begin{paste}{ElementaryFunctionPageEmpty1}{ElementaryFunctionPagePatch1}
+\pastebutton{ElementaryFunctionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := x * log y * sin(1/(x+y))\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ElementaryFunctionPagePatch2}
+\begin{paste}{ElementaryFunctionPageFull2}{ElementaryFunctionPageEmpty2}
+\pastebutton{ElementaryFunctionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
+\indentrel{3}\begin{verbatim}
+                      1
+   (2)  y log(x)sin(ÄÄÄÄÄ)
+                    y + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ElementaryFunctionPageEmpty2}
+\begin{paste}{ElementaryFunctionPageEmpty2}{ElementaryFunctionPagePatch2}
+\pastebutton{ElementaryFunctionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ElementaryFunctionPagePatch3}
+\begin{paste}{ElementaryFunctionPageFull3}{ElementaryFunctionPageEmpty3}
+\pastebutton{ElementaryFunctionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{eval(f, log y = acosh(x + sqrt y))\free{f }}
+\indentrel{3}\begin{verbatim}
+                1          ÚÄ¿
+   (3)  x sin(ÄÄÄÄÄ)acosh(\³y  + x)
+              y + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ElementaryFunctionPageEmpty3}
+\begin{paste}{ElementaryFunctionPageEmpty3}{ElementaryFunctionPagePatch3}
+\pastebutton{ElementaryFunctionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{eval(f, log y = acosh(x + sqrt y))\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{FunctionSimplificationPage}{function.ht}{Simplification}
@@ -8636,6 +22692,262 @@ matcher}{ugUserRulesPage}.
 \autobuttons
 \end{page}
 
+\begin{patch}{FunctionSimplificationPagePatch1}
+\begin{paste}{FunctionSimplificationPageFull1}{FunctionSimplificationPageEmpty1}
+\pastebutton{FunctionSimplificationPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := cos(x)/sec(x) * log(sin(x)**2/(cos(x)**2+sin(x)**2))\bound{f }}
+\indentrel{3}\begin{verbatim}
+                             2
+                       sin(x)
+        cos(x)log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                        2         2
+                  sin(x)  + cos(x)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   sec(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty1}
+\begin{paste}{FunctionSimplificationPageEmpty1}{FunctionSimplificationPagePatch1}
+\pastebutton{FunctionSimplificationPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := cos(x)/sec(x) * log(sin(x)**2/(cos(x)**2+sin(x)**2))\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch2}
+\begin{paste}{FunctionSimplificationPageFull2}{FunctionSimplificationPageEmpty2}
+\pastebutton{FunctionSimplificationPageFull2}{\hidepaste}
+\tab{5}\spadcommand{g := simplify f\bound{g }\free{f }}
+\indentrel{3}\begin{verbatim}
+              2            2
+   (2)  cos(x) log(- cos(x)  + 1)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty2}
+\begin{paste}{FunctionSimplificationPageEmpty2}{FunctionSimplificationPagePatch2}
+\pastebutton{FunctionSimplificationPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{g := simplify f\bound{g }\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch3}
+\begin{paste}{FunctionSimplificationPageFull3}{FunctionSimplificationPageEmpty3}
+\pastebutton{FunctionSimplificationPageFull3}{\hidepaste}
+\tab{5}\spadcommand{h := sin2csc cos2sec g\bound{h }\free{g }}
+\indentrel{3}\begin{verbatim}
+                  2
+            sec(x)  - 1
+        log(ÄÄÄÄÄÄÄÄÄÄÄ)
+                    2
+              sec(x)
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   2
+             sec(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty3}
+\begin{paste}{FunctionSimplificationPageEmpty3}{FunctionSimplificationPagePatch3}
+\pastebutton{FunctionSimplificationPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{h := sin2csc cos2sec g\bound{h }\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch4}
+\begin{paste}{FunctionSimplificationPageFull4}{FunctionSimplificationPageEmpty4}
+\pastebutton{FunctionSimplificationPageFull4}{\hidepaste}
+\tab{5}\spadcommand{expandLog h\free{h }}
+\indentrel{3}\begin{verbatim}
+                  2
+        log(sec(x)  - 1) - 2log(sec(x))
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                          2
+                    sec(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty4}
+\begin{paste}{FunctionSimplificationPageEmpty4}{FunctionSimplificationPagePatch4}
+\pastebutton{FunctionSimplificationPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{expandLog h\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch5}
+\begin{paste}{FunctionSimplificationPageFull5}{FunctionSimplificationPageEmpty5}
+\pastebutton{FunctionSimplificationPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f1 := sqrt((x+1)**3)\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+         ³ 3     2
+   (5)  \³x  + 3x  + 3x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty5}
+\begin{paste}{FunctionSimplificationPageEmpty5}{FunctionSimplificationPagePatch5}
+\pastebutton{FunctionSimplificationPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f1 := sqrt((x+1)**3)\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch6}
+\begin{paste}{FunctionSimplificationPageFull6}{FunctionSimplificationPageEmpty6}
+\pastebutton{FunctionSimplificationPageFull6}{\hidepaste}
+\tab{5}\spadcommand{rootSimp f1\free{f1 }}
+\indentrel{3}\begin{verbatim}
+                ÚÄÄÄÄÄ¿
+   (6)  (x + 1)\³x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty6}
+\begin{paste}{FunctionSimplificationPageEmpty6}{FunctionSimplificationPagePatch6}
+\pastebutton{FunctionSimplificationPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{rootSimp f1\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch7}
+\begin{paste}{FunctionSimplificationPageFull7}{FunctionSimplificationPageEmpty7}
+\pastebutton{FunctionSimplificationPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g1 := sin(x + cos x)\bound{g1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  sin(cos(x) + x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty7}
+\begin{paste}{FunctionSimplificationPageEmpty7}{FunctionSimplificationPagePatch7}
+\pastebutton{FunctionSimplificationPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g1 := sin(x + cos x)\bound{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch8}
+\begin{paste}{FunctionSimplificationPageFull8}{FunctionSimplificationPageEmpty8}
+\pastebutton{FunctionSimplificationPageFull8}{\hidepaste}
+\tab{5}\spadcommand{g2 := complexElementary g1\bound{g2 }\free{g1 }}
+\indentrel{3}\begin{verbatim}
+   (8)
+       -
+             ÚÄÄÄ¿
+            \³- 1
+         *
+                %e
+             **
+                               ÚÄÄÄ¿ 2               ÚÄÄÄ¿
+                     ÚÄÄÄ¿   x\³- 1         ÚÄÄÄ¿  x\³- 1
+                    \³- 1 (%e       )  + 2x\³- 1 %e
+                  + 
+                     ÚÄÄÄ¿
+                    \³- 1
+               /
+                       ÚÄÄÄ¿
+                     x\³- 1
+                  2%e
+           **
+              2
+     + 
+        ÚÄÄÄ¿
+       \³- 1
+  /
+                   ÚÄÄÄ¿ 2               ÚÄÄÄ¿
+         ÚÄÄÄ¿   x\³- 1         ÚÄÄÄ¿  x\³- 1     ÚÄÄÄ¿
+        \³- 1 (%e       )  + 2x\³- 1 %e        + \³- 1
+        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                                ÚÄÄÄ¿
+                              x\³- 1
+                           2%e
+     2%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty8}
+\begin{paste}{FunctionSimplificationPageEmpty8}{FunctionSimplificationPagePatch8}
+\pastebutton{FunctionSimplificationPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g2 := complexElementary g1\bound{g2 }\free{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch9}
+\begin{paste}{FunctionSimplificationPageFull9}{FunctionSimplificationPageEmpty9}
+\pastebutton{FunctionSimplificationPageFull9}{\hidepaste}
+\tab{5}\spadcommand{trigs g2\free{g2 }}
+\indentrel{3}\begin{verbatim}
+   (9)  sin(cos(x) + x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty9}
+\begin{paste}{FunctionSimplificationPageEmpty9}{FunctionSimplificationPagePatch9}
+\pastebutton{FunctionSimplificationPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{trigs g2\free{g2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch10}
+\begin{paste}{FunctionSimplificationPageFull10}{FunctionSimplificationPageEmpty10}
+\pastebutton{FunctionSimplificationPageFull10}{\hidepaste}
+\tab{5}\spadcommand{h1 := sinh(x + cosh x)\bound{h1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  sinh(cosh(x) + x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty10}
+\begin{paste}{FunctionSimplificationPageEmpty10}{FunctionSimplificationPagePatch10}
+\pastebutton{FunctionSimplificationPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{h1 := sinh(x + cosh x)\bound{h1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch11}
+\begin{paste}{FunctionSimplificationPageFull11}{FunctionSimplificationPageEmpty11}
+\pastebutton{FunctionSimplificationPageFull11}{\hidepaste}
+\tab{5}\spadcommand{h2 := realElementary h1\bound{h2 }\free{h1 }}
+\indentrel{3}\begin{verbatim}
+               x 2        x     2
+            (%e )  + 2x %e  + 1
+            ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                       x
+                    2%e
+         (%e                   )  - 1
+   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                  x 2        x
+               (%e )  + 2x %e  + 1
+               ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                          x
+                       2%e
+            2%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty11}
+\begin{paste}{FunctionSimplificationPageEmpty11}{FunctionSimplificationPagePatch11}
+\pastebutton{FunctionSimplificationPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{h2 := realElementary h1\bound{h2 }\free{h1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPagePatch12}
+\begin{paste}{FunctionSimplificationPageFull12}{FunctionSimplificationPageEmpty12}
+\pastebutton{FunctionSimplificationPageFull12}{\hidepaste}
+\tab{5}\spadcommand{htrigs h2\free{h2 }}
+\indentrel{3}\begin{verbatim}
+   (12)  sinh(cosh(x) + x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FunctionSimplificationPageEmpty12}
+\begin{paste}{FunctionSimplificationPageEmpty12}{FunctionSimplificationPagePatch12}
+\pastebutton{FunctionSimplificationPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{htrigs h2\free{h2 }}
+\end{paste}
+\end{patch}
+
 @
 \section{gbf.ht}
 \pagehead{GroebnerFactorizationPkgXmpPage}{gbf.ht}
@@ -8733,6 +23045,116 @@ used.
 \autobuttons
 \end{page}
 
+\begin{patch}{GroebnerFactorizationPackageXmpPagePatch1}
+\begin{paste}{GroebnerFactorizationPackageXmpPageFull1}{GroebnerFactorizationPackageXmpPageEmpty1}
+\pastebutton{GroebnerFactorizationPackageXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{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]]\bound{mfzn }}
+\indentrel{3}\begin{verbatim}
+        Ú0  1  1  1  1  1¿
+        ³                ³
+        ³         8     8³
+        ³1  0  1  Ä  x  Ä³
+        ³         3     3³
+        ³                ³
+        ³            8   ³
+        ³1  1  0  1  Ä  y³
+        ³            3   ³
+        ³                ³
+   (1)  ³   8           8³
+        ³1  Ä  1  0  1  Ä³
+        ³   3           3³
+        ³                ³
+        ³      8         ³
+        ³1  x  Ä  1  0  1³
+        ³      3         ³
+        ³                ³
+        ³   8     8      ³
+        ³1  Ä  y  Ä  1  0³
+        À   3     3      Ù
+Type: SquareMatrix(6,DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty1}
+\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty1}{GroebnerFactorizationPackageXmpPagePatch1}
+\pastebutton{GroebnerFactorizationPackageXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{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]]\bound{mfzn }}
+\end{paste}\end{patch}
+
+\begin{patch}{GroebnerFactorizationPackageXmpPagePatch2}
+\begin{paste}{GroebnerFactorizationPackageXmpPageFull2}{GroebnerFactorizationPackageXmpPageEmpty2}
+\pastebutton{GroebnerFactorizationPackageXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{eq := determinant mfzn\free{mfzn }\bound{eq }}
+\indentrel{3}\begin{verbatim}
+   (2)
+        2 2   22  2    25  2   22    2   388       250
+     - x y  + ÄÄ x y - ÄÄ x  + ÄÄ x y  - ÄÄÄ x y - ÄÄÄ x
+               3        9       3         9         27
+   + 
+       25  2   250     14575
+     - ÄÄ y  - ÄÄÄ y + ÄÄÄÄÄ
+        9       27       81
+Type: DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty2}
+\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty2}{GroebnerFactorizationPackageXmpPagePatch2}
+\pastebutton{GroebnerFactorizationPackageXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eq := determinant mfzn\free{mfzn }\bound{eq }}
+\end{paste}\end{patch}
+
+\begin{patch}{GroebnerFactorizationPackageXmpPagePatch3}
+\begin{paste}{GroebnerFactorizationPackageXmpPageFull3}{GroebnerFactorizationPackageXmpPageEmpty3}
+\pastebutton{GroebnerFactorizationPackageXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])]\free{eq }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [
+                  22           22     22     121
+     [x y + x z - ÄÄ x + y z - ÄÄ y - ÄÄ z + ÄÄÄ,
+                   3            3      3      3
+
+            2   22       25        2   22       25
+         x z  - ÄÄ x z + ÄÄ x + y z  - ÄÄ y z + ÄÄ y
+                 3        9             3        9
+       + 
+           22  2   388     250
+         - ÄÄ z  + ÄÄÄ z + ÄÄÄ
+            3       9       27
+       ,
+
+          2 2   22  2    25  2   22    2   388       250
+         y z  - ÄÄ y z + ÄÄ y  - ÄÄ y z  + ÄÄÄ y z + ÄÄÄ y
+                 3        9       3         9         27
+       + 
+         25  2   250     14575
+         ÄÄ z  + ÄÄÄ z - ÄÄÄÄÄ
+          9       27       81
+       ]
+     ,
+             21994  2   21994     4427     463
+    [x + y - ÄÄÄÄÄ,y  - ÄÄÄÄÄ y + ÄÄÄÄ,z - ÄÄÄ],
+              5625       5625      675      87
+      2   1       11     5     265        2   38     265
+    [x  - Ä x z - ÄÄ x - Ä z + ÄÄÄ,y - z,z  - ÄÄ z + ÄÄÄ],
+          2        2     6      18             3      9
+         25     11     11        11     11     11
+    [x - ÄÄ,y - ÄÄ,z - ÄÄ], [x - ÄÄ,y - ÄÄ,z - ÄÄ],
+          9      3      3         3      3      3
+         5     5     5        19     5     5
+    [x + Ä,y + Ä,z + Ä], [x - ÄÄ,y + Ä,z + Ä]]
+         3     3     3         3     3     3
+Type: List List DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty3}
+\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty3}{GroebnerFactorizationPackageXmpPagePatch3}
+\pastebutton{GroebnerFactorizationPackageXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])]\free{eq }}
+\end{paste}\end{patch}
+
 @
 \section{gloss.ht}
 \pagehead{GlossaryPage}{gloss.ht}{Glossary}
@@ -9879,7 +24301,102 @@ Implicit curves: p(x,y) = 0.
 Run all examples.
 \spadpaste{All \free{example1 example2 example3 example4 example5 example6}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch1}
+\begin{paste}{AssortedGraphicsExamplePageFull1}{AssortedGraphicsExamplePageEmpty1}
+\pastebutton{AssortedGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(x * y), x = -2.5..2.5, y = -2.5..2.5)\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty1}
+\begin{paste}{AssortedGraphicsExamplePageEmpty1}{AssortedGraphicsExamplePagePatch1}
+\pastebutton{AssortedGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(x * y), x = -2.5..2.5, y = -2.5..2.5)\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch2}
+\begin{paste}{AssortedGraphicsExamplePageFull2}{AssortedGraphicsExamplePageEmpty2}
+\pastebutton{AssortedGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(sin tan x - tan sin x,x = 0..6)\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty2}
+\begin{paste}{AssortedGraphicsExamplePageEmpty2}{AssortedGraphicsExamplePagePatch2}
+\pastebutton{AssortedGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(sin tan x - tan sin x,x = 0..6)\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch3}
+\begin{paste}{AssortedGraphicsExamplePageFull3}{AssortedGraphicsExamplePageEmpty3}
+\pastebutton{AssortedGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t)), t = 0..2*\%pi)\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty3}
+\begin{paste}{AssortedGraphicsExamplePageEmpty3}{AssortedGraphicsExamplePagePatch3}
+\pastebutton{AssortedGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t)), t = 0..2*\%pi)\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch4}
+\begin{paste}{AssortedGraphicsExamplePageFull4}{AssortedGraphicsExamplePageEmpty4}
+\pastebutton{AssortedGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t), sin(5*t)*sin(6*t)), t = 0..2*\%pi)\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty4}
+\begin{paste}{AssortedGraphicsExamplePageEmpty4}{AssortedGraphicsExamplePagePatch4}
+\pastebutton{AssortedGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t), sin(5*t)*sin(6*t)), t = 0..2*\%pi)\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch5}
+\begin{paste}{AssortedGraphicsExamplePageFull5}{AssortedGraphicsExamplePageEmpty5}
+\pastebutton{AssortedGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar)\bound{example5 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty5}
+\begin{paste}{AssortedGraphicsExamplePageEmpty5}{AssortedGraphicsExamplePagePatch5}
+\pastebutton{AssortedGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar)\bound{example5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch6}
+\begin{paste}{AssortedGraphicsExamplePageFull6}{AssortedGraphicsExamplePageEmpty6}
+\pastebutton{AssortedGraphicsExamplePageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y,range == [-2..2,-2..1])\bound{example6 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty6}
+\begin{paste}{AssortedGraphicsExamplePageEmpty6}{AssortedGraphicsExamplePagePatch6}
+\pastebutton{AssortedGraphicsExamplePageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y,range == [-2..2,-2..1])\bound{example6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePagePatch7}
+\begin{paste}{AssortedGraphicsExamplePageFull7}{AssortedGraphicsExamplePageEmpty7}
+\pastebutton{AssortedGraphicsExamplePageFull7}{\hidepaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 example5 example6 }}
+\indentrel{3}\begin{verbatim}
+   (7)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{AssortedGraphicsExamplePageEmpty7}
+\begin{paste}{AssortedGraphicsExamplePageEmpty7}{AssortedGraphicsExamplePagePatch7}
+\pastebutton{AssortedGraphicsExamplePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 example5 example6 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ThreeDimensionalGraphicsExamplePage}{graphics.ht}
@@ -9928,7 +24445,188 @@ title=="Banchoff Klein Bottle") \free{f g h} \bound{example4}}
 \newline
 \spadpaste{All \free{example1 example2 example3 example4}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch1}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull1}{ThreeDimensionalGraphicsExamplePageEmpty1}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(surface((1+exp(-100*u*u))*sin(\%pi*u)*sin(\%pi*v), (1+exp(-100*u*u))*sin(\%pi*u)*cos(\%pi*v), (1+exp(-100*u*u))*cos(\%pi*u)), u=0..1, v=0..2, title=="Pear")\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty1}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty1}{ThreeDimensionalGraphicsExamplePagePatch1}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(surface((1+exp(-100*u*u))*sin(\%pi*u)*sin(\%pi*v), (1+exp(-100*u*u))*sin(\%pi*u)*cos(\%pi*v), (1+exp(-100*u*u))*cos(\%pi*u)), u=0..1, v=0..2, title=="Pear")\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch2}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull2}{ThreeDimensionalGraphicsExamplePageEmpty2}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(x*cos(y),x*sin(y),y*cos(x)), x=-4..4, y=0..2*\%pi, var1Steps==40, var2Steps==40, title=="Trig Screw")\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty2}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty2}{ThreeDimensionalGraphicsExamplePagePatch2}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(surface(x*cos(y),x*sin(y),y*cos(x)), x=-4..4, y=0..2*\%pi, var1Steps==40, var2Steps==40, title=="Trig Screw")\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch3}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull3}{ThreeDimensionalGraphicsExamplePageEmpty3}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadcommand{a := 1.3 * cos(2*x) * cos(y) + sin(y) * cos(x)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (3)  cos(x)sin(y) + 1.3 cos(2.0 x)cos(y)
+                                 Type: Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty3}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty3}{ThreeDimensionalGraphicsExamplePagePatch3}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a := 1.3 * cos(2*x) * cos(y) + sin(y) * cos(x)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch4}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull4}{ThreeDimensionalGraphicsExamplePageEmpty4}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadcommand{b := 1.3 * sin(2*x) * cos(y) - sin(y) * sin(x)\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (4)  - 1.0 sin(x)sin(y) + 1.3 cos(y)sin(2.0 x)
+                                 Type: Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty4}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty4}{ThreeDimensionalGraphicsExamplePagePatch4}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b := 1.3 * sin(2*x) * cos(y) - sin(y) * sin(x)\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch5}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull5}{ThreeDimensionalGraphicsExamplePageEmpty5}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{c := 2.5 * cos(y)\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (5)  2.5 cos(y)
+                                 Type: Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty5}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty5}{ThreeDimensionalGraphicsExamplePagePatch5}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{c := 2.5 * cos(y)\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch6}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull6}{ThreeDimensionalGraphicsExamplePageEmpty6}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(a,b,c), x=0..\%pi, y=-\%pi..\%pi, var1Steps==40, var2Steps==40, title=="Etruscan Venus")\free{a b c }\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty6}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty6}{ThreeDimensionalGraphicsExamplePagePatch6}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(surface(a,b,c), x=0..\%pi, y=-\%pi..\%pi, var1Steps==40, var2Steps==40, title=="Etruscan Venus")\free{a b c }\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch7}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull7}{ThreeDimensionalGraphicsExamplePageEmpty7}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull7}{\hidepaste}
+\tab{5}\spadcommand{f:=cos(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (7)
+                     x              x
+     cos(x)cos(y)sin(Ä)sin(y) + cos(Ä)cos(x)cos(y)
+                     2              2
+   + 
+      ÚÄ¿    x
+     \³2 cos(Ä)cos(x)
+             2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty7}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty7}{ThreeDimensionalGraphicsExamplePagePatch7}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f:=cos(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch8}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull8}{ThreeDimensionalGraphicsExamplePageEmpty8}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull8}{\hidepaste}
+\tab{5}\spadcommand{g:=sin(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (8)
+               x
+     cos(y)sin(Ä)sin(x)sin(y)
+               2
+   + 
+          x           ÚÄ¿    x
+     (cos(Ä)cos(y) + \³2 cos(Ä))sin(x)
+          2                  2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty8}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty8}{ThreeDimensionalGraphicsExamplePagePatch8}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g:=sin(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch9}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull9}{ThreeDimensionalGraphicsExamplePageEmpty9}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull9}{\hidepaste}
+\tab{5}\spadcommand{h:=-sin(x/2)*(sqrt(2)+cos(y)) + cos(x/2)*sin(y)*cos(y)\bound{h }}
+\indentrel{3}\begin{verbatim}
+            x                             ÚÄ¿     x
+   (9)  cos(Ä)cos(y)sin(y) + (- cos(y) - \³2 )sin(Ä)
+            2                                     2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty9}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty9}{ThreeDimensionalGraphicsExamplePagePatch9}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{h:=-sin(x/2)*(sqrt(2)+cos(y)) + cos(x/2)*sin(y)*cos(y)\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch10}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull10}{ThreeDimensionalGraphicsExamplePageEmpty10}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull10}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(f,g,h), x=0..4*\%pi, y=0..2*\%pi, var1Steps==50, var2Steps==50, title=="Banchoff Klein Bottle")\free{f g h }\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty10}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty10}{ThreeDimensionalGraphicsExamplePagePatch10}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty10}{\showpaste}
+\tab{5}\spadgraph{draw(surface(f,g,h), x=0..4*\%pi, y=0..2*\%pi, var1Steps==50, var2Steps==50, title=="Banchoff Klein Bottle")\free{f g h }\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch11}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageFull11}{ThreeDimensionalGraphicsExamplePageEmpty11}
+\pastebutton{ThreeDimensionalGraphicsExamplePageFull11}{\hidepaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\indentrel{3}\begin{verbatim}
+   (11)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty11}
+\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty11}{ThreeDimensionalGraphicsExamplePagePatch11}
+\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{OneVariableGraphicsExamplePage}{graphics.ht}
@@ -9948,7 +24646,76 @@ Choose a particular example or choose 'All' to see all the examples.
 \newline
 \spadpaste{All \free{example1 example2 example3 example4}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{OneVariableGraphicsExamplePagePatch1}
+\begin{paste}{OneVariableGraphicsExamplePageFull1}{OneVariableGraphicsExamplePageEmpty1}
+\pastebutton{OneVariableGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin tan x - tan sin x, x = 0..6)\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePageEmpty1}
+\begin{paste}{OneVariableGraphicsExamplePageEmpty1}{OneVariableGraphicsExamplePagePatch1}
+\pastebutton{OneVariableGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin tan x - tan sin x, x = 0..6)\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePagePatch2}
+\begin{paste}{OneVariableGraphicsExamplePageFull2}{OneVariableGraphicsExamplePageEmpty2}
+\pastebutton{OneVariableGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(sin x + cos x, x = 0..2*\%pi)\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePageEmpty2}
+\begin{paste}{OneVariableGraphicsExamplePageEmpty2}{OneVariableGraphicsExamplePagePatch2}
+\pastebutton{OneVariableGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(sin x + cos x, x = 0..2*\%pi)\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePagePatch3}
+\begin{paste}{OneVariableGraphicsExamplePageFull3}{OneVariableGraphicsExamplePageEmpty3}
+\pastebutton{OneVariableGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(1/x), x = -1..1)\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePageEmpty3}
+\begin{paste}{OneVariableGraphicsExamplePageEmpty3}{OneVariableGraphicsExamplePagePatch3}
+\pastebutton{OneVariableGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(sin(1/x), x = -1..1)\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePagePatch4}
+\begin{paste}{OneVariableGraphicsExamplePageFull4}{OneVariableGraphicsExamplePageEmpty4}
+\pastebutton{OneVariableGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(x * sin(1/x), x = -1..1)\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePageEmpty4}
+\begin{paste}{OneVariableGraphicsExamplePageEmpty4}{OneVariableGraphicsExamplePagePatch4}
+\pastebutton{OneVariableGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(x * sin(1/x), x = -1..1)\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePagePatch5}
+\begin{paste}{OneVariableGraphicsExamplePageFull5}{OneVariableGraphicsExamplePageEmpty5}
+\pastebutton{OneVariableGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\indentrel{3}\begin{verbatim}
+   (5)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsExamplePageEmpty5}
+\begin{paste}{OneVariableGraphicsExamplePageEmpty5}{OneVariableGraphicsExamplePagePatch5}
+\pastebutton{OneVariableGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ParametricCurveGraphicsExamplePage}{graphics.ht}
@@ -9974,7 +24741,76 @@ t = 0..2*\%pi) \bound{example4}}
 Run all examples on this page.
 \spadpaste{All \free{example1 example2 example3 example4}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ParametricCurveGraphicsExamplePagePatch1}
+\begin{paste}{ParametricCurveGraphicsExamplePageFull1}{ParametricCurveGraphicsExamplePageEmpty1}
+\pastebutton{ParametricCurveGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t/(1+sin(t)**2)), sin(t)*cos(t)/(1+sin(t)**2)), t = -\%pi..\%pi)\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePageEmpty1}
+\begin{paste}{ParametricCurveGraphicsExamplePageEmpty1}{ParametricCurveGraphicsExamplePagePatch1}
+\pastebutton{ParametricCurveGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t/(1+sin(t)**2)), sin(t)*cos(t)/(1+sin(t)**2)), t = -\%pi..\%pi)\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePagePatch2}
+\begin{paste}{ParametricCurveGraphicsExamplePageFull2}{ParametricCurveGraphicsExamplePageEmpty2}
+\pastebutton{ParametricCurveGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(9*sin(3*t/4), 8*sin(t)), t = -4*\%pi..4*\%pi)\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePageEmpty2}
+\begin{paste}{ParametricCurveGraphicsExamplePageEmpty2}{ParametricCurveGraphicsExamplePagePatch2}
+\pastebutton{ParametricCurveGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(curve(9*sin(3*t/4), 8*sin(t)), t = -4*\%pi..4*\%pi)\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePagePatch3}
+\begin{paste}{ParametricCurveGraphicsExamplePageFull3}{ParametricCurveGraphicsExamplePageEmpty3}
+\pastebutton{ParametricCurveGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)),t = 0..2*\%pi)\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePageEmpty3}
+\begin{paste}{ParametricCurveGraphicsExamplePageEmpty3}{ParametricCurveGraphicsExamplePagePatch3}
+\pastebutton{ParametricCurveGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)),t = 0..2*\%pi)\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePagePatch4}
+\begin{paste}{ParametricCurveGraphicsExamplePageFull4}{ParametricCurveGraphicsExamplePageEmpty4}
+\pastebutton{ParametricCurveGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(4*t)*cos(7*t), cos(4*t)*sin(7*t)), t = 0..2*\%pi)\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePageEmpty4}
+\begin{paste}{ParametricCurveGraphicsExamplePageEmpty4}{ParametricCurveGraphicsExamplePagePatch4}
+\pastebutton{ParametricCurveGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(4*t)*cos(7*t), cos(4*t)*sin(7*t)), t = 0..2*\%pi)\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePagePatch5}
+\begin{paste}{ParametricCurveGraphicsExamplePageFull5}{ParametricCurveGraphicsExamplePageEmpty5}
+\pastebutton{ParametricCurveGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\indentrel{3}\begin{verbatim}
+   (5)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsExamplePageEmpty5}
+\begin{paste}{ParametricCurveGraphicsExamplePageEmpty5}{ParametricCurveGraphicsExamplePagePatch5}
+\pastebutton{ParametricCurveGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{PolarGraphicsExamplePage}{graphics.ht}{Polar Coordinates}
@@ -9998,7 +24834,76 @@ Run all examples on this page.
 %example1
 example2 example3 example4}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{PolarGraphicsExamplePagePatch1}
+\begin{paste}{PolarGraphicsExamplePageFull1}{PolarGraphicsExamplePageEmpty1}
+\pastebutton{PolarGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(1,t = 0..2*\%pi, coordinates == polar)\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePageEmpty1}
+\begin{paste}{PolarGraphicsExamplePageEmpty1}{PolarGraphicsExamplePagePatch1}
+\pastebutton{PolarGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(1,t = 0..2*\%pi, coordinates == polar)\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePagePatch2}
+\begin{paste}{PolarGraphicsExamplePageFull2}{PolarGraphicsExamplePageEmpty2}
+\pastebutton{PolarGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(t,t = 0..100, coordinates == polar)\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePageEmpty2}
+\begin{paste}{PolarGraphicsExamplePageEmpty2}{PolarGraphicsExamplePagePatch2}
+\pastebutton{PolarGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(t,t = 0..100, coordinates == polar)\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePagePatch3}
+\begin{paste}{PolarGraphicsExamplePageFull3}{PolarGraphicsExamplePageEmpty3}
+\pastebutton{PolarGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(4*t), t = 0..2*\%pi, coordinates == polar)\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePageEmpty3}
+\begin{paste}{PolarGraphicsExamplePageEmpty3}{PolarGraphicsExamplePagePatch3}
+\pastebutton{PolarGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(sin(4*t), t = 0..2*\%pi, coordinates == polar)\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePagePatch4}
+\begin{paste}{PolarGraphicsExamplePageFull4}{PolarGraphicsExamplePageEmpty4}
+\pastebutton{PolarGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(2 + 3 * sin t, t = 0..2*\%pi, coordinates == polar)\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePageEmpty4}
+\begin{paste}{PolarGraphicsExamplePageEmpty4}{PolarGraphicsExamplePagePatch4}
+\pastebutton{PolarGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(2 + 3 * sin t, t = 0..2*\%pi, coordinates == polar)\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePagePatch5}
+\begin{paste}{PolarGraphicsExamplePageFull5}{PolarGraphicsExamplePageEmpty5}
+\pastebutton{PolarGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{All\free{example2 example3 example4 }}
+\indentrel{3}\begin{verbatim}
+   (5)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsExamplePageEmpty5}
+\begin{paste}{PolarGraphicsExamplePageEmpty5}{PolarGraphicsExamplePagePatch5}
+\pastebutton{PolarGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{All\free{example2 example3 example4 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ImplicitCurveGraphicsExamplePage}{graphics.ht}{Implicit Curves}
@@ -10027,7 +24932,111 @@ title == "Cassinian oval with two loops") \free{q} \bound{example4} }
 Run all examples on this page.
 \spadpaste{All \free{example1 example2 example3 example4}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch1}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull1}{ImplicitCurveGraphicsExamplePageEmpty1}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(x * y = 1, x, y, range == [-3..3, -3..3])\bound{example1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty1}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty1}{ImplicitCurveGraphicsExamplePagePatch1}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(x * y = 1, x, y, range == [-3..3, -3..3])\bound{example1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch2}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull2}{ImplicitCurveGraphicsExamplePageEmpty2}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y, range == [-2..2, -2..1])\bound{example2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty2}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty2}{ImplicitCurveGraphicsExamplePagePatch2}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y, range == [-2..2, -2..1])\bound{example2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch3}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull3}{ImplicitCurveGraphicsExamplePageEmpty3}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (3)
+    4      2            2    4      3      2
+   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty3}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty3}{ImplicitCurveGraphicsExamplePagePatch3}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch4}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull4}{ImplicitCurveGraphicsExamplePageEmpty4}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }\bound{example3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty4}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty4}{ImplicitCurveGraphicsExamplePagePatch4}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }\bound{example3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch5}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull5}{ImplicitCurveGraphicsExamplePageEmpty5}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{q := (x**2 + y**2 + 7**2)**2 - (6**4 + 4*7**2*x**2)\bound{q }}
+\indentrel{3}\begin{verbatim}
+         4      2       2    4      2
+   (5)  y  + (2x  + 98)y  + x  - 98x  + 1105
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty5}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty5}{ImplicitCurveGraphicsExamplePagePatch5}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{q := (x**2 + y**2 + 7**2)**2 - (6**4 + 4*7**2*x**2)\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch6}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull6}{ImplicitCurveGraphicsExamplePageEmpty6}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(q = 0, x, y, range == [-10..10, -4..4], title == "Cassinian oval with two loops")\free{q }\bound{example4 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty6}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty6}{ImplicitCurveGraphicsExamplePagePatch6}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(q = 0, x, y, range == [-10..10, -4..4], title == "Cassinian oval with two loops")\free{q }\bound{example4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePagePatch7}
+\begin{paste}{ImplicitCurveGraphicsExamplePageFull7}{ImplicitCurveGraphicsExamplePageEmpty7}
+\pastebutton{ImplicitCurveGraphicsExamplePageFull7}{\hidepaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\indentrel{3}\begin{verbatim}
+   (7)  All
+                                     Type: Variable All
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty7}
+\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty7}{ImplicitCurveGraphicsExamplePagePatch7}
+\pastebutton{ImplicitCurveGraphicsExamplePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ListPointsGraphicsExamplePage}{graphics.ht}{Lists of Points}
@@ -10101,7 +25110,419 @@ The \spadfun{makeViewport2D} command takes a list of options
 as a parameter in this example.  The string "Lines" is designated 
 as the viewport's title.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch1}
+\begin{paste}{ListPointsGraphicsExamplePageFull1}{ListPointsGraphicsExamplePageEmpty1}
+\pastebutton{ListPointsGraphicsExamplePageFull1}{\hidepaste}
+\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty1}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty1}{ListPointsGraphicsExamplePagePatch1}
+\pastebutton{ListPointsGraphicsExamplePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch2}
+\begin{paste}{ListPointsGraphicsExamplePageFull2}{ListPointsGraphicsExamplePageEmpty2}
+\pastebutton{ListPointsGraphicsExamplePageFull2}{\hidepaste}
+\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty2}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty2}{ListPointsGraphicsExamplePagePatch2}
+\pastebutton{ListPointsGraphicsExamplePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch3}
+\begin{paste}{ListPointsGraphicsExamplePageFull3}{ListPointsGraphicsExamplePageEmpty3}
+\pastebutton{ListPointsGraphicsExamplePageFull3}{\hidepaste}
+\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [0.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty3}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty3}{ListPointsGraphicsExamplePagePatch3}
+\pastebutton{ListPointsGraphicsExamplePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch4}
+\begin{paste}{ListPointsGraphicsExamplePageFull4}{ListPointsGraphicsExamplePageEmpty4}
+\pastebutton{ListPointsGraphicsExamplePageFull4}{\hidepaste}
+\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty4}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty4}{ListPointsGraphicsExamplePagePatch4}
+\pastebutton{ListPointsGraphicsExamplePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch5}
+\begin{paste}{ListPointsGraphicsExamplePageFull5}{ListPointsGraphicsExamplePageEmpty5}
+\pastebutton{ListPointsGraphicsExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty5}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty5}{ListPointsGraphicsExamplePagePatch5}
+\pastebutton{ListPointsGraphicsExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch6}
+\begin{paste}{ListPointsGraphicsExamplePageFull6}{ListPointsGraphicsExamplePageEmpty6}
+\pastebutton{ListPointsGraphicsExamplePageFull6}{\hidepaste}
+\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [0.5,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty6}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty6}{ListPointsGraphicsExamplePagePatch6}
+\pastebutton{ListPointsGraphicsExamplePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch7}
+\begin{paste}{ListPointsGraphicsExamplePageFull7}{ListPointsGraphicsExamplePageEmpty7}
+\pastebutton{ListPointsGraphicsExamplePageFull7}{\hidepaste}
+\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [0.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty7}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty7}{ListPointsGraphicsExamplePagePatch7}
+\pastebutton{ListPointsGraphicsExamplePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch8}
+\begin{paste}{ListPointsGraphicsExamplePageFull8}{ListPointsGraphicsExamplePageEmpty8}
+\pastebutton{ListPointsGraphicsExamplePageFull8}{\hidepaste}
+\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0.5,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty8}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty8}{ListPointsGraphicsExamplePagePatch8}
+\pastebutton{ListPointsGraphicsExamplePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch9}
+\begin{paste}{ListPointsGraphicsExamplePageFull9}{ListPointsGraphicsExamplePageEmpty9}
+\pastebutton{ListPointsGraphicsExamplePageFull9}{\hidepaste}
+\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [0.25,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty9}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty9}{ListPointsGraphicsExamplePagePatch9}
+\pastebutton{ListPointsGraphicsExamplePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch10}
+\begin{paste}{ListPointsGraphicsExamplePageFull10}{ListPointsGraphicsExamplePageEmpty10}
+\pastebutton{ListPointsGraphicsExamplePageFull10}{\hidepaste}
+\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [0.25,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty10}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty10}{ListPointsGraphicsExamplePagePatch10}
+\pastebutton{ListPointsGraphicsExamplePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch11}
+\begin{paste}{ListPointsGraphicsExamplePageFull11}{ListPointsGraphicsExamplePageEmpty11}
+\pastebutton{ListPointsGraphicsExamplePageFull11}{\hidepaste}
+\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [0.75,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty11}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty11}{ListPointsGraphicsExamplePagePatch11}
+\pastebutton{ListPointsGraphicsExamplePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch12}
+\begin{paste}{ListPointsGraphicsExamplePageFull12}{ListPointsGraphicsExamplePageEmpty12}
+\pastebutton{ListPointsGraphicsExamplePageFull12}{\hidepaste}
+\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [0.75,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty12}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty12}{ListPointsGraphicsExamplePagePatch12}
+\pastebutton{ListPointsGraphicsExamplePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch13}
+\begin{paste}{ListPointsGraphicsExamplePageFull13}{ListPointsGraphicsExamplePageEmpty13}
+\pastebutton{ListPointsGraphicsExamplePageFull13}{\hidepaste}
+\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
+    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
+    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
+    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
+    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
+    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
+                      Type: List List Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty13}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty13}{ListPointsGraphicsExamplePagePatch13}
+\pastebutton{ListPointsGraphicsExamplePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch14}
+\begin{paste}{ListPointsGraphicsExamplePageFull14}{ListPointsGraphicsExamplePageEmpty14}
+\pastebutton{ListPointsGraphicsExamplePageFull14}{\hidepaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\indentrel{3}\begin{verbatim}
+   (14)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty14}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty14}{ListPointsGraphicsExamplePagePatch14}
+\pastebutton{ListPointsGraphicsExamplePageEmpty14}{\showpaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch15}
+\begin{paste}{ListPointsGraphicsExamplePageFull15}{ListPointsGraphicsExamplePageEmpty15}
+\pastebutton{ListPointsGraphicsExamplePageFull15}{\hidepaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\indentrel{3}\begin{verbatim}
+   (15)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty15}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty15}{ListPointsGraphicsExamplePagePatch15}
+\pastebutton{ListPointsGraphicsExamplePageEmpty15}{\showpaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch16}
+\begin{paste}{ListPointsGraphicsExamplePageFull16}{ListPointsGraphicsExamplePageEmpty16}
+\pastebutton{ListPointsGraphicsExamplePageFull16}{\hidepaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\indentrel{3}\begin{verbatim}
+   (16)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty16}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty16}{ListPointsGraphicsExamplePagePatch16}
+\pastebutton{ListPointsGraphicsExamplePageEmpty16}{\showpaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch17}
+\begin{paste}{ListPointsGraphicsExamplePageFull17}{ListPointsGraphicsExamplePageEmpty17}
+\pastebutton{ListPointsGraphicsExamplePageFull17}{\hidepaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\indentrel{3}\begin{verbatim}
+   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty17}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty17}{ListPointsGraphicsExamplePagePatch17}
+\pastebutton{ListPointsGraphicsExamplePageEmpty17}{\showpaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch18}
+\begin{paste}{ListPointsGraphicsExamplePageFull18}{ListPointsGraphicsExamplePageEmpty18}
+\pastebutton{ListPointsGraphicsExamplePageFull18}{\hidepaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\indentrel{3}\begin{verbatim}
+   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty18}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty18}{ListPointsGraphicsExamplePagePatch18}
+\pastebutton{ListPointsGraphicsExamplePageEmpty18}{\showpaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch19}
+\begin{paste}{ListPointsGraphicsExamplePageFull19}{ListPointsGraphicsExamplePageEmpty19}
+\pastebutton{ListPointsGraphicsExamplePageFull19}{\hidepaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\indentrel{3}\begin{verbatim}
+   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty19}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty19}{ListPointsGraphicsExamplePagePatch19}
+\pastebutton{ListPointsGraphicsExamplePageEmpty19}{\showpaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch20}
+\begin{paste}{ListPointsGraphicsExamplePageFull20}{ListPointsGraphicsExamplePageEmpty20}
+\pastebutton{ListPointsGraphicsExamplePageFull20}{\hidepaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\indentrel{3}\begin{verbatim}
+   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty20}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty20}{ListPointsGraphicsExamplePagePatch20}
+\pastebutton{ListPointsGraphicsExamplePageEmpty20}{\showpaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch21}
+\begin{paste}{ListPointsGraphicsExamplePageFull21}{ListPointsGraphicsExamplePageEmpty21}
+\pastebutton{ListPointsGraphicsExamplePageFull21}{\hidepaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   [[Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty21}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty21}{ListPointsGraphicsExamplePagePatch21}
+\pastebutton{ListPointsGraphicsExamplePageEmpty21}{\showpaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch22}
+\begin{paste}{ListPointsGraphicsExamplePageFull22}{ListPointsGraphicsExamplePageEmpty22}
+\pastebutton{ListPointsGraphicsExamplePageFull22}{\hidepaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [[Hue: 22  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 1  Weight: 1.0] from the Bright palette,
+    [Hue: 14  Weight: 1.0] from the Light palette,
+    [Hue: 11  Weight: 1.0] from the Dim palette,
+    [Hue: 22  Weight: 1.0] from the Bright palette,
+    [Hue: 1  Weight: 1.0] from the Dark palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 22  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Light palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty22}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty22}{ListPointsGraphicsExamplePagePatch22}
+\pastebutton{ListPointsGraphicsExamplePageEmpty22}{\showpaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch23}
+\begin{paste}{ListPointsGraphicsExamplePageFull23}{ListPointsGraphicsExamplePageEmpty23}
+\pastebutton{ListPointsGraphicsExamplePageFull23}{\hidepaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\indentrel{3}\begin{verbatim}
+   (23)  Graph with 12 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty23}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty23}{ListPointsGraphicsExamplePagePatch23}
+\pastebutton{ListPointsGraphicsExamplePageEmpty23}{\showpaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePagePatch24}
+\begin{paste}{ListPointsGraphicsExamplePageFull24}{ListPointsGraphicsExamplePageEmpty24}
+\pastebutton{ListPointsGraphicsExamplePageFull24}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/listpointsgraphicsexamplepage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/listpointsgraphicsexamplepage24}}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsExamplePageEmpty24}
+\begin{paste}{ListPointsGraphicsExamplePageEmpty24}{ListPointsGraphicsExamplePagePatch24}
+\pastebutton{ListPointsGraphicsExamplePageEmpty24}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ThreeDimensionalGraphicsPage}{graphics.ht}
@@ -10168,7 +25589,49 @@ which they are defined in the function specification.  In this case the
 first range specifies the x-variable and the second range specifies the
 y-variable.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{TwoVariableGraphicsPagePatch1}
+\begin{paste}{TwoVariableGraphicsPageFull1}{TwoVariableGraphicsPageEmpty1}
+\pastebutton{TwoVariableGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/twovariablegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/twovariablegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoVariableGraphicsPageEmpty1}
+\begin{paste}{TwoVariableGraphicsPageEmpty1}{TwoVariableGraphicsPagePatch1}
+\pastebutton{TwoVariableGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoVariableGraphicsPagePatch2}
+\begin{paste}{TwoVariableGraphicsPageFull2}{TwoVariableGraphicsPageEmpty2}
+\pastebutton{TwoVariableGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f(x:SF,y:SF):SF == sin(x)*cos(y)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TwoVariableGraphicsPageEmpty2}
+\begin{paste}{TwoVariableGraphicsPageEmpty2}{TwoVariableGraphicsPagePatch2}
+\pastebutton{TwoVariableGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f(x:SF,y:SF):SF == sin(x)*cos(y)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoVariableGraphicsPagePatch3}
+\begin{paste}{TwoVariableGraphicsPageFull3}{TwoVariableGraphicsPageEmpty3}
+\pastebutton{TwoVariableGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/twovariablegraphicspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/twovariablegraphicspage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{TwoVariableGraphicsPageEmpty3}
+\begin{paste}{TwoVariableGraphicsPageEmpty3}{TwoVariableGraphicsPagePatch3}
+\pastebutton{TwoVariableGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{SpaceCurveGraphicsPage}{graphics.ht}{Parametric Space Curves}
@@ -10209,7 +25672,79 @@ Note that the parameter range does not take the variable name as in
 the case of uncompiled functions. It is understood that the indicated
 range applies to the parameter of the functions, which in this case is t.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{SpaceCurveGraphicsPagePatch1}
+\begin{paste}{SpaceCurveGraphicsPageFull1}{SpaceCurveGraphicsPageEmpty1}
+\pastebutton{SpaceCurveGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t), t=-12..12)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/spacecurvegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/spacecurvegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPageEmpty1}
+\begin{paste}{SpaceCurveGraphicsPageEmpty1}{SpaceCurveGraphicsPagePatch1}
+\pastebutton{SpaceCurveGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t), t=-12..12)}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPagePatch2}
+\begin{paste}{SpaceCurveGraphicsPageFull2}{SpaceCurveGraphicsPageEmpty2}
+\pastebutton{SpaceCurveGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{i1(t:SF):SF == sin(t)*cos(3*t/5)\bound{i1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPageEmpty2}
+\begin{paste}{SpaceCurveGraphicsPageEmpty2}{SpaceCurveGraphicsPagePatch2}
+\pastebutton{SpaceCurveGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{i1(t:SF):SF == sin(t)*cos(3*t/5)\bound{i1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPagePatch3}
+\begin{paste}{SpaceCurveGraphicsPageFull3}{SpaceCurveGraphicsPageEmpty3}
+\pastebutton{SpaceCurveGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{i2(t:SF):SF == cos(t)*cos(3*t/5)\bound{i2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPageEmpty3}
+\begin{paste}{SpaceCurveGraphicsPageEmpty3}{SpaceCurveGraphicsPagePatch3}
+\pastebutton{SpaceCurveGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i2(t:SF):SF == cos(t)*cos(3*t/5)\bound{i2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPagePatch4}
+\begin{paste}{SpaceCurveGraphicsPageFull4}{SpaceCurveGraphicsPageEmpty4}
+\pastebutton{SpaceCurveGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{i3(t:SF):SF == cos(t)*sin(3*t/5)\bound{i3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPageEmpty4}
+\begin{paste}{SpaceCurveGraphicsPageEmpty4}{SpaceCurveGraphicsPagePatch4}
+\pastebutton{SpaceCurveGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{i3(t:SF):SF == cos(t)*sin(3*t/5)\bound{i3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPagePatch5}
+\begin{paste}{SpaceCurveGraphicsPageFull5}{SpaceCurveGraphicsPageEmpty5}
+\pastebutton{SpaceCurveGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/spacecurvegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/spacecurvegraphicspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{SpaceCurveGraphicsPageEmpty5}
+\begin{paste}{SpaceCurveGraphicsPageEmpty5}{SpaceCurveGraphicsPagePatch5}
+\pastebutton{SpaceCurveGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ParametricTubeGraphicsPage}{graphics.ht}{Parametric Tube Plots}
@@ -10263,7 +25798,79 @@ t.  Typically, the radius of the tube should be set between 0 and 1.
 A radius of less than 0 results in it's positive counterpart and a
 radius of greater than one causes self intersection.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ParametricTubeGraphicsPagePatch1}
+\begin{paste}{ParametricTubeGraphicsPageFull1}{ParametricTubeGraphicsPageEmpty1}
+\pastebutton{ParametricTubeGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*cos(3*t/5), cos(t)*cos(3*t/5), cos(t)*sin(3*t/5)), t=0..15*\%pi,tubeRadius == .15)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametrictubegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametrictubegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPageEmpty1}
+\begin{paste}{ParametricTubeGraphicsPageEmpty1}{ParametricTubeGraphicsPagePatch1}
+\pastebutton{ParametricTubeGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*cos(3*t/5), cos(t)*cos(3*t/5), cos(t)*sin(3*t/5)), t=0..15*\%pi,tubeRadius == .15)}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPagePatch2}
+\begin{paste}{ParametricTubeGraphicsPageFull2}{ParametricTubeGraphicsPageEmpty2}
+\pastebutton{ParametricTubeGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t1(t:SF):SF == 4/(2-sin(3*t))*cos(2*t)\bound{t1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPageEmpty2}
+\begin{paste}{ParametricTubeGraphicsPageEmpty2}{ParametricTubeGraphicsPagePatch2}
+\pastebutton{ParametricTubeGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t1(t:SF):SF == 4/(2-sin(3*t))*cos(2*t)\bound{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPagePatch3}
+\begin{paste}{ParametricTubeGraphicsPageFull3}{ParametricTubeGraphicsPageEmpty3}
+\pastebutton{ParametricTubeGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{t2(t:SF):SF == 4/(2-sin(3*t))*sin(2*t)\bound{t2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPageEmpty3}
+\begin{paste}{ParametricTubeGraphicsPageEmpty3}{ParametricTubeGraphicsPagePatch3}
+\pastebutton{ParametricTubeGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{t2(t:SF):SF == 4/(2-sin(3*t))*sin(2*t)\bound{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPagePatch4}
+\begin{paste}{ParametricTubeGraphicsPageFull4}{ParametricTubeGraphicsPageEmpty4}
+\pastebutton{ParametricTubeGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{t3(t:SF):SF == 4/(2-sin(3*t))*cos(3*t)\bound{t3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPageEmpty4}
+\begin{paste}{ParametricTubeGraphicsPageEmpty4}{ParametricTubeGraphicsPagePatch4}
+\pastebutton{ParametricTubeGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{t3(t:SF):SF == 4/(2-sin(3*t))*cos(3*t)\bound{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPagePatch5}
+\begin{paste}{ParametricTubeGraphicsPageFull5}{ParametricTubeGraphicsPageEmpty5}
+\pastebutton{ParametricTubeGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(t1,t2,t3),0..2*\%pi,tubeRadius == .2)\free{t1 t2 t3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametrictubegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametrictubegraphicspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricTubeGraphicsPageEmpty5}
+\begin{paste}{ParametricTubeGraphicsPageEmpty5}{ParametricTubeGraphicsPagePatch5}
+\pastebutton{ParametricTubeGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(t1,t2,t3),0..2*\%pi,tubeRadius == .2)\free{t1 t2 t3 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ParametricSurfaceGraphicsPage}{graphics.ht}{Parametric Surfaces}
@@ -10314,7 +25921,79 @@ order in which they are defined in the function specification.  In
 this case the first range specifies the u-variable and the second
 range specifies the v-variable.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ParametricSurfaceGraphicsPagePatch1}
+\begin{paste}{ParametricSurfaceGraphicsPageFull1}{ParametricSurfaceGraphicsPageEmpty1}
+\pastebutton{ParametricSurfaceGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v),v*cos(u)),u=-4..4,v=0..2*\%pi, coordinates== parabolicCylindrical)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametricsurfacegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametricsurfacegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPageEmpty1}
+\begin{paste}{ParametricSurfaceGraphicsPageEmpty1}{ParametricSurfaceGraphicsPagePatch1}
+\pastebutton{ParametricSurfaceGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v),v*cos(u)),u=-4..4,v=0..2*\%pi, coordinates== parabolicCylindrical)}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPagePatch2}
+\begin{paste}{ParametricSurfaceGraphicsPageFull2}{ParametricSurfaceGraphicsPageEmpty2}
+\pastebutton{ParametricSurfaceGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{n1(u:SF,v:SF):SF == u*cos(v)\bound{n1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPageEmpty2}
+\begin{paste}{ParametricSurfaceGraphicsPageEmpty2}{ParametricSurfaceGraphicsPagePatch2}
+\pastebutton{ParametricSurfaceGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{n1(u:SF,v:SF):SF == u*cos(v)\bound{n1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPagePatch3}
+\begin{paste}{ParametricSurfaceGraphicsPageFull3}{ParametricSurfaceGraphicsPageEmpty3}
+\pastebutton{ParametricSurfaceGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{n2(u:SF,v:SF):SF == u*sin(v)\bound{n2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPageEmpty3}
+\begin{paste}{ParametricSurfaceGraphicsPageEmpty3}{ParametricSurfaceGraphicsPagePatch3}
+\pastebutton{ParametricSurfaceGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{n2(u:SF,v:SF):SF == u*sin(v)\bound{n2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPagePatch4}
+\begin{paste}{ParametricSurfaceGraphicsPageFull4}{ParametricSurfaceGraphicsPageEmpty4}
+\pastebutton{ParametricSurfaceGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{n3(u:SF,v:SF):SF == u\bound{n3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPageEmpty4}
+\begin{paste}{ParametricSurfaceGraphicsPageEmpty4}{ParametricSurfaceGraphicsPagePatch4}
+\pastebutton{ParametricSurfaceGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{n3(u:SF,v:SF):SF == u\bound{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPagePatch5}
+\begin{paste}{ParametricSurfaceGraphicsPageFull5}{ParametricSurfaceGraphicsPageEmpty5}
+\pastebutton{ParametricSurfaceGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1.0..4.0, 1.0..4*\%pi, coordinates == toroidal(1$SF))\free{n1 n2 n3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametricsurfacegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametricsurfacegraphicspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricSurfaceGraphicsPageEmpty5}
+\begin{paste}{ParametricSurfaceGraphicsPageEmpty5}{ParametricSurfaceGraphicsPagePatch5}
+\pastebutton{ParametricSurfaceGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1.0..4.0, 1.0..4*\%pi, coordinates == toroidal(1$SF))\free{n1 n2 n3 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{3DObjectGraphicsPage}{graphics.ht}{Building 3D Objects}
@@ -10375,7 +26054,149 @@ The tailing string {\em \$VIEW3D} exposes the command
 \spadfun{makeViewport3D()} from the domain
 \spadtype{ThreeDimensionalViewport} if these commands are unexposed.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{3DObjectGraphicsPagePatch1}
+\begin{paste}{3DObjectGraphicsPageFull1}{3DObjectGraphicsPageEmpty1}
+\pastebutton{3DObjectGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{space := create3Space()$(ThreeSpace SF)\bound{space }}
+\indentrel{3}\begin{verbatim}
+   (1)  3-Space with 0 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty1}
+\begin{paste}{3DObjectGraphicsPageEmpty1}{3DObjectGraphicsPagePatch1}
+\pastebutton{3DObjectGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{space := create3Space()$(ThreeSpace SF)\bound{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch2}
+\begin{paste}{3DObjectGraphicsPageFull2}{3DObjectGraphicsPageEmpty2}
+\pastebutton{3DObjectGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{curve(space,[[0,20,20],[0,20,30],[0,30,30],[0,30,100], [0,20,100],[0,20,110],[0,50,110],[0,50,100],[0,40,100], [0,40,30],[0,50,30],[0,50,20],[0,20,20]])\bound{curveI }}
+\indentrel{3}\begin{verbatim}
+   (2)  3-Space with 1 component
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty2}
+\begin{paste}{3DObjectGraphicsPageEmpty2}{3DObjectGraphicsPagePatch2}
+\pastebutton{3DObjectGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{curve(space,[[0,20,20],[0,20,30],[0,30,30],[0,30,100], [0,20,100],[0,20,110],[0,50,110],[0,50,100],[0,40,100], [0,40,30],[0,50,30],[0,50,20],[0,20,20]])\bound{curveI }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch3}
+\begin{paste}{3DObjectGraphicsPageFull3}{3DObjectGraphicsPageEmpty3}
+\pastebutton{3DObjectGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{curve(space,[[0,80,20],[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,105,30],[0,110,35]])\bound{curveB1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  3-Space with 2 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty3}
+\begin{paste}{3DObjectGraphicsPageEmpty3}{3DObjectGraphicsPagePatch3}
+\pastebutton{3DObjectGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{curve(space,[[0,80,20],[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,105,30],[0,110,35]])\bound{curveB1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch4}
+\begin{paste}{3DObjectGraphicsPageFull4}{3DObjectGraphicsPageEmpty4}
+\pastebutton{3DObjectGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{curve(space,[[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,30]])\bound{curveB2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  3-Space with 3 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty4}
+\begin{paste}{3DObjectGraphicsPageEmpty4}{3DObjectGraphicsPagePatch4}
+\pastebutton{3DObjectGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{curve(space,[[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,30]])\bound{curveB2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch5}
+\begin{paste}{3DObjectGraphicsPageFull5}{3DObjectGraphicsPageEmpty5}
+\pastebutton{3DObjectGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curveM }}
+\indentrel{3}\begin{verbatim}
+   (5)  3-Space with 4 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty5}
+\begin{paste}{3DObjectGraphicsPageEmpty5}{3DObjectGraphicsPagePatch5}
+\pastebutton{3DObjectGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curveM }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch6}
+\begin{paste}{3DObjectGraphicsPageFull6}{3DObjectGraphicsPageEmpty6}
+\pastebutton{3DObjectGraphicsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{closedCurve(space,[[200,0,20], [200,0,110], [185,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [165,0,20], [190,0,85], [190,0,20]])\bound{curveN }}
+\indentrel{3}\begin{verbatim}
+   (6)  3-Space with 5 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty6}
+\begin{paste}{3DObjectGraphicsPageEmpty6}{3DObjectGraphicsPagePatch6}
+\pastebutton{3DObjectGraphicsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{closedCurve(space,[[200,0,20], [200,0,110], [185,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [165,0,20], [190,0,85], [190,0,20]])\bound{curveN }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch7}
+\begin{paste}{3DObjectGraphicsPageFull7}{3DObjectGraphicsPageEmpty7}
+\pastebutton{3DObjectGraphicsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{closedCurve(space,[[140,0,20], [120,0,110], [110,0,110], [90,0,20], [100,0,20], [108,0,50], [123,0,50], [121,0,60], [110,0,60], [115,0,90], [130,0,20]])\bound{curveA }}
+\indentrel{3}\begin{verbatim}
+   (7)  3-Space with 6 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty7}
+\begin{paste}{3DObjectGraphicsPageEmpty7}{3DObjectGraphicsPagePatch7}
+\pastebutton{3DObjectGraphicsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{closedCurve(space,[[140,0,20], [120,0,110], [110,0,110], [90,0,20], [100,0,20], [108,0,50], [123,0,50], [121,0,60], [110,0,60], [115,0,90], [130,0,20]])\bound{curveA }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch8}
+\begin{paste}{3DObjectGraphicsPageFull8}{3DObjectGraphicsPageEmpty8}
+\pastebutton{3DObjectGraphicsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{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], [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]])\bound{curveG }}
+\indentrel{3}\begin{verbatim}
+   (8)  3-Space with 7 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty8}
+\begin{paste}{3DObjectGraphicsPageEmpty8}{3DObjectGraphicsPagePatch8}
+\pastebutton{3DObjectGraphicsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{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], [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]])\bound{curveG }}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPagePatch9}
+\begin{paste}{3DObjectGraphicsPageFull9}{3DObjectGraphicsPageEmpty9}
+\pastebutton{3DObjectGraphicsPageFull9}{\hidepaste}
+\tab{5}\spadgraph{makeViewport3D(space,[title("Curves")])$VIEW3D\free{space curveI curveB1 curveB2 curveM curveN curveA curveG }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/3dobjectgraphicspage9.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/3dobjectgraphicspage9}}
+\end{paste}\end{patch}
+
+\begin{patch}{3DObjectGraphicsPageEmpty9}
+\begin{paste}{3DObjectGraphicsPageEmpty9}{3DObjectGraphicsPagePatch9}
+\pastebutton{3DObjectGraphicsPageEmpty9}{\showpaste}
+\tab{5}\spadgraph{makeViewport3D(space,[title("Curves")])$VIEW3D\free{space curveI curveB1 curveB2 curveM curveN curveA curveG }}
+\end{paste}\end{patch}
 
 @
 \pagehead{TwoDimensionalGraphicsPage}{graphics.ht}
@@ -10442,7 +26263,75 @@ Notice that our titles can be whatever we want, as long as they are
 enclosed by double quotes.  However, a title which is too long to fit
 within the viewport title window will be clipped.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{OneVariableGraphicsPagePatch1}
+\begin{paste}{OneVariableGraphicsPageFull1}{OneVariableGraphicsPageEmpty1}
+\pastebutton{OneVariableGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPageEmpty1}
+\begin{paste}{OneVariableGraphicsPageEmpty1}{OneVariableGraphicsPagePatch1}
+\pastebutton{OneVariableGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPagePatch2}
+\begin{paste}{OneVariableGraphicsPageFull2}{OneVariableGraphicsPageEmpty2}
+\pastebutton{OneVariableGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16,title == "y = sin tan x - tan sin x")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPageEmpty2}
+\begin{paste}{OneVariableGraphicsPageEmpty2}{OneVariableGraphicsPagePatch2}
+\pastebutton{OneVariableGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16,title == "y = sin tan x - tan sin x")}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPagePatch3}
+\begin{paste}{OneVariableGraphicsPageFull3}{OneVariableGraphicsPageEmpty3}
+\pastebutton{OneVariableGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPageEmpty3}
+\begin{paste}{OneVariableGraphicsPageEmpty3}{OneVariableGraphicsPagePatch3}
+\pastebutton{OneVariableGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPagePatch4}
+\begin{paste}{OneVariableGraphicsPageFull4}{OneVariableGraphicsPageEmpty4}
+\pastebutton{OneVariableGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(f, 0..2, title == "y = f(x) on [0,2]")\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/OneVariableGraphicsPage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/OneVariableGraphicsPage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPageEmpty4}
+\begin{paste}{OneVariableGraphicsPageEmpty4}{OneVariableGraphicsPagePatch4}
+\pastebutton{OneVariableGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(f, 0..2, title == "y = f(x) on [0,2]")\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPagePatch5}
+\begin{paste}{OneVariableGraphicsPageFull5}{OneVariableGraphicsPageEmpty5}
+\pastebutton{OneVariableGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(f, 0..4,title == "y = f(x) on [0,4]")\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/OneVariableGraphicsPage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/OneVariableGraphicsPage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{OneVariableGraphicsPageEmpty5}
+\begin{paste}{OneVariableGraphicsPageEmpty5}{OneVariableGraphicsPagePatch5}
+\pastebutton{OneVariableGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(f, 0..4,title == "y = f(x) on [0,4]")\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ParametricCurveGraphicsPage}{graphics.ht}{Parametric Curves}
@@ -10480,7 +26369,103 @@ example:
 These examples show how the curve changes as the range of 
 parameter t varies.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch1}
+\begin{paste}{ParametricCurveGraphicsPageFull1}{ParametricCurveGraphicsPageEmpty1}
+\pastebutton{ParametricCurveGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty1}
+\begin{paste}{ParametricCurveGraphicsPageEmpty1}{ParametricCurveGraphicsPagePatch1}
+\pastebutton{ParametricCurveGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch2}
+\begin{paste}{ParametricCurveGraphicsPageFull2}{ParametricCurveGraphicsPageEmpty2}
+\pastebutton{ParametricCurveGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi, title == "The Unit Circle")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty2}
+\begin{paste}{ParametricCurveGraphicsPageEmpty2}{ParametricCurveGraphicsPagePatch2}
+\pastebutton{ParametricCurveGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi, title == "The Unit Circle")}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch3}
+\begin{paste}{ParametricCurveGraphicsPageFull3}{ParametricCurveGraphicsPageEmpty3}
+\pastebutton{ParametricCurveGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(t:SF):SF == sin(3*t/4)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty3}
+\begin{paste}{ParametricCurveGraphicsPageEmpty3}{ParametricCurveGraphicsPagePatch3}
+\pastebutton{ParametricCurveGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(t:SF):SF == sin(3*t/4)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch4}
+\begin{paste}{ParametricCurveGraphicsPageFull4}{ParametricCurveGraphicsPageEmpty4}
+\pastebutton{ParametricCurveGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g(t:SF):SF == sin(t)\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty4}
+\begin{paste}{ParametricCurveGraphicsPageEmpty4}{ParametricCurveGraphicsPagePatch4}
+\pastebutton{ParametricCurveGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g(t:SF):SF == sin(t)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch5}
+\begin{paste}{ParametricCurveGraphicsPageFull5}{ParametricCurveGraphicsPageEmpty5}
+\pastebutton{ParametricCurveGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(f,g), 0..\%pi)\free{f g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty5}
+\begin{paste}{ParametricCurveGraphicsPageEmpty5}{ParametricCurveGraphicsPagePatch5}
+\pastebutton{ParametricCurveGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(f,g), 0..\%pi)\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch6}
+\begin{paste}{ParametricCurveGraphicsPageFull6}{ParametricCurveGraphicsPageEmpty6}
+\pastebutton{ParametricCurveGraphicsPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(f,g) ,\%pi..2*\%pi)\free{f g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty6}
+\begin{paste}{ParametricCurveGraphicsPageEmpty6}{ParametricCurveGraphicsPagePatch6}
+\pastebutton{ParametricCurveGraphicsPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(curve(f,g) ,\%pi..2*\%pi)\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPagePatch7}
+\begin{paste}{ParametricCurveGraphicsPageFull7}{ParametricCurveGraphicsPageEmpty7}
+\pastebutton{ParametricCurveGraphicsPageFull7}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(f,g), -4*\%pi..4*\%pi)\free{f g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage7}}
+\end{paste}\end{patch}
+
+\begin{patch}{ParametricCurveGraphicsPageEmpty7}
+\begin{paste}{ParametricCurveGraphicsPageEmpty7}{ParametricCurveGraphicsPagePatch7}
+\pastebutton{ParametricCurveGraphicsPageEmpty7}{\showpaste}
+\tab{5}\spadgraph{draw(curve(f,g), -4*\%pi..4*\%pi)\free{f g }}
+\end{paste}\end{patch}
 
 @
 \pagehead{PolarGraphicsPage}{graphics.ht}{Polar Coordinates}
@@ -10511,7 +26496,75 @@ same curve as theta varies over several intervals.
 For information on plotting graphs in other coordinate systems see the
 pages for the \spadtype{CoordinateSystems} domain.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{PolarGraphicsPagePatch1}
+\begin{paste}{PolarGraphicsPageFull1}{PolarGraphicsPageEmpty1}
+\pastebutton{PolarGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(1,t = 0..2*\%pi,coordinates == polar, title == "The Unit Circle")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPageEmpty1}
+\begin{paste}{PolarGraphicsPageEmpty1}{PolarGraphicsPagePatch1}
+\pastebutton{PolarGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(1,t = 0..2*\%pi,coordinates == polar, title == "The Unit Circle")}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPagePatch2}
+\begin{paste}{PolarGraphicsPageFull2}{PolarGraphicsPageEmpty2}
+\pastebutton{PolarGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar, title == "A Petal Curve")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPageEmpty2}
+\begin{paste}{PolarGraphicsPageEmpty2}{PolarGraphicsPagePatch2}
+\pastebutton{PolarGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar, title == "A Petal Curve")}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPagePatch3}
+\begin{paste}{PolarGraphicsPageFull3}{PolarGraphicsPageEmpty3}
+\pastebutton{PolarGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(t) == cos(4*t/7)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPageEmpty3}
+\begin{paste}{PolarGraphicsPageEmpty3}{PolarGraphicsPagePatch3}
+\pastebutton{PolarGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(t) == cos(4*t/7)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPagePatch4}
+\begin{paste}{PolarGraphicsPageFull4}{PolarGraphicsPageEmpty4}
+\pastebutton{PolarGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(f, 0..2*\%pi, coordinates == polar)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPageEmpty4}
+\begin{paste}{PolarGraphicsPageEmpty4}{PolarGraphicsPagePatch4}
+\pastebutton{PolarGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(f, 0..2*\%pi, coordinates == polar)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPagePatch5}
+\begin{paste}{PolarGraphicsPageFull5}{PolarGraphicsPageEmpty5}
+\pastebutton{PolarGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(f, 0..14*\%pi, coordinates == polar)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{PolarGraphicsPageEmpty5}
+\begin{paste}{PolarGraphicsPageEmpty5}{PolarGraphicsPagePatch5}
+\pastebutton{PolarGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(f, 0..14*\%pi, coordinates == polar)\free{f }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ImplicitCurveGraphicsPage}{graphics.ht}{Implicit Curves}
@@ -10537,7 +26590,39 @@ title == "Cartesian Ovals") \free{p}}
 {\em A range must be declared for each variable specified in the 
 algebraic curve equation}.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ImplicitCurveGraphicsPagePatch1}
+\begin{paste}{ImplicitCurveGraphicsPageFull1}{ImplicitCurveGraphicsPageEmpty1}
+\pastebutton{ImplicitCurveGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (1)
+    4      2            2    4      3      2
+   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsPageEmpty1}
+\begin{paste}{ImplicitCurveGraphicsPageEmpty1}{ImplicitCurveGraphicsPagePatch1}
+\pastebutton{ImplicitCurveGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsPagePatch2}
+\begin{paste}{ImplicitCurveGraphicsPageFull2}{ImplicitCurveGraphicsPageEmpty2}
+\pastebutton{ImplicitCurveGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ImplicitCurveGraphicsPageEmpty2}
+\begin{paste}{ImplicitCurveGraphicsPageEmpty2}{ImplicitCurveGraphicsPagePatch2}
+\pastebutton{ImplicitCurveGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ListPointsGraphicsPage}{graphics.ht}{Lists of Points}
@@ -10623,7 +26708,419 @@ The \spadfun{makeViewport2D} command takes a list of options as a
 parameter.  In this example the string "Lines" is designated as the
 viewport's title.
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ListPointsGraphicsPagePatch1}
+\begin{paste}{ListPointsGraphicsPageFull1}{ListPointsGraphicsPageEmpty1}
+\pastebutton{ListPointsGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty1}
+\begin{paste}{ListPointsGraphicsPageEmpty1}{ListPointsGraphicsPagePatch1}
+\pastebutton{ListPointsGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch2}
+\begin{paste}{ListPointsGraphicsPageFull2}{ListPointsGraphicsPageEmpty2}
+\pastebutton{ListPointsGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty2}
+\begin{paste}{ListPointsGraphicsPageEmpty2}{ListPointsGraphicsPagePatch2}
+\pastebutton{ListPointsGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch3}
+\begin{paste}{ListPointsGraphicsPageFull3}{ListPointsGraphicsPageEmpty3}
+\pastebutton{ListPointsGraphicsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [0.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty3}
+\begin{paste}{ListPointsGraphicsPageEmpty3}{ListPointsGraphicsPagePatch3}
+\pastebutton{ListPointsGraphicsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch4}
+\begin{paste}{ListPointsGraphicsPageFull4}{ListPointsGraphicsPageEmpty4}
+\pastebutton{ListPointsGraphicsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty4}
+\begin{paste}{ListPointsGraphicsPageEmpty4}{ListPointsGraphicsPagePatch4}
+\pastebutton{ListPointsGraphicsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch5}
+\begin{paste}{ListPointsGraphicsPageFull5}{ListPointsGraphicsPageEmpty5}
+\pastebutton{ListPointsGraphicsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty5}
+\begin{paste}{ListPointsGraphicsPageEmpty5}{ListPointsGraphicsPagePatch5}
+\pastebutton{ListPointsGraphicsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch6}
+\begin{paste}{ListPointsGraphicsPageFull6}{ListPointsGraphicsPageEmpty6}
+\pastebutton{ListPointsGraphicsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [0.5,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty6}
+\begin{paste}{ListPointsGraphicsPageEmpty6}{ListPointsGraphicsPagePatch6}
+\pastebutton{ListPointsGraphicsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch7}
+\begin{paste}{ListPointsGraphicsPageFull7}{ListPointsGraphicsPageEmpty7}
+\pastebutton{ListPointsGraphicsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [0.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty7}
+\begin{paste}{ListPointsGraphicsPageEmpty7}{ListPointsGraphicsPagePatch7}
+\pastebutton{ListPointsGraphicsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch8}
+\begin{paste}{ListPointsGraphicsPageFull8}{ListPointsGraphicsPageEmpty8}
+\pastebutton{ListPointsGraphicsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0.5,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty8}
+\begin{paste}{ListPointsGraphicsPageEmpty8}{ListPointsGraphicsPagePatch8}
+\pastebutton{ListPointsGraphicsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch9}
+\begin{paste}{ListPointsGraphicsPageFull9}{ListPointsGraphicsPageEmpty9}
+\pastebutton{ListPointsGraphicsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [0.25,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty9}
+\begin{paste}{ListPointsGraphicsPageEmpty9}{ListPointsGraphicsPagePatch9}
+\pastebutton{ListPointsGraphicsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch10}
+\begin{paste}{ListPointsGraphicsPageFull10}{ListPointsGraphicsPageEmpty10}
+\pastebutton{ListPointsGraphicsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [0.25,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty10}
+\begin{paste}{ListPointsGraphicsPageEmpty10}{ListPointsGraphicsPagePatch10}
+\pastebutton{ListPointsGraphicsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch11}
+\begin{paste}{ListPointsGraphicsPageFull11}{ListPointsGraphicsPageEmpty11}
+\pastebutton{ListPointsGraphicsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [0.75,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty11}
+\begin{paste}{ListPointsGraphicsPageEmpty11}{ListPointsGraphicsPagePatch11}
+\pastebutton{ListPointsGraphicsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch12}
+\begin{paste}{ListPointsGraphicsPageFull12}{ListPointsGraphicsPageEmpty12}
+\pastebutton{ListPointsGraphicsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [0.75,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty12}
+\begin{paste}{ListPointsGraphicsPageEmpty12}{ListPointsGraphicsPagePatch12}
+\pastebutton{ListPointsGraphicsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch13}
+\begin{paste}{ListPointsGraphicsPageFull13}{ListPointsGraphicsPageEmpty13}
+\pastebutton{ListPointsGraphicsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
+    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
+    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
+    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
+    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
+    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
+                      Type: List List Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty13}
+\begin{paste}{ListPointsGraphicsPageEmpty13}{ListPointsGraphicsPagePatch13}
+\pastebutton{ListPointsGraphicsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch14}
+\begin{paste}{ListPointsGraphicsPageFull14}{ListPointsGraphicsPageEmpty14}
+\pastebutton{ListPointsGraphicsPageFull14}{\hidepaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\indentrel{3}\begin{verbatim}
+   (14)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty14}
+\begin{paste}{ListPointsGraphicsPageEmpty14}{ListPointsGraphicsPagePatch14}
+\pastebutton{ListPointsGraphicsPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch15}
+\begin{paste}{ListPointsGraphicsPageFull15}{ListPointsGraphicsPageEmpty15}
+\pastebutton{ListPointsGraphicsPageFull15}{\hidepaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\indentrel{3}\begin{verbatim}
+   (15)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty15}
+\begin{paste}{ListPointsGraphicsPageEmpty15}{ListPointsGraphicsPagePatch15}
+\pastebutton{ListPointsGraphicsPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch16}
+\begin{paste}{ListPointsGraphicsPageFull16}{ListPointsGraphicsPageEmpty16}
+\pastebutton{ListPointsGraphicsPageFull16}{\hidepaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\indentrel{3}\begin{verbatim}
+   (16)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty16}
+\begin{paste}{ListPointsGraphicsPageEmpty16}{ListPointsGraphicsPagePatch16}
+\pastebutton{ListPointsGraphicsPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch17}
+\begin{paste}{ListPointsGraphicsPageFull17}{ListPointsGraphicsPageEmpty17}
+\pastebutton{ListPointsGraphicsPageFull17}{\hidepaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\indentrel{3}\begin{verbatim}
+   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty17}
+\begin{paste}{ListPointsGraphicsPageEmpty17}{ListPointsGraphicsPagePatch17}
+\pastebutton{ListPointsGraphicsPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch18}
+\begin{paste}{ListPointsGraphicsPageFull18}{ListPointsGraphicsPageEmpty18}
+\pastebutton{ListPointsGraphicsPageFull18}{\hidepaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\indentrel{3}\begin{verbatim}
+   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty18}
+\begin{paste}{ListPointsGraphicsPageEmpty18}{ListPointsGraphicsPagePatch18}
+\pastebutton{ListPointsGraphicsPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch19}
+\begin{paste}{ListPointsGraphicsPageFull19}{ListPointsGraphicsPageEmpty19}
+\pastebutton{ListPointsGraphicsPageFull19}{\hidepaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\indentrel{3}\begin{verbatim}
+   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty19}
+\begin{paste}{ListPointsGraphicsPageEmpty19}{ListPointsGraphicsPagePatch19}
+\pastebutton{ListPointsGraphicsPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch20}
+\begin{paste}{ListPointsGraphicsPageFull20}{ListPointsGraphicsPageEmpty20}
+\pastebutton{ListPointsGraphicsPageFull20}{\hidepaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\indentrel{3}\begin{verbatim}
+   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty20}
+\begin{paste}{ListPointsGraphicsPageEmpty20}{ListPointsGraphicsPagePatch20}
+\pastebutton{ListPointsGraphicsPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch21}
+\begin{paste}{ListPointsGraphicsPageFull21}{ListPointsGraphicsPageEmpty21}
+\pastebutton{ListPointsGraphicsPageFull21}{\hidepaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   [[Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty21}
+\begin{paste}{ListPointsGraphicsPageEmpty21}{ListPointsGraphicsPagePatch21}
+\pastebutton{ListPointsGraphicsPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch22}
+\begin{paste}{ListPointsGraphicsPageFull22}{ListPointsGraphicsPageEmpty22}
+\pastebutton{ListPointsGraphicsPageFull22}{\hidepaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [[Hue: 22  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 1  Weight: 1.0] from the Bright palette,
+    [Hue: 14  Weight: 1.0] from the Light palette,
+    [Hue: 11  Weight: 1.0] from the Dim palette,
+    [Hue: 22  Weight: 1.0] from the Bright palette,
+    [Hue: 1  Weight: 1.0] from the Dark palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 22  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Light palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty22}
+\begin{paste}{ListPointsGraphicsPageEmpty22}{ListPointsGraphicsPagePatch22}
+\pastebutton{ListPointsGraphicsPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch23}
+\begin{paste}{ListPointsGraphicsPageFull23}{ListPointsGraphicsPageEmpty23}
+\pastebutton{ListPointsGraphicsPageFull23}{\hidepaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\indentrel{3}\begin{verbatim}
+   (23)  Graph with 12 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty23}
+\begin{paste}{ListPointsGraphicsPageEmpty23}{ListPointsGraphicsPagePatch23}
+\pastebutton{ListPointsGraphicsPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPagePatch24}
+\begin{paste}{ListPointsGraphicsPageFull24}{ListPointsGraphicsPageEmpty24}
+\pastebutton{ListPointsGraphicsPageFull24}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/listpointsgraphicspage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/listpointsgraphicspage24}}
+\end{paste}\end{patch}
+
+\begin{patch}{ListPointsGraphicsPageEmpty24}
+\begin{paste}{ListPointsGraphicsPageEmpty24}{ListPointsGraphicsPagePatch24}
+\pastebutton{ListPointsGraphicsPageEmpty24}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\end{paste}\end{patch}
 
 @
 \pagehead{ViewportPage}{graphics.ht}{Stand-alone Viewport}
@@ -10709,7 +27206,37 @@ All these macros really do is include some path that
 indicates where Axiom stores the viewports.
 \newline
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{ViewportPagePatch1}
+\begin{paste}{ViewportPageFull1}{ViewportPageEmpty1}
+\pastebutton{ViewportPageFull1}{\hidepaste}
+\tab{5}\spadgraph{v := draw(x*x-y*y,x=-1..1,y=-1..1)\bound{v }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/viewportpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/viewportpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ViewportPageEmpty1}
+\begin{paste}{ViewportPageEmpty1}{ViewportPagePatch1}
+\pastebutton{ViewportPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{v := draw(x*x-y*y,x=-1..1,y=-1..1)\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{ViewportPagePatch2}
+\begin{paste}{ViewportPageFull2}{ViewportPageEmpty2}
+\pastebutton{ViewportPageFull2}{\hidepaste}
+\tab{5}\spadcommand{write(v,"saddle","pixmap")\free{v }}
+\indentrel{3}\begin{verbatim}
+   (2)  "NIL"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ViewportPageEmpty2}
+\begin{paste}{ViewportPageEmpty2}{ViewportPagePatch2}
+\pastebutton{ViewportPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{write(v,"saddle","pixmap")\free{v }}
+\end{paste}\end{patch}
 
 @
 \section{grpthry.ht}
@@ -10837,7 +27364,874 @@ And here again is the irreducible, but not absolutely irreducible
 representations of \texht{$A_6$}{A6} over GF 2
 \spadpaste{dA6d16 \free{dA6d16}}
 \endscroll
-\autobuttons \end{page}
+\autobuttons 
+\end{page}
+
+\begin{patch}{RepA6PagePatch1}
+\begin{paste}{RepA6PageFull1}{RepA6PageEmpty1}
+\pastebutton{RepA6PageFull1}{\hidepaste}
+\tab{5}\spadcommand{genA6 : LIST PERM INT := [cycle [1,2,3],cycle [2,3,4,5,6]]\bound{genA6 }}
+\indentrel{3}\begin{verbatim}
+   (1)  [(1 2 3),(2 3 4 5 6)]
+                         Type: List Permutation Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty1}
+\begin{paste}{RepA6PageEmpty1}{RepA6PagePatch1}
+\pastebutton{RepA6PageEmpty1}{\showpaste}
+\tab{5}\spadcommand{genA6 : LIST PERM INT := [cycle [1,2,3],cycle [2,3,4,5,6]]\bound{genA6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch2}
+\begin{paste}{RepA6PageFull2}{RepA6PageEmpty2}
+\pastebutton{RepA6PageFull2}{\hidepaste}
+\tab{5}\spadcommand{pRA6 := permutationRepresentation (genA6, 6)\bound{pRA6 }\free{genA6 }}
+\indentrel{3}\begin{verbatim}
+         Ú0  0  1  0  0  0¿ Ú1  0  0  0  0  0¿
+         ³                ³ ³                ³
+         ³1  0  0  0  0  0³ ³0  0  0  0  0  1³
+         ³                ³ ³                ³
+         ³0  1  0  0  0  0³ ³0  1  0  0  0  0³
+   (2)  [³                ³,³                ³]
+         ³0  0  0  1  0  0³ ³0  0  1  0  0  0³
+         ³                ³ ³                ³
+         ³0  0  0  0  1  0³ ³0  0  0  1  0  0³
+         ³                ³ ³                ³
+         À0  0  0  0  0  1Ù À0  0  0  0  1  0Ù
+                              Type: List Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty2}
+\begin{paste}{RepA6PageEmpty2}{RepA6PagePatch2}
+\pastebutton{RepA6PageEmpty2}{\showpaste}
+\tab{5}\spadcommand{pRA6 := permutationRepresentation (genA6, 6)\bound{pRA6 }\free{genA6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch3}
+\begin{paste}{RepA6PageFull3}{RepA6PageEmpty3}
+\pastebutton{RepA6PageFull3}{\hidepaste}
+\tab{5}\spadcommand{sp0 := meatAxe (pRA6::(LIST MATRIX PF 2))\free{pRA6 }\bound{sp0 }}
+\indentrel{3}\begin{verbatim}
+   Fingerprint element in generated algebra is singular
+     A proper cyclic submodule is found.
+     Transition matrix computed
+     The inverse of the transition matrix computed
+     Now transform the matrices
+          Ú0  0  1  0  0¿ Ú1  0  0  0  0¿
+          ³             ³ ³             ³
+          ³1  0  0  0  0³ ³1  1  1  1  1³
+          ³             ³ ³             ³
+   (3)  [[³0  1  0  0  0³,³0  1  0  0  0³],[[1],[1]]]
+          ³             ³ ³             ³
+          ³0  0  0  1  0³ ³0  0  1  0  0³
+          ³             ³ ³             ³
+          À0  0  0  0  1Ù À0  0  0  1  0Ù
+                    Type: List List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty3}
+\begin{paste}{RepA6PageEmpty3}{RepA6PagePatch3}
+\pastebutton{RepA6PageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sp0 := meatAxe (pRA6::(LIST MATRIX PF 2))\free{pRA6 }\bound{sp0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch4}
+\begin{paste}{RepA6PageFull4}{RepA6PageEmpty4}
+\pastebutton{RepA6PageFull4}{\hidepaste}
+\tab{5}\spadcommand{sp1 := meatAxe sp0.1\bound{sp1 }}
+\indentrel{3}\begin{verbatim}
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     A proper cyclic submodule is found.
+     Transition matrix computed
+     The inverse of the transition matrix computed
+     Now transform the matrices
+    Representation is not irreducible and it will be spli
+  t:
+                    Ú0  1  0  0¿ Ú0  1  1  1¿
+                    ³          ³ ³          ³
+                    ³0  0  1  0³ ³1  1  0  1³
+   (4)  [[[1],[1]],[³          ³,³          ³]]
+                    ³1  0  0  0³ ³1  1  1  0³
+                    ³          ³ ³          ³
+                    À0  0  0  1Ù À1  1  1  1Ù
+                    Type: List List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty4}
+\begin{paste}{RepA6PageEmpty4}{RepA6PagePatch4}
+\pastebutton{RepA6PageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sp1 := meatAxe sp0.1\bound{sp1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch5}
+\begin{paste}{RepA6PageFull5}{RepA6PageEmpty5}
+\pastebutton{RepA6PageFull5}{\hidepaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp1.2}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     The generated cyclic submodule was not proper
+     Representation is absolutely irreducible
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty5}
+\begin{paste}{RepA6PageEmpty5}{RepA6PagePatch5}
+\pastebutton{RepA6PageEmpty5}{\showpaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp1.2}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch6}
+\begin{paste}{RepA6PageFull6}{RepA6PageEmpty6}
+\pastebutton{RepA6PageFull6}{\hidepaste}
+\tab{5}\spadcommand{d2211 := irreducibleRepresentation ([2,2,1,1],genA6)\bound{d2211 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+    Ú1  0  0  - 1   1    0    0    0    0 ¿
+    ³                                     ³
+    ³0  1  0   1    0    1    0    0    0 ³
+    ³                                     ³
+    ³0  0  1   0    1   - 1   0    0    0 ³
+    ³                                     ³
+    ³0  0  0  - 1   0    0   - 1   0    0 ³
+    ³                                     ³
+   [³0  0  0   0   - 1   0    0   - 1   0 ³,
+    ³                                     ³
+    ³0  0  0   0    0   - 1   0    0   - 1³
+    ³                                     ³
+    ³0  0  0   1    0    0    0    0    0 ³
+    ³                                     ³
+    ³0  0  0   0    1    0    0    0    0 ³
+    ³                                     ³
+    À0  0  0   0    0    1    0    0    0 Ù
+    Ú 0    0   1   0   0  0   1   0  0¿
+    ³                                 ³
+    ³ 0    0   0   0   1  0  - 1  0  0³
+    ³                                 ³
+    ³ 0    0   0   0   0  1   1   0  0³
+    ³                                 ³
+    ³ 0    0   0   0   0  0   1   1  0³
+    ³                                 ³
+    ³ 0    0   0   0   0  0  - 1  0  1³]
+    ³                                 ³
+    ³ 0    0   0   0   0  0   1   0  0³
+    ³                                 ³
+    ³- 1   0   0   0   0  0  - 1  0  0³
+    ³                                 ³
+    ³ 0   - 1  0   0   0  0   1   0  0³
+    ³                                 ³
+    À 0    0   0  - 1  0  0  - 1  0  0Ù
+                              Type: List Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty6}
+\begin{paste}{RepA6PageEmpty6}{RepA6PagePatch6}
+\pastebutton{RepA6PageEmpty6}{\showpaste}
+\tab{5}\spadcommand{d2211 := irreducibleRepresentation ([2,2,1,1],genA6)\bound{d2211 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch7}
+\begin{paste}{RepA6PageFull7}{RepA6PageEmpty7}
+\pastebutton{RepA6PageFull7}{\hidepaste}
+\tab{5}\spadcommand{d2211m2 := d2211:: (LIST MATRIX PF 2); sp2 := meatAxe d2211m2\free{d2211 }\bound{sp2 }}
+\indentrel{3}\begin{verbatim}
+   Fingerprint element in generated algebra is singular
+     A proper cyclic submodule is found.
+     Transition matrix computed
+     The inverse of the transition matrix computed
+     Now transform the matrices
+   (7)
+     Ú1  0  1  1¿ Ú0  0  1  0¿
+     ³          ³ ³          ³
+     ³0  1  0  1³ ³1  1  1  1³
+   [[³          ³,³          ³],
+     ³1  1  0  0³ ³1  0  1  1³
+     ³          ³ ³          ³
+     À0  1  0  0Ù À0  1  0  1Ù
+     Ú1  0  0  0  0¿ Ú1  1  1  0  0¿
+     ³             ³ ³             ³
+     ³0  1  1  1  1³ ³0  0  1  1  1³
+     ³             ³ ³             ³
+    [³0  1  1  0  0³,³1  0  0  1  0³]]
+     ³             ³ ³             ³
+     ³0  1  0  1  0³ ³0  0  1  0  1³
+     ³             ³ ³             ³
+     À0  1  1  1  0Ù À1  0  0  1  1Ù
+                    Type: List List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty7}
+\begin{paste}{RepA6PageEmpty7}{RepA6PagePatch7}
+\pastebutton{RepA6PageEmpty7}{\showpaste}
+\tab{5}\spadcommand{d2211m2 := d2211:: (LIST MATRIX PF 2); sp2 := meatAxe d2211m2\free{d2211 }\bound{sp2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch8}
+\begin{paste}{RepA6PageFull8}{RepA6PageEmpty8}
+\pastebutton{RepA6PageFull8}{\hidepaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp2.1}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     The generated cyclic submodule was not proper
+     Representation is absolutely irreducible
+   (8)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty8}
+\begin{paste}{RepA6PageEmpty8}{RepA6PagePatch8}
+\pastebutton{RepA6PageEmpty8}{\showpaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp2.1}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch9}
+\begin{paste}{RepA6PageFull9}{RepA6PageEmpty9}
+\pastebutton{RepA6PageFull9}{\hidepaste}
+\tab{5}\spadcommand{areEquivalent? (sp1.2, sp2.1)}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+     There is no isomorphism, as the only possible one
+       fails to do the necessary base change
+
+   Representations are not equivalent.
+   (9)  [0]
+                              Type: Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty9}
+\begin{paste}{RepA6PageEmpty9}{RepA6PagePatch9}
+\pastebutton{RepA6PageEmpty9}{\showpaste}
+\tab{5}\spadcommand{areEquivalent? (sp1.2, sp2.1)}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch10}
+\begin{paste}{RepA6PageFull10}{RepA6PageEmpty10}
+\pastebutton{RepA6PageFull10}{\hidepaste}
+\tab{5}\spadcommand{dA6d16 := tensorProduct(sp1.2,sp2.1); meatAxe dA6d16\bound{dA6d16 }}
+\indentrel{3}\begin{verbatim}
+  Fingerprint element in generated algebra is non-singula
+  r
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+  Fingerprint element in generated algebra is non-singula
+  r
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     The generated cyclic submodule was not proper
+     Representation is irreducible, but we don't know
+       whether it is absolutely irreducible
+   (10)
+   [
+      Ú0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0¿
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0³
+      ³                                              ³
+      ³1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  1  1  1  0  0  0  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
+     [³                                              ³,
+      ³0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  0  1  1  1  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0³
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0³
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1³
+      ³                                              ³
+      ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0³
+      ³                                              ³
+      À0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0Ù
+      Ú0  0  0  0  0  1  1  0  0  1  1  0  0  1  1  0¿
+      ³                                              ³
+      ³0  0  0  0  0  1  0  1  0  1  0  1  0  1  0  1³
+      ³                                              ³
+      ³0  0  0  0  1  1  1  0  1  1  1  0  1  1  1  0³
+      ³                                              ³
+      ³0  0  0  0  0  1  1  1  0  1  1  1  0  1  1  1³
+      ³                                              ³
+      ³0  1  1  0  0  1  1  0  0  1  1  0  0  1  1  0³
+      ³                                              ³
+      ³0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1³
+      ³                                              ³
+      ³1  1  1  0  1  1  1  0  1  1  1  0  1  1  1  0³
+      ³                                              ³
+      ³0  1  1  1  0  1  1  1  0  1  1  1  0  1  1  1³
+      ³                                              ³]
+      ³0  1  1  0  0  0  0  0  0  1  1  0  0  1  1  0³
+      ³                                              ³
+      ³0  1  0  1  0  0  0  0  0  1  0  1  0  1  0  1³
+      ³                                              ³
+      ³1  1  1  0  0  0  0  0  1  1  1  0  1  1  1  0³
+      ³                                              ³
+      ³0  1  1  1  0  0  0  0  0  1  1  1  0  1  1  1³
+      ³                                              ³
+      ³0  1  1  0  0  1  1  0  0  0  0  0  0  1  1  0³
+      ³                                              ³
+      ³0  1  0  1  0  1  0  1  0  0  0  0  0  1  0  1³
+      ³                                              ³
+      ³1  1  1  0  1  1  1  0  0  0  0  0  1  1  1  0³
+      ³                                              ³
+      À0  1  1  1  0  1  1  1  0  0  0  0  0  1  1  1Ù
+     ]
+                    Type: List List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty10}
+\begin{paste}{RepA6PageEmpty10}{RepA6PagePatch10}
+\pastebutton{RepA6PageEmpty10}{\showpaste}
+\tab{5}\spadcommand{dA6d16 := tensorProduct(sp1.2,sp2.1); meatAxe dA6d16\bound{dA6d16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch11}
+\begin{paste}{RepA6PageFull11}{RepA6PageEmpty11}
+\pastebutton{RepA6PageFull11}{\hidepaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? dA6d16}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   We have not found a one-dimensional kernel so far,
+     as we do a random search you could try again
+   (11)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty11}
+\begin{paste}{RepA6PageEmpty11}{RepA6PagePatch11}
+\pastebutton{RepA6PageEmpty11}{\showpaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? dA6d16}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch12}
+\begin{paste}{RepA6PageFull12}{RepA6PageEmpty12}
+\pastebutton{RepA6PageFull12}{\hidepaste}
+\tab{5}\spadcommand{sp3 := meatAxe (dA6d16 :: (LIST MATRIX FF(2,2)))\bound{sp3 }}
+\indentrel{3}\begin{verbatim}
+  Fingerprint element in generated algebra is non-singula
+  r
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+  Fingerprint element in generated algebra is non-singula
+  r
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+   Fingerprint element in generated algebra is singular
+     The generated cyclic submodule was not proper
+     The generated cyclic submodule was not proper
+     A proper cyclic submodule is found.
+     Transition matrix computed
+     The inverse of the transition matrix computed
+     Now transform the matrices
+   (12)
+   [
+     [
+   [[%A,%A + 1,0,%A,1,%A + 1,0,0],
+    [0,0,%A,%A + 1,%A,%A,0,0],
+    [%A,%A + 1,%A,1,%A + 1,0,0,0],
+    [%A,%A + 1,%A,1,%A,0,0,0],
+    [%A + 1,1,1,1,0,0,%A + 1,%A],
+    [0,0,%A + 1,1,0,0,%A,0], [1,0,1,1,0,0,0,0],
+    [1,1,0,0,0,0,0,0]]
+       ,
+
+   [[1,0,%A,0,1,1,%A,%A + 1],
+    [1,%A + 1,0,0,0,%A + 1,1,%A + 1],
+    [%A,1,%A + 1,%A + 1,%A + 1,1,%A,0],
+    [%A + 1,%A + 1,0,0,1,%A + 1,1,1],
+    [1,0,%A + 1,0,1,1,%A,%A],
+    [0,0,%A + 1,%A + 1,%A + 1,1,1,%A], [0,0,1,0,0,1,0,1],
+    [0,%A,0,%A,1,%A + 1,%A + 1,%A]]
+       ]
+     ,
+
+      Ú0     1       1     %A + 1  0  0  0  0¿
+      ³                                      ³
+      ³1     1     %A + 1    0     0  0  0  0³
+      ³                                      ³
+      ³%A    0       0       0     0  0  0  0³
+      ³                                      ³
+      ³1     %A      0       0     0  0  0  0³
+     [³                                      ³,
+      ³%A  %A + 1    1       1     1  0  1  1³
+      ³                                      ³
+      ³0     0       %A      1     0  1  0  1³
+      ³                                      ³
+      ³%A    1       0       1     1  1  0  0³
+      ³                                      ³
+      À1     %A    %A + 1    %A    0  1  0  0Ù
+
+   [[%A + 1,1,%A,0,0,%A + 1,0,1],
+    [0,%A,1,1,1,0,%A + 1,%A],
+    [0,%A + 1,0,%A + 1,%A + 1,1,%A + 1,%A],
+    [1,%A + 1,1,%A + 1,0,0,%A + 1,1],
+    [0,%A,0,%A + 1,%A + 1,0,0,%A + 1],
+    [%A + 1,0,%A + 1,%A,0,%A + 1,0,%A + 1],
+    [0,1,0,1,%A + 1,0,%A + 1,%A + 1],
+    [%A,%A,%A,1,%A,%A,1,%A + 1]]
+       ]
+     ]
+                Type: List List Matrix FiniteField(2,2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty12}
+\begin{paste}{RepA6PageEmpty12}{RepA6PagePatch12}
+\pastebutton{RepA6PageEmpty12}{\showpaste}
+\tab{5}\spadcommand{sp3 := meatAxe (dA6d16 :: (LIST MATRIX FF(2,2)))\bound{sp3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch13}
+\begin{paste}{RepA6PageFull13}{RepA6PageEmpty13}
+\pastebutton{RepA6PageFull13}{\hidepaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.1}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     The generated cyclic submodule was not proper
+     Representation is absolutely irreducible
+   (13)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty13}
+\begin{paste}{RepA6PageEmpty13}{RepA6PagePatch13}
+\pastebutton{RepA6PageEmpty13}{\showpaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.1}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch14}
+\begin{paste}{RepA6PageFull14}{RepA6PageEmpty14}
+\pastebutton{RepA6PageFull14}{\hidepaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.2}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+    We know that all the cyclic submodules generated by a
+  ll
+      non-trivial element of the singular matrix under vi
+  ew are
+      not proper, hence Norton's irreducibility test can 
+  be done:
+     The generated cyclic submodule was not proper
+     Representation is absolutely irreducible
+   (14)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty14}
+\begin{paste}{RepA6PageEmpty14}{RepA6PagePatch14}
+\pastebutton{RepA6PageEmpty14}{\showpaste}
+\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.2}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch15}
+\begin{paste}{RepA6PageFull15}{RepA6PageEmpty15}
+\pastebutton{RepA6PageFull15}{\hidepaste}
+\tab{5}\spadcommand{areEquivalent? (sp3.1,sp3.2)}
+\indentrel{3}\begin{verbatim}
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra does
+     not have a one-dimensional kernel
+   Random element in generated algebra has
+     one-dimensional kernel
+     There is no isomorphism, as the only possible one
+       fails to do the necessary base change
+
+   Representations are not equivalent.
+   (15)  [0]
+                          Type: Matrix FiniteField(2,2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty15}
+\begin{paste}{RepA6PageEmpty15}{RepA6PagePatch15}
+\pastebutton{RepA6PageEmpty15}{\showpaste}
+\tab{5}\spadcommand{areEquivalent? (sp3.1,sp3.2)}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch16}
+\begin{paste}{RepA6PageFull16}{RepA6PageEmpty16}
+\pastebutton{RepA6PageFull16}{\hidepaste}
+\tab{5}\spadcommand{sp0.2\free{sp0 }}
+\indentrel{3}\begin{verbatim}
+   (16)  [[1],[1]]
+                         Type: List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty16}
+\begin{paste}{RepA6PageEmpty16}{RepA6PagePatch16}
+\pastebutton{RepA6PageEmpty16}{\showpaste}
+\tab{5}\spadcommand{sp0.2\free{sp0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch17}
+\begin{paste}{RepA6PageFull17}{RepA6PageEmpty17}
+\pastebutton{RepA6PageFull17}{\hidepaste}
+\tab{5}\spadcommand{sp1.2\free{sp1 }}
+\indentrel{3}\begin{verbatim}
+          Ú0  1  0  0¿ Ú0  1  1  1¿
+          ³          ³ ³          ³
+          ³0  0  1  0³ ³1  1  0  1³
+   (17)  [³          ³,³          ³]
+          ³1  0  0  0³ ³1  1  1  0³
+          ³          ³ ³          ³
+          À0  0  0  1Ù À1  1  1  1Ù
+                         Type: List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty17}
+\begin{paste}{RepA6PageEmpty17}{RepA6PagePatch17}
+\pastebutton{RepA6PageEmpty17}{\showpaste}
+\tab{5}\spadcommand{sp1.2\free{sp1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch18}
+\begin{paste}{RepA6PageFull18}{RepA6PageEmpty18}
+\pastebutton{RepA6PageFull18}{\hidepaste}
+\tab{5}\spadcommand{sp2.1\free{sp2 }}
+\indentrel{3}\begin{verbatim}
+          Ú1  0  1  1¿ Ú0  0  1  0¿
+          ³          ³ ³          ³
+          ³0  1  0  1³ ³1  1  1  1³
+   (18)  [³          ³,³          ³]
+          ³1  1  0  0³ ³1  0  1  1³
+          ³          ³ ³          ³
+          À0  1  0  0Ù À0  1  0  1Ù
+                         Type: List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty18}
+\begin{paste}{RepA6PageEmpty18}{RepA6PagePatch18}
+\pastebutton{RepA6PageEmpty18}{\showpaste}
+\tab{5}\spadcommand{sp2.1\free{sp2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch19}
+\begin{paste}{RepA6PageFull19}{RepA6PageEmpty19}
+\pastebutton{RepA6PageFull19}{\hidepaste}
+\tab{5}\spadcommand{sp3.1\free{sp3 }}
+\indentrel{3}\begin{verbatim}
+   (19)
+   [
+   [[%A,%A + 1,0,%A,1,%A + 1,0,0],
+    [0,0,%A,%A + 1,%A,%A,0,0],
+    [%A,%A + 1,%A,1,%A + 1,0,0,0],
+    [%A,%A + 1,%A,1,%A,0,0,0],
+    [%A + 1,1,1,1,0,0,%A + 1,%A],
+    [0,0,%A + 1,1,0,0,%A,0], [1,0,1,1,0,0,0,0],
+    [1,1,0,0,0,0,0,0]]
+     ,
+
+   [[1,0,%A,0,1,1,%A,%A + 1],
+    [1,%A + 1,0,0,0,%A + 1,1,%A + 1],
+    [%A,1,%A + 1,%A + 1,%A + 1,1,%A,0],
+    [%A + 1,%A + 1,0,0,1,%A + 1,1,1],
+    [1,0,%A + 1,0,1,1,%A,%A],
+    [0,0,%A + 1,%A + 1,%A + 1,1,1,%A], [0,0,1,0,0,1,0,1],
+    [0,%A,0,%A,1,%A + 1,%A + 1,%A]]
+     ]
+                     Type: List Matrix FiniteField(2,2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty19}
+\begin{paste}{RepA6PageEmpty19}{RepA6PagePatch19}
+\pastebutton{RepA6PageEmpty19}{\showpaste}
+\tab{5}\spadcommand{sp3.1\free{sp3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch20}
+\begin{paste}{RepA6PageFull20}{RepA6PageEmpty20}
+\pastebutton{RepA6PageFull20}{\hidepaste}
+\tab{5}\spadcommand{sp3.2\free{sp3 }}
+\indentrel{3}\begin{verbatim}
+   (20)
+    Ú0     1       1     %A + 1  0  0  0  0¿
+    ³                                      ³
+    ³1     1     %A + 1    0     0  0  0  0³
+    ³                                      ³
+    ³%A    0       0       0     0  0  0  0³
+    ³                                      ³
+    ³1     %A      0       0     0  0  0  0³
+   [³                                      ³,
+    ³%A  %A + 1    1       1     1  0  1  1³
+    ³                                      ³
+    ³0     0       %A      1     0  1  0  1³
+    ³                                      ³
+    ³%A    1       0       1     1  1  0  0³
+    ³                                      ³
+    À1     %A    %A + 1    %A    0  1  0  0Ù
+
+   [[%A + 1,1,%A,0,0,%A + 1,0,1],
+    [0,%A,1,1,1,0,%A + 1,%A],
+    [0,%A + 1,0,%A + 1,%A + 1,1,%A + 1,%A],
+    [1,%A + 1,1,%A + 1,0,0,%A + 1,1],
+    [0,%A,0,%A + 1,%A + 1,0,0,%A + 1],
+    [%A + 1,0,%A + 1,%A,0,%A + 1,0,%A + 1],
+    [0,1,0,1,%A + 1,0,%A + 1,%A + 1],
+    [%A,%A,%A,1,%A,%A,1,%A + 1]]
+     ]
+                     Type: List Matrix FiniteField(2,2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty20}
+\begin{paste}{RepA6PageEmpty20}{RepA6PagePatch20}
+\pastebutton{RepA6PageEmpty20}{\showpaste}
+\tab{5}\spadcommand{sp3.2\free{sp3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RepA6PagePatch21}
+\begin{paste}{RepA6PageFull21}{RepA6PageEmpty21}
+\pastebutton{RepA6PageFull21}{\hidepaste}
+\tab{5}\spadcommand{dA6d16\free{dA6d16 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+    Ú0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0¿
+    ³                                              ³
+    ³0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0³
+   [³                                              ³,
+    ³1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1³
+    ³                                              ³
+    ³0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0³
+    ³                                              ³
+    À0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0Ù
+    Ú0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0¿
+    ³                                              ³
+    ³0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1³
+    ³                                              ³
+    ³0  0  0  0  1  0  1  1  1  0  1  1  1  0  1  1³
+    ³                                              ³
+    ³0  0  0  0  0  1  0  1  0  1  0  1  0  1  0  1³
+    ³                                              ³
+    ³0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  0³
+    ³                                              ³
+    ³1  1  1  1  1  1  1  1  0  0  0  0  1  1  1  1³
+    ³                                              ³
+    ³1  0  1  1  1  0  1  1  0  0  0  0  1  0  1  1³
+    ³                                              ³
+    ³0  1  0  1  0  1  0  1  0  0  0  0  0  1  0  1³
+    ³                                              ³]
+    ³0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0³
+    ³                                              ³
+    ³1  1  1  1  1  1  1  1  1  1  1  1  0  0  0  0³
+    ³                                              ³
+    ³1  0  1  1  1  0  1  1  1  0  1  1  0  0  0  0³
+    ³                                              ³
+    ³0  1  0  1  0  1  0  1  0  1  0  1  0  0  0  0³
+    ³                                              ³
+    ³0  0  1  0  0  0  1  0  0  0  1  0  0  0  1  0³
+    ³                                              ³
+    ³1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1³
+    ³                                              ³
+    ³1  0  1  1  1  0  1  1  1  0  1  1  1  0  1  1³
+    ³                                              ³
+    À0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1Ù
+                         Type: List Matrix PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RepA6PageEmpty21}
+\begin{paste}{RepA6PageEmpty21}{RepA6PagePatch21}
+\pastebutton{RepA6PageEmpty21}{\showpaste}
+\tab{5}\spadcommand{dA6d16\free{dA6d16 }}
+\end{paste}\end{patch}
 
 @
 \pagehead{InfoRepTheoryPage}{grpthry.ht}{Representation Theory}
@@ -10990,6 +28384,115 @@ So the project is cancelled and we can delete the data base:
 \autobuttons
 \end{page}
 
+\begin{patch}{GeneralSparseTableXmpPagePatch1}
+\begin{paste}{GeneralSparseTableXmpPageFull1}{GeneralSparseTableXmpPageEmpty1}
+\pastebutton{GeneralSparseTableXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ;\bound{patrons }}
+\indentrel{3}\begin{verbatim}
+Type: GeneralSparseTable(String,Integer,KeyedAccessFile Integer,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty1}
+\begin{paste}{GeneralSparseTableXmpPageEmpty1}{GeneralSparseTableXmpPagePatch1}
+\pastebutton{GeneralSparseTableXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ;\bound{patrons }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch2}
+\begin{paste}{GeneralSparseTableXmpPageFull2}{GeneralSparseTableXmpPageEmpty2}
+\pastebutton{GeneralSparseTableXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{patrons."Smith" := 10500\free{patrons }\bound{smith }}
+\indentrel{3}\begin{verbatim}
+   (2)  10500
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty2}
+\begin{paste}{GeneralSparseTableXmpPageEmpty2}{GeneralSparseTableXmpPagePatch2}
+\pastebutton{GeneralSparseTableXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{patrons."Smith" := 10500\free{patrons }\bound{smith }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch3}
+\begin{paste}{GeneralSparseTableXmpPageFull3}{GeneralSparseTableXmpPageEmpty3}
+\pastebutton{GeneralSparseTableXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{patrons."Jones" := 22000\free{smith }\bound{jones }}
+\indentrel{3}\begin{verbatim}
+   (3)  22000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty3}
+\begin{paste}{GeneralSparseTableXmpPageEmpty3}{GeneralSparseTableXmpPagePatch3}
+\pastebutton{GeneralSparseTableXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{patrons."Jones" := 22000\free{smith }\bound{jones }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch4}
+\begin{paste}{GeneralSparseTableXmpPageFull4}{GeneralSparseTableXmpPageEmpty4}
+\pastebutton{GeneralSparseTableXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{patrons."Jones"\free{jones }}
+\indentrel{3}\begin{verbatim}
+   (4)  22000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty4}
+\begin{paste}{GeneralSparseTableXmpPageEmpty4}{GeneralSparseTableXmpPagePatch4}
+\pastebutton{GeneralSparseTableXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{patrons."Jones"\free{jones }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch5}
+\begin{paste}{GeneralSparseTableXmpPageFull5}{GeneralSparseTableXmpPageEmpty5}
+\pastebutton{GeneralSparseTableXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{patrons."Stingy"\free{jones }}
+\indentrel{3}\begin{verbatim}
+   (5)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty5}
+\begin{paste}{GeneralSparseTableXmpPageEmpty5}{GeneralSparseTableXmpPagePatch5}
+\pastebutton{GeneralSparseTableXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{patrons."Stingy"\free{jones }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch6}
+\begin{paste}{GeneralSparseTableXmpPageFull6}{GeneralSparseTableXmpPageEmpty6}
+\pastebutton{GeneralSparseTableXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{reduce(+, entries patrons)\free{jones }}
+\indentrel{3}\begin{verbatim}
+   (6)  32500
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty6}
+\begin{paste}{GeneralSparseTableXmpPageEmpty6}{GeneralSparseTableXmpPagePatch6}
+\pastebutton{GeneralSparseTableXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{reduce(+, entries patrons)\free{jones }}
+\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPagePatch7}
+\begin{paste}{GeneralSparseTableXmpPageFull7}{GeneralSparseTableXmpPageEmpty7}
+\pastebutton{GeneralSparseTableXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{)system rm -r kaf*.sdata\free{patrons }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{GeneralSparseTableXmpPageEmpty7}
+\begin{paste}{GeneralSparseTableXmpPageEmpty7}{GeneralSparseTableXmpPagePatch7}
+\pastebutton{GeneralSparseTableXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{)system rm -r kaf*.sdata\free{patrons }}
+\end{paste}\end{patch}
+
 @
 \section{heap.ht}
 \pagehead{HeapXmpPage}{heap.ht}{Heap}
@@ -11117,6 +28620,133 @@ These numbers are bona fide algebraic objects.
 \autobuttons
 \end{page}
 
+\begin{patch}{HexExpansionXmpPagePatch1}
+\begin{paste}{HexExpansionXmpPageFull1}{HexExpansionXmpPageEmpty1}
+\pastebutton{HexExpansionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{r := hex(22/7)\bound{r }}
+\indentrel{3}\begin{verbatim}
+          ___
+   (1)  3.249
+                             Type: HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty1}
+\begin{paste}{HexExpansionXmpPageEmpty1}{HexExpansionXmpPagePatch1}
+\pastebutton{HexExpansionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{r := hex(22/7)\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch2}
+\begin{paste}{HexExpansionXmpPageFull2}{HexExpansionXmpPageEmpty2}
+\pastebutton{HexExpansionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{r + hex(6/7)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (2)  4
+                             Type: HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty2}
+\begin{paste}{HexExpansionXmpPageEmpty2}{HexExpansionXmpPagePatch2}
+\pastebutton{HexExpansionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{r + hex(6/7)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch3}
+\begin{paste}{HexExpansionXmpPageFull3}{HexExpansionXmpPageEmpty3}
+\pastebutton{HexExpansionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[hex(1/i) for i in 350..354]}
+\indentrel{3}\begin{verbatim}
+   (3)
+       _______________    _________      _____
+   [0.00BB3EE721A54D88, 0.00BAB6561, 0.00BA2E8,
+      ______________________
+    0.00B9A7862A0FF465879D5F,
+       _____________________________
+    0.00B92143FA36F5E02E4850FE8DBD78]
+                        Type: List HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty3}
+\begin{paste}{HexExpansionXmpPageEmpty3}{HexExpansionXmpPagePatch3}
+\pastebutton{HexExpansionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[hex(1/i) for i in 350..354]}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch4}
+\begin{paste}{HexExpansionXmpPageFull4}{HexExpansionXmpPageEmpty4}
+\pastebutton{HexExpansionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{hex(1/1007)}
+\indentrel{3}\begin{verbatim}
+   (4)
+   0.
+     OVERBAR
+        0041149783F0BF2C7D13933192AF6980619EE345E91EC2BB9
+          D5CCA5C071E40926E54E8DDAE24196C0B2F8A0AAD60DBA5
+          7F5D4C8536262210C74F1
+                             Type: HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty4}
+\begin{paste}{HexExpansionXmpPageEmpty4}{HexExpansionXmpPagePatch4}
+\pastebutton{HexExpansionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{hex(1/1007)}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch5}
+\begin{paste}{HexExpansionXmpPageFull5}{HexExpansionXmpPageEmpty5}
+\pastebutton{HexExpansionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)\bound{p }}
+\indentrel{3}\begin{verbatim}
+            2     _      ___
+   (5)  0.4x  + 0.Ax + 0.71C
+                  Type: Polynomial HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty5}
+\begin{paste}{HexExpansionXmpPageEmpty5}{HexExpansionXmpPagePatch5}
+\pastebutton{HexExpansionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch6}
+\begin{paste}{HexExpansionXmpPageFull6}{HexExpansionXmpPageEmpty6}
+\pastebutton{HexExpansionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
+\indentrel{3}\begin{verbatim}
+                 _
+   (6)  0.8x + 0.A
+                  Type: Polynomial HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty6}
+\begin{paste}{HexExpansionXmpPageEmpty6}{HexExpansionXmpPagePatch6}
+\pastebutton{HexExpansionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPagePatch7}
+\begin{paste}{HexExpansionXmpPageFull7}{HexExpansionXmpPageEmpty7}
+\pastebutton{HexExpansionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+              _
+   (7)  x + 1.5
+                  Type: Polynomial HexadecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{HexExpansionXmpPageEmpty7}
+\begin{paste}{HexExpansionXmpPageEmpty7}{HexExpansionXmpPagePatch7}
+\pastebutton{HexExpansionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g := gcd(p, q)\free{p }\free{q }}
+\end{paste}\end{patch}
+
 @
 \section{int.ht}
 \pagehead{IntegerXmpPage}{int.ht}{Integer}
@@ -11367,6 +28997,493 @@ Records are discussed in detail in
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxIntegerBasicPagePatch1}
+\begin{paste}{ugxIntegerBasicPageFull1}{ugxIntegerBasicPageEmpty1}
+\pastebutton{ugxIntegerBasicPageFull1}{\hidepaste}
+\tab{5}\spadcommand{2**(5678 - 4856 + 2 * 17)}
+\indentrel{3}\begin{verbatim}
+   (1)
+  480481077043500814718154092512592439123952613987168226_
+   34738556100880842000763082930863425270914120837430745_
+   72278211496076276922026433435687527334980249539302425_
+   42523045817764949544214392905306388478705146745768073_
+   877141698859815495632935288783334250628775936
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty1}
+\begin{paste}{ugxIntegerBasicPageEmpty1}{ugxIntegerBasicPagePatch1}
+\pastebutton{ugxIntegerBasicPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{2**(5678 - 4856 + 2 * 17)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch2}
+\begin{paste}{ugxIntegerBasicPageFull2}{ugxIntegerBasicPageEmpty2}
+\pastebutton{ugxIntegerBasicPageFull2}{\hidepaste}
+\tab{5}\spadcommand{x := -101\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (2)  - 101
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty2}
+\begin{paste}{ugxIntegerBasicPageEmpty2}{ugxIntegerBasicPagePatch2}
+\pastebutton{ugxIntegerBasicPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{x := -101\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch3}
+\begin{paste}{ugxIntegerBasicPageFull3}{ugxIntegerBasicPageEmpty3}
+\pastebutton{ugxIntegerBasicPageFull3}{\hidepaste}
+\tab{5}\spadcommand{abs(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (3)  101
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty3}
+\begin{paste}{ugxIntegerBasicPageEmpty3}{ugxIntegerBasicPagePatch3}
+\pastebutton{ugxIntegerBasicPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{abs(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch4}
+\begin{paste}{ugxIntegerBasicPageFull4}{ugxIntegerBasicPageEmpty4}
+\pastebutton{ugxIntegerBasicPageFull4}{\hidepaste}
+\tab{5}\spadcommand{sign(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (4)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty4}
+\begin{paste}{ugxIntegerBasicPageEmpty4}{ugxIntegerBasicPagePatch4}
+\pastebutton{ugxIntegerBasicPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sign(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch5}
+\begin{paste}{ugxIntegerBasicPageFull5}{ugxIntegerBasicPageEmpty5}
+\pastebutton{ugxIntegerBasicPageFull5}{\hidepaste}
+\tab{5}\spadcommand{x < 0\free{x }}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty5}
+\begin{paste}{ugxIntegerBasicPageEmpty5}{ugxIntegerBasicPagePatch5}
+\pastebutton{ugxIntegerBasicPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{x < 0\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch6}
+\begin{paste}{ugxIntegerBasicPageFull6}{ugxIntegerBasicPageEmpty6}
+\pastebutton{ugxIntegerBasicPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x <= -1\free{x }}
+\indentrel{3}\begin{verbatim}
+   (6)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty6}
+\begin{paste}{ugxIntegerBasicPageEmpty6}{ugxIntegerBasicPagePatch6}
+\pastebutton{ugxIntegerBasicPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x <= -1\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch7}
+\begin{paste}{ugxIntegerBasicPageFull7}{ugxIntegerBasicPageEmpty7}
+\pastebutton{ugxIntegerBasicPageFull7}{\hidepaste}
+\tab{5}\spadcommand{negative?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (7)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty7}
+\begin{paste}{ugxIntegerBasicPageEmpty7}{ugxIntegerBasicPagePatch7}
+\pastebutton{ugxIntegerBasicPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{negative?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch8}
+\begin{paste}{ugxIntegerBasicPageFull8}{ugxIntegerBasicPageEmpty8}
+\pastebutton{ugxIntegerBasicPageFull8}{\hidepaste}
+\tab{5}\spadcommand{x > 0\free{x }}
+\indentrel{3}\begin{verbatim}
+   (8)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty8}
+\begin{paste}{ugxIntegerBasicPageEmpty8}{ugxIntegerBasicPagePatch8}
+\pastebutton{ugxIntegerBasicPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{x > 0\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch9}
+\begin{paste}{ugxIntegerBasicPageFull9}{ugxIntegerBasicPageEmpty9}
+\pastebutton{ugxIntegerBasicPageFull9}{\hidepaste}
+\tab{5}\spadcommand{x >= 1\free{x }}
+\indentrel{3}\begin{verbatim}
+   (9)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty9}
+\begin{paste}{ugxIntegerBasicPageEmpty9}{ugxIntegerBasicPagePatch9}
+\pastebutton{ugxIntegerBasicPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{x >= 1\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch10}
+\begin{paste}{ugxIntegerBasicPageFull10}{ugxIntegerBasicPageEmpty10}
+\pastebutton{ugxIntegerBasicPageFull10}{\hidepaste}
+\tab{5}\spadcommand{positive?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (10)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty10}
+\begin{paste}{ugxIntegerBasicPageEmpty10}{ugxIntegerBasicPagePatch10}
+\pastebutton{ugxIntegerBasicPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{positive?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch11}
+\begin{paste}{ugxIntegerBasicPageFull11}{ugxIntegerBasicPageEmpty11}
+\pastebutton{ugxIntegerBasicPageFull11}{\hidepaste}
+\tab{5}\spadcommand{zero?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (11)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty11}
+\begin{paste}{ugxIntegerBasicPageEmpty11}{ugxIntegerBasicPagePatch11}
+\pastebutton{ugxIntegerBasicPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{zero?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch12}
+\begin{paste}{ugxIntegerBasicPageFull12}{ugxIntegerBasicPageEmpty12}
+\pastebutton{ugxIntegerBasicPageFull12}{\hidepaste}
+\tab{5}\spadcommand{one?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (12)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty12}
+\begin{paste}{ugxIntegerBasicPageEmpty12}{ugxIntegerBasicPagePatch12}
+\pastebutton{ugxIntegerBasicPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{one?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch13}
+\begin{paste}{ugxIntegerBasicPageFull13}{ugxIntegerBasicPageEmpty13}
+\pastebutton{ugxIntegerBasicPageFull13}{\hidepaste}
+\tab{5}\spadcommand{(x = -101)@Boolean\free{x }}
+\indentrel{3}\begin{verbatim}
+   (13)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty13}
+\begin{paste}{ugxIntegerBasicPageEmpty13}{ugxIntegerBasicPagePatch13}
+\pastebutton{ugxIntegerBasicPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{(x = -101)@Boolean\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch14}
+\begin{paste}{ugxIntegerBasicPageFull14}{ugxIntegerBasicPageEmpty14}
+\pastebutton{ugxIntegerBasicPageFull14}{\hidepaste}
+\tab{5}\spadcommand{odd?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (14)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty14}
+\begin{paste}{ugxIntegerBasicPageEmpty14}{ugxIntegerBasicPagePatch14}
+\pastebutton{ugxIntegerBasicPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{odd?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch15}
+\begin{paste}{ugxIntegerBasicPageFull15}{ugxIntegerBasicPageEmpty15}
+\pastebutton{ugxIntegerBasicPageFull15}{\hidepaste}
+\tab{5}\spadcommand{even?(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (15)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty15}
+\begin{paste}{ugxIntegerBasicPageEmpty15}{ugxIntegerBasicPagePatch15}
+\pastebutton{ugxIntegerBasicPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{even?(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch16}
+\begin{paste}{ugxIntegerBasicPageFull16}{ugxIntegerBasicPageEmpty16}
+\pastebutton{ugxIntegerBasicPageFull16}{\hidepaste}
+\tab{5}\spadcommand{gcd(56788,43688)}
+\indentrel{3}\begin{verbatim}
+   (16)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty16}
+\begin{paste}{ugxIntegerBasicPageEmpty16}{ugxIntegerBasicPagePatch16}
+\pastebutton{ugxIntegerBasicPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{gcd(56788,43688)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch17}
+\begin{paste}{ugxIntegerBasicPageFull17}{ugxIntegerBasicPageEmpty17}
+\pastebutton{ugxIntegerBasicPageFull17}{\hidepaste}
+\tab{5}\spadcommand{lcm(56788,43688)}
+\indentrel{3}\begin{verbatim}
+   (17)  620238536
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty17}
+\begin{paste}{ugxIntegerBasicPageEmpty17}{ugxIntegerBasicPagePatch17}
+\pastebutton{ugxIntegerBasicPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{lcm(56788,43688)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch18}
+\begin{paste}{ugxIntegerBasicPageFull18}{ugxIntegerBasicPageEmpty18}
+\pastebutton{ugxIntegerBasicPageFull18}{\hidepaste}
+\tab{5}\spadcommand{max(678,567)}
+\indentrel{3}\begin{verbatim}
+   (18)  678
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty18}
+\begin{paste}{ugxIntegerBasicPageEmpty18}{ugxIntegerBasicPagePatch18}
+\pastebutton{ugxIntegerBasicPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{max(678,567)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch19}
+\begin{paste}{ugxIntegerBasicPageFull19}{ugxIntegerBasicPageEmpty19}
+\pastebutton{ugxIntegerBasicPageFull19}{\hidepaste}
+\tab{5}\spadcommand{min(678,567)}
+\indentrel{3}\begin{verbatim}
+   (19)  567
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty19}
+\begin{paste}{ugxIntegerBasicPageEmpty19}{ugxIntegerBasicPagePatch19}
+\pastebutton{ugxIntegerBasicPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{min(678,567)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch20}
+\begin{paste}{ugxIntegerBasicPageFull20}{ugxIntegerBasicPageEmpty20}
+\pastebutton{ugxIntegerBasicPageFull20}{\hidepaste}
+\tab{5}\spadcommand{reduce(max,[2,45,-89,78,100,-45])}
+\indentrel{3}\begin{verbatim}
+   (20)  100
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty20}
+\begin{paste}{ugxIntegerBasicPageEmpty20}{ugxIntegerBasicPagePatch20}
+\pastebutton{ugxIntegerBasicPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{reduce(max,[2,45,-89,78,100,-45])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch21}
+\begin{paste}{ugxIntegerBasicPageFull21}{ugxIntegerBasicPageEmpty21}
+\pastebutton{ugxIntegerBasicPageFull21}{\hidepaste}
+\tab{5}\spadcommand{reduce(min,[2,45,-89,78,100,-45])}
+\indentrel{3}\begin{verbatim}
+   (21)  - 89
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty21}
+\begin{paste}{ugxIntegerBasicPageEmpty21}{ugxIntegerBasicPagePatch21}
+\pastebutton{ugxIntegerBasicPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{reduce(min,[2,45,-89,78,100,-45])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch22}
+\begin{paste}{ugxIntegerBasicPageFull22}{ugxIntegerBasicPageEmpty22}
+\pastebutton{ugxIntegerBasicPageFull22}{\hidepaste}
+\tab{5}\spadcommand{reduce(gcd,[2,45,-89,78,100,-45])}
+\indentrel{3}\begin{verbatim}
+   (22)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty22}
+\begin{paste}{ugxIntegerBasicPageEmpty22}{ugxIntegerBasicPagePatch22}
+\pastebutton{ugxIntegerBasicPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{reduce(gcd,[2,45,-89,78,100,-45])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch23}
+\begin{paste}{ugxIntegerBasicPageFull23}{ugxIntegerBasicPageEmpty23}
+\pastebutton{ugxIntegerBasicPageFull23}{\hidepaste}
+\tab{5}\spadcommand{reduce(lcm,[2,45,-89,78,100,-45])}
+\indentrel{3}\begin{verbatim}
+   (23)  1041300
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty23}
+\begin{paste}{ugxIntegerBasicPageEmpty23}{ugxIntegerBasicPagePatch23}
+\pastebutton{ugxIntegerBasicPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{reduce(lcm,[2,45,-89,78,100,-45])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch24}
+\begin{paste}{ugxIntegerBasicPageFull24}{ugxIntegerBasicPageEmpty24}
+\pastebutton{ugxIntegerBasicPageFull24}{\hidepaste}
+\tab{5}\spadcommand{13 / 4}
+\indentrel{3}\begin{verbatim}
+         13
+   (24)  ÄÄ
+          4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty24}
+\begin{paste}{ugxIntegerBasicPageEmpty24}{ugxIntegerBasicPagePatch24}
+\pastebutton{ugxIntegerBasicPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{13 / 4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch25}
+\begin{paste}{ugxIntegerBasicPageFull25}{ugxIntegerBasicPageEmpty25}
+\pastebutton{ugxIntegerBasicPageFull25}{\hidepaste}
+\tab{5}\spadcommand{13 quo 4}
+\indentrel{3}\begin{verbatim}
+   (25)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty25}
+\begin{paste}{ugxIntegerBasicPageEmpty25}{ugxIntegerBasicPagePatch25}
+\pastebutton{ugxIntegerBasicPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{13 quo 4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch26}
+\begin{paste}{ugxIntegerBasicPageFull26}{ugxIntegerBasicPageEmpty26}
+\pastebutton{ugxIntegerBasicPageFull26}{\hidepaste}
+\tab{5}\spadcommand{13 rem 4}
+\indentrel{3}\begin{verbatim}
+   (26)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty26}
+\begin{paste}{ugxIntegerBasicPageEmpty26}{ugxIntegerBasicPagePatch26}
+\pastebutton{ugxIntegerBasicPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{13 rem 4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch27}
+\begin{paste}{ugxIntegerBasicPageFull27}{ugxIntegerBasicPageEmpty27}
+\pastebutton{ugxIntegerBasicPageFull27}{\hidepaste}
+\tab{5}\spadcommand{zero?(167604736446952 rem 2003644)}
+\indentrel{3}\begin{verbatim}
+   (27)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty27}
+\begin{paste}{ugxIntegerBasicPageEmpty27}{ugxIntegerBasicPagePatch27}
+\pastebutton{ugxIntegerBasicPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{zero?(167604736446952 rem 2003644)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch28}
+\begin{paste}{ugxIntegerBasicPageFull28}{ugxIntegerBasicPageEmpty28}
+\pastebutton{ugxIntegerBasicPageFull28}{\hidepaste}
+\tab{5}\spadcommand{d := divide(13,4)\bound{d }}
+\indentrel{3}\begin{verbatim}
+   (28)  [quotient= 3,remainder= 1]
+     Type: Record(quotient: Integer,remainder: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty28}
+\begin{paste}{ugxIntegerBasicPageEmpty28}{ugxIntegerBasicPagePatch28}
+\pastebutton{ugxIntegerBasicPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{d := divide(13,4)\bound{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch29}
+\begin{paste}{ugxIntegerBasicPageFull29}{ugxIntegerBasicPageEmpty29}
+\pastebutton{ugxIntegerBasicPageFull29}{\hidepaste}
+\tab{5}\spadcommand{d.quotient\free{d }}
+\indentrel{3}\begin{verbatim}
+   (29)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty29}
+\begin{paste}{ugxIntegerBasicPageEmpty29}{ugxIntegerBasicPagePatch29}
+\pastebutton{ugxIntegerBasicPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{d.quotient\free{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPagePatch30}
+\begin{paste}{ugxIntegerBasicPageFull30}{ugxIntegerBasicPageEmpty30}
+\pastebutton{ugxIntegerBasicPageFull30}{\hidepaste}
+\tab{5}\spadcommand{d.remainder\free{d }}
+\indentrel{3}\begin{verbatim}
+   (30)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerBasicPageEmpty30}
+\begin{paste}{ugxIntegerBasicPageEmpty30}{ugxIntegerBasicPagePatch30}
+\pastebutton{ugxIntegerBasicPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{d.remainder\free{d }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxIntegerPrimesPage}{int.ht}{Primes and Factorization}
 \pagepic{ps/v71ugxintegerprimespage.eps}{ugxIntegerPrimesPage}
@@ -11430,6 +29547,122 @@ See \downlink{`Complex'}{ComplexXmpPage}\ignore{Complex} for more details.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxIntegerPrimesPagePatch1}
+\begin{paste}{ugxIntegerPrimesPageFull1}{ugxIntegerPrimesPageEmpty1}
+\pastebutton{ugxIntegerPrimesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{factor 102400}
+\indentrel{3}\begin{verbatim}
+         12 2
+   (1)  2  5
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty1}
+\begin{paste}{ugxIntegerPrimesPageEmpty1}{ugxIntegerPrimesPagePatch1}
+\pastebutton{ugxIntegerPrimesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{factor 102400}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch2}
+\begin{paste}{ugxIntegerPrimesPageFull2}{ugxIntegerPrimesPageEmpty2}
+\pastebutton{ugxIntegerPrimesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{prime? 7}
+\indentrel{3}\begin{verbatim}
+   (2)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty2}
+\begin{paste}{ugxIntegerPrimesPageEmpty2}{ugxIntegerPrimesPagePatch2}
+\pastebutton{ugxIntegerPrimesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{prime? 7}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch3}
+\begin{paste}{ugxIntegerPrimesPageFull3}{ugxIntegerPrimesPageEmpty3}
+\pastebutton{ugxIntegerPrimesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{prime? 8}
+\indentrel{3}\begin{verbatim}
+   (3)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty3}
+\begin{paste}{ugxIntegerPrimesPageEmpty3}{ugxIntegerPrimesPagePatch3}
+\pastebutton{ugxIntegerPrimesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{prime? 8}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch4}
+\begin{paste}{ugxIntegerPrimesPageFull4}{ugxIntegerPrimesPageEmpty4}
+\pastebutton{ugxIntegerPrimesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{nextPrime 100}
+\indentrel{3}\begin{verbatim}
+   (4)  101
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty4}
+\begin{paste}{ugxIntegerPrimesPageEmpty4}{ugxIntegerPrimesPagePatch4}
+\pastebutton{ugxIntegerPrimesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{nextPrime 100}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch5}
+\begin{paste}{ugxIntegerPrimesPageFull5}{ugxIntegerPrimesPageEmpty5}
+\pastebutton{ugxIntegerPrimesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{prevPrime 100}
+\indentrel{3}\begin{verbatim}
+   (5)  97
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty5}
+\begin{paste}{ugxIntegerPrimesPageEmpty5}{ugxIntegerPrimesPagePatch5}
+\pastebutton{ugxIntegerPrimesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{prevPrime 100}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch6}
+\begin{paste}{ugxIntegerPrimesPageFull6}{ugxIntegerPrimesPageEmpty6}
+\pastebutton{ugxIntegerPrimesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{primes(100,175)}
+\indentrel{3}\begin{verbatim}
+   (6)
+   [173, 167, 163, 157, 151, 149, 139, 137, 131, 127,
+    113, 109, 107, 103, 101]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty6}
+\begin{paste}{ugxIntegerPrimesPageEmpty6}{ugxIntegerPrimesPagePatch6}
+\pastebutton{ugxIntegerPrimesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{primes(100,175)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPagePatch7}
+\begin{paste}{ugxIntegerPrimesPageFull7}{ugxIntegerPrimesPageEmpty7}
+\pastebutton{ugxIntegerPrimesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factor(2 :: Complex Integer)}
+\indentrel{3}\begin{verbatim}
+                     2
+   (7)  - %i (1 + %i)
+                         Type: Factored Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerPrimesPageEmpty7}
+\begin{paste}{ugxIntegerPrimesPageEmpty7}{ugxIntegerPrimesPagePatch7}
+\pastebutton{ugxIntegerPrimesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factor(2 :: Complex Integer)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxIntegerNTPage}{int.ht}{Some Number Theoretic Functions}
 \pagepic{ps/v71ugxintegerntpage.eps}{ugxIntegerNTPage}
@@ -11512,7 +29745,166 @@ Roman numerals.
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{ugxIntegerNTPagePatch1}
+\begin{paste}{ugxIntegerNTPageFull1}{ugxIntegerNTPageEmpty1}
+\pastebutton{ugxIntegerNTPageFull1}{\hidepaste}
+\tab{5}\spadcommand{[fibonacci(k) for k in 0..]}
+\indentrel{3}\begin{verbatim}
+   (1)  [0,1,1,2,3,5,8,13,21,34,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty1}
+\begin{paste}{ugxIntegerNTPageEmpty1}{ugxIntegerNTPagePatch1}
+\pastebutton{ugxIntegerNTPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{[fibonacci(k) for k in 0..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch2}
+\begin{paste}{ugxIntegerNTPageFull2}{ugxIntegerNTPageEmpty2}
+\pastebutton{ugxIntegerNTPageFull2}{\hidepaste}
+\tab{5}\spadcommand{[legendre(i,11) for i in 0..10]}
+\indentrel{3}\begin{verbatim}
+   (2)  [0,1,- 1,1,1,1,- 1,- 1,- 1,1,- 1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty2}
+\begin{paste}{ugxIntegerNTPageEmpty2}{ugxIntegerNTPagePatch2}
+\pastebutton{ugxIntegerNTPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{[legendre(i,11) for i in 0..10]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch3}
+\begin{paste}{ugxIntegerNTPageFull3}{ugxIntegerNTPageEmpty3}
+\pastebutton{ugxIntegerNTPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[jacobi(i,15) for i in 0..9]}
+\indentrel{3}\begin{verbatim}
+   (3)  [0,1,1,0,1,0,0,- 1,1,0]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty3}
+\begin{paste}{ugxIntegerNTPageEmpty3}{ugxIntegerNTPagePatch3}
+\pastebutton{ugxIntegerNTPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[jacobi(i,15) for i in 0..9]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch4}
+\begin{paste}{ugxIntegerNTPageFull4}{ugxIntegerNTPageEmpty4}
+\pastebutton{ugxIntegerNTPageFull4}{\hidepaste}
+\tab{5}\spadcommand{[eulerPhi i for i in 1..]}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,1,2,2,4,2,6,4,6,4,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty4}
+\begin{paste}{ugxIntegerNTPageEmpty4}{ugxIntegerNTPagePatch4}
+\pastebutton{ugxIntegerNTPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{[eulerPhi i for i in 1..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch5}
+\begin{paste}{ugxIntegerNTPageFull5}{ugxIntegerNTPageEmpty5}
+\pastebutton{ugxIntegerNTPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[moebiusMu i for i in 1..]}
+\indentrel{3}\begin{verbatim}
+   (5)  [1,- 1,- 1,0,- 1,1,- 1,0,0,1,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty5}
+\begin{paste}{ugxIntegerNTPageEmpty5}{ugxIntegerNTPagePatch5}
+\pastebutton{ugxIntegerNTPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[moebiusMu i for i in 1..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch6}
+\begin{paste}{ugxIntegerNTPageFull6}{ugxIntegerNTPageEmpty6}
+\pastebutton{ugxIntegerNTPageFull6}{\hidepaste}
+\tab{5}\spadcommand{a := roman(78)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (6)  LXXVIII
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty6}
+\begin{paste}{ugxIntegerNTPageEmpty6}{ugxIntegerNTPagePatch6}
+\pastebutton{ugxIntegerNTPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{a := roman(78)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch7}
+\begin{paste}{ugxIntegerNTPageFull7}{ugxIntegerNTPageEmpty7}
+\pastebutton{ugxIntegerNTPageFull7}{\hidepaste}
+\tab{5}\spadcommand{b := roman(87)\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (7)  LXXXVII
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty7}
+\begin{paste}{ugxIntegerNTPageEmpty7}{ugxIntegerNTPagePatch7}
+\pastebutton{ugxIntegerNTPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{b := roman(87)\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch8}
+\begin{paste}{ugxIntegerNTPageFull8}{ugxIntegerNTPageEmpty8}
+\pastebutton{ugxIntegerNTPageFull8}{\hidepaste}
+\tab{5}\spadcommand{a + b\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (8)  CLXV
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty8}
+\begin{paste}{ugxIntegerNTPageEmpty8}{ugxIntegerNTPagePatch8}
+\pastebutton{ugxIntegerNTPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{a + b\free{a }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch9}
+\begin{paste}{ugxIntegerNTPageFull9}{ugxIntegerNTPageEmpty9}
+\pastebutton{ugxIntegerNTPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a * b\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (9)  MMMMMMDCCLXXXVI
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty9}
+\begin{paste}{ugxIntegerNTPageEmpty9}{ugxIntegerNTPagePatch9}
+\pastebutton{ugxIntegerNTPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a * b\free{a }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPagePatch10}
+\begin{paste}{ugxIntegerNTPageFull10}{ugxIntegerNTPageEmpty10}
+\pastebutton{ugxIntegerNTPageFull10}{\hidepaste}
+\tab{5}\spadcommand{b rem a\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (10)  IX
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxIntegerNTPageEmpty10}
+\begin{paste}{ugxIntegerNTPageEmpty10}{ugxIntegerNTPagePatch10}
+\pastebutton{ugxIntegerNTPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{b rem a\free{a }\free{b }}
+\end{paste}\end{patch}
 
 @
 \section{intheory.ht}
@@ -11737,6 +30129,354 @@ quadratic field with discriminant \spad{d}.
 \autobuttons
 \end{page}
 
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch1}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull1}{IntNumberTheoryFnsXmpPageEmpty1}
+\pastebutton{IntNumberTheoryFnsXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{div144 := divisors(144)\bound{div144 }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3,4,6,8,9,12,16,18,24,36,48,72,144]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty1}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty1}{IntNumberTheoryFnsXmpPagePatch1}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{div144 := divisors(144)\bound{div144 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch2}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull2}{IntNumberTheoryFnsXmpPageEmpty2}
+\pastebutton{IntNumberTheoryFnsXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{\#(div144)\free{div144 }}
+\indentrel{3}\begin{verbatim}
+   (2)  15
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty2}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty2}{IntNumberTheoryFnsXmpPagePatch2}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{\#(div144)\free{div144 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch3}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull3}{IntNumberTheoryFnsXmpPageEmpty3}
+\pastebutton{IntNumberTheoryFnsXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,div144)\free{div144 }}
+\indentrel{3}\begin{verbatim}
+   (3)  403
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty3}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty3}{IntNumberTheoryFnsXmpPagePatch3}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{reduce(+,div144)\free{div144 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch4}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull4}{IntNumberTheoryFnsXmpPageEmpty4}
+\pastebutton{IntNumberTheoryFnsXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{numberOfDivisors(144)}
+\indentrel{3}\begin{verbatim}
+   (4)  15
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty4}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty4}{IntNumberTheoryFnsXmpPagePatch4}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{numberOfDivisors(144)}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch5}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull5}{IntNumberTheoryFnsXmpPageEmpty5}
+\pastebutton{IntNumberTheoryFnsXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{sumOfDivisors(144)}
+\indentrel{3}\begin{verbatim}
+   (5)  403
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty5}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty5}{IntNumberTheoryFnsXmpPagePatch5}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sumOfDivisors(144)}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch6}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull6}{IntNumberTheoryFnsXmpPageEmpty6}
+\pastebutton{IntNumberTheoryFnsXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty6}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty6}{IntNumberTheoryFnsXmpPagePatch6}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch7}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull7}{IntNumberTheoryFnsXmpPageEmpty7}
+\pastebutton{IntNumberTheoryFnsXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{f1(200)\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty7}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty7}{IntNumberTheoryFnsXmpPagePatch7}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f1(200)\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch8}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull8}{IntNumberTheoryFnsXmpPageEmpty8}
+\pastebutton{IntNumberTheoryFnsXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f1(846)\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (8)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty8}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty8}{IntNumberTheoryFnsXmpPagePatch8}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f1(846)\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch9}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull9}{IntNumberTheoryFnsXmpPageEmpty9}
+\pastebutton{IntNumberTheoryFnsXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty9}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty9}{IntNumberTheoryFnsXmpPagePatch9}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch10}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull10}{IntNumberTheoryFnsXmpPageEmpty10}
+\pastebutton{IntNumberTheoryFnsXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{f2(200)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (10)  200
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty10}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty10}{IntNumberTheoryFnsXmpPagePatch10}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{f2(200)\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch11}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull11}{IntNumberTheoryFnsXmpPageEmpty11}
+\pastebutton{IntNumberTheoryFnsXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{f2(846)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (11)  846
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty11}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty11}{IntNumberTheoryFnsXmpPagePatch11}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{f2(846)\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch12}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull12}{IntNumberTheoryFnsXmpPageEmpty12}
+\pastebutton{IntNumberTheoryFnsXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{fibonacci(25)}
+\indentrel{3}\begin{verbatim}
+   (12)  75025
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty12}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty12}{IntNumberTheoryFnsXmpPagePatch12}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{fibonacci(25)}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch13}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull13}{IntNumberTheoryFnsXmpPageEmpty13}
+\pastebutton{IntNumberTheoryFnsXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{[fibonacci(n) for n in 1..15]}
+\indentrel{3}\begin{verbatim}
+   (13)  [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty13}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty13}{IntNumberTheoryFnsXmpPagePatch13}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{[fibonacci(n) for n in 1..15]}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch14}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull14}{IntNumberTheoryFnsXmpPageEmpty14}
+\pastebutton{IntNumberTheoryFnsXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)])\bound{fib }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty14}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty14}{IntNumberTheoryFnsXmpPagePatch14}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)])\bound{fib }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch15}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull15}{IntNumberTheoryFnsXmpPageEmpty15}
+\pastebutton{IntNumberTheoryFnsXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{fib(25)\free{fib }}
+\indentrel{3}\begin{verbatim}
+   (15)  75025
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty15}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty15}{IntNumberTheoryFnsXmpPagePatch15}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{fib(25)\free{fib }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch16}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull16}{IntNumberTheoryFnsXmpPageEmpty16}
+\pastebutton{IntNumberTheoryFnsXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{[fib(n) for n in 1..15]\free{fib }}
+\indentrel{3}\begin{verbatim}
+   (16)  [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty16}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty16}{IntNumberTheoryFnsXmpPagePatch16}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[fib(n) for n in 1..15]\free{fib }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch17}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull17}{IntNumberTheoryFnsXmpPageEmpty17}
+\pastebutton{IntNumberTheoryFnsXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{legendre(3,5)}
+\indentrel{3}\begin{verbatim}
+   (17)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty17}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty17}{IntNumberTheoryFnsXmpPagePatch17}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{legendre(3,5)}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch18}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull18}{IntNumberTheoryFnsXmpPageEmpty18}
+\pastebutton{IntNumberTheoryFnsXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{legendre(23,691)}
+\indentrel{3}\begin{verbatim}
+   (18)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty18}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty18}{IntNumberTheoryFnsXmpPagePatch18}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{legendre(23,691)}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch19}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull19}{IntNumberTheoryFnsXmpPageEmpty19}
+\pastebutton{IntNumberTheoryFnsXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2))\bound{h }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty19}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty19}{IntNumberTheoryFnsXmpPagePatch19}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2))\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch20}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull20}{IntNumberTheoryFnsXmpPageEmpty20}
+\pastebutton{IntNumberTheoryFnsXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{h(-163)\free{h }}
+\indentrel{3}\begin{verbatim}
+   (20)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty20}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty20}{IntNumberTheoryFnsXmpPagePatch20}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{h(-163)\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch21}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull21}{IntNumberTheoryFnsXmpPageEmpty21}
+\pastebutton{IntNumberTheoryFnsXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{h(-499)\free{h }}
+\indentrel{3}\begin{verbatim}
+   (21)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty21}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty21}{IntNumberTheoryFnsXmpPagePatch21}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{h(-499)\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPagePatch22}
+\begin{paste}{IntNumberTheoryFnsXmpPageFull22}{IntNumberTheoryFnsXmpPageEmpty22}
+\pastebutton{IntNumberTheoryFnsXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{h(-1832)\free{h }}
+\indentrel{3}\begin{verbatim}
+   (22)  26
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntNumberTheoryFnsXmpPageEmpty22}
+\begin{paste}{IntNumberTheoryFnsXmpPageEmpty22}{IntNumberTheoryFnsXmpPagePatch22}
+\pastebutton{IntNumberTheoryFnsXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{h(-1832)\free{h }}
+\end{paste}\end{patch}
+
 @
 \section{kafile.ht}
 \pagehead{KeyedAccessFileXmpPage}{kafile.ht}{KeyedAccessFile}
@@ -11879,6 +30619,341 @@ For more information on related topics,  see
 \autobuttons
 \end{page}
 
+\begin{patch}{KeyedAccessFileXmpPagePatch1}
+\begin{paste}{KeyedAccessFileXmpPageFull1}{KeyedAccessFileXmpPageEmpty1}
+\pastebutton{KeyedAccessFileXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")\bound{ey }}
+\indentrel{3}\begin{verbatim}
+   (1)  "/tmp/editor.year"
+                          Type: KeyedAccessFile Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty1}
+\begin{paste}{KeyedAccessFileXmpPageEmpty1}{KeyedAccessFileXmpPagePatch1}
+\pastebutton{KeyedAccessFileXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")\bound{ey }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch2}
+\begin{paste}{KeyedAccessFileXmpPageFull2}{KeyedAccessFileXmpPageEmpty2}
+\pastebutton{KeyedAccessFileXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ey."Char" := 1986\free{ey }\bound{eya }}
+\indentrel{3}\begin{verbatim}
+   (2)  1986
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty2}
+\begin{paste}{KeyedAccessFileXmpPageEmpty2}{KeyedAccessFileXmpPagePatch2}
+\pastebutton{KeyedAccessFileXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ey."Char" := 1986\free{ey }\bound{eya }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch3}
+\begin{paste}{KeyedAccessFileXmpPageFull3}{KeyedAccessFileXmpPageEmpty3}
+\pastebutton{KeyedAccessFileXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{ey."Caviness" := 1985\free{ey }\bound{eyb }}
+\indentrel{3}\begin{verbatim}
+   (3)  1985
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty3}
+\begin{paste}{KeyedAccessFileXmpPageEmpty3}{KeyedAccessFileXmpPagePatch3}
+\pastebutton{KeyedAccessFileXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{ey."Caviness" := 1985\free{ey }\bound{eyb }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch4}
+\begin{paste}{KeyedAccessFileXmpPageFull4}{KeyedAccessFileXmpPageEmpty4}
+\pastebutton{KeyedAccessFileXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{ey."Fitch" := 1984\free{ey }\bound{eyc }}
+\indentrel{3}\begin{verbatim}
+   (4)  1984
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty4}
+\begin{paste}{KeyedAccessFileXmpPageEmpty4}{KeyedAccessFileXmpPagePatch4}
+\pastebutton{KeyedAccessFileXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{ey."Fitch" := 1984\free{ey }\bound{eyc }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch5}
+\begin{paste}{KeyedAccessFileXmpPageFull5}{KeyedAccessFileXmpPageEmpty5}
+\pastebutton{KeyedAccessFileXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{ey."Char"\free{eya }}
+\indentrel{3}\begin{verbatim}
+   (5)  1986
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty5}
+\begin{paste}{KeyedAccessFileXmpPageEmpty5}{KeyedAccessFileXmpPagePatch5}
+\pastebutton{KeyedAccessFileXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{ey."Char"\free{eya }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch6}
+\begin{paste}{KeyedAccessFileXmpPageFull6}{KeyedAccessFileXmpPageEmpty6}
+\pastebutton{KeyedAccessFileXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{ey("Char")\free{eya }}
+\indentrel{3}\begin{verbatim}
+   (6)  1986
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty6}
+\begin{paste}{KeyedAccessFileXmpPageEmpty6}{KeyedAccessFileXmpPagePatch6}
+\pastebutton{KeyedAccessFileXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{ey("Char")\free{eya }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch7}
+\begin{paste}{KeyedAccessFileXmpPageFull7}{KeyedAccessFileXmpPageEmpty7}
+\pastebutton{KeyedAccessFileXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{ey "Char"\free{eya }}
+\indentrel{3}\begin{verbatim}
+   (7)  1986
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty7}
+\begin{paste}{KeyedAccessFileXmpPageEmpty7}{KeyedAccessFileXmpPagePatch7}
+\pastebutton{KeyedAccessFileXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{ey "Char"\free{eya }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch8}
+\begin{paste}{KeyedAccessFileXmpPageFull8}{KeyedAccessFileXmpPageEmpty8}
+\pastebutton{KeyedAccessFileXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{search("Char", ey)\free{eya eyb eyc }\bound{eyaa }}
+\indentrel{3}\begin{verbatim}
+   (8)  1986
+                               Type: Union(Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty8}
+\begin{paste}{KeyedAccessFileXmpPageEmpty8}{KeyedAccessFileXmpPagePatch8}
+\pastebutton{KeyedAccessFileXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{search("Char", ey)\free{eya eyb eyc }\bound{eyaa }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch9}
+\begin{paste}{KeyedAccessFileXmpPageFull9}{KeyedAccessFileXmpPageEmpty9}
+\pastebutton{KeyedAccessFileXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{search("Smith", ey)\free{eyaa }}
+\indentrel{3}\begin{verbatim}
+   (9)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty9}
+\begin{paste}{KeyedAccessFileXmpPageEmpty9}{KeyedAccessFileXmpPagePatch9}
+\pastebutton{KeyedAccessFileXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{search("Smith", ey)\free{eyaa }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch10}
+\begin{paste}{KeyedAccessFileXmpPageFull10}{KeyedAccessFileXmpPageEmpty10}
+\pastebutton{KeyedAccessFileXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{remove!("Char", ey)\free{eyaa }\bound{eybb }}
+\indentrel{3}\begin{verbatim}
+   (10)  1986
+                               Type: Union(Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty10}
+\begin{paste}{KeyedAccessFileXmpPageEmpty10}{KeyedAccessFileXmpPagePatch10}
+\pastebutton{KeyedAccessFileXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{remove!("Char", ey)\free{eyaa }\bound{eybb }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch11}
+\begin{paste}{KeyedAccessFileXmpPageFull11}{KeyedAccessFileXmpPageEmpty11}
+\pastebutton{KeyedAccessFileXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{keys ey\free{eybb }}
+\indentrel{3}\begin{verbatim}
+   (11)  ["Fitch","Caviness"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty11}
+\begin{paste}{KeyedAccessFileXmpPageEmpty11}{KeyedAccessFileXmpPagePatch11}
+\pastebutton{KeyedAccessFileXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{keys ey\free{eybb }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch12}
+\begin{paste}{KeyedAccessFileXmpPageFull12}{KeyedAccessFileXmpPageEmpty12}
+\pastebutton{KeyedAccessFileXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{\#ey\free{eybb }}
+\indentrel{3}\begin{verbatim}
+   (12)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty12}
+\begin{paste}{KeyedAccessFileXmpPageEmpty12}{KeyedAccessFileXmpPagePatch12}
+\pastebutton{KeyedAccessFileXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{\#ey\free{eybb }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch13}
+\begin{paste}{KeyedAccessFileXmpPageFull13}{KeyedAccessFileXmpPageEmpty13}
+\pastebutton{KeyedAccessFileXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{KE := Record(key: String, entry: Integer)\bound{KE }}
+\indentrel{3}\begin{verbatim}
+   (13)  Record(key: String,entry: Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty13}
+\begin{paste}{KeyedAccessFileXmpPageEmpty13}{KeyedAccessFileXmpPagePatch13}
+\pastebutton{KeyedAccessFileXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{KE := Record(key: String, entry: Integer)\bound{KE }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch14}
+\begin{paste}{KeyedAccessFileXmpPageFull14}{KeyedAccessFileXmpPageEmpty14}
+\pastebutton{KeyedAccessFileXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{reopen!(ey, "output")\free{eybb KE }\bound{eycc }}
+\indentrel{3}\begin{verbatim}
+   (14)  "/tmp/editor.year"
+                          Type: KeyedAccessFile Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty14}
+\begin{paste}{KeyedAccessFileXmpPageEmpty14}{KeyedAccessFileXmpPagePatch14}
+\pastebutton{KeyedAccessFileXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{reopen!(ey, "output")\free{eybb KE }\bound{eycc }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch15}
+\begin{paste}{KeyedAccessFileXmpPageFull15}{KeyedAccessFileXmpPageEmpty15}
+\pastebutton{KeyedAccessFileXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{write!(ey, ["van Hulzen", 1983]$KE)\bound{eyccA }\free{eycc }}
+\indentrel{3}\begin{verbatim}
+   (15)  [key= "van Hulzen",entry= 1983]
+               Type: Record(key: String,entry: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty15}
+\begin{paste}{KeyedAccessFileXmpPageEmpty15}{KeyedAccessFileXmpPagePatch15}
+\pastebutton{KeyedAccessFileXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{write!(ey, ["van Hulzen", 1983]$KE)\bound{eyccA }\free{eycc }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch16}
+\begin{paste}{KeyedAccessFileXmpPageFull16}{KeyedAccessFileXmpPageEmpty16}
+\pastebutton{KeyedAccessFileXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{write!(ey, ["Calmet", 1982]$KE)\bound{eyccB }\free{eycc }}
+\indentrel{3}\begin{verbatim}
+   (16)  [key= "Calmet",entry= 1982]
+               Type: Record(key: String,entry: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty16}
+\begin{paste}{KeyedAccessFileXmpPageEmpty16}{KeyedAccessFileXmpPagePatch16}
+\pastebutton{KeyedAccessFileXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{write!(ey, ["Calmet", 1982]$KE)\bound{eyccB }\free{eycc }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch17}
+\begin{paste}{KeyedAccessFileXmpPageFull17}{KeyedAccessFileXmpPageEmpty17}
+\pastebutton{KeyedAccessFileXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{write!(ey, ["Wang", 1981]$KE)\bound{eyccC }\free{eycc }}
+\indentrel{3}\begin{verbatim}
+   (17)  [key= "Wang",entry= 1981]
+               Type: Record(key: String,entry: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty17}
+\begin{paste}{KeyedAccessFileXmpPageEmpty17}{KeyedAccessFileXmpPagePatch17}
+\pastebutton{KeyedAccessFileXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{write!(ey, ["Wang", 1981]$KE)\bound{eyccC }\free{eycc }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch18}
+\begin{paste}{KeyedAccessFileXmpPageFull18}{KeyedAccessFileXmpPageEmpty18}
+\pastebutton{KeyedAccessFileXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{close! ey\free{eyccA eyccB eyccC }\bound{eydd }}
+\indentrel{3}\begin{verbatim}
+   (18)  "/tmp/editor.year"
+                          Type: KeyedAccessFile Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty18}
+\begin{paste}{KeyedAccessFileXmpPageEmpty18}{KeyedAccessFileXmpPagePatch18}
+\pastebutton{KeyedAccessFileXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{close! ey\free{eyccA eyccB eyccC }\bound{eydd }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch19}
+\begin{paste}{KeyedAccessFileXmpPageFull19}{KeyedAccessFileXmpPageEmpty19}
+\pastebutton{KeyedAccessFileXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{keys ey\free{eydd }}
+\indentrel{3}\begin{verbatim}
+   (19)
+   ["Wang","Calmet","van Hulzen","Fitch","Caviness"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty19}
+\begin{paste}{KeyedAccessFileXmpPageEmpty19}{KeyedAccessFileXmpPagePatch19}
+\pastebutton{KeyedAccessFileXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{keys ey\free{eydd }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch20}
+\begin{paste}{KeyedAccessFileXmpPageFull20}{KeyedAccessFileXmpPageEmpty20}
+\pastebutton{KeyedAccessFileXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{members ey\free{eydd }}
+\indentrel{3}\begin{verbatim}
+   (20)  [1981,1982,1983,1984,1985]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty20}
+\begin{paste}{KeyedAccessFileXmpPageEmpty20}{KeyedAccessFileXmpPagePatch20}
+\pastebutton{KeyedAccessFileXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{members ey\free{eydd }}
+\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPagePatch21}
+\begin{paste}{KeyedAccessFileXmpPageFull21}{KeyedAccessFileXmpPageEmpty21}
+\pastebutton{KeyedAccessFileXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{)system rm -r /tmp/editor.year\free{ey }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KeyedAccessFileXmpPageEmpty21}
+\begin{paste}{KeyedAccessFileXmpPageEmpty21}{KeyedAccessFileXmpPagePatch21}
+\pastebutton{KeyedAccessFileXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{)system rm -r /tmp/editor.year\free{ey }}
+\end{paste}\end{patch}
+
 @
 \section{kernel.ht}
 \pagehead{KernelXmpPage}{kernel.ht}{Kernel}
@@ -12023,6 +31098,311 @@ take apart expression objects.
 \autobuttons
 \end{page}
 
+\begin{patch}{KernelXmpPagePatch1}
+\begin{paste}{KernelXmpPageFull1}{KernelXmpPageEmpty1}
+\pastebutton{KernelXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x :: Expression Integer}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty1}
+\begin{paste}{KernelXmpPageEmpty1}{KernelXmpPagePatch1}
+\pastebutton{KernelXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x :: Expression Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch2}
+\begin{paste}{KernelXmpPageFull2}{KernelXmpPageEmpty2}
+\pastebutton{KernelXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{kernel x}
+\indentrel{3}\begin{verbatim}
+   (2)  x
+                        Type: Kernel Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty2}
+\begin{paste}{KernelXmpPageEmpty2}{KernelXmpPagePatch2}
+\pastebutton{KernelXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{kernel x}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch3}
+\begin{paste}{KernelXmpPageFull3}{KernelXmpPageEmpty3}
+\pastebutton{KernelXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sin(x) + cos(x)\bound{sincos }}
+\indentrel{3}\begin{verbatim}
+   (3)  sin(x) + cos(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty3}
+\begin{paste}{KernelXmpPageEmpty3}{KernelXmpPagePatch3}
+\pastebutton{KernelXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sin(x) + cos(x)\bound{sincos }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch4}
+\begin{paste}{KernelXmpPageFull4}{KernelXmpPageEmpty4}
+\pastebutton{KernelXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{kernels \%\free{sincos }}
+\indentrel{3}\begin{verbatim}
+   (4)  [sin(x),cos(x)]
+                   Type: List Kernel Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty4}
+\begin{paste}{KernelXmpPageEmpty4}{KernelXmpPagePatch4}
+\pastebutton{KernelXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{kernels \%\free{sincos }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch5}
+\begin{paste}{KernelXmpPageFull5}{KernelXmpPageEmpty5}
+\pastebutton{KernelXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{sin(x)**2 + sin(x) + cos(x)\bound{sincos2 }}
+\indentrel{3}\begin{verbatim}
+              2
+   (5)  sin(x)  + sin(x) + cos(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty5}
+\begin{paste}{KernelXmpPageEmpty5}{KernelXmpPagePatch5}
+\pastebutton{KernelXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sin(x)**2 + sin(x) + cos(x)\bound{sincos2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch6}
+\begin{paste}{KernelXmpPageFull6}{KernelXmpPageEmpty6}
+\pastebutton{KernelXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{kernels \%\free{sincos2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [sin(x),cos(x)]
+                   Type: List Kernel Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty6}
+\begin{paste}{KernelXmpPageEmpty6}{KernelXmpPagePatch6}
+\pastebutton{KernelXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{kernels \%\free{sincos2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch7}
+\begin{paste}{KernelXmpPageFull7}{KernelXmpPageEmpty7}
+\pastebutton{KernelXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{kernels(1 :: Expression Integer)}
+\indentrel{3}\begin{verbatim}
+   (7)  []
+                   Type: List Kernel Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty7}
+\begin{paste}{KernelXmpPageEmpty7}{KernelXmpPagePatch7}
+\pastebutton{KernelXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{kernels(1 :: Expression Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch8}
+\begin{paste}{KernelXmpPageFull8}{KernelXmpPageEmpty8}
+\pastebutton{KernelXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{mainKernel(cos(x) + tan(x))}
+\indentrel{3}\begin{verbatim}
+   (8)  tan(x)
+             Type: Union(Kernel Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty8}
+\begin{paste}{KernelXmpPageEmpty8}{KernelXmpPagePatch8}
+\pastebutton{KernelXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{mainKernel(cos(x) + tan(x))}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch9}
+\begin{paste}{KernelXmpPageFull9}{KernelXmpPageEmpty9}
+\pastebutton{KernelXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{height kernel x}
+\indentrel{3}\begin{verbatim}
+   (9)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty9}
+\begin{paste}{KernelXmpPageEmpty9}{KernelXmpPagePatch9}
+\pastebutton{KernelXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{height kernel x}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch10}
+\begin{paste}{KernelXmpPageFull10}{KernelXmpPageEmpty10}
+\pastebutton{KernelXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{height mainKernel(sin x)}
+\indentrel{3}\begin{verbatim}
+   (10)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty10}
+\begin{paste}{KernelXmpPageEmpty10}{KernelXmpPagePatch10}
+\pastebutton{KernelXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{height mainKernel(sin x)}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch11}
+\begin{paste}{KernelXmpPageFull11}{KernelXmpPageEmpty11}
+\pastebutton{KernelXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{height mainKernel(sin cos x)}
+\indentrel{3}\begin{verbatim}
+   (11)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty11}
+\begin{paste}{KernelXmpPageEmpty11}{KernelXmpPagePatch11}
+\pastebutton{KernelXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{height mainKernel(sin cos x)}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch12}
+\begin{paste}{KernelXmpPageFull12}{KernelXmpPageEmpty12}
+\pastebutton{KernelXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{height mainKernel(sin cos (tan x + sin x))}
+\indentrel{3}\begin{verbatim}
+   (12)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty12}
+\begin{paste}{KernelXmpPageEmpty12}{KernelXmpPagePatch12}
+\pastebutton{KernelXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{height mainKernel(sin cos (tan x + sin x))}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch13}
+\begin{paste}{KernelXmpPageFull13}{KernelXmpPageEmpty13}
+\pastebutton{KernelXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{operator mainKernel(sin cos (tan x + sin x))}
+\indentrel{3}\begin{verbatim}
+   (13)  sin
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty13}
+\begin{paste}{KernelXmpPageEmpty13}{KernelXmpPagePatch13}
+\pastebutton{KernelXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{operator mainKernel(sin cos (tan x + sin x))}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch14}
+\begin{paste}{KernelXmpPageFull14}{KernelXmpPageEmpty14}
+\pastebutton{KernelXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{name mainKernel(sin cos (tan x + sin x))}
+\indentrel{3}\begin{verbatim}
+   (14)  sin
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty14}
+\begin{paste}{KernelXmpPageEmpty14}{KernelXmpPagePatch14}
+\pastebutton{KernelXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{name mainKernel(sin cos (tan x + sin x))}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch15}
+\begin{paste}{KernelXmpPageFull15}{KernelXmpPageEmpty15}
+\pastebutton{KernelXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{f := operator 'f\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (15)  f
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty15}
+\begin{paste}{KernelXmpPageEmpty15}{KernelXmpPagePatch15}
+\pastebutton{KernelXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{f := operator 'f\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch16}
+\begin{paste}{KernelXmpPageFull16}{KernelXmpPageEmpty16}
+\pastebutton{KernelXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{e := f(x, y, 10)\free{f }\bound{e }}
+\indentrel{3}\begin{verbatim}
+   (16)  f(x,y,10)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty16}
+\begin{paste}{KernelXmpPageEmpty16}{KernelXmpPagePatch16}
+\pastebutton{KernelXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{e := f(x, y, 10)\free{f }\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch17}
+\begin{paste}{KernelXmpPageFull17}{KernelXmpPageEmpty17}
+\pastebutton{KernelXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{is?(e, f)\free{f e }}
+\indentrel{3}\begin{verbatim}
+   (17)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty17}
+\begin{paste}{KernelXmpPageEmpty17}{KernelXmpPagePatch17}
+\pastebutton{KernelXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{is?(e, f)\free{f e }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch18}
+\begin{paste}{KernelXmpPageFull18}{KernelXmpPageEmpty18}
+\pastebutton{KernelXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{is?(e, 'f)\free{e }}
+\indentrel{3}\begin{verbatim}
+   (18)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty18}
+\begin{paste}{KernelXmpPageEmpty18}{KernelXmpPagePatch18}
+\pastebutton{KernelXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{is?(e, 'f)\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPagePatch19}
+\begin{paste}{KernelXmpPageFull19}{KernelXmpPageEmpty19}
+\pastebutton{KernelXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{argument mainKernel e\free{f }\free{e }}
+\indentrel{3}\begin{verbatim}
+   (19)  [x,y,10]
+                          Type: List Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{KernelXmpPageEmpty19}
+\begin{paste}{KernelXmpPageEmpty19}{KernelXmpPagePatch19}
+\pastebutton{KernelXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{argument mainKernel e\free{f }\free{e }}
+\end{paste}\end{patch}
+
 @
 \section{lazm3pk.ht}
 \pagehead{LazardSetSolvingPackageXmpPage}{lazm3pk.ht}
@@ -12326,6 +31706,961 @@ components may be investigated further with the
 \autobuttons
 \end{page}
 
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch1}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull1}{LazardSetSolvingPackageXmpPageEmpty1}
+\pastebutton{LazardSetSolvingPackageXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty1}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty1}{LazardSetSolvingPackageXmpPagePatch1}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch2}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull2}{LazardSetSolvingPackageXmpPageEmpty2}
+\pastebutton{LazardSetSolvingPackageXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [b1,x,y,z,t,v,u,w]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [b1,x,y,z,t,v,u,w]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty2}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty2}{LazardSetSolvingPackageXmpPagePatch2}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [b1,x,y,z,t,v,u,w]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch3}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull3}{LazardSetSolvingPackageXmpPageEmpty3}
+\pastebutton{LazardSetSolvingPackageXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\indentrel{3}\begin{verbatim}
+   (3)  OrderedVariableList [b1,x,y,z,t,v,u,w]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty3}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty3}{LazardSetSolvingPackageXmpPagePatch3}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch4}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull4}{LazardSetSolvingPackageXmpPageEmpty4}
+\pastebutton{LazardSetSolvingPackageXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\indentrel{3}\begin{verbatim}
+   (4)
+   IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty4}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty4}{LazardSetSolvingPackageXmpPagePatch4}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch5}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull5}{LazardSetSolvingPackageXmpPageEmpty5}
+\pastebutton{LazardSetSolvingPackageXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  NewSparseMultivariatePolynomial(Integer,OrderedVariable
+  List [b1,x,y,z,t,v,u,w])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty5}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty5}{LazardSetSolvingPackageXmpPagePatch5}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch6}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull6}{LazardSetSolvingPackageXmpPageEmpty6}
+\pastebutton{LazardSetSolvingPackageXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{b1: P := 'b1\free{P }\bound{b1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  b1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty6}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty6}{LazardSetSolvingPackageXmpPagePatch6}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{b1: P := 'b1\free{P }\bound{b1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch7}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull7}{LazardSetSolvingPackageXmpPageEmpty7}
+\pastebutton{LazardSetSolvingPackageXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (7)  x
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty7}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty7}{LazardSetSolvingPackageXmpPagePatch7}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch8}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull8}{LazardSetSolvingPackageXmpPageEmpty8}
+\pastebutton{LazardSetSolvingPackageXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (8)  y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty8}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty8}{LazardSetSolvingPackageXmpPagePatch8}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch9}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull9}{LazardSetSolvingPackageXmpPageEmpty9}
+\pastebutton{LazardSetSolvingPackageXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (9)  z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty9}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty9}{LazardSetSolvingPackageXmpPagePatch9}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch10}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull10}{LazardSetSolvingPackageXmpPageEmpty10}
+\pastebutton{LazardSetSolvingPackageXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (10)  t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty10}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty10}{LazardSetSolvingPackageXmpPagePatch10}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch11}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull11}{LazardSetSolvingPackageXmpPageEmpty11}
+\pastebutton{LazardSetSolvingPackageXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{u: P := 'u\free{P }\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (11)  u
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty11}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty11}{LazardSetSolvingPackageXmpPagePatch11}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{u: P := 'u\free{P }\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch12}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull12}{LazardSetSolvingPackageXmpPageEmpty12}
+\pastebutton{LazardSetSolvingPackageXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{v: P := 'v\free{P }\bound{v }}
+\indentrel{3}\begin{verbatim}
+   (12)  v
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty12}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty12}{LazardSetSolvingPackageXmpPagePatch12}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{v: P := 'v\free{P }\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch13}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull13}{LazardSetSolvingPackageXmpPageEmpty13}
+\pastebutton{LazardSetSolvingPackageXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{w: P := 'w\free{P }\bound{w }}
+\indentrel{3}\begin{verbatim}
+   (13)  w
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty13}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty13}{LazardSetSolvingPackageXmpPagePatch13}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{w: P := 'w\free{P }\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch14}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull14}{LazardSetSolvingPackageXmpPageEmpty14}
+\pastebutton{LazardSetSolvingPackageXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\indentrel{3}\begin{verbatim}
+   (14)
+  RegularTriangularSet(Integer,IndexedExponents OrderedVa
+  riableList [b1,x,y,z,t,v,u,w],OrderedVariableList [b1,x
+  ,y,z,t,v,u,w],NewSparseMultivariatePolynomial(Integer,O
+  rderedVariableList [b1,x,y,z,t,v,u,w]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty14}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty14}{LazardSetSolvingPackageXmpPagePatch14}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch15}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull15}{LazardSetSolvingPackageXmpPageEmpty15}
+\pastebutton{LazardSetSolvingPackageXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{p0 := b1 + y + z - t - w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p0 }}
+\indentrel{3}\begin{verbatim}
+   (15)  b1 + y + z - t - w
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty15}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty15}{LazardSetSolvingPackageXmpPagePatch15}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{p0 := b1 + y + z - t - w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch16}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull16}{LazardSetSolvingPackageXmpPageEmpty16}
+\pastebutton{LazardSetSolvingPackageXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+                                2
+   (16)  2v y + 2u z + 2w t - 2w  - w - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty16}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty16}{LazardSetSolvingPackageXmpPagePatch16}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch17}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull17}{LazardSetSolvingPackageXmpPageEmpty17}
+\pastebutton{LazardSetSolvingPackageXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+           2      2         2           3     2
+   (17)  3v y + 3u z + (- 3w  - 1)t + 3w  + 3w  + 4w
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty17}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty17}{LazardSetSolvingPackageXmpPagePatch17}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch18}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull18}{LazardSetSolvingPackageXmpPageEmpty18}
+\pastebutton{LazardSetSolvingPackageXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+                       2                3     2
+   (18)  6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty18}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty18}{LazardSetSolvingPackageXmpPagePatch18}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch19}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull19}{LazardSetSolvingPackageXmpPageEmpty19}
+\pastebutton{LazardSetSolvingPackageXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (19)
+     3      3       3            4     3      2
+   4v y + 4u z + (4w  + 4w)t - 4w  - 6w  - 10w  - w - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty19}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty19}{LazardSetSolvingPackageXmpPagePatch19}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch20}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull20}{LazardSetSolvingPackageXmpPageEmpty20}
+\pastebutton{LazardSetSolvingPackageXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (20)
+                   3     2            4      3      2
+     8u v z x + (8w  + 4w  + 4w)t - 8w  - 12w  - 14w  - 3w
+   + 
+     - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty20}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty20}{LazardSetSolvingPackageXmpPagePatch20}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch21}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull21}{LazardSetSolvingPackageXmpPageEmpty21}
+\pastebutton{LazardSetSolvingPackageXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p6 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+        2          3      2             4      3      2
+     12v z x + (12w  + 12w  + 8w)t - 12w  - 18w  - 14w
+   + 
+     - w - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty21}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty21}{LazardSetSolvingPackageXmpPagePatch21}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch22}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull22}{LazardSetSolvingPackageXmpPageEmpty22}
+\pastebutton{LazardSetSolvingPackageXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p7 }}
+\indentrel{3}\begin{verbatim}
+   (22)
+         3      2             4      3      2
+   (- 24w  - 24w  - 8w)t + 24w  + 36w  + 26w  + 7w + 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty22}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty22}{LazardSetSolvingPackageXmpPagePatch22}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch23}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull23}{LazardSetSolvingPackageXmpPageEmpty23}
+\pastebutton{LazardSetSolvingPackageXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{lp := [p0, p1, p2, p3, p4, p5, p6, p7]\free{p0 }\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\free{p7 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+   (23)
+                                               2
+   [b1 + y + z - t - w, 2v y + 2u z + 2w t - 2w  - w - 1,
+      2      2         2           3     2
+    3v y + 3u z + (- 3w  - 1)t + 3w  + 3w  + 4w,
+                  2                3     2
+    6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w,
+      3      3       3            4     3      2
+    4v y + 4u z + (4w  + 4w)t - 4w  - 6w  - 10w  - w - 1,
+
+                     3     2            4      3      2
+       8u v z x + (8w  + 4w  + 4w)t - 8w  - 12w  - 14w
+     + 
+       - 3w - 1
+     ,
+
+          2          3      2             4      3      2
+       12v z x + (12w  + 12w  + 8w)t - 12w  - 18w  - 14w
+     + 
+       - w - 1
+     ,
+          3      2             4      3      2
+    (- 24w  - 24w  - 8w)t + 24w  + 36w  + 26w  + 7w + 1]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty23}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty23}{LazardSetSolvingPackageXmpPagePatch23}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{lp := [p0, p1, p2, p3, p4, p5, p6, p7]\free{p0 }\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\free{p7 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch24}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull24}{LazardSetSolvingPackageXmpPageEmpty24}
+\pastebutton{LazardSetSolvingPackageXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (24)
+   [{w + 1,u,v,t + 1,b1 + y + z + 2},
+    {w + 1,v,t + 1,z,b1 + y + 2},
+    {w + 1,t + 1,z,y,b1 + 2},
+    {w + 1,v - u,t + 1,y + z,x,b1 + 2},
+    {w + 1,u,t + 1,y,x,b1 + z + 2},
+
+          5       4      3     2
+     {144w  + 216w  + 96w  + 6w  - 11w - 1,
+          2                 5       4      3     2
+      (12w  + 9w + 1)u - 72w  - 108w  - 42w  - 9w  - 3w,
+          2                 4      3      2
+      (12w  + 9w + 1)v + 36w  + 54w  + 18w ,
+          3      2             4      3      2
+      (24w  + 24w  + 8w)t - 24w  - 36w  - 26w  - 7w - 1,
+
+                     2                 2
+         (12u v - 12u )z + (12w v + 12w  + 4)t + (3w - 5)v
+       + 
+            4      3     2
+         36w  + 42w  + 6w  - 16w
+       ,
+                             2
+      2v y + 2u z + 2w t - 2w  - w - 1,
+                    2                3     2
+      6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w,
+      b1 + y + z - t - w}
+     ]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty24}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty24}{LazardSetSolvingPackageXmpPagePatch24}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch25}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull25}{LazardSetSolvingPackageXmpPageEmpty25}
+\pastebutton{LazardSetSolvingPackageXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
+\indentrel{3}\begin{verbatim}
+   (25)  [3,3,3,2,2,0]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty25}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty25}{LazardSetSolvingPackageXmpPagePatch25}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch26}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull26}{LazardSetSolvingPackageXmpPageEmpty26}
+\pastebutton{LazardSetSolvingPackageXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
+\indentrel{3}\begin{verbatim}
+   (26)
+  SquareFreeRegularTriangularSet(Integer,IndexedExponents
+   OrderedVariableList [b1,x,y,z,t,v,u,w],OrderedVariable
+  List [b1,x,y,z,t,v,u,w],NewSparseMultivariatePolynomial
+  (Integer,OrderedVariableList [b1,x,y,z,t,v,u,w]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty26}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty26}{LazardSetSolvingPackageXmpPagePatch26}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch27}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull27}{LazardSetSolvingPackageXmpPageEmpty27}
+\pastebutton{LazardSetSolvingPackageXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{pack := LAZM3PK(R,E,V,P,T,ST)\free{R }\free{E }\free{V }\free{P }\free{T }\free{ST }\bound{pack }}
+\indentrel{3}\begin{verbatim}
+   (27)
+  LazardSetSolvingPackage(Integer,IndexedExponents Ordere
+  dVariableList [b1,x,y,z,t,v,u,w],OrderedVariableList [b
+  1,x,y,z,t,v,u,w],NewSparseMultivariatePolynomial(Intege
+  r,OrderedVariableList [b1,x,y,z,t,v,u,w]),RegularTriang
+  ularSet(Integer,IndexedExponents OrderedVariableList [b
+  1,x,y,z,t,v,u,w],OrderedVariableList [b1,x,y,z,t,v,u,w]
+  ,NewSparseMultivariatePolynomial(Integer,OrderedVariabl
+  eList [b1,x,y,z,t,v,u,w])),SquareFreeRegularTriangularS
+  et(Integer,IndexedExponents OrderedVariableList [b1,x,y
+  ,z,t,v,u,w],OrderedVariableList [b1,x,y,z,t,v,u,w],NewS
+  parseMultivariatePolynomial(Integer,OrderedVariableList
+   [b1,x,y,z,t,v,u,w])))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty27}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty27}{LazardSetSolvingPackageXmpPagePatch27}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{pack := LAZM3PK(R,E,V,P,T,ST)\free{R }\free{E }\free{V }\free{P }\free{T }\free{ST }\bound{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch28}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull28}{LazardSetSolvingPackageXmpPageEmpty28}
+\pastebutton{LazardSetSolvingPackageXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lp,false)$pack\free{lp }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (28)
+   [{w + 1,t + 1,z,y,b1 + 2},
+    {w + 1,v,t + 1,z,b1 + y + 2},
+    {w + 1,u,v,t + 1,b1 + y + z + 2},
+    {w + 1,v - u,t + 1,y + z,x,b1 + 2},
+    {w + 1,u,t + 1,y,x,b1 + z + 2},
+
+          5       4      3     2
+     {144w  + 216w  + 96w  + 6w  - 11w - 1,
+             4      3      2
+      u - 24w  - 36w  - 14w  + w + 1,
+              4      3      2
+      3v - 48w  - 60w  - 10w  + 8w + 2,
+             4      3      2
+      t - 24w  - 36w  - 14w  - w + 1,
+                  4        3        2
+      486z - 2772w  - 4662w  - 2055w  + 30w + 127,
+                    4         3        2
+      2916y - 22752w  - 30312w  - 8220w  + 2064w + 1561,
+                  4        3       2
+      356x - 3696w  - 4536w  - 968w  + 822w + 371,
+                     4         3         2
+      2916b1 - 30600w  - 46692w  - 20274w  - 8076w + 593}
+     ]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty28}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty28}{LazardSetSolvingPackageXmpPagePatch28}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lp,false)$pack\free{lp }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch29}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull29}{LazardSetSolvingPackageXmpPageEmpty29}
+\pastebutton{LazardSetSolvingPackageXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{f0 := (w - v) ** 2 + (u - t) ** 2 - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f0 }}
+\indentrel{3}\begin{verbatim}
+          2           2           2    2
+   (29)  t  - 2u t + v  - 2w v + u  + w  - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty29}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty29}{LazardSetSolvingPackageXmpPagePatch29}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{f0 := (w - v) ** 2 + (u - t) ** 2 - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch30}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull30}{LazardSetSolvingPackageXmpPageEmpty30}
+\pastebutton{LazardSetSolvingPackageXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{f1 := t ** 2 - v ** 3\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+          2    3
+   (30)  t  - v
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty30}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty30}{LazardSetSolvingPackageXmpPagePatch30}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{f1 := t ** 2 - v ** 3\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch31}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull31}{LazardSetSolvingPackageXmpPageEmpty31}
+\pastebutton{LazardSetSolvingPackageXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+              2                   2
+   (31)  (- 3v  - 2v + 2w)t + 3u v
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty31}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty31}{LazardSetSolvingPackageXmpPagePatch31}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch32}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull32}{LazardSetSolvingPackageXmpPageEmpty32}
+\pastebutton{LazardSetSolvingPackageXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+           2   2             2
+   (32)  6v t z  + (- 2t - 3v )z + 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty32}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty32}{LazardSetSolvingPackageXmpPagePatch32}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch33}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull33}{LazardSetSolvingPackageXmpPageEmpty33}
+\pastebutton{LazardSetSolvingPackageXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
+\indentrel{3}\begin{verbatim}
+   (33)
+     2           2           2    2       2    3
+   [t  - 2u t + v  - 2w v + u  + w  - 1, t  - v ,
+         2                   2
+    (- 3v  - 2v + 2w)t + 3u v ,
+      2   2             2
+    6v t z  + (- 2t - 3v )z + 1]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty33}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty33}{LazardSetSolvingPackageXmpPagePatch33}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch34}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull34}{LazardSetSolvingPackageXmpPageEmpty34}
+\pastebutton{LazardSetSolvingPackageXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,true)$T\free{lf }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (34)
+   [
+     {
+             6           3       2                 4
+         729u  + (- 1458w  + 729w  - 4158w - 1685)u
+       + 
+                 6        5        4        3       2
+             729w  - 1458w  - 2619w  - 4892w  - 297w
+           + 
+             5814w + 427
+        *
+            2
+           u
+       + 
+             8       7        6        5        4        3
+         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
+       + 
+                2
+         - 1188w  - 1656w + 529
+       ,
+
+                  4           3       2                  2
+             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
+           + 
+                  6        5         4        3        2
+             2187w  - 1944w  - 10125w  - 4800w  + 2501w
+           + 
+             4968w - 1587
+        *
+           v
+       + 
+               3       2  2       6        5        4
+         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
+       + 
+             3        2
+         496w  + 1116w
+       ,
+         2                   2
+      (3v  + 2v - 2w)t - 3u v ,
+                        2  2           2
+      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
+     ]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty34}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty34}{LazardSetSolvingPackageXmpPagePatch34}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,true)$T\free{lf }\free{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch35}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull35}{LazardSetSolvingPackageXmpPageEmpty35}
+\pastebutton{LazardSetSolvingPackageXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,false)$T\free{lf }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (35)
+   [
+     {
+             6           3       2                 4
+         729u  + (- 1458w  + 729w  - 4158w - 1685)u
+       + 
+                 6        5        4        3       2
+             729w  - 1458w  - 2619w  - 4892w  - 297w
+           + 
+             5814w + 427
+        *
+            2
+           u
+       + 
+             8       7        6        5        4        3
+         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
+       + 
+                2
+         - 1188w  - 1656w + 529
+       ,
+
+                  4           3       2                  2
+             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
+           + 
+                  6        5         4        3        2
+             2187w  - 1944w  - 10125w  - 4800w  + 2501w
+           + 
+             4968w - 1587
+        *
+           v
+       + 
+               3       2  2       6        5        4
+         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
+       + 
+             3        2
+         496w  + 1116w
+       ,
+         2                   2
+      (3v  + 2v - 2w)t - 3u v ,
+                        2  2           2
+      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
+     ,
+
+         4     3      2
+     {27w  + 4w  - 54w  - 36w + 23, u,
+                     2             2          2
+      (12w + 2)v - 9w  - 2w + 9, 6t  - 2v - 3w  + 2w + 3,
+      2t z - 1}
+     ,
+
+     {
+               6         5         4          3         2
+         59049w  + 91854w  - 45198w  + 145152w  + 63549w
+       + 
+         60922w + 21420
+       ,
+
+                            5                  4
+             31484448266904w  - 18316865522574w
+           + 
+                            3                 2
+             23676995746098w  + 6657857188965w
+           + 
+             8904703998546w + 3890631403260
+        *
+            2
+           u
+       + 
+                        5                  4
+         94262810316408w  - 82887296576616w
+       + 
+                        3                  2
+         89801831438784w  + 28141734167208w
+       + 
+         38070359425432w + 16003865949120
+       ,
+
+              2             2
+         (243w  + 36w + 85)v
+       + 
+             2       3      2                    3     2
+       (- 81u  - 162w  + 36w  + 154w + 72)v - 72w  + 4w
+       ,
+         2                   2
+      (3v  + 2v - 2w)t - 3u v ,
+                        2  2           2
+      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
+     ,
+
+         4     3      2
+     {27w  + 4w  - 54w  - 36w + 23, u,
+                     2             2          2
+      (12w + 2)v - 9w  - 2w + 9, 6t  - 2v - 3w  + 2w + 3,
+        2
+      3v z - 1}
+     ]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty35}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty35}{LazardSetSolvingPackageXmpPagePatch35}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,false)$T\free{lf }\free{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPagePatch36}
+\begin{paste}{LazardSetSolvingPackageXmpPageFull36}{LazardSetSolvingPackageXmpPageEmpty36}
+\pastebutton{LazardSetSolvingPackageXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,false)$pack\free{lf }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (36)
+   [
+     {
+             6           3       2                 4
+         729u  + (- 1458w  + 729w  - 4158w - 1685)u
+       + 
+                 6        5        4        3       2
+             729w  - 1458w  - 2619w  - 4892w  - 297w
+           + 
+             5814w + 427
+        *
+            2
+           u
+       + 
+             8       7        6        5        4        3
+         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
+       + 
+                2
+         - 1188w  - 1656w + 529
+       ,
+
+                  4           3       2                  2
+             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
+           + 
+                  6        5         4        3        2
+             2187w  - 1944w  - 10125w  - 4800w  + 2501w
+           + 
+             4968w - 1587
+        *
+           v
+       + 
+               3       2  2       6        5        4
+         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
+       + 
+             3        2
+         496w  + 1116w
+       ,
+         2                   2
+      (3v  + 2v - 2w)t - 3u v ,
+                        2  2           2
+      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
+     ,
+
+         2                 2
+     {81w  + 18w + 28, 729u  - 1890w - 533,
+         2
+      81v  + (- 162w + 27)v - 72w - 112,
+      11881t + (972w + 2997)u v + (- 11448w - 11536)u,
+
+                         2
+         641237934604288z
+       + 
+                 (78614584763904w + 26785578742272)u
+               + 
+                 236143618655616w + 70221988585728
+            *
+               v
+           + 
+             (358520253138432w + 101922133759488)u
+           + 
+             142598803536000w + 54166419595008
+        *
+           z
+       + 
+         (32655103844499w - 44224572465882)u v
+       + 
+         (43213900115457w - 32432039102070)u
+       }
+     ,
+
+         4     3      2
+     {27w  + 4w  - 54w  - 36w + 23, u,
+                 3     2
+      218v - 162w  + 3w  + 160w + 153,
+          2      3      2
+      109t  - 27w  - 54w  + 63w + 80,
+                      3      2
+      1744z + (- 1458w  + 27w  + 1440w + 505)t}
+     ,
+
+         4     3      2
+     {27w  + 4w  - 54w  - 36w + 23, u,
+                 3     2
+      218v - 162w  + 3w  + 160w + 153,
+          2      3      2
+      109t  - 27w  - 54w  + 63w + 80,
+                  3     2
+      1308z + 162w  - 3w  - 814w - 153}
+     ,
+
+          4       3        2
+     {729w  + 972w  - 1026w  + 1684w + 765,
+         2      2
+      81u  + 72w  + 16w - 72,
+                 3       2
+      702v - 162w  - 225w  + 40w - 99,
+                    3       2
+      11336t + (324w  - 603w  - 1718w - 1557)u,
+
+                   2
+         595003968z
+       + 
+                             3             2
+                 - 963325386w  - 898607682w  + 1516286466w
+               + 
+                 - 3239166186
+            *
+               u
+           + 
+                          3              2
+             - 1579048992w  - 1796454288w  + 2428328160w
+           + 
+             - 4368495024
+        *
+           z
+       + 
+                        3              2
+             9713133306w  + 9678670317w  - 16726834476w
+           + 
+             28144233593
+        *
+           u
+       }
+     ]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LazardSetSolvingPackageXmpPageEmpty36}
+\begin{paste}{LazardSetSolvingPackageXmpPageEmpty36}{LazardSetSolvingPackageXmpPagePatch36}
+\pastebutton{LazardSetSolvingPackageXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lf,false)$pack\free{lf }\free{pack }}
+\end{paste}\end{patch}
+
 @
 \section{lexp.ht}
 \pagehead{LieExponentialsXmpPage}{lexp.ht}{LieExponentials}
@@ -12397,7 +32732,233 @@ Calculations
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{LieExponentialsXmpPagePatch1}
+\begin{paste}{LieExponentialsXmpPageFull1}{LieExponentialsXmpPageEmpty1}
+\pastebutton{LieExponentialsXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ a: Symbol := 'a\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (1)  a
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty1}
+\begin{paste}{LieExponentialsXmpPageEmpty1}{LieExponentialsXmpPagePatch1}
+\pastebutton{LieExponentialsXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ a: Symbol := 'a\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch2}
+\begin{paste}{LieExponentialsXmpPageFull2}{LieExponentialsXmpPageEmpty2}
+\pastebutton{LieExponentialsXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ b: Symbol := 'b\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (2)  b
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty2}
+\begin{paste}{LieExponentialsXmpPageEmpty2}{LieExponentialsXmpPagePatch2}
+\pastebutton{LieExponentialsXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ b: Symbol := 'b\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch3}
+\begin{paste}{LieExponentialsXmpPageFull3}{LieExponentialsXmpPageEmpty3}
+\pastebutton{LieExponentialsXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{ coef := Fraction(Integer)\bound{coef }}
+\indentrel{3}\begin{verbatim}
+   (3)  Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty3}
+\begin{paste}{LieExponentialsXmpPageEmpty3}{LieExponentialsXmpPagePatch3}
+\pastebutton{LieExponentialsXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{ coef := Fraction(Integer)\bound{coef }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch4}
+\begin{paste}{LieExponentialsXmpPageFull4}{LieExponentialsXmpPageEmpty4}
+\pastebutton{LieExponentialsXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{ group := LieExponentials(Symbol, coef, 3)\free{coef }\bound{group }}
+\indentrel{3}\begin{verbatim}
+   (4)  LieExponentials(Symbol,Fraction Integer,3)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty4}
+\begin{paste}{LieExponentialsXmpPageEmpty4}{LieExponentialsXmpPagePatch4}
+\pastebutton{LieExponentialsXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{ group := LieExponentials(Symbol, coef, 3)\free{coef }\bound{group }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch5}
+\begin{paste}{LieExponentialsXmpPageFull5}{LieExponentialsXmpPageEmpty5}
+\pastebutton{LieExponentialsXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{ lpoly := LiePolynomial(Symbol, coef)\free{coef }\bound{lpoly }}
+\indentrel{3}\begin{verbatim}
+   (5)  LiePolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty5}
+\begin{paste}{LieExponentialsXmpPageEmpty5}{LieExponentialsXmpPagePatch5}
+\pastebutton{LieExponentialsXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{ lpoly := LiePolynomial(Symbol, coef)\free{coef }\bound{lpoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch6}
+\begin{paste}{LieExponentialsXmpPageFull6}{LieExponentialsXmpPageEmpty6}
+\pastebutton{LieExponentialsXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{ poly := XPBWPolynomial(Symbol, coef)\free{coef }\bound{poly }}
+\indentrel{3}\begin{verbatim}
+   (6)  XPBWPolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty6}
+\begin{paste}{LieExponentialsXmpPageEmpty6}{LieExponentialsXmpPagePatch6}
+\pastebutton{LieExponentialsXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{ poly := XPBWPolynomial(Symbol, coef)\free{coef }\bound{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch7}
+\begin{paste}{LieExponentialsXmpPageFull7}{LieExponentialsXmpPageEmpty7}
+\pastebutton{LieExponentialsXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{ ea := exp(a::lpoly)$group\free{a }\free{lpoly }\free{group }\bound{ea }}
+\indentrel{3}\begin{verbatim}
+         [a]
+   (7)  e
+       Type: LieExponentials(Symbol,Fraction Integer,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty7}
+\begin{paste}{LieExponentialsXmpPageEmpty7}{LieExponentialsXmpPagePatch7}
+\pastebutton{LieExponentialsXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{ ea := exp(a::lpoly)$group\free{a }\free{lpoly }\free{group }\bound{ea }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch8}
+\begin{paste}{LieExponentialsXmpPageFull8}{LieExponentialsXmpPageEmpty8}
+\pastebutton{LieExponentialsXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{ eb := exp(b::lpoly)$group\free{b }\free{lpoly }\free{group }\bound{eb }}
+\indentrel{3}\begin{verbatim}
+         [b]
+   (8)  e
+       Type: LieExponentials(Symbol,Fraction Integer,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty8}
+\begin{paste}{LieExponentialsXmpPageEmpty8}{LieExponentialsXmpPagePatch8}
+\pastebutton{LieExponentialsXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{ eb := exp(b::lpoly)$group\free{b }\free{lpoly }\free{group }\bound{eb }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch9}
+\begin{paste}{LieExponentialsXmpPageFull9}{LieExponentialsXmpPageEmpty9}
+\pastebutton{LieExponentialsXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{ g: group := ea*eb\free{ea }\free{eb }\bound{g }}
+\indentrel{3}\begin{verbatim}
+             1     2        1   2
+             Ä [a b ]       Ä [a b]
+         [b] 2        [a b] 2       [a]
+   (9)  e   e        e     e       e
+       Type: LieExponentials(Symbol,Fraction Integer,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty9}
+\begin{paste}{LieExponentialsXmpPageEmpty9}{LieExponentialsXmpPagePatch9}
+\pastebutton{LieExponentialsXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{ g: group := ea*eb\free{ea }\free{eb }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch10}
+\begin{paste}{LieExponentialsXmpPageFull10}{LieExponentialsXmpPageEmpty10}
+\pastebutton{LieExponentialsXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{ g :: poly\free{g }\free{poly }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                     1                           1
+     1 + [a] + [b] + Ä [a][a] + [a b] + [b][a] + Ä [b][b]
+                     2                           2
+   + 
+     1             1   2                1     2
+     Ä [a][a][a] + Ä [a b] + [a b][a] + Ä [a b ]
+     6             2                    2
+   + 
+     1                        1             1
+     Ä [b][a][a] + [b][a b] + Ä [b][b][a] + Ä [b][b][b]
+     2                        2             6
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty10}
+\begin{paste}{LieExponentialsXmpPageEmpty10}{LieExponentialsXmpPagePatch10}
+\pastebutton{LieExponentialsXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{ g :: poly\free{g }\free{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch11}
+\begin{paste}{LieExponentialsXmpPageFull11}{LieExponentialsXmpPageEmpty11}
+\pastebutton{LieExponentialsXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{ log(g)$group\free{g }\free{group }}
+\indentrel{3}\begin{verbatim}
+                     1          1   2      1     2
+   (11)  [a] + [b] + Ä [a b] + ÄÄ [a b] + ÄÄ [a b ]
+                     2         12         12
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty11}
+\begin{paste}{LieExponentialsXmpPageEmpty11}{LieExponentialsXmpPagePatch11}
+\pastebutton{LieExponentialsXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{ log(g)$group\free{g }\free{group }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch12}
+\begin{paste}{LieExponentialsXmpPageFull12}{LieExponentialsXmpPageEmpty12}
+\pastebutton{LieExponentialsXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{ g1: group := inv(g)\free{g }\free{group }\bound{g1 }}
+\indentrel{3}\begin{verbatim}
+          - [b] - [a]
+   (12)  e     e
+       Type: LieExponentials(Symbol,Fraction Integer,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty12}
+\begin{paste}{LieExponentialsXmpPageEmpty12}{LieExponentialsXmpPagePatch12}
+\pastebutton{LieExponentialsXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{ g1: group := inv(g)\free{g }\free{group }\bound{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPagePatch13}
+\begin{paste}{LieExponentialsXmpPageFull13}{LieExponentialsXmpPageEmpty13}
+\pastebutton{LieExponentialsXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{ g*g1\free{g }\free{g1 }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+       Type: LieExponentials(Symbol,Fraction Integer,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LieExponentialsXmpPageEmpty13}
+\begin{paste}{LieExponentialsXmpPageEmpty13}{LieExponentialsXmpPagePatch13}
+\pastebutton{LieExponentialsXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{ g*g1\free{g }\free{g1 }}
+\end{paste}\end{patch}
 
 @
 \section{lextripk.ht}
@@ -12663,6 +33224,2559 @@ the \axiomOpFrom{realSolve}{ZeroDimensionalSolvePackage} operation.
 \autobuttons
 \end{page}
 
+\begin{patch}{LexTriangularPackageXmpPagePatch1}
+\begin{paste}{LexTriangularPackageXmpPageFull1}{LexTriangularPackageXmpPageEmpty1}
+\pastebutton{LexTriangularPackageXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty1}
+\begin{paste}{LexTriangularPackageXmpPageEmpty1}{LexTriangularPackageXmpPagePatch1}
+\pastebutton{LexTriangularPackageXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch2}
+\begin{paste}{LexTriangularPackageXmpPageFull2}{LexTriangularPackageXmpPageEmpty2}
+\pastebutton{LexTriangularPackageXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [a,b,c,d,e,f]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [a,b,c,d,e,f]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty2}
+\begin{paste}{LexTriangularPackageXmpPageEmpty2}{LexTriangularPackageXmpPagePatch2}
+\pastebutton{LexTriangularPackageXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [a,b,c,d,e,f]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch3}
+\begin{paste}{LexTriangularPackageXmpPageFull3}{LexTriangularPackageXmpPageEmpty3}
+\pastebutton{LexTriangularPackageXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\indentrel{3}\begin{verbatim}
+   (3)  OrderedVariableList [a,b,c,d,e,f]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty3}
+\begin{paste}{LexTriangularPackageXmpPageEmpty3}{LexTriangularPackageXmpPagePatch3}
+\pastebutton{LexTriangularPackageXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch4}
+\begin{paste}{LexTriangularPackageXmpPageFull4}{LexTriangularPackageXmpPageEmpty4}
+\pastebutton{LexTriangularPackageXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (4)
+  NewSparseMultivariatePolynomial(Integer,OrderedVariable
+  List [a,b,c,d,e,f])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty4}
+\begin{paste}{LexTriangularPackageXmpPageEmpty4}{LexTriangularPackageXmpPagePatch4}
+\pastebutton{LexTriangularPackageXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch5}
+\begin{paste}{LexTriangularPackageXmpPageFull5}{LexTriangularPackageXmpPageEmpty5}
+\pastebutton{LexTriangularPackageXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p1: P := a*b*c*d*e*f - 1\free{P }\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  f e d c b a - 1
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty5}
+\begin{paste}{LexTriangularPackageXmpPageEmpty5}{LexTriangularPackageXmpPagePatch5}
+\pastebutton{LexTriangularPackageXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p1: P := a*b*c*d*e*f - 1\free{P }\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch6}
+\begin{paste}{LexTriangularPackageXmpPageFull6}{LexTriangularPackageXmpPageEmpty6}
+\pastebutton{LexTriangularPackageXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{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\free{P }\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+   ((((e + f)d + f e)c + f e d)b + f e d c)a + f e d c b
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty6}
+\begin{paste}{LexTriangularPackageXmpPageEmpty6}{LexTriangularPackageXmpPagePatch6}
+\pastebutton{LexTriangularPackageXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{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\free{P }\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch7}
+\begin{paste}{LexTriangularPackageXmpPageFull7}{LexTriangularPackageXmpPageEmpty7}
+\pastebutton{LexTriangularPackageXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{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\free{P }\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+   (7)  (((d + f)c + f e)b + f e d)a + e d c b + f e d c
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty7}
+\begin{paste}{LexTriangularPackageXmpPageEmpty7}{LexTriangularPackageXmpPagePatch7}
+\pastebutton{LexTriangularPackageXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{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\free{P }\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch8}
+\begin{paste}{LexTriangularPackageXmpPageFull8}{LexTriangularPackageXmpPageEmpty8}
+\pastebutton{LexTriangularPackageXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f\free{P }\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (8)  ((c + f)b + f e)a + d c b + e d c + f e d
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty8}
+\begin{paste}{LexTriangularPackageXmpPageEmpty8}{LexTriangularPackageXmpPagePatch8}
+\pastebutton{LexTriangularPackageXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f\free{P }\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch9}
+\begin{paste}{LexTriangularPackageXmpPageFull9}{LexTriangularPackageXmpPageEmpty9}
+\pastebutton{LexTriangularPackageXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{p5: P := a*b + a*f + b*c + c*d + d*e + e*f\free{P }\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (9)  (b + f)a + c b + d c + e d + f e
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty9}
+\begin{paste}{LexTriangularPackageXmpPageEmpty9}{LexTriangularPackageXmpPagePatch9}
+\pastebutton{LexTriangularPackageXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p5: P := a*b + a*f + b*c + c*d + d*e + e*f\free{P }\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch10}
+\begin{paste}{LexTriangularPackageXmpPageFull10}{LexTriangularPackageXmpPageEmpty10}
+\pastebutton{LexTriangularPackageXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{p6: P := a + b + c + d + e + f\free{P }\bound{p6 }}
+\indentrel{3}\begin{verbatim}
+   (10)  a + b + c + d + e + f
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty10}
+\begin{paste}{LexTriangularPackageXmpPageEmpty10}{LexTriangularPackageXmpPagePatch10}
+\pastebutton{LexTriangularPackageXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{p6: P := a + b + c + d + e + f\free{P }\bound{p6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch11}
+\begin{paste}{LexTriangularPackageXmpPageFull11}{LexTriangularPackageXmpPageEmpty11}
+\pastebutton{LexTriangularPackageXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3, p4, p5, p6]\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+   (11)
+   [f e d c b a - 1,
+    ((((e + f)d + f e)c + f e d)b + f e d c)a + f e d c b,
+    (((d + f)c + f e)b + f e d)a + e d c b + f e d c,
+    ((c + f)b + f e)a + d c b + e d c + f e d,
+    (b + f)a + c b + d c + e d + f e,
+    a + b + c + d + e + f]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty11}
+\begin{paste}{LexTriangularPackageXmpPageEmpty11}{LexTriangularPackageXmpPagePatch11}
+\pastebutton{LexTriangularPackageXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3, p4, p5, p6]\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch12}
+\begin{paste}{LexTriangularPackageXmpPageFull12}{LexTriangularPackageXmpPageEmpty12}
+\pastebutton{LexTriangularPackageXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{lextripack := LEXTRIPK(R,ls)\free{R }\free{ls }\bound{lextripack }}
+\indentrel{3}\begin{verbatim}
+   (12)  LexTriangularPackage(Integer,[a,b,c,d,e,f])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty12}
+\begin{paste}{LexTriangularPackageXmpPageEmpty12}{LexTriangularPackageXmpPagePatch12}
+\pastebutton{LexTriangularPackageXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{lextripack := LEXTRIPK(R,ls)\free{R }\free{ls }\bound{lextripack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch13}
+\begin{paste}{LexTriangularPackageXmpPageFull13}{LexTriangularPackageXmpPageEmpty13}
+\pastebutton{LexTriangularPackageXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{lg := groebner(lp)$lextripack\free{lp }\free{lextripack }\bound{lg }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   [a + b + c + d + e + f,
+
+                        2
+       3968379498283200b  + 15873517993132800f b
+     + 
+                        2
+       3968379498283200d  + 15873517993132800f d
+     + 
+                        3 5                     4 4
+       3968379498283200f e  - 15873517993132800f e
+     + 
+                         5 3
+       23810276989699200f e
+     + 
+                           6                       2
+       (206355733910726400f  + 230166010900425600)e
+     + 
+                             43                       37
+           - 729705987316687f   + 1863667496867205421f
+         + 
+                                 31
+           291674853771731104461f
+         + 
+                                 25
+           365285994691106921745f
+         + 
+                              19
+           549961185828911895f
+         + 
+                                   13
+           - 365048404038768439269f
+         + 
+                                 7
+         - 292382820431504027669f  - 2271898467631865497f
+      *
+         e
+     + 
+                          44                        38
+       - 3988812642545399f   + 10187423878429609997f
+     + 
+                              32
+       1594377523424314053637f
+     + 
+                              26                       20
+       1994739308439916238065f   + 1596840088052642815f
+     + 
+                                14
+       - 1993494118301162145413f
+     + 
+                              8                        2
+     - 1596049742289689815053f  - 11488171330159667449f
+     ,
+
+       (23810276989699200c - 23810276989699200f)b
+     + 
+                         2
+       23810276989699200c  + 71430830969097600f c
+     + 
+                           2
+       - 23810276989699200d  - 95241107958796800f d
+     + 
+                           3 5                      4 4
+       - 55557312975964800f e  + 174608697924460800f e
+     + 
+                            5 3
+       - 174608697924460800f e
+     + 
+                              6                        2
+       (- 2428648252949318400f  - 2611193709870345600)e
+     + 
+                            43                        37
+           8305444561289527f   - 21212087151945459641f
+         + 
+                                    31
+           - 3319815883093451385381f
+         + 
+                                    25
+           - 4157691646261657136445f
+         + 
+                                 19
+           - 6072721607510764095f
+         + 
+                                  13
+           4154986709036460221649f
+         + 
+                                7
+         3327761311138587096749f  + 25885340608290841637f
+      *
+         e
+     + 
+                         44                         38
+       45815897629010329f   - 117013765582151891207f
+     + 
+                                 32
+       - 18313166848970865074187f
+     + 
+                                 26
+       - 22909971239649297438915f
+     + 
+                              20
+       - 16133250761305157265f
+     + 
+                               14
+       22897305857636178256623f
+     + 
+                             8                         2
+     18329944781867242497923f  + 130258531002020420699f
+     ,
+
+       (7936758996566400d - 7936758996566400f)b
+     + 
+                                                3 5
+       - 7936758996566400f d - 7936758996566400f e
+     + 
+                         4 4                     5 3
+       23810276989699200f e  - 23810276989699200f e
+     + 
+                             6                       2
+       (- 337312257354072000f  - 369059293340337600)e
+     + 
+                            43                       37
+           1176345388640471f   - 3004383582891473073f
+         + 
+                                   31
+           - 470203502707246105653f
+         + 
+                                   25
+           - 588858183402644348085f
+         + 
+                                19
+           - 856939308623513535f
+         + 
+                                 13
+           588472674242340526377f
+         + 
+                                 7
+           471313241958371103517f  + 3659742549078552381f
+      *
+         e
+     + 
+                        44                        38
+       6423170513956901f   - 16404772137036480803f
+     + 
+                                32
+       - 2567419165227528774463f
+     + 
+                                26
+       - 3211938090825682172335f
+     + 
+                             20
+       - 2330490332697587485f
+     + 
+                              14
+       3210100109444754864587f
+     + 
+                              8                        2
+       2569858315395162617847f  + 18326089487427735751f
+     ,
+
+       (11905138494849600e - 11905138494849600f)b
+     + 
+                          3 5                     4 4
+       - 3968379498283200f e  + 15873517993132800f e
+     + 
+                           5 3
+       - 27778656487982400f e
+     + 
+                             6                       2
+       (- 208339923659868000f  - 240086959646133600)e
+     + 
+                           43                       37
+           786029984751110f   - 2007519008182245250f
+         + 
+                                   31
+           - 314188062908073807090f
+         + 
+                                   25
+           - 393423667537929575250f
+         + 
+                                19
+           - 550329120654394950f
+         + 
+                                 13
+           393196408728889612770f
+         + 
+                                 7
+           314892372799176495730f  + 2409386515146668530f
+      *
+         e
+     + 
+                        44                        38
+       4177638546747827f   - 10669685294602576381f
+     + 
+                                32
+       - 1669852980419949524601f
+     + 
+                                26
+       - 2089077057287904170745f
+     + 
+                             20
+       - 1569899763580278795f
+     + 
+                              14
+       2087864026859015573349f
+     + 
+                              8                        2
+       1671496085945199577969f  + 11940257226216280177f
+     ,
+
+                          6
+       (11905138494849600f  - 11905138494849600)b
+     + 
+                           2 5                     3 4
+       - 15873517993132800f e  + 39683794982832000f e
+     + 
+                           4 3
+       - 39683794982832000f e
+     + 
+                             11                      5  2
+       (- 686529653202993600f   - 607162063237329600f )e
+     + 
+                          42                      36
+           65144531306704f   - 166381280901088652f
+         + 
+                                  30
+           - 26033434502470283472f
+         + 
+                                  24
+           - 31696259583860650140f
+         + 
+                              18                        12
+           971492093167581360f   + 32220085033691389548f
+         + 
+                                6
+           25526177666070529808f  + 138603268355749244
+      *
+         e
+     + 
+                       43                      37
+       167620036074811f   - 428102417974791473f
+     + 
+                              31                        25
+       - 66997243801231679313f   - 83426716722148750485f
+     + 
+                          19                        13
+       203673895369980765f   + 83523056326010432457f
+     + 
+                            7
+       66995789640238066937f  + 478592855549587901f
+     ,
+
+                    3                   2
+       801692827936c  + 2405078483808f c
+     + 
+                       2                45
+       - 2405078483808f c - 13752945467f
+     + 
+                      39                    33
+       35125117815561f   + 5496946957826433f
+     + 
+                        27                  21
+       6834659447749117f   - 44484880462461f
+     + 
+                          15                    9
+       - 6873406230093057f   - 5450844938762633f
+     + 
+                     3
+       1216586044571f
+     ,
+
+       (23810276989699200d - 23810276989699200f)c
+     + 
+                         2
+       23810276989699200d  + 71430830969097600f d
+     + 
+                        3 5                     4 4
+       7936758996566400f e  - 31747035986265600f e
+     + 
+                         5 3
+       31747035986265600f e
+     + 
+                           6                       2
+       (404774708824886400f  + 396837949828320000)e
+     + 
+                              43                       37
+           - 1247372229446701f   + 3185785654596621203f
+         + 
+                                 31
+           498594866849974751463f
+         + 
+                                 25
+           624542545845791047935f
+         + 
+                              19
+           931085755769682885f
+         + 
+                                   13
+           - 624150663582417063387f
+         + 
+                                 7
+         - 499881859388360475647f  - 3926885313819527351f
+      *
+         e
+     + 
+                          44                        38
+       - 7026011547118141f   + 17944427051950691243f
+     + 
+                              32
+       2808383522593986603543f
+     + 
+                              26                       20
+       3513624142354807530135f   + 2860757006705537685f
+     + 
+                                14
+       - 3511356735642190737267f
+     + 
+                              8                        2
+     - 2811332494697103819887f  - 20315011631522847311f
+     ,
+
+       (7936758996566400e - 7936758996566400f)c
+     + 
+                           43                     37
+           - 4418748183673f   + 11285568707456559f
+         + 
+                               31                       25
+           1765998617294451019f   + 2173749283622606155f
+         + 
+                               19                       13
+           - 55788292195402895f   - 2215291421788292951f
+         + 
+                                 7
+           - 1718142665347430851f  + 30256569458230237f
+      *
+         e
+     + 
+                     44                     38
+       4418748183673f   - 11285568707456559f
+     + 
+                             32                       26
+       - 1765998617294451019f   - 2173749283622606155f
+     + 
+                         20                       14
+       55788292195402895f   + 2215291421788292951f
+     + 
+                           8                     2
+       1718142665347430851f  - 30256569458230237f
+     ,
+
+                       6
+       (72152354514240f  - 72152354514240)c
+     + 
+                   43                   37
+       40950859449f   - 104588980990367f
+     + 
+                           31                     25
+       - 16367227395575307f   - 20268523416527355f
+     + 
+                       19                     13
+       442205002259535f   + 20576059935789063f
+     + 
+                         7
+       15997133796970563f  - 275099892785581f
+     ,
+
+                        3                      2
+       1984189749141600d  + 5952569247424800f d
+     + 
+                          2                     4 5
+       - 5952569247424800f d - 3968379498283200f e
+     + 
+                         5 4                     3
+       15873517993132800f e  + 17857707742274400e
+     + 
+                             7                        2
+       (- 148814231185620000f  - 162703559429611200f)e
+     + 
+                             44                      38
+           - 390000914678878f   + 996062704593756434f
+         + 
+                                 32
+           155886323972034823914f
+         + 
+                                 26                    20
+           194745956143985421330f   + 6205077595574430f
+         + 
+                                   14
+           - 194596512653299068786f
+         + 
+                                 8                       2
+         - 155796897940756922666f  - 1036375759077320978f
+      *
+         e
+     + 
+                         45                      39
+       - 374998630035991f   + 957747106595453993f
+     + 
+                             33                         27
+       149889155566764891693f   + 187154171443494641685f
+     + 
+                            21                         15
+       - 127129015426348065f   - 187241533243115040417f
+     + 
+                               9                      3
+       - 149719983567976534037f  - 836654081239648061f
+     ,
+
+       (5952569247424800e - 5952569247424800f)d
+     + 
+                          3 5                    4 4
+       - 3968379498283200f e  + 9920948745708000f e
+     + 
+                          5 3
+       - 3968379498283200f e
+     + 
+                             6                       2
+       (- 148814231185620000f  - 150798420934761600)e
+     + 
+                           43                       37
+           492558110242553f   - 1257992359608074599f
+         + 
+                                   31
+           - 196883094539368513959f
+         + 
+                                   25
+           - 246562115745735428055f
+         + 
+                                19
+           - 325698701993885505f
+         + 
+                                 13
+           246417769883651808111f
+         + 
+                                 7
+           197327352068200652911f  + 1523373796389332143f
+      *
+         e
+     + 
+                        44                       38
+       2679481081803026f   - 6843392695421906608f
+     + 
+                                32
+       - 1071020459642646913578f
+     + 
+                                26                      20
+       - 1339789169692041240060f   - 852746750910750210f
+     + 
+                              14
+       1339105101971878401312f
+     + 
+                              8                       2
+       1071900289758712984762f  + 7555239072072727756f
+     ,
+
+                          6
+       (11905138494849600f  - 11905138494849600)d
+     + 
+                          2 5                     3 4
+       - 7936758996566400f e  + 31747035986265600f e
+     + 
+                           4 3
+       - 31747035986265600f e
+     + 
+                             11                      5  2
+       (- 420648226818019200f   - 404774708824886400f )e
+     + 
+                          42                     36
+           15336187600889f   - 39169739565161107f
+         + 
+                                 30
+           - 6127176127489690827f
+         + 
+                                 24
+           - 7217708742310509615f
+         + 
+                              18                       12
+           538628483890722735f   + 7506804353843507643f
+         + 
+                               6
+           5886160769782607203f  + 63576108396535879
+      *
+         e
+     + 
+                      43                      37
+       71737781777066f   - 183218856207557938f
+     + 
+                              31                        25
+       - 28672874271132276078f   - 35625223686939812010f
+     + 
+                          19                        13
+       164831339634084390f   + 35724160423073052642f
+     + 
+                            7
+       28627022578664910622f  + 187459987029680506f
+     ,
+
+                        6                      5
+       1322793166094400e  - 3968379498283200f e
+     + 
+                        2 4                    3 3
+       3968379498283200f e  - 5291172664377600f e
+     + 
+                             10                      4  2
+       (- 230166010900425600f   - 226197631402142400f )e
+     + 
+                                47
+           - 152375364610443885f
+         + 
+                                 41
+           389166626064854890415f
+         + 
+                                   35
+           60906097841360558987335f
+         + 
+                                   29
+           76167367934608798697275f
+         + 
+                                23
+           27855066785995181125f
+         + 
+                                     17
+           - 76144952817052723145495f
+         + 
+                                     11
+           - 60933629892463517546975f
+         + 
+                                   5
+           - 411415071682002547795f
+      *
+         e
+     + 
+                         42                      36
+       - 209493533143822f   + 535045979490560586f
+     + 
+                            30                         24
+       83737947964973553146f   + 104889507084213371570f
+     + 
+                          18                         12
+       167117997269207870f   - 104793725781390615514f
+     + 
+                              6
+       - 83842685189903180394f  - 569978796672974242
+     ,
+
+                       6                   3
+       (25438330117200f  + 25438330117200)e
+     + 
+                       7                    2
+       (76314990351600f  + 76314990351600f)e
+     + 
+                           44                    38
+           - 1594966552735f   + 4073543370415745f
+         + 
+                              32                      26
+           637527159231148925f   + 797521176113606525f
+         + 
+                           20                      14
+           530440941097175f   - 797160527306433145f
+         + 
+                                8                    2
+           - 638132320196044965f  - 4510507167940725f
+      *
+         e
+     + 
+                       45                     39
+       - 6036376800443f   + 15416903421476909f
+     + 
+                           33                       27
+       2412807646192304449f   + 3017679923028013705f
+     + 
+                        21                       15
+       1422320037411955f   - 3016560402417843941f
+     + 
+                             9                     3
+       - 2414249368183033161f  - 16561862361763873f
+     ,
+
+                      12                  2
+       (1387545279120f   - 1387545279120)e
+     + 
+                      43                  37
+           4321823003f   - 11037922310209f
+         + 
+                              31                    25
+           - 1727510711947989f   - 2165150991154425f
+         + 
+                           19                    13
+           - 5114342560755f   + 2162682824948601f
+         + 
+                            7
+           1732620732685741f  + 13506088516033f
+      *
+         e
+     + 
+                   44                  38
+       24177661775f   - 61749727185325f
+     + 
+                          32                     26
+       - 9664106795754225f   - 12090487758628245f
+     + 
+                       20                     14
+       - 8787672733575f   + 12083693383005045f
+     + 
+                        8                  2
+       9672870290826025f  + 68544102808525f
+     ,
+
+        48        42          36          30          18
+       f   - 2554f   - 399710f   - 499722f   + 499722f
+     + 
+              12        6
+       399710f   + 2554f  - 1
+     ]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty13}
+\begin{paste}{LexTriangularPackageXmpPageEmpty13}{LexTriangularPackageXmpPagePatch13}
+\pastebutton{LexTriangularPackageXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{lg := groebner(lp)$lextripack\free{lp }\free{lextripack }\bound{lg }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch14}
+\begin{paste}{LexTriangularPackageXmpPageFull14}{LexTriangularPackageXmpPageEmpty14}
+\pastebutton{LexTriangularPackageXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lexTriangular(lg,false)$lextripack\free{lg }\free{lextripack }}
+\indentrel{3}\begin{verbatim}
+   (14)
+   [
+       6
+     {f  + 1,
+       6       5     2 4     3 3     4 2     5
+      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
+            2 5     3 4     4 3     5 2
+      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
+             2 5     3 4     4 3      5 2
+      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
+           2 5     3 4     4 3     5 2
+      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
+     ,
+
+       6                     2           2
+     {f  - 1, e - f, d - f, c  + 4f c + f ,
+                         2
+      (c - f)b - f c - 5f , a + b + c + 3f}
+     ,
+      6                        2           2
+    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
+
+       6              2           2
+     {f  - 1, e - f, d  + 4f d + f ,
+                         2
+      (d - f)c - f d - 5f , b - f, a + c + d + 3f}
+     ,
+
+     {
+          36        30          24          18          12
+         f   - 2554f   - 399709f   - 502276f   - 399709f
+       + 
+                6
+         - 2554f  + 1
+       ,
+
+                    12              2
+         (161718564f   - 161718564)e
+       + 
+                      31              25                19
+             - 504205f   + 1287737951f   + 201539391380f
+           + 
+                        13                7
+           253982817368f   + 201940704665f  + 1574134601f
+        *
+           e
+       + 
+                   32              26                 20
+         - 2818405f   + 7198203911f   + 1126548149060f
+       + 
+                     14                 8              2
+       1416530563364f   + 1127377589345f  + 7988820725f
+       ,
+
+                       6
+         (693772639560f  - 693772639560)d
+       + 
+                        2 5                 3 4
+         - 462515093040f e  + 1850060372160f e
+       + 
+                         4 3
+         - 1850060372160f e
+       + 
+                           11                  5  2
+         (- 24513299931120f   - 23588269745040f )e
+       + 
+                         30                 24
+             - 890810428f   + 2275181044754f
+           + 
+                             18                   12
+             355937263869776f   + 413736880104344f
+           + 
+                             6
+             342849304487996f  + 3704966481878
+        *
+           e
+       + 
+                      31                  25
+         - 4163798003f   + 10634395752169f
+       + 
+                          19                    13
+         1664161760192806f   + 2079424391370694f
+       + 
+                          7
+         1668153650635921f  + 10924274392693f
+       ,
+
+                      6                           31
+         (12614047992f  - 12614047992)c - 7246825f
+       + 
+                     25                 19
+         18508536599f   + 2896249516034f
+       + 
+                     13                 7
+       3581539649666f   + 2796477571739f  - 48094301893f
+       ,
+
+                       6
+         (693772639560f  - 693772639560)b
+       + 
+                        2 5                 3 4
+         - 925030186080f e  + 2312575465200f e
+       + 
+                         4 3
+         - 2312575465200f e
+       + 
+                           11                  5  2
+         (- 40007555547960f   - 35382404617560f )e
+       + 
+                          30                 24
+             - 3781280823f   + 9657492291789f
+           + 
+                              18                    12
+             1511158913397906f   + 1837290892286154f
+           + 
+                              6
+             1487216006594361f  + 8077238712093
+        *
+           e
+       + 
+                      31                  25
+         - 9736390478f   + 24866827916734f
+       + 
+                          19                    13
+         3891495681905296f   + 4872556418871424f
+       + 
+                          7
+         3904047887269606f  + 27890075838538f
+       ,
+      a + b + c + d + e + f}
+     ,
+
+       6       2           2                     2
+     {f  - 1, e  + 4f e + f , (e - f)d - f e - 5f ,
+      c - f, b - f, a + d + e + 3f}
+     ]
+         Type: List RegularChain(Integer,[a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty14}
+\begin{paste}{LexTriangularPackageXmpPageEmpty14}{LexTriangularPackageXmpPagePatch14}
+\pastebutton{LexTriangularPackageXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lexTriangular(lg,false)$lextripack\free{lg }\free{lextripack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch15}
+\begin{paste}{LexTriangularPackageXmpPageFull15}{LexTriangularPackageXmpPageEmpty15}
+\pastebutton{LexTriangularPackageXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{lts := lexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [
+       6
+     {f  + 1,
+       6       5     2 4     3 3     4 2     5
+      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
+            2 5     3 4     4 3     5 2
+      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
+             2 5     3 4     4 3      5 2
+      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
+           2 5     3 4     4 3     5 2
+      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
+     ,
+      6                  2           2
+    {f  - 1,e - f,d - f,c  + 4f c + f ,b + c + 4f,a - f},
+      6                        2           2
+    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
+      6            2           2
+    {f  - 1,e - f,d  + 4f d + f ,c + d + 4f,b - f,a - f},
+
+     {
+          36        30          24          18          12
+         f   - 2554f   - 399709f   - 502276f   - 399709f
+       + 
+                6
+         - 2554f  + 1
+       ,
+
+                       2
+         1387545279120e
+       + 
+                        31                  25
+             4321823003f   - 11037922310209f
+           + 
+                                19                    13
+             - 1727506390124986f   - 2176188913464634f
+           + 
+                                7
+             - 1732620732685741f  - 13506088516033f
+        *
+           e
+       + 
+                     32                  26
+         24177661775f   - 61749727185325f
+       + 
+                            20                     14
+         - 9664082618092450f   - 12152237485813570f
+       + 
+                            8                  2
+         - 9672870290826025f  - 68544102808525f
+       ,
+
+         1387545279120d
+       + 
+                          30                 24
+             - 1128983050f   + 2883434331830f
+           + 
+                             18                   12
+             451234998755840f   + 562426491685760f
+           + 
+                             6
+             447129055314890f  - 165557857270
+        *
+           e
+       + 
+                      31                 25
+         - 1816935351f   + 4640452214013f
+       + 
+                         19                   13
+         726247129626942f   + 912871801716798f
+       + 
+                         7
+         726583262666877f  + 4909358645961f
+       ,
+
+                                    31                 25
+         1387545279120c + 778171189f   - 1987468196267f
+       + 
+                           19                   13
+         - 310993556954378f   - 383262822316802f
+       + 
+                           7
+         - 300335488637543f  + 5289595037041f
+       ,
+
+         1387545279120b
+       + 
+                        30                 24
+             1128983050f   - 2883434331830f
+           + 
+                               18                   12
+             - 451234998755840f   - 562426491685760f
+           + 
+                               6
+             - 447129055314890f  + 165557857270
+        *
+           e
+       + 
+                      31                 25
+         - 3283058841f   + 8384938292463f
+       + 
+                          19                    13
+         1312252817452422f   + 1646579934064638f
+       + 
+                          7
+         1306372958656407f  + 4694680112151f
+       ,
+
+                                                      31
+         1387545279120a + 1387545279120e + 4321823003f
+       + 
+                          25                    19
+         - 11037922310209f   - 1727506390124986f
+       + 
+                            13                    7
+         - 2176188913464634f   - 1732620732685741f
+       + 
+         - 13506088516033f
+       }
+     ,
+      6      2           2
+    {f  - 1,e  + 4f e + f ,d + e + 4f,c - f,b - f,a - f}]
+         Type: List RegularChain(Integer,[a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty15}
+\begin{paste}{LexTriangularPackageXmpPageEmpty15}{LexTriangularPackageXmpPagePatch15}
+\pastebutton{LexTriangularPackageXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{lts := lexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch16}
+\begin{paste}{LexTriangularPackageXmpPageFull16}{LexTriangularPackageXmpPageEmpty16}
+\pastebutton{LexTriangularPackageXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{[[init(p) for p in (ts :: List(P))] for ts in lts]\free{lts }}
+\indentrel{3}\begin{verbatim}
+   (16)
+   [[1,3,1,3,1,1], [1,1,1,1,1,1], [1,1,1,1,1,1],
+    [1,1,1,1,1,1],
+
+     [1387545279120, 1387545279120, 1387545279120,
+      1387545279120, 1387545279120, 1]
+     ,
+    [1,1,1,1,1,1]]
+Type: List List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty16}
+\begin{paste}{LexTriangularPackageXmpPageEmpty16}{LexTriangularPackageXmpPagePatch16}
+\pastebutton{LexTriangularPackageXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[[init(p) for p in (ts :: List(P))] for ts in lts]\free{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch17}
+\begin{paste}{LexTriangularPackageXmpPageFull17}{LexTriangularPackageXmpPageEmpty17}
+\pastebutton{LexTriangularPackageXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{squareFreeLexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }}
+\indentrel{3}\begin{verbatim}
+   (17)
+   [
+       6
+     {f  + 1,
+       6       5     2 4     3 3     4 2     5
+      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
+            2 5     3 4     4 3     5 2
+      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
+             2 5     3 4     4 3      5 2
+      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
+           2 5     3 4     4 3     5 2
+      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
+     ,
+      6                  2           2
+    {f  - 1,e - f,d - f,c  + 4f c + f ,b + c + 4f,a - f},
+      6                        2           2
+    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
+      6            2           2
+    {f  - 1,e - f,d  + 4f d + f ,c + d + 4f,b - f,a - f},
+
+     {
+          36        30          24          18          12
+         f   - 2554f   - 399709f   - 502276f   - 399709f
+       + 
+                6
+         - 2554f  + 1
+       ,
+
+                       2
+         1387545279120e
+       + 
+                        31                  25
+             4321823003f   - 11037922310209f
+           + 
+                                19                    13
+             - 1727506390124986f   - 2176188913464634f
+           + 
+                                7
+             - 1732620732685741f  - 13506088516033f
+        *
+           e
+       + 
+                     32                  26
+         24177661775f   - 61749727185325f
+       + 
+                            20                     14
+         - 9664082618092450f   - 12152237485813570f
+       + 
+                            8                  2
+         - 9672870290826025f  - 68544102808525f
+       ,
+
+         1387545279120d
+       + 
+                          30                 24
+             - 1128983050f   + 2883434331830f
+           + 
+                             18                   12
+             451234998755840f   + 562426491685760f
+           + 
+                             6
+             447129055314890f  - 165557857270
+        *
+           e
+       + 
+                      31                 25
+         - 1816935351f   + 4640452214013f
+       + 
+                         19                   13
+         726247129626942f   + 912871801716798f
+       + 
+                         7
+         726583262666877f  + 4909358645961f
+       ,
+
+                                    31                 25
+         1387545279120c + 778171189f   - 1987468196267f
+       + 
+                           19                   13
+         - 310993556954378f   - 383262822316802f
+       + 
+                           7
+         - 300335488637543f  + 5289595037041f
+       ,
+
+         1387545279120b
+       + 
+                        30                 24
+             1128983050f   - 2883434331830f
+           + 
+                               18                   12
+             - 451234998755840f   - 562426491685760f
+           + 
+                               6
+             - 447129055314890f  + 165557857270
+        *
+           e
+       + 
+                      31                 25
+         - 3283058841f   + 8384938292463f
+       + 
+                          19                    13
+         1312252817452422f   + 1646579934064638f
+       + 
+                          7
+         1306372958656407f  + 4694680112151f
+       ,
+
+                                                      31
+         1387545279120a + 1387545279120e + 4321823003f
+       + 
+                          25                    19
+         - 11037922310209f   - 1727506390124986f
+       + 
+                            13                    7
+         - 2176188913464634f   - 1732620732685741f
+       + 
+         - 13506088516033f
+       }
+     ,
+      6      2           2
+    {f  - 1,e  + 4f e + f ,d + e + 4f,c - f,b - f,a - f}]
+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]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty17}
+\begin{paste}{LexTriangularPackageXmpPageEmpty17}{LexTriangularPackageXmpPagePatch17}
+\pastebutton{LexTriangularPackageXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{squareFreeLexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch18}
+\begin{paste}{LexTriangularPackageXmpPageFull18}{LexTriangularPackageXmpPageEmpty18}
+\pastebutton{LexTriangularPackageXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[degree(ts) for ts in lts])\free{lts }}
+\indentrel{3}\begin{verbatim}
+   (18)  156
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty18}
+\begin{paste}{LexTriangularPackageXmpPageEmpty18}{LexTriangularPackageXmpPagePatch18}
+\pastebutton{LexTriangularPackageXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[degree(ts) for ts in lts])\free{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch19}
+\begin{paste}{LexTriangularPackageXmpPageFull19}{LexTriangularPackageXmpPageEmpty19}
+\pastebutton{LexTriangularPackageXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{ls2 : List Symbol := concat(ls,new()$Symbol)\free{ls }\bound{ls2 }}
+\indentrel{3}\begin{verbatim}
+   (19)  [a,b,c,d,e,f,%A]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty19}
+\begin{paste}{LexTriangularPackageXmpPageEmpty19}{LexTriangularPackageXmpPagePatch19}
+\pastebutton{LexTriangularPackageXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{ls2 : List Symbol := concat(ls,new()$Symbol)\free{ls }\bound{ls2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch20}
+\begin{paste}{LexTriangularPackageXmpPageFull20}{LexTriangularPackageXmpPageEmpty20}
+\pastebutton{LexTriangularPackageXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{zdpack := ZDSOLVE(R,ls,ls2)\free{R }\free{ls }\free{ls2 }\bound{zdpack }}
+\indentrel{3}\begin{verbatim}
+   (20)
+  ZeroDimensionalSolvePackage(Integer,[a,b,c,d,e,f],[a,b,
+  c,d,e,f,%A])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty20}
+\begin{paste}{LexTriangularPackageXmpPageEmpty20}{LexTriangularPackageXmpPagePatch20}
+\pastebutton{LexTriangularPackageXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{zdpack := ZDSOLVE(R,ls,ls2)\free{R }\free{ls }\free{ls2 }\bound{zdpack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch21}
+\begin{paste}{LexTriangularPackageXmpPageFull21}{LexTriangularPackageXmpPageEmpty21}
+\pastebutton{LexTriangularPackageXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{concat [univariateSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   [
+                     4      2
+     [complexRoots= ?  - 13?  + 49,
+
+       coordinates =
+                 3                3
+         [7a + %A  - 6%A, 21b + %A  + %A,
+                   3                3
+          21c - 2%A  + 19%A, 7d - %A  + 6%A,
+                  3                3
+          21e - %A  - %A, 21f + 2%A  - 19%A]
+       ]
+     ,
+
+                     4      2
+     [complexRoots= ?  + 11?  + 49,
+
+       coordinates =
+                   3                 3
+         [35a + 3%A  + 19%A, 35b + %A  + 18%A,
+                   3                3
+          35c - 2%A  - %A, 35d - 3%A  - 19%A,
+                  3                  3
+          35e - %A  - 18%A, 35f + 2%A  + %A]
+       ]
+     ,
+
+     [
+       complexRoots =
+            8      7      6       5       4       3
+           ?  - 12?  + 58?  - 120?  + 207?  - 360?
+         + 
+               2
+           802?  - 1332? + 1369
+       ,
+
+       coordinates =
+         [
+                                7           6            5
+             43054532a + 33782%A  - 546673%A  + 3127348%A
+           + 
+                        4            3             2
+             - 6927123%A  + 4365212%A  - 25086957%A
+           + 
+             39582814%A - 107313172
+           ,
+
+                                7           6            5
+             43054532b - 33782%A  + 546673%A  - 3127348%A
+           + 
+                      4            3             2
+             6927123%A  - 4365212%A  + 25086957%A
+           + 
+             - 39582814%A + 107313172
+           ,
+
+                                7           6            5
+             21527266c - 22306%A  + 263139%A  - 1166076%A
+           + 
+                      4            3             2
+             1821805%A  - 2892788%A  + 10322663%A
+           + 
+             - 9026596%A + 12950740
+           ,
+
+                                7           6            5
+             43054532d + 22306%A  - 263139%A  + 1166076%A
+           + 
+                        4            3             2
+             - 1821805%A  + 2892788%A  - 10322663%A
+           + 
+             30553862%A - 12950740
+           ,
+
+                                7           6            5
+             43054532e - 22306%A  + 263139%A  - 1166076%A
+           + 
+                      4            3             2
+             1821805%A  - 2892788%A  + 10322663%A
+           + 
+             - 30553862%A + 12950740
+           ,
+
+                                7           6            5
+             21527266f + 22306%A  - 263139%A  + 1166076%A
+           + 
+                        4            3             2
+             - 1821805%A  + 2892788%A  - 10322663%A
+           + 
+             9026596%A - 12950740
+           ]
+       ]
+     ,
+
+     [
+       complexRoots =
+            8      7      6       5       4       3
+           ?  + 12?  + 58?  + 120?  + 207?  + 360?
+         + 
+               2
+           802?  + 1332? + 1369
+       ,
+
+       coordinates =
+         [
+                                7           6            5
+             43054532a + 33782%A  + 546673%A  + 3127348%A
+           + 
+                      4            3             2
+             6927123%A  + 4365212%A  + 25086957%A
+           + 
+             39582814%A + 107313172
+           ,
+
+                                7           6            5
+             43054532b - 33782%A  - 546673%A  - 3127348%A
+           + 
+                        4            3             2
+             - 6927123%A  - 4365212%A  - 25086957%A
+           + 
+             - 39582814%A - 107313172
+           ,
+
+                                7           6            5
+             21527266c - 22306%A  - 263139%A  - 1166076%A
+           + 
+                        4            3             2
+             - 1821805%A  - 2892788%A  - 10322663%A
+           + 
+             - 9026596%A - 12950740
+           ,
+
+                                7           6            5
+             43054532d + 22306%A  + 263139%A  + 1166076%A
+           + 
+                      4            3             2
+             1821805%A  + 2892788%A  + 10322663%A
+           + 
+             30553862%A + 12950740
+           ,
+
+                                7           6            5
+             43054532e - 22306%A  - 263139%A  - 1166076%A
+           + 
+                        4            3             2
+             - 1821805%A  - 2892788%A  - 10322663%A
+           + 
+             - 30553862%A - 12950740
+           ,
+
+                                7           6            5
+             21527266f + 22306%A  + 263139%A  + 1166076%A
+           + 
+                      4            3             2
+             1821805%A  + 2892788%A  + 10322663%A
+           + 
+             9026596%A + 12950740
+           ]
+       ]
+     ,
+
+                     4    2
+     [complexRoots= ?  - ?  + 1,
+
+       coordinates =
+                        3             3
+         [a - %A, b + %A  - %A, c + %A , d + %A,
+                3             3
+          e - %A  + %A, f - %A ]
+       ]
+     ,
+
+                     8     6      4      2
+     [complexRoots= ?  + 4?  + 12?  + 16?  + 4,
+
+       coordinates =
+                  7      5       3
+         [4a - 2%A  - 7%A  - 20%A  - 22%A,
+                  7      5       3
+          4b + 2%A  + 7%A  + 20%A  + 22%A,
+                 7      5       3
+          4c + %A  + 3%A  + 10%A  + 10%A,
+                 7      5       3
+          4d + %A  + 3%A  + 10%A  + 6%A,
+                 7      5       3
+          4e - %A  - 3%A  - 10%A  - 6%A,
+                 7      5       3
+          4f - %A  - 3%A  - 10%A  - 10%A]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  - 5%A  - 30%A - 6,
+                 3      2
+          6b + %A  + 5%A  + 24%A + 6,
+                  3      2
+          30c - %A  - 5%A  - 6,
+                  3      2
+          30d - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30e - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30f - %A  - 5%A  - 30%A - 6]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  + 5%A  - 30%A + 6,
+                 3      2
+          6b + %A  - 5%A  + 24%A - 6,
+                  3      2
+          30c - %A  + 5%A  + 6,
+                  3      2
+          30d - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30e - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30f - %A  + 5%A  - 30%A + 6]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  + 6? + 6,
+
+       coordinates =
+         [a + 1,b - %A - 5,c + %A + 1,d + 1,e + 1,f + 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 6? + 6,
+
+       coordinates =
+         [a - 1,b - %A + 5,c + %A - 1,d - 1,e - 1,f - 1]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
+
+       coordinates =
+                 3      2
+         [6a + %A  + 5%A  + 24%A + 6,
+                  3      2
+          30b - %A  - 5%A  - 6,
+                  3      2
+          30c - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30d - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30e - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30f - %A  - 5%A  - 30%A - 6]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
+
+       coordinates =
+                 3      2
+         [6a + %A  - 5%A  + 24%A - 6,
+                  3      2
+          30b - %A  + 5%A  + 6,
+                  3      2
+          30c - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30d - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30e - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30f - %A  + 5%A  - 30%A + 6]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  + 6? + 6,
+
+       coordinates =
+         [a - %A - 5,b + %A + 1,c + 1,d + 1,e + 1,f + 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 6? + 6,
+
+       coordinates =
+         [a - %A + 5,b + %A - 1,c - 1,d - 1,e - 1,f - 1]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30b - %A  - 5%A  - 30%A - 6,
+                 3      2
+          6c + %A  + 5%A  + 24%A + 6,
+                  3      2
+          30d - %A  - 5%A  - 6,
+                  3      2
+          30e - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30f - %A  - 5%A  - 30%A - 6]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30b - %A  + 5%A  - 30%A + 6,
+                 3      2
+          6c + %A  - 5%A  + 24%A - 6,
+                  3      2
+          30d - %A  + 5%A  + 6,
+                  3      2
+          30e - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30f - %A  + 5%A  - 30%A + 6]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  + 6? + 6,
+
+       coordinates =
+         [a + 1,b + 1,c - %A - 5,d + %A + 1,e + 1,f + 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 6? + 6,
+
+       coordinates =
+         [a - 1,b - 1,c - %A + 5,d + %A - 1,e - 1,f - 1]
+       ]
+     ,
+
+     [
+       complexRoots =
+          8     7      6      5      4     2
+         ?  + 6?  + 16?  + 24?  + 18?  - 8?  + 4
+       ,
+
+       coordinates =
+         [
+                     7      6       5       4      3
+             2a + 2%A  + 9%A  + 18%A  + 19%A  + 4%A
+           + 
+                   2
+             - 10%A  - 2%A + 4
+           ,
+
+                     7      6       5       4      3
+             2b + 2%A  + 9%A  + 18%A  + 19%A  + 4%A
+           + 
+                   2
+             - 10%A  - 4%A + 4
+           ,
+                 7      6      5      4      3
+          2c - %A  - 4%A  - 8%A  - 9%A  - 4%A  - 2%A - 4,
+                 7      6      5      4      3
+          2d + %A  + 4%A  + 8%A  + 9%A  + 4%A  + 2%A + 4,
+
+                     7      6       5       4      3
+             2e - 2%A  - 9%A  - 18%A  - 19%A  - 4%A
+           + 
+                 2
+             10%A  + 4%A - 4
+           ,
+
+                     7      6       5       4      3
+             2f - 2%A  - 9%A  - 18%A  - 19%A  - 4%A
+           + 
+                 2
+             10%A  + 2%A - 4
+           ]
+       ]
+     ,
+
+     [
+       complexRoots =
+            8      7      6       5       4       3
+           ?  + 12?  + 64?  + 192?  + 432?  + 768?
+         + 
+                2
+           1024?  + 768? + 256
+       ,
+
+       coordinates =
+         [
+                         7        6        5         4
+             1408a - 19%A  - 200%A  - 912%A  - 2216%A
+           + 
+                     3         2
+             - 4544%A  - 6784%A  - 6976%A - 1792
+           ,
+
+                         7        6         5         4
+             1408b - 37%A  - 408%A  - 1952%A  - 5024%A
+           + 
+                      3          2
+             - 10368%A  - 16768%A  - 17920%A - 5120
+           ,
+
+                         7        6         5         4
+             1408c + 37%A  + 408%A  + 1952%A  + 5024%A
+           + 
+                    3          2
+             10368%A  + 16768%A  + 17920%A + 5120
+           ,
+
+                         7        6        5         4
+             1408d + 19%A  + 200%A  + 912%A  + 2216%A
+           + 
+                   3         2
+             4544%A  + 6784%A  + 6976%A + 1792
+           ,
+          2e + %A, 2f - %A]
+       ]
+     ,
+
+                     8     6      4      2
+     [complexRoots= ?  + 4?  + 12?  + 16?  + 4,
+
+       coordinates =
+                 7      5       3
+         [4a - %A  - 3%A  - 10%A  - 6%A,
+                 7      5       3
+          4b - %A  - 3%A  - 10%A  - 10%A,
+                  7      5       3
+          4c - 2%A  - 7%A  - 20%A  - 22%A,
+                  7      5       3
+          4d + 2%A  + 7%A  + 20%A  + 22%A,
+                 7      5       3
+          4e + %A  + 3%A  + 10%A  + 10%A,
+                 7      5       3
+          4f + %A  + 3%A  + 10%A  + 6%A]
+       ]
+     ,
+
+                     8      6      4       2
+     [complexRoots= ?  + 16?  - 96?  + 256?  + 256,
+
+       coordinates =
+                   7       5        3
+         [512a - %A  - 12%A  + 176%A  - 448%A,
+                   7       5       3
+          128b - %A  - 16%A  + 96%A  - 256%A,
+                   7       5       3
+          128c + %A  + 16%A  - 96%A  + 256%A,
+                   7       5        3
+          512d + %A  + 12%A  - 176%A  + 448%A, 2e + %A,
+          2f - %A]
+       ]
+     ,
+
+     [
+       complexRoots =
+            8      7      6       5       4       3
+           ?  - 12?  + 64?  - 192?  + 432?  - 768?
+         + 
+                2
+           1024?  - 768? + 256
+       ,
+
+       coordinates =
+         [
+                         7        6        5         4
+             1408a - 19%A  + 200%A  - 912%A  + 2216%A
+           + 
+                     3         2
+             - 4544%A  + 6784%A  - 6976%A + 1792
+           ,
+
+                         7        6         5         4
+             1408b - 37%A  + 408%A  - 1952%A  + 5024%A
+           + 
+                      3          2
+             - 10368%A  + 16768%A  - 17920%A + 5120
+           ,
+
+                         7        6         5         4
+             1408c + 37%A  - 408%A  + 1952%A  - 5024%A
+           + 
+                    3          2
+             10368%A  - 16768%A  + 17920%A - 5120
+           ,
+
+                         7        6        5         4
+             1408d + 19%A  - 200%A  + 912%A  - 2216%A
+           + 
+                   3         2
+             4544%A  - 6784%A  + 6976%A - 1792
+           ,
+          2e + %A, 2f - %A]
+       ]
+     ,
+
+     [
+       complexRoots =
+          8     7      6      5      4     2
+         ?  - 6?  + 16?  - 24?  + 18?  - 8?  + 4
+       ,
+
+       coordinates =
+         [
+                     7      6       5       4      3
+             2a + 2%A  - 9%A  + 18%A  - 19%A  + 4%A
+           + 
+                 2
+             10%A  - 2%A - 4
+           ,
+
+                     7      6       5       4      3
+             2b + 2%A  - 9%A  + 18%A  - 19%A  + 4%A
+           + 
+                 2
+             10%A  - 4%A - 4
+           ,
+                 7      6      5      4      3
+          2c - %A  + 4%A  - 8%A  + 9%A  - 4%A  - 2%A + 4,
+                 7      6      5      4      3
+          2d + %A  - 4%A  + 8%A  - 9%A  + 4%A  + 2%A - 4,
+
+                     7      6       5       4      3
+             2e - 2%A  + 9%A  - 18%A  + 19%A  - 4%A
+           + 
+                   2
+             - 10%A  + 4%A + 4
+           ,
+
+                     7      6       5       4      3
+             2f - 2%A  + 9%A  - 18%A  + 19%A  - 4%A
+           + 
+                   2
+             - 10%A  + 2%A + 4
+           ]
+       ]
+     ,
+
+                     4      2
+     [complexRoots= ?  + 12?  + 144,
+
+       coordinates =
+                  2               2               2
+         [12a - %A  - 12, 12b - %A  - 12, 12c - %A  - 12,
+                  2              2
+          12d - %A  - 12, 6e + %A  + 3%A + 12,
+                 2
+          6f + %A  - 3%A + 12]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
+
+       coordinates =
+                 3      2
+         [6a - %A  - 5%A  - 24%A - 6,
+                  3      2
+          30b + %A  + 5%A  + 30%A + 6,
+                  3      2
+          30c + %A  + 5%A  + 30%A + 6,
+                  3      2
+          30d + %A  + 5%A  + 30%A + 6,
+                  3      2
+          30e + %A  + 5%A  + 30%A + 6,
+                  3      2
+          30f + %A  + 5%A  + 6]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
+
+       coordinates =
+                 3      2
+         [6a - %A  + 5%A  - 24%A + 6,
+                  3      2
+          30b + %A  - 5%A  + 30%A - 6,
+                  3      2
+          30c + %A  - 5%A  + 30%A - 6,
+                  3      2
+          30d + %A  - 5%A  + 30%A - 6,
+                  3      2
+          30e + %A  - 5%A  + 30%A - 6,
+                  3      2
+          30f + %A  - 5%A  - 6]
+       ]
+     ,
+
+                     4      2
+     [complexRoots= ?  + 12?  + 144,
+
+       coordinates =
+                  2               2               2
+         [12a + %A  + 12, 12b + %A  + 12, 12c + %A  + 12,
+                  2              2
+          12d + %A  + 12, 6e - %A  + 3%A - 12,
+                 2
+          6f - %A  - 3%A - 12]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 12,
+
+       coordinates =
+         [a - 1,b - 1,c - 1,d - 1,2e + %A + 4,2f - %A + 4]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  + 6? + 6,
+
+       coordinates =
+         [a + %A + 5,b - 1,c - 1,d - 1,e - 1,f - %A - 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 6? + 6,
+
+       coordinates =
+         [a + %A - 5,b + 1,c + 1,d + 1,e + 1,f - %A + 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 12,
+
+       coordinates =
+         [a + 1,b + 1,c + 1,d + 1,2e + %A - 4,2f - %A - 4]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30b - %A  - 5%A  - 30%A - 6,
+                  3      2
+          30c - %A  - 5%A  - 30%A - 6,
+                 3      2
+          6d + %A  + 5%A  + 24%A + 6,
+                  3      2
+          30e - %A  - 5%A  - 6,
+                  3      2
+          30f - %A  - 5%A  - 30%A - 6]
+       ]
+     ,
+
+                     4     3      2
+     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
+
+       coordinates =
+                  3      2
+         [30a - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30b - %A  + 5%A  - 30%A + 6,
+                  3      2
+          30c - %A  + 5%A  - 30%A + 6,
+                 3      2
+          6d + %A  - 5%A  + 24%A - 6,
+                  3      2
+          30e - %A  + 5%A  + 6,
+                  3      2
+          30f - %A  + 5%A  - 30%A + 6]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  + 6? + 6,
+
+       coordinates =
+         [a + 1,b + 1,c + 1,d - %A - 5,e + %A + 1,f + 1]
+       ]
+     ,
+
+                     2
+     [complexRoots= ?  - 6? + 6,
+
+       coordinates =
+         [a - 1,b - 1,c - 1,d - %A + 5,e + %A - 1,f - 1]
+       ]
+     ]
+Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty21}
+\begin{paste}{LexTriangularPackageXmpPageEmpty21}{LexTriangularPackageXmpPagePatch21}
+\pastebutton{LexTriangularPackageXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{concat [univariateSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
+\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPagePatch22}
+\begin{paste}{LexTriangularPackageXmpPageFull22}{LexTriangularPackageXmpPageEmpty22}
+\pastebutton{LexTriangularPackageXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{concat [realSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [[%R1,%R1,%R1,%R5,- %R5 - 4%R1,%R1],
+    [%R1,%R1,%R1,%R6,- %R6 - 4%R1,%R1],
+    [%R2,%R2,%R2,%R3,- %R3 - 4%R2,%R2],
+    [%R2,%R2,%R2,%R4,- %R4 - 4%R2,%R2],
+    [%R7,%R7,%R7,%R7,%R11,- %R11 - 4%R7],
+    [%R7,%R7,%R7,%R7,%R12,- %R12 - 4%R7],
+    [%R8,%R8,%R8,%R8,%R9,- %R9 - 4%R8],
+    [%R8,%R8,%R8,%R8,%R10,- %R10 - 4%R8],
+    [%R13,%R13,%R17,- %R17 - 4%R13,%R13,%R13],
+    [%R13,%R13,%R18,- %R18 - 4%R13,%R13,%R13],
+    [%R14,%R14,%R15,- %R15 - 4%R14,%R14,%R14],
+    [%R14,%R14,%R16,- %R16 - 4%R14,%R14,%R14],
+
+     [%R19, %R29,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄ %R19
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄ %R19
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R29 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          1387545279120
+       ]
+     ,
+
+     [%R19, %R30,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄ %R19
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄ %R19
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R30 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
+          1387545279120
+       ]
+     ,
+
+     [%R20, %R27,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄ %R20
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄ %R20
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R27 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          1387545279120
+       ]
+     ,
+
+     [%R20, %R28,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄ %R20
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄ %R20
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R28 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
+          1387545279120
+       ]
+     ,
+
+     [%R21, %R25,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄ %R21
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄ %R21
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R25 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          1387545279120
+       ]
+     ,
+
+     [%R21, %R26,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄ %R21
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄ %R21
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R26 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
+          1387545279120
+       ]
+     ,
+
+     [%R22, %R23,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄ %R22
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄ %R22
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R23 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          1387545279120
+       ]
+     ,
+
+     [%R22, %R24,
+
+           7865521      31   6696179241     25
+         ÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄ %R22
+         6006689520          2002229840
+       + 
+           25769893181     19   1975912990729     13
+         - ÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             49235160             3003344760
+       + 
+           1048460696489     7   21252634831
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄ %R22
+             2002229840           6006689520
+       ,
+
+             778171189       31   1987468196267     25
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           1387545279120          1387545279120
+       + 
+         155496778477189     19   191631411158401     13
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           693772639560             693772639560
+       + 
+         300335488637543     7   755656433863
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          1387545279120          198220754160
+       ,
+
+          1094352947      31   2794979430821     25
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+         462515093040           462515093040
+       + 
+           218708802908737     19   91476663003591     13
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             231257546520             77085848840
+       + 
+           145152550961823     7   1564893370717
+         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+             154171697680           462515093040
+       ,
+
+                    4321823003      31
+         - %R24 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+                  1387545279120
+       + 
+         180949546069     25   863753195062493     19
+         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          22746643920            693772639560
+       + 
+         1088094456732317     13   1732620732685741     7
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+           693772639560              1387545279120
+       + 
+         13506088516033
+         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
+          1387545279120
+       ]
+     ,
+    [%R31,%R35,- %R35 - 4%R31,%R31,%R31,%R31],
+    [%R31,%R36,- %R36 - 4%R31,%R31,%R31,%R31],
+    [%R32,%R33,- %R33 - 4%R32,%R32,%R32,%R32],
+    [%R32,%R34,- %R34 - 4%R32,%R32,%R32,%R32]]
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LexTriangularPackageXmpPageEmpty22}
+\begin{paste}{LexTriangularPackageXmpPageEmpty22}{LexTriangularPackageXmpPagePatch22}
+\pastebutton{LexTriangularPackageXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{concat [realSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
+\end{paste}\end{patch}
+
 @
 \section{lib.ht}
 \pagehead{LibraryXmpPage}{lib.ht}{Library}
@@ -12729,7 +35843,135 @@ For more information on related topics, see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{LibraryXmpPagePatch1}
+\begin{paste}{LibraryXmpPageFull1}{LibraryXmpPageEmpty1}
+\pastebutton{LibraryXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{stuff := library "/tmp/Neat.stuff"\bound{stuff }}
+\indentrel{3}\begin{verbatim}
+   (1)  "/tmp/Neat.stuff"
+                                          Type: Library
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty1}
+\begin{paste}{LibraryXmpPageEmpty1}{LibraryXmpPagePatch1}
+\pastebutton{LibraryXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{stuff := library "/tmp/Neat.stuff"\bound{stuff }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch2}
+\begin{paste}{LibraryXmpPageFull2}{LibraryXmpPageEmpty2}
+\pastebutton{LibraryXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{stuff.int := 32**2\free{stuff }\bound{stuffa }}
+\indentrel{3}\begin{verbatim}
+   (2)  1024
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty2}
+\begin{paste}{LibraryXmpPageEmpty2}{LibraryXmpPagePatch2}
+\pastebutton{LibraryXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{stuff.int := 32**2\free{stuff }\bound{stuffa }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch3}
+\begin{paste}{LibraryXmpPageFull3}{LibraryXmpPageEmpty3}
+\pastebutton{LibraryXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{stuff."poly" := x**2 + 1\free{stuffa }\bound{stuffb }}
+\indentrel{3}\begin{verbatim}
+         2
+   (3)  x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty3}
+\begin{paste}{LibraryXmpPageEmpty3}{LibraryXmpPagePatch3}
+\pastebutton{LibraryXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{stuff."poly" := x**2 + 1\free{stuffa }\bound{stuffb }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch4}
+\begin{paste}{LibraryXmpPageFull4}{LibraryXmpPageEmpty4}
+\pastebutton{LibraryXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{stuff.str := "Hello"\free{stuffb }\bound{stuffc }}
+\indentrel{3}\begin{verbatim}
+   (4)  "Hello"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty4}
+\begin{paste}{LibraryXmpPageEmpty4}{LibraryXmpPagePatch4}
+\pastebutton{LibraryXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{stuff.str := "Hello"\free{stuffb }\bound{stuffc }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch5}
+\begin{paste}{LibraryXmpPageFull5}{LibraryXmpPageEmpty5}
+\pastebutton{LibraryXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{keys stuff\free{stuffa stuffb stuffc }\bound{stuffabc }}
+\indentrel{3}\begin{verbatim}
+   (5)  ["str","poly","int"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty5}
+\begin{paste}{LibraryXmpPageEmpty5}{LibraryXmpPagePatch5}
+\pastebutton{LibraryXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{keys stuff\free{stuffa stuffb stuffc }\bound{stuffabc }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch6}
+\begin{paste}{LibraryXmpPageFull6}{LibraryXmpPageEmpty6}
+\pastebutton{LibraryXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{stuff.poly\free{stuffb }}
+\indentrel{3}\begin{verbatim}
+         2
+   (6)  x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty6}
+\begin{paste}{LibraryXmpPageEmpty6}{LibraryXmpPagePatch6}
+\pastebutton{LibraryXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{stuff.poly\free{stuffb }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch7}
+\begin{paste}{LibraryXmpPageFull7}{LibraryXmpPageEmpty7}
+\pastebutton{LibraryXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{stuff("poly")\free{stuffb }}
+\indentrel{3}\begin{verbatim}
+         2
+   (7)  x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty7}
+\begin{paste}{LibraryXmpPageEmpty7}{LibraryXmpPagePatch7}
+\pastebutton{LibraryXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{stuff("poly")\free{stuffb }}
+\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPagePatch8}
+\begin{paste}{LibraryXmpPageFull8}{LibraryXmpPageEmpty8}
+\pastebutton{LibraryXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{)system rm -rf /tmp/Neat.stuff\free{stuff }\bound{rmstuff }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LibraryXmpPageEmpty8}
+\begin{paste}{LibraryXmpPageEmpty8}{LibraryXmpPagePatch8}
+\pastebutton{LibraryXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{)system rm -rf /tmp/Neat.stuff\free{stuff }\bound{rmstuff }}
+\end{paste}\end{patch}
 
 @
 \section{link.ht}
@@ -13751,6 +36993,86 @@ list.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxListCreatePagePatch1}
+\begin{paste}{ugxListCreatePageFull1}{ugxListCreatePageEmpty1}
+\pastebutton{ugxListCreatePageFull1}{\hidepaste}
+\tab{5}\spadcommand{[2, 4, 5, 6]}
+\indentrel{3}\begin{verbatim}
+   (1)  [2,4,5,6]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePageEmpty1}
+\begin{paste}{ugxListCreatePageEmpty1}{ugxListCreatePagePatch1}
+\pastebutton{ugxListCreatePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{[2, 4, 5, 6]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePagePatch2}
+\begin{paste}{ugxListCreatePageFull2}{ugxListCreatePageEmpty2}
+\pastebutton{ugxListCreatePageFull2}{\hidepaste}
+\tab{5}\spadcommand{[1]}
+\indentrel{3}\begin{verbatim}
+   (2)  [1]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePageEmpty2}
+\begin{paste}{ugxListCreatePageEmpty2}{ugxListCreatePagePatch2}
+\pastebutton{ugxListCreatePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{[1]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePagePatch3}
+\begin{paste}{ugxListCreatePageFull3}{ugxListCreatePageEmpty3}
+\pastebutton{ugxListCreatePageFull3}{\hidepaste}
+\tab{5}\spadcommand{list(1)}
+\indentrel{3}\begin{verbatim}
+   (3)  [1]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePageEmpty3}
+\begin{paste}{ugxListCreatePageEmpty3}{ugxListCreatePagePatch3}
+\pastebutton{ugxListCreatePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{list(1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePagePatch4}
+\begin{paste}{ugxListCreatePageFull4}{ugxListCreatePageEmpty4}
+\pastebutton{ugxListCreatePageFull4}{\hidepaste}
+\tab{5}\spadcommand{append([1,2,3],[5,6,7])}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,2,3,5,6,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePageEmpty4}
+\begin{paste}{ugxListCreatePageEmpty4}{ugxListCreatePagePatch4}
+\pastebutton{ugxListCreatePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{append([1,2,3],[5,6,7])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePagePatch5}
+\begin{paste}{ugxListCreatePageFull5}{ugxListCreatePageEmpty5}
+\pastebutton{ugxListCreatePageFull5}{\hidepaste}
+\tab{5}\spadcommand{cons(10,[9,8,7])}
+\indentrel{3}\begin{verbatim}
+   (5)  [10,9,8,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListCreatePageEmpty5}
+\begin{paste}{ugxListCreatePageEmpty5}{ugxListCreatePagePatch5}
+\pastebutton{ugxListCreatePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{cons(10,[9,8,7])}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxListAccessPage}{list.ht}{Accessing List Elements}
 <<list.ht>>=
@@ -13838,6 +37160,182 @@ extracts the element from the list.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxListAccessPagePatch1}
+\begin{paste}{ugxListAccessPageFull1}{ugxListAccessPageEmpty1}
+\pastebutton{ugxListAccessPageFull1}{\hidepaste}
+\tab{5}\spadcommand{empty? [x+1]}
+\indentrel{3}\begin{verbatim}
+   (1)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty1}
+\begin{paste}{ugxListAccessPageEmpty1}{ugxListAccessPagePatch1}
+\pastebutton{ugxListAccessPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{empty? [x+1]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch2}
+\begin{paste}{ugxListAccessPageFull2}{ugxListAccessPageEmpty2}
+\pastebutton{ugxListAccessPageFull2}{\hidepaste}
+\tab{5}\spadcommand{([] = nil)@Boolean}
+\indentrel{3}\begin{verbatim}
+   (2)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty2}
+\begin{paste}{ugxListAccessPageEmpty2}{ugxListAccessPagePatch2}
+\pastebutton{ugxListAccessPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{([] = nil)@Boolean}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch3}
+\begin{paste}{ugxListAccessPageFull3}{ugxListAccessPageEmpty3}
+\pastebutton{ugxListAccessPageFull3}{\hidepaste}
+\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (3)  [4,3,7,3,8,5,9,2]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty3}
+\begin{paste}{ugxListAccessPageEmpty3}{ugxListAccessPagePatch3}
+\pastebutton{ugxListAccessPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch4}
+\begin{paste}{ugxListAccessPageFull4}{ugxListAccessPageEmpty4}
+\pastebutton{ugxListAccessPageFull4}{\hidepaste}
+\tab{5}\spadcommand{first k\free{k }}
+\indentrel{3}\begin{verbatim}
+   (4)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty4}
+\begin{paste}{ugxListAccessPageEmpty4}{ugxListAccessPagePatch4}
+\pastebutton{ugxListAccessPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{first k\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch5}
+\begin{paste}{ugxListAccessPageFull5}{ugxListAccessPageEmpty5}
+\pastebutton{ugxListAccessPageFull5}{\hidepaste}
+\tab{5}\spadcommand{k.first\free{k }}
+\indentrel{3}\begin{verbatim}
+   (5)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty5}
+\begin{paste}{ugxListAccessPageEmpty5}{ugxListAccessPagePatch5}
+\pastebutton{ugxListAccessPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{k.first\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch6}
+\begin{paste}{ugxListAccessPageFull6}{ugxListAccessPageEmpty6}
+\pastebutton{ugxListAccessPageFull6}{\hidepaste}
+\tab{5}\spadcommand{k.1\free{k }}
+\indentrel{3}\begin{verbatim}
+   (6)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty6}
+\begin{paste}{ugxListAccessPageEmpty6}{ugxListAccessPagePatch6}
+\pastebutton{ugxListAccessPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{k.1\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch7}
+\begin{paste}{ugxListAccessPageFull7}{ugxListAccessPageEmpty7}
+\pastebutton{ugxListAccessPageFull7}{\hidepaste}
+\tab{5}\spadcommand{k(1)\free{k }}
+\indentrel{3}\begin{verbatim}
+   (7)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty7}
+\begin{paste}{ugxListAccessPageEmpty7}{ugxListAccessPagePatch7}
+\pastebutton{ugxListAccessPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{k(1)\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch8}
+\begin{paste}{ugxListAccessPageFull8}{ugxListAccessPageEmpty8}
+\pastebutton{ugxListAccessPageFull8}{\hidepaste}
+\tab{5}\spadcommand{n := \#k\free{k }}
+\indentrel{3}\begin{verbatim}
+   (8)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty8}
+\begin{paste}{ugxListAccessPageEmpty8}{ugxListAccessPagePatch8}
+\pastebutton{ugxListAccessPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{n := \#k\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch9}
+\begin{paste}{ugxListAccessPageFull9}{ugxListAccessPageEmpty9}
+\pastebutton{ugxListAccessPageFull9}{\hidepaste}
+\tab{5}\spadcommand{last k\free{k }}
+\indentrel{3}\begin{verbatim}
+   (9)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty9}
+\begin{paste}{ugxListAccessPageEmpty9}{ugxListAccessPagePatch9}
+\pastebutton{ugxListAccessPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{last k\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch10}
+\begin{paste}{ugxListAccessPageFull10}{ugxListAccessPageEmpty10}
+\pastebutton{ugxListAccessPageFull10}{\hidepaste}
+\tab{5}\spadcommand{k.last\free{k }}
+\indentrel{3}\begin{verbatim}
+   (10)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty10}
+\begin{paste}{ugxListAccessPageEmpty10}{ugxListAccessPagePatch10}
+\pastebutton{ugxListAccessPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{k.last\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPagePatch11}
+\begin{paste}{ugxListAccessPageFull11}{ugxListAccessPageEmpty11}
+\pastebutton{ugxListAccessPageFull11}{\hidepaste}
+\tab{5}\spadcommand{k.(\#k)\free{k }}
+\indentrel{3}\begin{verbatim}
+   (11)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListAccessPageEmpty11}
+\begin{paste}{ugxListAccessPageEmpty11}{ugxListAccessPagePatch11}
+\pastebutton{ugxListAccessPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{k.(\#k)\free{k }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxListChangePage}{list.ht}{Changing List Elements}
 <<list.ht>>=
@@ -13904,6 +37402,134 @@ It changed too!
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxListChangePagePatch1}
+\begin{paste}{ugxListChangePageFull1}{ugxListChangePageEmpty1}
+\pastebutton{ugxListChangePageFull1}{\hidepaste}
+\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (1)  [4,3,7,3,8,5,9,2]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty1}
+\begin{paste}{ugxListChangePageEmpty1}{ugxListChangePagePatch1}
+\pastebutton{ugxListChangePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch2}
+\begin{paste}{ugxListChangePageFull2}{ugxListChangePageEmpty2}
+\pastebutton{ugxListChangePageFull2}{\hidepaste}
+\tab{5}\spadcommand{k.1 := 999\free{k }\bound{k1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  999
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty2}
+\begin{paste}{ugxListChangePageEmpty2}{ugxListChangePagePatch2}
+\pastebutton{ugxListChangePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{k.1 := 999\free{k }\bound{k1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch3}
+\begin{paste}{ugxListChangePageFull3}{ugxListChangePageEmpty3}
+\pastebutton{ugxListChangePageFull3}{\hidepaste}
+\tab{5}\spadcommand{k\free{k1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [999,3,7,3,8,5,9,2]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty3}
+\begin{paste}{ugxListChangePageEmpty3}{ugxListChangePagePatch3}
+\pastebutton{ugxListChangePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{k\free{k1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch4}
+\begin{paste}{ugxListChangePageFull4}{ugxListChangePageEmpty4}
+\pastebutton{ugxListChangePageFull4}{\hidepaste}
+\tab{5}\spadcommand{k := [1,2]\bound{k2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,2]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty4}
+\begin{paste}{ugxListChangePageEmpty4}{ugxListChangePagePatch4}
+\pastebutton{ugxListChangePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{k := [1,2]\bound{k2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch5}
+\begin{paste}{ugxListChangePageFull5}{ugxListChangePageEmpty5}
+\pastebutton{ugxListChangePageFull5}{\hidepaste}
+\tab{5}\spadcommand{m := cons(0,k)\free{k2 }\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (5)  [0,1,2]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty5}
+\begin{paste}{ugxListChangePageEmpty5}{ugxListChangePagePatch5}
+\pastebutton{ugxListChangePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{m := cons(0,k)\free{k2 }\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch6}
+\begin{paste}{ugxListChangePageFull6}{ugxListChangePageEmpty6}
+\pastebutton{ugxListChangePageFull6}{\hidepaste}
+\tab{5}\spadcommand{m.2 := 99\free{m }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  99
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty6}
+\begin{paste}{ugxListChangePageEmpty6}{ugxListChangePagePatch6}
+\pastebutton{ugxListChangePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m.2 := 99\free{m }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch7}
+\begin{paste}{ugxListChangePageFull7}{ugxListChangePageEmpty7}
+\pastebutton{ugxListChangePageFull7}{\hidepaste}
+\tab{5}\spadcommand{m\free{m2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [0,99,2]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty7}
+\begin{paste}{ugxListChangePageEmpty7}{ugxListChangePagePatch7}
+\pastebutton{ugxListChangePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePagePatch8}
+\begin{paste}{ugxListChangePageFull8}{ugxListChangePageEmpty8}
+\pastebutton{ugxListChangePageFull8}{\hidepaste}
+\tab{5}\spadcommand{k\free{m2 k2 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [99,2]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListChangePageEmpty8}
+\begin{paste}{ugxListChangePageEmpty8}{ugxListChangePagePatch8}
+\pastebutton{ugxListChangePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{k\free{m2 k2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxListOtherPage}{list.ht}{Other Functions}
 <<list.ht>>=
@@ -13955,6 +37581,102 @@ list \spad{k}.\footnote{\spad{reverse(rest(reverse(k)))} works.}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxListOtherPagePatch1}
+\begin{paste}{ugxListOtherPageFull1}{ugxListOtherPageEmpty1}
+\pastebutton{ugxListOtherPageFull1}{\hidepaste}
+\tab{5}\spadcommand{k := [1,2,3]\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty1}
+\begin{paste}{ugxListOtherPageEmpty1}{ugxListOtherPagePatch1}
+\pastebutton{ugxListOtherPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{k := [1,2,3]\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPagePatch2}
+\begin{paste}{ugxListOtherPageFull2}{ugxListOtherPageEmpty2}
+\pastebutton{ugxListOtherPageFull2}{\hidepaste}
+\tab{5}\spadcommand{rest k\free{k }}
+\indentrel{3}\begin{verbatim}
+   (2)  [2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty2}
+\begin{paste}{ugxListOtherPageEmpty2}{ugxListOtherPagePatch2}
+\pastebutton{ugxListOtherPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{rest k\free{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPagePatch3}
+\begin{paste}{ugxListOtherPageFull3}{ugxListOtherPageEmpty3}
+\pastebutton{ugxListOtherPageFull3}{\hidepaste}
+\tab{5}\spadcommand{removeDuplicates [4,3,4,3,5,3,4]}
+\indentrel{3}\begin{verbatim}
+   (3)  [4,3,5]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty3}
+\begin{paste}{ugxListOtherPageEmpty3}{ugxListOtherPagePatch3}
+\pastebutton{ugxListOtherPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{removeDuplicates [4,3,4,3,5,3,4]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPagePatch4}
+\begin{paste}{ugxListOtherPageFull4}{ugxListOtherPageEmpty4}
+\pastebutton{ugxListOtherPageFull4}{\hidepaste}
+\tab{5}\spadcommand{reverse [1,2,3,4,5,6]}
+\indentrel{3}\begin{verbatim}
+   (4)  [6,5,4,3,2,1]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty4}
+\begin{paste}{ugxListOtherPageEmpty4}{ugxListOtherPagePatch4}
+\pastebutton{ugxListOtherPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{reverse [1,2,3,4,5,6]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPagePatch5}
+\begin{paste}{ugxListOtherPageFull5}{ugxListOtherPageEmpty5}
+\pastebutton{ugxListOtherPageFull5}{\hidepaste}
+\tab{5}\spadcommand{member?(1/2,[3/4,5/6,1/2])}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty5}
+\begin{paste}{ugxListOtherPageEmpty5}{ugxListOtherPagePatch5}
+\pastebutton{ugxListOtherPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{member?(1/2,[3/4,5/6,1/2])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPagePatch6}
+\begin{paste}{ugxListOtherPageFull6}{ugxListOtherPageEmpty6}
+\pastebutton{ugxListOtherPageFull6}{\hidepaste}
+\tab{5}\spadcommand{member?(1/12,[3/4,5/6,1/2])}
+\indentrel{3}\begin{verbatim}
+   (6)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListOtherPageEmpty6}
+\begin{paste}{ugxListOtherPageEmpty6}{ugxListOtherPagePatch6}
+\pastebutton{ugxListOtherPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{member?(1/12,[3/4,5/6,1/2])}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxListDotPage}{list.ht}{Dot, Dot}
 <<list.ht>>=
@@ -13995,6 +37717,54 @@ See \downlink{`Stream'}{StreamXmpPage}\ignore{Stream} for more information.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxListDotPagePatch1}
+\begin{paste}{ugxListDotPageFull1}{ugxListDotPageEmpty1}
+\pastebutton{ugxListDotPageFull1}{\hidepaste}
+\tab{5}\spadcommand{[1..3,10,20..23]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1..3,10..10,20..23]
+                     Type: List Segment PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListDotPageEmpty1}
+\begin{paste}{ugxListDotPageEmpty1}{ugxListDotPagePatch1}
+\pastebutton{ugxListDotPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{[1..3,10,20..23]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListDotPagePatch2}
+\begin{paste}{ugxListDotPageFull2}{ugxListDotPageEmpty2}
+\pastebutton{ugxListDotPageFull2}{\hidepaste}
+\tab{5}\spadcommand{expand [1..3,10,20..23]}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3,10,20,21,22,23]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListDotPageEmpty2}
+\begin{paste}{ugxListDotPageEmpty2}{ugxListDotPagePatch2}
+\pastebutton{ugxListDotPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{expand [1..3,10,20..23]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxListDotPagePatch3}
+\begin{paste}{ugxListDotPageFull3}{ugxListDotPageEmpty3}
+\pastebutton{ugxListDotPageFull3}{\hidepaste}
+\tab{5}\spadcommand{expand [1..]}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,2,3,4,5,6,7,8,9,10,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxListDotPageEmpty3}
+\begin{paste}{ugxListDotPageEmpty3}{ugxListDotPagePatch3}
+\pastebutton{ugxListDotPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{expand [1..]}
+\end{paste}\end{patch}
+
 @
 \section{lodo.ht}
 \pagehead{LinearOrdinaryDifferentialOperatorXmpPage}{lodo.ht}
@@ -14116,6 +37886,397 @@ Evaluate this for several values of \spad{n}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch1}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull1}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Dx: LODO(EXPR INT, f +-> D(f, x))\bound{Dxd }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch1}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Dx: LODO(EXPR INT, f +-> D(f, x))\bound{Dxd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch2}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull2}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{Dx := D()\free{Dxd }\bound{Dx }}
+\indentrel{3}\begin{verbatim}
+   (2)  D
+Type: LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch2}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{Dx := D()\free{Dxd }\bound{Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch3}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull3}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1\free{Dx }\bound{Dop }}
+\indentrel{3}\begin{verbatim}
+                       3
+         3    G     - x  + H
+   (3)  D  + ÄÄ D + ÄÄÄÄÄÄÄÄ
+              2         3
+             x         x
+Type: LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch3}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1\free{Dx }\bound{Dop }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch4}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull4}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{n == 3\bound{n3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch4}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{n == 3\bound{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch5}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull5}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n])\bound{phi }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch5}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n])\bound{phi }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch6}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull6}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{phi1 == Dop(phi) / exp x\bound{phi1 }\free{Dop phi }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch6}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{phi1 == Dop(phi) / exp x\bound{phi1 }\free{Dop phi }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch7}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull7}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{phi2 == phi1 *x**(n+3)\bound{phi2 }\free{phi1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch7}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{phi2 == phi1 *x**(n+3)\bound{phi2 }\free{phi1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch8}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull8}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{phi3 == retract(phi2)@(POLY INT)\bound{phi3 }\free{phi2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch8}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{phi3 == retract(phi2)@(POLY INT)\bound{phi3 }\free{phi2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch9}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull9}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull9}{\hidepaste}
+\tab{5}\spadcommand{pans == phi3 ::UP(x,POLY INT)\free{phi3 }\bound{pans }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch9}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{pans == phi3 ::UP(x,POLY INT)\free{phi3 }\bound{pans }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch10}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull10}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull10}{\hidepaste}
+\tab{5}\spadcommand{pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1]\bound{pans1 }\free{pans }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch10}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1]\bound{pans1 }\free{pans }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch11}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull11}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull11}{\hidepaste}
+\tab{5}\spadcommand{leq == solve(pans1,[subscript(s,[i]) for i in 1..n])\bound{leq }\free{pans1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch11}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{leq == solve(pans1,[subscript(s,[i]) for i in 1..n])\bound{leq }\free{pans1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch12}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull12}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull12}{\hidepaste}
+\tab{5}\spadcommand{leq\free{n3 leq }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [
+                             2
+          s G      3s H + s G  + 6s G
+           0         0     0       0
+     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+       1   3    2          18
+                              3        2
+          (9s G + 54s )H + s G  + 18s G  + 72s G
+             0       0      0        0        0
+      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
+       3                    162
+     ]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch12}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{leq\free{n3 leq }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch13}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull13}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull13}{\hidepaste}
+\tab{5}\spadcommand{n==4\bound{n4 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch13}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{n==4\bound{n4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch14}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull14}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull14}{\hidepaste}
+\tab{5}\spadcommand{leq\free{n4 leq }}
+\indentrel{3}\begin{verbatim}
+   (14)
+   [
+                             2
+          s G      3s H + s G  + 6s G
+           0         0     0       0
+     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+       1   3    2          18
+                              3        2
+          (9s G + 54s )H + s G  + 18s G  + 72s G
+             0       0      0        0        0
+      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+       3                    162
+
+       s  =
+        4
+                  2         2                          4
+             27s H  + (18s G  + 378s G + 1296s )H + s G
+                0         0         0         0      0
+           + 
+                  3         2
+             36s G  + 396s G  + 1296s G
+                0         0          0
+        /
+           1944
+       ]
+     ]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch14}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{leq\free{n4 leq }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch15}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull15}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull15}{\hidepaste}
+\tab{5}\spadcommand{n==7\bound{n7 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch15}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{n==7\bound{n7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch16}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull16}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull16}{\hidepaste}
+\tab{5}\spadcommand{leq\free{n7 leq }}
+\indentrel{3}\begin{verbatim}
+   (16)
+   [
+                             2
+          s G      3s H + s G  + 6s G
+           0         0     0       0
+     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+       1   3    2          18
+                              3        2
+          (9s G + 54s )H + s G  + 18s G  + 72s G
+             0       0      0        0        0
+      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+       3                    162
+
+       s  =
+        4
+                  2         2                          4
+             27s H  + (18s G  + 378s G + 1296s )H + s G
+                0         0         0         0      0
+           + 
+                  3         2
+             36s G  + 396s G  + 1296s G
+                0         0          0
+        /
+           1944
+       ,
+
+       s  =
+        5
+                               2
+             (135s G + 2268s )H
+                  0         0
+           + 
+                   3          2
+             (30s G  + 1350s G  + 16416s G + 38880s )H
+                 0          0           0          0
+           + 
+              5        4          3          2
+           s G  + 60s G  + 1188s G  + 9504s G  + 25920s G
+            0        0          0          0           0
+        /
+           29160
+       ,
+
+       s  =
+        6
+                   3          2                        2
+             405s H  + (405s G  + 18468s G + 174960s )H
+                 0          0           0           0
+           + 
+                      4          3           2
+                 45s G  + 3510s G  + 88776s G  + 777600s G
+                    0          0           0            0
+               + 
+                 1166400s
+                         0
+            *
+               H
+           + 
+                6        5          4           3
+             s G  + 90s G  + 2628s G  + 27864s G
+              0        0          0           0
+           + 
+                     2
+             90720s G
+                   0
+        /
+           524880
+       ,
+
+       s  =
+        7
+                                 3
+             (2835s G + 91854s )H
+                   0          0
+           + 
+                       3           2
+                 945s G  + 81648s G  + 2082996s G
+                     0           0             0
+               + 
+                 14171760s
+                          0
+            *
+                2
+               H
+           + 
+                      5          4            3
+                 63s G  + 7560s G  + 317520s G
+                    0          0            0
+               + 
+                           2
+                 5554008s G  + 34058880s G
+                         0              0
+            *
+               H
+           + 
+                7         6          5           4
+             s G  + 126s G  + 4788s G  + 25272s G
+              0         0          0           0
+           + 
+                         3              2
+             - 1744416s G  - 26827200s G  - 97977600s G
+                       0              0              0
+        /
+           11022480
+       ]
+     ]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch16}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{leq\free{n7 leq }}
+\end{paste}\end{patch}
+
 @
 \section{lodo1.ht}
 \pagehead{LinearOrdinaryDifferentialOperatorOneXmpPage}{lodo1.ht}
@@ -14305,6 +38466,362 @@ is not necessarily divisible from both sides.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch1}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull1}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull1}{\hidepaste}
+\tab{5}\spadcommand{RFZ := Fraction UnivariatePolynomial('x, Integer)\bound{RFZ0 }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction UnivariatePolynomial(x,Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch1}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{RFZ := Fraction UnivariatePolynomial('x, Integer)\bound{RFZ0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch2}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull2}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull2}{\hidepaste}
+\tab{5}\spadcommand{x : RFZ := 'x\free{RFZ0 }\bound{RFZ }}
+\indentrel{3}\begin{verbatim}
+   (2)  x
+         Type: Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch2}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{x : RFZ := 'x\free{RFZ0 }\bound{RFZ }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch3}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull3}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull3}{\hidepaste}
+\tab{5}\spadcommand{Dx : LODO1 RFZ := D()\bound{Dx }\free{RFZ }}
+\indentrel{3}\begin{verbatim}
+   (3)  D
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch3}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{Dx : LODO1 RFZ := D()\bound{Dx }\free{RFZ }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch4}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull4}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x\free{Dx }\bound{b }}
+\indentrel{3}\begin{verbatim}
+          2 2        1
+   (4)  3x D  + 2D + Ä
+                     x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch4}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x\free{Dx }\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch5}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull5}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a : LODO1 RFZ := b*(5*x*Dx + 7)\free{b Dx }\bound{a }}
+\indentrel{3}\begin{verbatim}
+           3 3       2        2         7
+   (5)  15x D  + (51x  + 10x)D  + 29D + Ä
+                                        x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch5}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a : LODO1 RFZ := b*(5*x*Dx + 7)\free{b Dx }\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch6}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull6}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p := x**2 + 1/x**2\bound{p }\free{RFZ }}
+\indentrel{3}\begin{verbatim}
+         4
+        x  + 1
+   (6)  ÄÄÄÄÄÄ
+           2
+          x
+         Type: Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch6}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p := x**2 + 1/x**2\bound{p }\free{RFZ }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch7}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull7}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull7}{\hidepaste}
+\tab{5}\spadcommand{(a*b - b*a) p\free{a b p }}
+\indentrel{3}\begin{verbatim}
+             4
+        - 75x  + 540x - 75
+   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 4
+                x
+         Type: Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch7}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{(a*b - b*a) p\free{a b p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch8}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull8}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull8}{\hidepaste}
+\tab{5}\spadcommand{ld := leftDivide(a,b)\bound{ld }\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (8)  [quotient= 5x D + 7,remainder= 0]
+Type: Record(quotient: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),remainder: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch8}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{ld := leftDivide(a,b)\bound{ld }\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch9}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull9}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a = b * ld.quotient + ld.remainder\free{a b ld }}
+\indentrel{3}\begin{verbatim}
+   (9)
+      3 3       2        2         7
+   15x D  + (51x  + 10x)D  + 29D + Ä =
+                                   x
+        3 3       2        2         7
+     15x D  + (51x  + 10x)D  + 29D + Ä
+                                     x
+Type: Equation LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch9}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a = b * ld.quotient + ld.remainder\free{a b ld }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch10}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull10}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull10}{\hidepaste}
+\tab{5}\spadcommand{rd := rightDivide(a,b)\bound{rd }\free{a b }}
+\indentrel{3}\begin{verbatim}
+                                              5
+   (10)  [quotient= 5x D + 7,remainder= 10D + Ä]
+                                              x
+Type: Record(quotient: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),remainder: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch10}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{rd := rightDivide(a,b)\bound{rd }\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch11}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull11}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull11}{\hidepaste}
+\tab{5}\spadcommand{a = rd.quotient * b + rd.remainder\free{a b rd }}
+\indentrel{3}\begin{verbatim}
+   (11)
+      3 3       2        2         7
+   15x D  + (51x  + 10x)D  + 29D + Ä =
+                                   x
+        3 3       2        2         7
+     15x D  + (51x  + 10x)D  + 29D + Ä
+                                     x
+Type: Equation LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch11}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{a = rd.quotient * b + rd.remainder\free{a b rd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch12}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull12}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull12}{\hidepaste}
+\tab{5}\spadcommand{rightQuotient(a,b)\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (12)  5x D + 7
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch12}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{rightQuotient(a,b)\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch13}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull13}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull13}{\hidepaste}
+\tab{5}\spadcommand{rightRemainder(a,b)\free{a b }}
+\indentrel{3}\begin{verbatim}
+               5
+   (13)  10D + Ä
+               x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch13}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{rightRemainder(a,b)\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch14}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull14}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull14}{\hidepaste}
+\tab{5}\spadcommand{leftExactQuotient(a,b)\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (14)  5x D + 7
+Type: Union(LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch14}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{leftExactQuotient(a,b)\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch15}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull15}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull15}{\hidepaste}
+\tab{5}\spadcommand{e := leftGcd(a,b)\bound{e }\free{a b }}
+\indentrel{3}\begin{verbatim}
+           2 2        1
+   (15)  3x D  + 2D + Ä
+                      x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch15}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{e := leftGcd(a,b)\bound{e }\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch16}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull16}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull16}{\hidepaste}
+\tab{5}\spadcommand{leftRemainder(a, e)\free{a e }}
+\indentrel{3}\begin{verbatim}
+   (16)  0
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch16}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{leftRemainder(a, e)\free{a e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch17}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull17}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull17}{\hidepaste}
+\tab{5}\spadcommand{rightRemainder(a, e)\free{a e }}
+\indentrel{3}\begin{verbatim}
+               5
+   (17)  10D + Ä
+               x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch17}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{rightRemainder(a, e)\free{a e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch18}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull18}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull18}{\hidepaste}
+\tab{5}\spadcommand{f := rightLcm(a,b)\bound{f }\free{a b }}
+\indentrel{3}\begin{verbatim}
+            3 3       2        2         7
+   (18)  15x D  + (51x  + 10x)D  + 29D + Ä
+                                         x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch18}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{f := rightLcm(a,b)\bound{f }\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch19}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull19}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull19}{\hidepaste}
+\tab{5}\spadcommand{rightRemainder(f, b)\free{f b }}
+\indentrel{3}\begin{verbatim}
+               5
+   (19)  10D + Ä
+               x
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch19}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{rightRemainder(f, b)\free{f b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch20}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull20}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull20}{\hidepaste}
+\tab{5}\spadcommand{leftRemainder(f, b)\free{f b }}
+\indentrel{3}\begin{verbatim}
+   (20)  0
+Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}
+\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch20}
+\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{leftRemainder(f, b)\free{f b }}
+\end{paste}\end{patch}
+
 @
 \section{lodo2.ht}
 \pagehead{LinearODEOperatorTwoXmpPage}{lodo2.ht}
@@ -14410,6 +38927,195 @@ Finally, note that operator expressions may be applied directly.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch1}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull1}{ugxLinearODEOperatorTwoConstPageEmpty1}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Q := Fraction Integer\bound{Q }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty1}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty1}{ugxLinearODEOperatorTwoConstPagePatch1}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Q := Fraction Integer\bound{Q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch2}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull2}{ugxLinearODEOperatorTwoConstPageEmpty2}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull2}{\hidepaste}
+\tab{5}\spadcommand{PQ := UnivariatePolynomial('x, Q)\free{Q }\bound{PQ0 }}
+\indentrel{3}\begin{verbatim}
+   (2)  UnivariatePolynomial(x,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty2}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty2}{ugxLinearODEOperatorTwoConstPagePatch2}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{PQ := UnivariatePolynomial('x, Q)\free{Q }\bound{PQ0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch3}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull3}{ugxLinearODEOperatorTwoConstPageEmpty3}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull3}{\hidepaste}
+\tab{5}\spadcommand{x: PQ := 'x\free{PQ0 }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (3)  x
+         Type: UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty3}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty3}{ugxLinearODEOperatorTwoConstPagePatch3}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x: PQ := 'x\free{PQ0 }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch4}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull4}{ugxLinearODEOperatorTwoConstPageEmpty4}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull4}{\hidepaste}
+\tab{5}\spadcommand{Dx: LODO2(Q, PQ) := D()\free{Q PQ0 }\bound{Dx }}
+\indentrel{3}\begin{verbatim}
+   (4)  D
+Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty4}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty4}{ugxLinearODEOperatorTwoConstPagePatch4}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{Dx: LODO2(Q, PQ) := D()\free{Q PQ0 }\bound{Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch5}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull5}{ugxLinearODEOperatorTwoConstPageEmpty5}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a := Dx + 1\bound{a }\free{Dx }}
+\indentrel{3}\begin{verbatim}
+   (5)  D + 1
+Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty5}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty5}{ugxLinearODEOperatorTwoConstPagePatch5}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a := Dx + 1\bound{a }\free{Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch6}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull6}{ugxLinearODEOperatorTwoConstPageEmpty6}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull6}{\hidepaste}
+\tab{5}\spadcommand{b := a + 1/2*Dx**2 - 1/2\bound{b }\free{Dx }}
+\indentrel{3}\begin{verbatim}
+        1  2       1
+   (6)  Ä D  + D + Ä
+        2          2
+Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty6}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty6}{ugxLinearODEOperatorTwoConstPagePatch6}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{b := a + 1/2*Dx**2 - 1/2\bound{b }\free{Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch7}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull7}{ugxLinearODEOperatorTwoConstPageEmpty7}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p := 4*x**2 + 2/3\free{x }\bound{p }}
+\indentrel{3}\begin{verbatim}
+          2   2
+   (7)  4x  + Ä
+              3
+         Type: UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty7}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty7}{ugxLinearODEOperatorTwoConstPagePatch7}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p := 4*x**2 + 2/3\free{x }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch8}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull8}{ugxLinearODEOperatorTwoConstPageEmpty8}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull8}{\hidepaste}
+\tab{5}\spadcommand{a p\free{a p }}
+\indentrel{3}\begin{verbatim}
+          2        2
+   (8)  4x  + 8x + Ä
+                   3
+         Type: UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty8}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty8}{ugxLinearODEOperatorTwoConstPagePatch8}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{a p\free{a p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch9}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull9}{ugxLinearODEOperatorTwoConstPageEmpty9}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull9}{\hidepaste}
+\tab{5}\spadcommand{(a * b) p = a b p\free{a b p }}
+\indentrel{3}\begin{verbatim}
+          2         37    2         37
+   (9)  2x  + 12x + ÄÄ= 2x  + 12x + ÄÄ
+                     3               3
+Type: Equation UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty9}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty9}{ugxLinearODEOperatorTwoConstPagePatch9}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{(a * b) p = a b p\free{a b p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch10}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull10}{ugxLinearODEOperatorTwoConstPageEmpty10}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull10}{\hidepaste}
+\tab{5}\spadcommand{c := (1/9)*b*(a + b)**2\free{a b }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (10)
+    1  6    5  5   13  4   19  3   79  2    7     1
+   ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D + Ä
+   72      36      24      18      72      12     8
+Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty10}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty10}{ugxLinearODEOperatorTwoConstPagePatch10}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{c := (1/9)*b*(a + b)**2\free{a b }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPagePatch11}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageFull11}{ugxLinearODEOperatorTwoConstPageEmpty11}
+\pastebutton{ugxLinearODEOperatorTwoConstPageFull11}{\hidepaste}
+\tab{5}\spadcommand{(a**2 - 3/4*b + c) (p + 1)\free{a b c p }}
+\indentrel{3}\begin{verbatim}
+           2   44     541
+   (11)  3x  + ÄÄ x + ÄÄÄ
+                3      36
+         Type: UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoConstPageEmpty11}
+\begin{paste}{ugxLinearODEOperatorTwoConstPageEmpty11}{ugxLinearODEOperatorTwoConstPagePatch11}
+\pastebutton{ugxLinearODEOperatorTwoConstPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{(a**2 - 3/4*b + c) (p + 1)\free{a b c p }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxLinearODEOperatorTwoMatrixPage}{lodo2.ht}
 {Differential Operators with Matrix Coefficients Operating on Vectors}
@@ -14499,6 +39205,316 @@ These operators can be applied to vector values.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch1}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull1}{ugxLinearODEOperatorTwoMatrixPageEmpty1}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull1}{\hidepaste}
+\tab{5}\spadcommand{PZ := UnivariatePolynomial(x,Integer)\bound{PZ0 }}
+\indentrel{3}\begin{verbatim}
+   (1)  UnivariatePolynomial(x,Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty1}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty1}{ugxLinearODEOperatorTwoMatrixPagePatch1}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{PZ := UnivariatePolynomial(x,Integer)\bound{PZ0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch2}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull2}{ugxLinearODEOperatorTwoMatrixPageEmpty2}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull2}{\hidepaste}
+\tab{5}\spadcommand{x:PZ := 'x\free{PZ0 }\bound{PZ }}
+\indentrel{3}\begin{verbatim}
+   (2)  x
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty2}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty2}{ugxLinearODEOperatorTwoMatrixPagePatch2}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{x:PZ := 'x\free{PZ0 }\bound{PZ }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch3}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull3}{ugxLinearODEOperatorTwoMatrixPageEmpty3}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull3}{\hidepaste}
+\tab{5}\spadcommand{Mat := SquareMatrix(3,PZ)\free{PZ }\bound{Mat }}
+\indentrel{3}\begin{verbatim}
+   (3)  SquareMatrix(3,UnivariatePolynomial(x,Integer))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty3}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty3}{ugxLinearODEOperatorTwoMatrixPagePatch3}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{Mat := SquareMatrix(3,PZ)\free{PZ }\bound{Mat }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch4}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull4}{ugxLinearODEOperatorTwoMatrixPageEmpty4}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull4}{\hidepaste}
+\tab{5}\spadcommand{Vect := DPMM(3, PZ, Mat, PZ);\free{PZ Mat }\bound{Vect }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty4}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty4}{ugxLinearODEOperatorTwoMatrixPagePatch4}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{Vect := DPMM(3, PZ, Mat, PZ);\free{PZ Mat }\bound{Vect }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch5}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull5}{ugxLinearODEOperatorTwoMatrixPageEmpty5}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull5}{\hidepaste}
+\tab{5}\spadcommand{Modo := LODO2(Mat, Vect);\free{Mat Vect }\bound{Modo }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty5}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty5}{ugxLinearODEOperatorTwoMatrixPagePatch5}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{Modo := LODO2(Mat, Vect);\free{Mat Vect }\bound{Modo }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch6}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull6}{ugxLinearODEOperatorTwoMatrixPageEmpty6}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull6}{\hidepaste}
+\tab{5}\spadcommand{m:Mat := matrix [[x**2,1,0],[1,x**4,0],[0,0,4*x**2]]\free{Mat }\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú 2         ¿
+        ³x   1    0 ³
+        ³           ³
+   (6)  ³     4     ³
+        ³1   x    0 ³
+        ³           ³
+        ³          2³
+        À0   0   4x Ù
+  Type: SquareMatrix(3,UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty6}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty6}{ugxLinearODEOperatorTwoMatrixPagePatch6}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m:Mat := matrix [[x**2,1,0],[1,x**4,0],[0,0,4*x**2]]\free{Mat }\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch7}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull7}{ugxLinearODEOperatorTwoMatrixPageEmpty7}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]\free{Vect }\bound{p }}
+\indentrel{3}\begin{verbatim}
+           2          3
+   (7)  [3x  + 1,2x,7x  + 2x]
+Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty7}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty7}{ugxLinearODEOperatorTwoMatrixPagePatch7}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]\free{Vect }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch8}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull8}{ugxLinearODEOperatorTwoMatrixPageEmpty8}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull8}{\hidepaste}
+\tab{5}\spadcommand{q: Vect := m * p\free{m p Vect }\bound{q }}
+\indentrel{3}\begin{verbatim}
+           4    2        5     2        5     3
+   (8)  [3x  + x  + 2x,2x  + 3x  + 1,28x  + 8x ]
+Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty8}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty8}{ugxLinearODEOperatorTwoMatrixPagePatch8}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{q: Vect := m * p\free{m p Vect }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch9}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull9}{ugxLinearODEOperatorTwoMatrixPageEmpty9}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull9}{\hidepaste}
+\tab{5}\spadcommand{Dx : Modo := D()\bound{Dx }\free{Modo }}
+\indentrel{3}\begin{verbatim}
+   (9)  D
+Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty9}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty9}{ugxLinearODEOperatorTwoMatrixPagePatch9}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{Dx : Modo := D()\bound{Dx }\free{Modo }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch10}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull10}{ugxLinearODEOperatorTwoMatrixPageEmpty10}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull10}{\hidepaste}
+\tab{5}\spadcommand{a : Modo := Dx + m\bound{a }\free{m Dx }}
+\indentrel{3}\begin{verbatim}
+             Ú 2         ¿
+             ³x   1    0 ³
+             ³           ³
+   (10)  D + ³     4     ³
+             ³1   x    0 ³
+             ³           ³
+             ³          2³
+             À0   0   4x Ù
+Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty10}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty10}{ugxLinearODEOperatorTwoMatrixPagePatch10}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{a : Modo := Dx + m\bound{a }\free{m Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch11}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull11}{ugxLinearODEOperatorTwoMatrixPageEmpty11}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull11}{\hidepaste}
+\tab{5}\spadcommand{b : Modo := m*Dx + 1\bound{b }\free{m Dx }}
+\indentrel{3}\begin{verbatim}
+         Ú 2         ¿
+         ³x   1    0 ³    Ú1  0  0¿
+         ³           ³    ³       ³
+   (11)  ³     4     ³D + ³0  1  0³
+         ³1   x    0 ³    ³       ³
+         ³           ³    À0  0  1Ù
+         ³          2³
+         À0   0   4x Ù
+Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty11}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty11}{ugxLinearODEOperatorTwoMatrixPagePatch11}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{b : Modo := m*Dx + 1\bound{b }\free{m Dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch12}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull12}{ugxLinearODEOperatorTwoMatrixPageEmpty12}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull12}{\hidepaste}
+\tab{5}\spadcommand{c := a*b\bound{c }\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (12)
+     Ú 2         ¿
+     ³x   1    0 ³
+     ³           ³ 2
+     ³     4     ³D
+     ³1   x    0 ³
+     ³           ³
+     ³          2³
+     À0   0   4x Ù
+   + 
+     Ú 4              4    2                  ¿
+     ³x  + 2x + 2    x  + x            0      ³
+     ³                                        ³
+     ³   4    2     8     3                   ³D
+     ³  x  + x     x  + 4x  + 2        0      ³
+     ³                                        ³
+     ³                              4         ³
+     À     0            0        16x  + 8x + 1Ù
+   + 
+     Ú 2         ¿
+     ³x   1    0 ³
+     ³           ³
+     ³     4     ³
+     ³1   x    0 ³
+     ³           ³
+     ³          2³
+     À0   0   4x Ù
+Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty12}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty12}{ugxLinearODEOperatorTwoMatrixPagePatch12}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{c := a*b\bound{c }\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch13}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull13}{ugxLinearODEOperatorTwoMatrixPageEmpty13}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull13}{\hidepaste}
+\tab{5}\spadcommand{a p\free{p a }}
+\indentrel{3}\begin{verbatim}
+   (13)
+      4    2        5     2        5     3      2
+   [3x  + x  + 8x,2x  + 3x  + 3,28x  + 8x  + 21x  + 2]
+Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty13}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty13}{ugxLinearODEOperatorTwoMatrixPagePatch13}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{a p\free{p a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch14}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull14}{ugxLinearODEOperatorTwoMatrixPageEmpty14}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull14}{\hidepaste}
+\tab{5}\spadcommand{b p\free{p b }}
+\indentrel{3}\begin{verbatim}
+            3     2       4         4     3     2
+   (14)  [6x  + 3x  + 3,2x  + 8x,84x  + 7x  + 8x  + 2x]
+Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty14}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty14}{ugxLinearODEOperatorTwoMatrixPagePatch14}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{b p\free{p b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPagePatch15}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageFull15}{ugxLinearODEOperatorTwoMatrixPageEmpty15}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageFull15}{\hidepaste}
+\tab{5}\spadcommand{(a + b + c) (p + q)\free{a b c p q }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [
+          8      7      6      5      4      3      2
+       10x  + 12x  + 16x  + 30x  + 85x  + 94x  + 40x
+     + 
+       40x + 17
+     ,
+
+          12      9      8      7     6      5      4
+       10x   + 10x  + 12x  + 92x  + 6x  + 32x  + 72x
+     + 
+          3      2
+       28x  + 49x  + 32x + 19
+     ,
+
+            8       7        6        5       4       3
+       2240x  + 224x  + 1280x  + 3508x  + 492x  + 751x
+     + 
+          2
+       98x  + 18x + 4
+     ]
+Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxLinearODEOperatorTwoMatrixPageEmpty15}
+\begin{paste}{ugxLinearODEOperatorTwoMatrixPageEmpty15}{ugxLinearODEOperatorTwoMatrixPagePatch15}
+\pastebutton{ugxLinearODEOperatorTwoMatrixPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{(a + b + c) (p + q)\free{a b c p q }}
+\end{paste}\end{patch}
+
 @
 \section{lpoly.ht}
 \pagehead{LiePolynomialXmpPage}{lpoly.ht}{LiePolynomial}
@@ -14638,7 +39654,461 @@ Evaluation
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{LiePolynomialXmpPagePatch1}
+\begin{paste}{LiePolynomialXmpPageFull1}{LiePolynomialXmpPageEmpty1}
+\pastebutton{LiePolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{RN := Fraction Integer\bound{RN }}
+\indentrel{3}\begin{verbatim}
+   (1)  Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty1}
+\begin{paste}{LiePolynomialXmpPageEmpty1}{LiePolynomialXmpPagePatch1}
+\pastebutton{LiePolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{RN := Fraction Integer\bound{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch2}
+\begin{paste}{LiePolynomialXmpPageFull2}{LiePolynomialXmpPageEmpty2}
+\pastebutton{LiePolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{Lpoly := LiePolynomial(Symbol,RN)\bound{Lpoly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (2)  LiePolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty2}
+\begin{paste}{LiePolynomialXmpPageEmpty2}{LiePolynomialXmpPagePatch2}
+\pastebutton{LiePolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{Lpoly := LiePolynomial(Symbol,RN)\bound{Lpoly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch3}
+\begin{paste}{LiePolynomialXmpPageFull3}{LiePolynomialXmpPageEmpty3}
+\pastebutton{LiePolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{Dpoly := XDPOLY(Symbol,RN)\bound{Dpoly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (3)  XDistributedPolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty3}
+\begin{paste}{LiePolynomialXmpPageEmpty3}{LiePolynomialXmpPagePatch3}
+\pastebutton{LiePolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{Dpoly := XDPOLY(Symbol,RN)\bound{Dpoly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch4}
+\begin{paste}{LiePolynomialXmpPageFull4}{LiePolynomialXmpPageEmpty4}
+\pastebutton{LiePolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{Lword := LyndonWord Symbol\bound{Lword }}
+\indentrel{3}\begin{verbatim}
+   (4)  LyndonWord Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty4}
+\begin{paste}{LiePolynomialXmpPageEmpty4}{LiePolynomialXmpPagePatch4}
+\pastebutton{LiePolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{Lword := LyndonWord Symbol\bound{Lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch5}
+\begin{paste}{LiePolynomialXmpPageFull5}{LiePolynomialXmpPageEmpty5}
+\pastebutton{LiePolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (5)  a
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty5}
+\begin{paste}{LiePolynomialXmpPageEmpty5}{LiePolynomialXmpPagePatch5}
+\pastebutton{LiePolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch6}
+\begin{paste}{LiePolynomialXmpPageFull6}{LiePolynomialXmpPageEmpty6}
+\pastebutton{LiePolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (6)  b
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty6}
+\begin{paste}{LiePolynomialXmpPageEmpty6}{LiePolynomialXmpPagePatch6}
+\pastebutton{LiePolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch7}
+\begin{paste}{LiePolynomialXmpPageFull7}{LiePolynomialXmpPageEmpty7}
+\pastebutton{LiePolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{c:Symbol := 'c\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (7)  c
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty7}
+\begin{paste}{LiePolynomialXmpPageEmpty7}{LiePolynomialXmpPagePatch7}
+\pastebutton{LiePolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{c:Symbol := 'c\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch8}
+\begin{paste}{LiePolynomialXmpPageFull8}{LiePolynomialXmpPageEmpty8}
+\pastebutton{LiePolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{aa: Lpoly := a\bound{aa }\free{Lpoly }\free{a }}
+\indentrel{3}\begin{verbatim}
+   (8)  [a]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty8}
+\begin{paste}{LiePolynomialXmpPageEmpty8}{LiePolynomialXmpPagePatch8}
+\pastebutton{LiePolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{aa: Lpoly := a\bound{aa }\free{Lpoly }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch9}
+\begin{paste}{LiePolynomialXmpPageFull9}{LiePolynomialXmpPageEmpty9}
+\pastebutton{LiePolynomialXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{bb: Lpoly := b\bound{bb }\free{Lpoly }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (9)  [b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty9}
+\begin{paste}{LiePolynomialXmpPageEmpty9}{LiePolynomialXmpPagePatch9}
+\pastebutton{LiePolynomialXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{bb: Lpoly := b\bound{bb }\free{Lpoly }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch10}
+\begin{paste}{LiePolynomialXmpPageFull10}{LiePolynomialXmpPageEmpty10}
+\pastebutton{LiePolynomialXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{cc: Lpoly := c\bound{cc }\free{Lpoly }\free{c }}
+\indentrel{3}\begin{verbatim}
+   (10)  [c]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty10}
+\begin{paste}{LiePolynomialXmpPageEmpty10}{LiePolynomialXmpPagePatch10}
+\pastebutton{LiePolynomialXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{cc: Lpoly := c\bound{cc }\free{Lpoly }\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch11}
+\begin{paste}{LiePolynomialXmpPageFull11}{LiePolynomialXmpPageEmpty11}
+\pastebutton{LiePolynomialXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p : Lpoly := [aa,bb]\bound{p }\free{aa }\free{bb }\free{Lpoly }}
+\indentrel{3}\begin{verbatim}
+   (11)  [a b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty11}
+\begin{paste}{LiePolynomialXmpPageEmpty11}{LiePolynomialXmpPagePatch11}
+\pastebutton{LiePolynomialXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p : Lpoly := [aa,bb]\bound{p }\free{aa }\free{bb }\free{Lpoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch12}
+\begin{paste}{LiePolynomialXmpPageFull12}{LiePolynomialXmpPageEmpty12}
+\pastebutton{LiePolynomialXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{q : Lpoly := [p,bb]\bound{q }\free{p }\free{bb }\free{Lpoly }}
+\indentrel{3}\begin{verbatim}
+             2
+   (12)  [a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty12}
+\begin{paste}{LiePolynomialXmpPageEmpty12}{LiePolynomialXmpPagePatch12}
+\pastebutton{LiePolynomialXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{q : Lpoly := [p,bb]\bound{q }\free{p }\free{bb }\free{Lpoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch13}
+\begin{paste}{LiePolynomialXmpPageFull13}{LiePolynomialXmpPageEmpty13}
+\pastebutton{LiePolynomialXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{liste : List Lword := LyndonWordsList([a,b], 4)\free{a }\free{b }\free{Lword }\bound{liste }}
+\indentrel{3}\begin{verbatim}
+   (13)
+                    2       2    3     2 2      3
+   [[a],[b],[a b],[a b],[a b ],[a b],[a b ],[a b ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty13}
+\begin{paste}{LiePolynomialXmpPageEmpty13}{LiePolynomialXmpPagePatch13}
+\pastebutton{LiePolynomialXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{liste : List Lword := LyndonWordsList([a,b], 4)\free{a }\free{b }\free{Lword }\bound{liste }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch14}
+\begin{paste}{LiePolynomialXmpPageFull14}{LiePolynomialXmpPageEmpty14}
+\pastebutton{LiePolynomialXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly\bound{r }\free{Lpoly }\free{p }\free{q }\free{liste }}
+\indentrel{3}\begin{verbatim}
+                    2         2
+   (14)  [a b] + 3[a b] + [a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty14}
+\begin{paste}{LiePolynomialXmpPageEmpty14}{LiePolynomialXmpPagePatch14}
+\pastebutton{LiePolynomialXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly\bound{r }\free{Lpoly }\free{p }\free{q }\free{liste }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch15}
+\begin{paste}{LiePolynomialXmpPageFull15}{LiePolynomialXmpPageEmpty15}
+\pastebutton{LiePolynomialXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{s:Lpoly := [p,r]\bound{s }\free{Lpoly }\free{p }\free{r }}
+\indentrel{3}\begin{verbatim}
+              2                 2
+   (15)  - 3[a b a b] + [a b a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty15}
+\begin{paste}{LiePolynomialXmpPageEmpty15}{LiePolynomialXmpPagePatch15}
+\pastebutton{LiePolynomialXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{s:Lpoly := [p,r]\bound{s }\free{Lpoly }\free{p }\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch16}
+\begin{paste}{LiePolynomialXmpPageFull16}{LiePolynomialXmpPageEmpty16}
+\pastebutton{LiePolynomialXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{t:Lpoly := s + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)\bound{t }\free{Lpoly }\free{s }\free{liste }}
+\indentrel{3}\begin{verbatim}
+                       2       2                 2
+   (16)  2[a b] - 5[a b ] - 3[a b a b] + [a b a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty16}
+\begin{paste}{LiePolynomialXmpPageEmpty16}{LiePolynomialXmpPagePatch16}
+\pastebutton{LiePolynomialXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{t:Lpoly := s + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)\bound{t }\free{Lpoly }\free{s }\free{liste }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch17}
+\begin{paste}{LiePolynomialXmpPageFull17}{LiePolynomialXmpPageEmpty17}
+\pastebutton{LiePolynomialXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{degree t\free{t }}
+\indentrel{3}\begin{verbatim}
+   (17)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty17}
+\begin{paste}{LiePolynomialXmpPageEmpty17}{LiePolynomialXmpPagePatch17}
+\pastebutton{LiePolynomialXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{degree t\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch18}
+\begin{paste}{LiePolynomialXmpPageFull18}{LiePolynomialXmpPageEmpty18}
+\pastebutton{LiePolynomialXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{mirror t\free{t }}
+\indentrel{3}\begin{verbatim}
+                         2       2                 2
+   (18)  - 2[a b] - 5[a b ] - 3[a b a b] + [a b a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty18}
+\begin{paste}{LiePolynomialXmpPageEmpty18}{LiePolynomialXmpPagePatch18}
+\pastebutton{LiePolynomialXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{mirror t\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch19}
+\begin{paste}{LiePolynomialXmpPageFull19}{LiePolynomialXmpPageEmpty19}
+\pastebutton{LiePolynomialXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [[p,q]$Lpoly, r] + [[q,r]$Lpoly, p] + [[r,p]$Lpoly, q]\free{Lpoly }\bound{J }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty19}
+\begin{paste}{LiePolynomialXmpPageEmpty19}{LiePolynomialXmpPagePatch19}
+\pastebutton{LiePolynomialXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [[p,q]$Lpoly, r] + [[q,r]$Lpoly, p] + [[r,p]$Lpoly, q]\free{Lpoly }\bound{J }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch20}
+\begin{paste}{LiePolynomialXmpPageFull20}{LiePolynomialXmpPageEmpty20}
+\pastebutton{LiePolynomialXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(a,b,b)\free{J Lpoly a b }\bound{test1 }}
+\indentrel{3}\begin{verbatim}
+   (20)  0
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty20}
+\begin{paste}{LiePolynomialXmpPageEmpty20}{LiePolynomialXmpPagePatch20}
+\pastebutton{LiePolynomialXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(a,b,b)\free{J Lpoly a b }\bound{test1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch21}
+\begin{paste}{LiePolynomialXmpPageFull21}{LiePolynomialXmpPageEmpty21}
+\pastebutton{LiePolynomialXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(p,q,r)\free{J p q r Lpoly }\bound{test2 }}
+\indentrel{3}\begin{verbatim}
+   (21)  0
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty21}
+\begin{paste}{LiePolynomialXmpPageEmpty21}{LiePolynomialXmpPagePatch21}
+\pastebutton{LiePolynomialXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(p,q,r)\free{J p q r Lpoly }\bound{test2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch22}
+\begin{paste}{LiePolynomialXmpPageFull22}{LiePolynomialXmpPageEmpty22}
+\pastebutton{LiePolynomialXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(r,s,t)\free{J r s t Lpoly }\bound{test3 }}
+\indentrel{3}\begin{verbatim}
+   (22)  0
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty22}
+\begin{paste}{LiePolynomialXmpPageEmpty22}{LiePolynomialXmpPagePatch22}
+\pastebutton{LiePolynomialXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{test: Lpoly := Jacobi(r,s,t)\free{J r s t Lpoly }\bound{test3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch23}
+\begin{paste}{LiePolynomialXmpPageFull23}{LiePolynomialXmpPageEmpty23}
+\pastebutton{LiePolynomialXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{eval(p, a, p)$Lpoly}
+\indentrel{3}\begin{verbatim}
+             2
+   (23)  [a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty23}
+\begin{paste}{LiePolynomialXmpPageEmpty23}{LiePolynomialXmpPagePatch23}
+\pastebutton{LiePolynomialXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{eval(p, a, p)$Lpoly}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch24}
+\begin{paste}{LiePolynomialXmpPageFull24}{LiePolynomialXmpPageEmpty24}
+\pastebutton{LiePolynomialXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{eval(p, [a,b], [2*bb, 3*aa])$Lpoly\free{p a b bb aa Lpoly }}
+\indentrel{3}\begin{verbatim}
+   (24)  - 6[a b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty24}
+\begin{paste}{LiePolynomialXmpPageEmpty24}{LiePolynomialXmpPagePatch24}
+\pastebutton{LiePolynomialXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{eval(p, [a,b], [2*bb, 3*aa])$Lpoly\free{p a b bb aa Lpoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch25}
+\begin{paste}{LiePolynomialXmpPageFull25}{LiePolynomialXmpPageEmpty25}
+\pastebutton{LiePolynomialXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{r: Lpoly := [p,c]\free{p c Lpoly }\bound{rr }}
+\indentrel{3}\begin{verbatim}
+   (25)  [a b c] + [a c b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty25}
+\begin{paste}{LiePolynomialXmpPageEmpty25}{LiePolynomialXmpPagePatch25}
+\pastebutton{LiePolynomialXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{r: Lpoly := [p,c]\free{p c Lpoly }\bound{rr }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch26}
+\begin{paste}{LiePolynomialXmpPageFull26}{LiePolynomialXmpPageEmpty26}
+\pastebutton{LiePolynomialXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly\free{rr a b c aa bb cc Lpoly }\bound{r1 }}
+\indentrel{3}\begin{verbatim}
+   (26)  - [a b c]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty26}
+\begin{paste}{LiePolynomialXmpPageEmpty26}{LiePolynomialXmpPagePatch26}
+\pastebutton{LiePolynomialXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly\free{rr a b c aa bb cc Lpoly }\bound{r1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch27}
+\begin{paste}{LiePolynomialXmpPageFull27}{LiePolynomialXmpPageEmpty27}
+\pastebutton{LiePolynomialXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly\free{rr a b c cc bb aa Lpoly }\bound{r2 }}
+\indentrel{3}\begin{verbatim}
+   (27)  - [a c b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty27}
+\begin{paste}{LiePolynomialXmpPageEmpty27}{LiePolynomialXmpPagePatch27}
+\pastebutton{LiePolynomialXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly\free{rr a b c cc bb aa Lpoly }\bound{r2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPagePatch28}
+\begin{paste}{LiePolynomialXmpPageFull28}{LiePolynomialXmpPageEmpty28}
+\pastebutton{LiePolynomialXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{r + r1 + r2\free{rr r1 r2 }}
+\indentrel{3}\begin{verbatim}
+   (28)  0
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LiePolynomialXmpPageEmpty28}
+\begin{paste}{LiePolynomialXmpPageEmpty28}{LiePolynomialXmpPagePatch28}
+\pastebutton{LiePolynomialXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{r + r1 + r2\free{rr r1 r2 }}
+\end{paste}\end{patch}
 
 @
 \section{lword.ht}
@@ -14749,6 +40219,383 @@ Checks and coercions
 \autobuttons
 \end{page}
 
+\begin{patch}{LyndonWordXmpPagePatch1}
+\begin{paste}{LyndonWordXmpPageFull1}{LyndonWordXmpPageEmpty1}
+\pastebutton{LyndonWordXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a:Symbol :='a\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (1)  a
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty1}
+\begin{paste}{LyndonWordXmpPageEmpty1}{LyndonWordXmpPagePatch1}
+\pastebutton{LyndonWordXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a:Symbol :='a\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch2}
+\begin{paste}{LyndonWordXmpPageFull2}{LyndonWordXmpPageEmpty2}
+\pastebutton{LyndonWordXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{b:Symbol :='b\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (2)  b
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty2}
+\begin{paste}{LyndonWordXmpPageEmpty2}{LyndonWordXmpPagePatch2}
+\pastebutton{LyndonWordXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{b:Symbol :='b\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch3}
+\begin{paste}{LyndonWordXmpPageFull3}{LyndonWordXmpPageEmpty3}
+\pastebutton{LyndonWordXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{c:Symbol :='c\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (3)  c
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty3}
+\begin{paste}{LyndonWordXmpPageEmpty3}{LyndonWordXmpPagePatch3}
+\pastebutton{LyndonWordXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{c:Symbol :='c\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch4}
+\begin{paste}{LyndonWordXmpPageFull4}{LyndonWordXmpPageEmpty4}
+\pastebutton{LyndonWordXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{lword:= LyndonWord(Symbol)\bound{lword }}
+\indentrel{3}\begin{verbatim}
+   (4)  LyndonWord Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty4}
+\begin{paste}{LyndonWordXmpPageEmpty4}{LyndonWordXmpPagePatch4}
+\pastebutton{LyndonWordXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{lword:= LyndonWord(Symbol)\bound{lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch5}
+\begin{paste}{LyndonWordXmpPageFull5}{LyndonWordXmpPageEmpty5}
+\pastebutton{LyndonWordXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{magma := Magma(Symbol)\bound{magma }}
+\indentrel{3}\begin{verbatim}
+   (5)  Magma Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty5}
+\begin{paste}{LyndonWordXmpPageEmpty5}{LyndonWordXmpPagePatch5}
+\pastebutton{LyndonWordXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{magma := Magma(Symbol)\bound{magma }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch6}
+\begin{paste}{LyndonWordXmpPageFull6}{LyndonWordXmpPageEmpty6}
+\pastebutton{LyndonWordXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
+\indentrel{3}\begin{verbatim}
+   (6)  OrderedFreeMonoid Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty6}
+\begin{paste}{LyndonWordXmpPageEmpty6}{LyndonWordXmpPagePatch6}
+\pastebutton{LyndonWordXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch7}
+\begin{paste}{LyndonWordXmpPageFull7}{LyndonWordXmpPageEmpty7}
+\pastebutton{LyndonWordXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{LyndonWordsList1([a,b,c],3)$lword\free{lword }\free{a }\free{b }\free{c }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [[[a],[b],[c]], [[a b],[a c],[b c]],
+
+        2      2        2                         2
+     [[a b], [a c], [a b ], [a b c], [a c b], [a c ],
+        2        2
+      [b c], [b c ]]
+     ]
+       Type: OneDimensionalArray List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty7}
+\begin{paste}{LyndonWordXmpPageEmpty7}{LyndonWordXmpPagePatch7}
+\pastebutton{LyndonWordXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{LyndonWordsList1([a,b,c],3)$lword\free{lword }\free{a }\free{b }\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch8}
+\begin{paste}{LyndonWordXmpPageFull8}{LyndonWordXmpPageEmpty8}
+\pastebutton{LyndonWordXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{LyndonWordsList([a,b,c],3)$lword\free{a }\free{b }\free{c }\free{lword }}
+\indentrel{3}\begin{verbatim}
+   (8)
+                                          2      2
+   [[a], [b], [c], [a b], [a c], [b c], [a b], [a c],
+        2                         2     2        2
+    [a b ], [a b c], [a c b], [a c ], [b c], [b c ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty8}
+\begin{paste}{LyndonWordXmpPageEmpty8}{LyndonWordXmpPagePatch8}
+\pastebutton{LyndonWordXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{LyndonWordsList([a,b,c],3)$lword\free{a }\free{b }\free{c }\free{lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch9}
+\begin{paste}{LyndonWordXmpPageFull9}{LyndonWordXmpPageEmpty9}
+\pastebutton{LyndonWordXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{lw := LyndonWordsList([a,b],5)$lword\free{a }\free{b }\free{lword }\bound{lw }}
+\indentrel{3}\begin{verbatim}
+   (9)
+                       2        2     3      2 2
+   [[a], [b], [a b], [a b], [a b ], [a b], [a b ],
+        3     4      3 2     2          2 3           2
+    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
+        4
+    [a b ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty9}
+\begin{paste}{LyndonWordXmpPageEmpty9}{LyndonWordXmpPagePatch9}
+\pastebutton{LyndonWordXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{lw := LyndonWordsList([a,b],5)$lword\free{a }\free{b }\free{lword }\bound{lw }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch10}
+\begin{paste}{LyndonWordXmpPageFull10}{LyndonWordXmpPageEmpty10}
+\pastebutton{LyndonWordXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{w1 : word := lw.4 :: word\free{word }\free{lw }\bound{w1 }}
+\indentrel{3}\begin{verbatim}
+          2
+   (10)  a b
+                         Type: OrderedFreeMonoid Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty10}
+\begin{paste}{LyndonWordXmpPageEmpty10}{LyndonWordXmpPagePatch10}
+\pastebutton{LyndonWordXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{w1 : word := lw.4 :: word\free{word }\free{lw }\bound{w1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch11}
+\begin{paste}{LyndonWordXmpPageFull11}{LyndonWordXmpPageEmpty11}
+\pastebutton{LyndonWordXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{w2 : word := lw.5 :: word\free{word }\free{lw }\bound{w2 }}
+\indentrel{3}\begin{verbatim}
+            2
+   (11)  a b
+                         Type: OrderedFreeMonoid Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty11}
+\begin{paste}{LyndonWordXmpPageEmpty11}{LyndonWordXmpPagePatch11}
+\pastebutton{LyndonWordXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{w2 : word := lw.5 :: word\free{word }\free{lw }\bound{w2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch12}
+\begin{paste}{LyndonWordXmpPageFull12}{LyndonWordXmpPageEmpty12}
+\pastebutton{LyndonWordXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{factor(a::word)$lword\free{a word lword }}
+\indentrel{3}\begin{verbatim}
+   (12)  [[a]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty12}
+\begin{paste}{LyndonWordXmpPageEmpty12}{LyndonWordXmpPagePatch12}
+\pastebutton{LyndonWordXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{factor(a::word)$lword\free{a word lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch13}
+\begin{paste}{LyndonWordXmpPageFull13}{LyndonWordXmpPageEmpty13}
+\pastebutton{LyndonWordXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{factor(w1*w2)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+            2     2
+   (13)  [[a b a b ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty13}
+\begin{paste}{LyndonWordXmpPageEmpty13}{LyndonWordXmpPagePatch13}
+\pastebutton{LyndonWordXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{factor(w1*w2)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch14}
+\begin{paste}{LyndonWordXmpPageFull14}{LyndonWordXmpPageEmpty14}
+\pastebutton{LyndonWordXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{factor(w2*w2)$lword\free{w2 lword }}
+\indentrel{3}\begin{verbatim}
+              2      2
+   (14)  [[a b ],[a b ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty14}
+\begin{paste}{LyndonWordXmpPageEmpty14}{LyndonWordXmpPagePatch14}
+\pastebutton{LyndonWordXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{factor(w2*w2)$lword\free{w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch15}
+\begin{paste}{LyndonWordXmpPageFull15}{LyndonWordXmpPageEmpty15}
+\pastebutton{LyndonWordXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{factor(w2*w1)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+              2    2
+   (15)  [[a b ],[a b]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty15}
+\begin{paste}{LyndonWordXmpPageEmpty15}{LyndonWordXmpPagePatch15}
+\pastebutton{LyndonWordXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{factor(w2*w1)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch16}
+\begin{paste}{LyndonWordXmpPageFull16}{LyndonWordXmpPageEmpty16}
+\pastebutton{LyndonWordXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{lyndon?(w1)$lword\free{w1 lword }}
+\indentrel{3}\begin{verbatim}
+   (16)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty16}
+\begin{paste}{LyndonWordXmpPageEmpty16}{LyndonWordXmpPagePatch16}
+\pastebutton{LyndonWordXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{lyndon?(w1)$lword\free{w1 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch17}
+\begin{paste}{LyndonWordXmpPageFull17}{LyndonWordXmpPageEmpty17}
+\pastebutton{LyndonWordXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{lyndon?(w1*w2)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+   (17)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty17}
+\begin{paste}{LyndonWordXmpPageEmpty17}{LyndonWordXmpPagePatch17}
+\pastebutton{LyndonWordXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{lyndon?(w1*w2)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch18}
+\begin{paste}{LyndonWordXmpPageFull18}{LyndonWordXmpPageEmpty18}
+\pastebutton{LyndonWordXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{lyndon?(w2*w1)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+   (18)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty18}
+\begin{paste}{LyndonWordXmpPageEmpty18}{LyndonWordXmpPagePatch18}
+\pastebutton{LyndonWordXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{lyndon?(w2*w1)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch19}
+\begin{paste}{LyndonWordXmpPageFull19}{LyndonWordXmpPageEmpty19}
+\pastebutton{LyndonWordXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{lyndonIfCan(w1)$lword\free{w1 lword }}
+\indentrel{3}\begin{verbatim}
+           2
+   (19)  [a b]
+                     Type: Union(LyndonWord Symbol,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty19}
+\begin{paste}{LyndonWordXmpPageEmpty19}{LyndonWordXmpPagePatch19}
+\pastebutton{LyndonWordXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{lyndonIfCan(w1)$lword\free{w1 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch20}
+\begin{paste}{LyndonWordXmpPageFull20}{LyndonWordXmpPageEmpty20}
+\pastebutton{LyndonWordXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{lyndonIfCan(w2*w1)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+   (20)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty20}
+\begin{paste}{LyndonWordXmpPageEmpty20}{LyndonWordXmpPagePatch20}
+\pastebutton{LyndonWordXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{lyndonIfCan(w2*w1)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch21}
+\begin{paste}{LyndonWordXmpPageFull21}{LyndonWordXmpPageEmpty21}
+\pastebutton{LyndonWordXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{lyndon(w1)$lword\free{w1 lword }}
+\indentrel{3}\begin{verbatim}
+           2
+   (21)  [a b]
+                                Type: LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty21}
+\begin{paste}{LyndonWordXmpPageEmpty21}{LyndonWordXmpPagePatch21}
+\pastebutton{LyndonWordXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{lyndon(w1)$lword\free{w1 lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPagePatch22}
+\begin{paste}{LyndonWordXmpPageFull22}{LyndonWordXmpPageEmpty22}
+\pastebutton{LyndonWordXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{lyndon(w1*w2)$lword\free{w1 w2 lword }}
+\indentrel{3}\begin{verbatim}
+           2     2
+   (22)  [a b a b ]
+                                Type: LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{LyndonWordXmpPageEmpty22}
+\begin{paste}{LyndonWordXmpPageEmpty22}{LyndonWordXmpPagePatch22}
+\pastebutton{LyndonWordXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{lyndon(w1*w2)$lword\free{w1 w2 lword }}
+\end{paste}\end{patch}
+
 @
 \section{magma.ht}
 \pagehead{MagmaXmpPage}{magma.ht}{Magma}
@@ -14859,6 +40706,359 @@ Check ordering
 \autobuttons
 \end{page}
 
+\begin{patch}{MagmaXmpPagePatch1}
+\begin{paste}{MagmaXmpPageFull1}{MagmaXmpPageEmpty1}
+\pastebutton{MagmaXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x:Symbol :='x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty1}
+\begin{paste}{MagmaXmpPageEmpty1}{MagmaXmpPagePatch1}
+\pastebutton{MagmaXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x:Symbol :='x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch2}
+\begin{paste}{MagmaXmpPageFull2}{MagmaXmpPageEmpty2}
+\pastebutton{MagmaXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{y:Symbol :='y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (2)  y
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty2}
+\begin{paste}{MagmaXmpPageEmpty2}{MagmaXmpPagePatch2}
+\pastebutton{MagmaXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{y:Symbol :='y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch3}
+\begin{paste}{MagmaXmpPageFull3}{MagmaXmpPageEmpty3}
+\pastebutton{MagmaXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{z:Symbol :='z\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (3)  z
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty3}
+\begin{paste}{MagmaXmpPageEmpty3}{MagmaXmpPagePatch3}
+\pastebutton{MagmaXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{z:Symbol :='z\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch4}
+\begin{paste}{MagmaXmpPageFull4}{MagmaXmpPageEmpty4}
+\pastebutton{MagmaXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
+\indentrel{3}\begin{verbatim}
+   (4)  OrderedFreeMonoid Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty4}
+\begin{paste}{MagmaXmpPageEmpty4}{MagmaXmpPagePatch4}
+\pastebutton{MagmaXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch5}
+\begin{paste}{MagmaXmpPageFull5}{MagmaXmpPageEmpty5}
+\pastebutton{MagmaXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{tree := Magma(Symbol)\bound{tree }}
+\indentrel{3}\begin{verbatim}
+   (5)  Magma Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty5}
+\begin{paste}{MagmaXmpPageEmpty5}{MagmaXmpPagePatch5}
+\pastebutton{MagmaXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{tree := Magma(Symbol)\bound{tree }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch6}
+\begin{paste}{MagmaXmpPageFull6}{MagmaXmpPageEmpty6}
+\pastebutton{MagmaXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{a:tree := x*x\free{x tree }\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (6)  [x,x]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty6}
+\begin{paste}{MagmaXmpPageEmpty6}{MagmaXmpPagePatch6}
+\pastebutton{MagmaXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{a:tree := x*x\free{x tree }\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch7}
+\begin{paste}{MagmaXmpPageFull7}{MagmaXmpPageEmpty7}
+\pastebutton{MagmaXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{b:tree := y*y\free{y tree }\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (7)  [y,y]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty7}
+\begin{paste}{MagmaXmpPageEmpty7}{MagmaXmpPagePatch7}
+\pastebutton{MagmaXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{b:tree := y*y\free{y tree }\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch8}
+\begin{paste}{MagmaXmpPageFull8}{MagmaXmpPageEmpty8}
+\pastebutton{MagmaXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{c:tree := a*b\free{a b tree }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (8)  [[x,x],[y,y]]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty8}
+\begin{paste}{MagmaXmpPageEmpty8}{MagmaXmpPagePatch8}
+\pastebutton{MagmaXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{c:tree := a*b\free{a b tree }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch9}
+\begin{paste}{MagmaXmpPageFull9}{MagmaXmpPageEmpty9}
+\pastebutton{MagmaXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{left c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (9)  [x,x]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty9}
+\begin{paste}{MagmaXmpPageEmpty9}{MagmaXmpPagePatch9}
+\pastebutton{MagmaXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{left c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch10}
+\begin{paste}{MagmaXmpPageFull10}{MagmaXmpPageEmpty10}
+\pastebutton{MagmaXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{right c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (10)  [y,y]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty10}
+\begin{paste}{MagmaXmpPageEmpty10}{MagmaXmpPagePatch10}
+\pastebutton{MagmaXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{right c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch11}
+\begin{paste}{MagmaXmpPageFull11}{MagmaXmpPageEmpty11}
+\pastebutton{MagmaXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{length c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (11)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty11}
+\begin{paste}{MagmaXmpPageEmpty11}{MagmaXmpPagePatch11}
+\pastebutton{MagmaXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{length c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch12}
+\begin{paste}{MagmaXmpPageFull12}{MagmaXmpPageEmpty12}
+\pastebutton{MagmaXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{c::word\free{c word }}
+\indentrel{3}\begin{verbatim}
+          2 2
+   (12)  x y
+                         Type: OrderedFreeMonoid Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty12}
+\begin{paste}{MagmaXmpPageEmpty12}{MagmaXmpPagePatch12}
+\pastebutton{MagmaXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{c::word\free{c word }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch13}
+\begin{paste}{MagmaXmpPageFull13}{MagmaXmpPageEmpty13}
+\pastebutton{MagmaXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{a < b\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (13)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty13}
+\begin{paste}{MagmaXmpPageEmpty13}{MagmaXmpPagePatch13}
+\pastebutton{MagmaXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{a < b\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch14}
+\begin{paste}{MagmaXmpPageFull14}{MagmaXmpPageEmpty14}
+\pastebutton{MagmaXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{a < c\free{a c }}
+\indentrel{3}\begin{verbatim}
+   (14)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty14}
+\begin{paste}{MagmaXmpPageEmpty14}{MagmaXmpPagePatch14}
+\pastebutton{MagmaXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{a < c\free{a c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch15}
+\begin{paste}{MagmaXmpPageFull15}{MagmaXmpPageEmpty15}
+\pastebutton{MagmaXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{b < c\free{b c }}
+\indentrel{3}\begin{verbatim}
+   (15)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty15}
+\begin{paste}{MagmaXmpPageEmpty15}{MagmaXmpPagePatch15}
+\pastebutton{MagmaXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{b < c\free{b c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch16}
+\begin{paste}{MagmaXmpPageFull16}{MagmaXmpPageEmpty16}
+\pastebutton{MagmaXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{first c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (16)  x
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty16}
+\begin{paste}{MagmaXmpPageEmpty16}{MagmaXmpPagePatch16}
+\pastebutton{MagmaXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{first c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch17}
+\begin{paste}{MagmaXmpPageFull17}{MagmaXmpPageEmpty17}
+\pastebutton{MagmaXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{rest c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (17)  [x,[y,y]]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty17}
+\begin{paste}{MagmaXmpPageEmpty17}{MagmaXmpPagePatch17}
+\pastebutton{MagmaXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{rest c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch18}
+\begin{paste}{MagmaXmpPageFull18}{MagmaXmpPageEmpty18}
+\pastebutton{MagmaXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{rest rest c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (18)  [y,y]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty18}
+\begin{paste}{MagmaXmpPageEmpty18}{MagmaXmpPagePatch18}
+\pastebutton{MagmaXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{rest rest c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch19}
+\begin{paste}{MagmaXmpPageFull19}{MagmaXmpPageEmpty19}
+\pastebutton{MagmaXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{ax:tree := a*x\free{a x tree }\bound{ax }}
+\indentrel{3}\begin{verbatim}
+   (19)  [[x,x],x]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty19}
+\begin{paste}{MagmaXmpPageEmpty19}{MagmaXmpPagePatch19}
+\pastebutton{MagmaXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{ax:tree := a*x\free{a x tree }\bound{ax }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch20}
+\begin{paste}{MagmaXmpPageFull20}{MagmaXmpPageEmpty20}
+\pastebutton{MagmaXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{xa:tree := x*a\free{a x tree }\bound{xa }}
+\indentrel{3}\begin{verbatim}
+   (20)  [x,[x,x]]
+                                     Type: Magma Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty20}
+\begin{paste}{MagmaXmpPageEmpty20}{MagmaXmpPagePatch20}
+\pastebutton{MagmaXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{xa:tree := x*a\free{a x tree }\bound{xa }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch21}
+\begin{paste}{MagmaXmpPageFull21}{MagmaXmpPageEmpty21}
+\pastebutton{MagmaXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{xa < ax\free{ax xa }}
+\indentrel{3}\begin{verbatim}
+   (21)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty21}
+\begin{paste}{MagmaXmpPageEmpty21}{MagmaXmpPagePatch21}
+\pastebutton{MagmaXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{xa < ax\free{ax xa }}
+\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPagePatch22}
+\begin{paste}{MagmaXmpPageFull22}{MagmaXmpPageEmpty22}
+\pastebutton{MagmaXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{lexico(xa,ax)\free{ax xa }}
+\indentrel{3}\begin{verbatim}
+   (22)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MagmaXmpPageEmpty22}
+\begin{paste}{MagmaXmpPageEmpty22}{MagmaXmpPagePatch22}
+\pastebutton{MagmaXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{lexico(xa,ax)\free{ax xa }}
+\end{paste}\end{patch}
+
 @
 \section{man0.ht}
 \pagehead{RefSearchPage}{man0.ht}{Reference Search}
@@ -15557,7 +41757,6 @@ defined in the Axiom language.
 \endscroll
 \end{page}
 
-
 @
 \section{mappkg1.ht}
 \pagehead{MappingPackageOneXmpPage}{mappkg1.ht}{MappingPackage1}
@@ -15730,6 +41929,449 @@ By currying over the argument we get a function with private state.
 \autobuttons
 \end{page}
 
+\begin{patch}{MappingPackageOneXmpPagePatch1}
+\begin{paste}{MappingPackageOneXmpPageFull1}{MappingPackageOneXmpPageEmpty1}
+\pastebutton{MappingPackageOneXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{power(q: FRAC INT, n: INT): FRAC INT == q**n\bound{power }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty1}
+\begin{paste}{MappingPackageOneXmpPageEmpty1}{MappingPackageOneXmpPagePatch1}
+\pastebutton{MappingPackageOneXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{power(q: FRAC INT, n: INT): FRAC INT == q**n\bound{power }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch2}
+\begin{paste}{MappingPackageOneXmpPageFull2}{MappingPackageOneXmpPageEmpty2}
+\pastebutton{MappingPackageOneXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{power(2,3)\free{power }}
+\indentrel{3}\begin{verbatim}
+   (2)  8
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty2}
+\begin{paste}{MappingPackageOneXmpPageEmpty2}{MappingPackageOneXmpPagePatch2}
+\pastebutton{MappingPackageOneXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{power(2,3)\free{power }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch3}
+\begin{paste}{MappingPackageOneXmpPageFull3}{MappingPackageOneXmpPageEmpty3}
+\pastebutton{MappingPackageOneXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{rewop := twist power\free{power }\bound{rewop }}
+\indentrel{3}\begin{verbatim}
+   (3)  theMap(MAPPKG3;twist;MM;5!0)
+ Type: ((Integer,Fraction Integer) -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty3}
+\begin{paste}{MappingPackageOneXmpPageEmpty3}{MappingPackageOneXmpPagePatch3}
+\pastebutton{MappingPackageOneXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{rewop := twist power\free{power }\bound{rewop }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch4}
+\begin{paste}{MappingPackageOneXmpPageFull4}{MappingPackageOneXmpPageEmpty4}
+\pastebutton{MappingPackageOneXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{rewop(3, 2)\free{rewop }}
+\indentrel{3}\begin{verbatim}
+   (4)  8
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty4}
+\begin{paste}{MappingPackageOneXmpPageEmpty4}{MappingPackageOneXmpPagePatch4}
+\pastebutton{MappingPackageOneXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{rewop(3, 2)\free{rewop }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch5}
+\begin{paste}{MappingPackageOneXmpPageFull5}{MappingPackageOneXmpPageEmpty5}
+\pastebutton{MappingPackageOneXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{square: FRAC INT -> FRAC INT\bound{squaredec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty5}
+\begin{paste}{MappingPackageOneXmpPageEmpty5}{MappingPackageOneXmpPagePatch5}
+\pastebutton{MappingPackageOneXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{square: FRAC INT -> FRAC INT\bound{squaredec }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch6}
+\begin{paste}{MappingPackageOneXmpPageFull6}{MappingPackageOneXmpPageEmpty6}
+\pastebutton{MappingPackageOneXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{square:= curryRight(power, 2)\free{squaredec poswer }\bound{square }}
+\indentrel{3}\begin{verbatim}
+   (6)  theMap(MAPPKG3;curryRight;MBM;1!0,430)
+           Type: (Fraction Integer -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty6}
+\begin{paste}{MappingPackageOneXmpPageEmpty6}{MappingPackageOneXmpPagePatch6}
+\pastebutton{MappingPackageOneXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{square:= curryRight(power, 2)\free{squaredec poswer }\bound{square }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch7}
+\begin{paste}{MappingPackageOneXmpPageFull7}{MappingPackageOneXmpPageEmpty7}
+\pastebutton{MappingPackageOneXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{square 4\free{square }}
+\indentrel{3}\begin{verbatim}
+   (7)  16
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty7}
+\begin{paste}{MappingPackageOneXmpPageEmpty7}{MappingPackageOneXmpPagePatch7}
+\pastebutton{MappingPackageOneXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{square 4\free{square }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch8}
+\begin{paste}{MappingPackageOneXmpPageFull8}{MappingPackageOneXmpPageEmpty8}
+\pastebutton{MappingPackageOneXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT)\free{square }\bound{squirrel }}
+\indentrel{3}\begin{verbatim}
+   (8)  theMap(MAPPKG3;constantRight;MM;3!0)
+Type: ((Fraction Integer,Fraction Integer) -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty8}
+\begin{paste}{MappingPackageOneXmpPageEmpty8}{MappingPackageOneXmpPagePatch8}
+\pastebutton{MappingPackageOneXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT)\free{square }\bound{squirrel }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch9}
+\begin{paste}{MappingPackageOneXmpPageFull9}{MappingPackageOneXmpPageEmpty9}
+\pastebutton{MappingPackageOneXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{squirrel(1/2, 1/3)\free{squirrel }}
+\indentrel{3}\begin{verbatim}
+        1
+   (9)  Ä
+        4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty9}
+\begin{paste}{MappingPackageOneXmpPageEmpty9}{MappingPackageOneXmpPagePatch9}
+\pastebutton{MappingPackageOneXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{squirrel(1/2, 1/3)\free{squirrel }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch10}
+\begin{paste}{MappingPackageOneXmpPageFull10}{MappingPackageOneXmpPageEmpty10}
+\pastebutton{MappingPackageOneXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{sixteen := curry(square, 4/1)\free{square }\bound{sixteen }}
+\indentrel{3}\begin{verbatim}
+   (10)  theMap(MAPPKG2;curry;MAM;2!0,488)
+                         Type: (() -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty10}
+\begin{paste}{MappingPackageOneXmpPageEmpty10}{MappingPackageOneXmpPagePatch10}
+\pastebutton{MappingPackageOneXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{sixteen := curry(square, 4/1)\free{square }\bound{sixteen }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch11}
+\begin{paste}{MappingPackageOneXmpPageFull11}{MappingPackageOneXmpPageEmpty11}
+\pastebutton{MappingPackageOneXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{sixteen()\free{sixteen }}
+\indentrel{3}\begin{verbatim}
+   (11)  16
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty11}
+\begin{paste}{MappingPackageOneXmpPageEmpty11}{MappingPackageOneXmpPagePatch11}
+\pastebutton{MappingPackageOneXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{sixteen()\free{sixteen }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch12}
+\begin{paste}{MappingPackageOneXmpPageFull12}{MappingPackageOneXmpPageEmpty12}
+\pastebutton{MappingPackageOneXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{square2:=square*square\free{square }\bound{square2 }}
+\indentrel{3}\begin{verbatim}
+   (12)  theMap(MAPPKG3;*;MMM;6!0,589)
+           Type: (Fraction Integer -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty12}
+\begin{paste}{MappingPackageOneXmpPageEmpty12}{MappingPackageOneXmpPagePatch12}
+\pastebutton{MappingPackageOneXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{square2:=square*square\free{square }\bound{square2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch13}
+\begin{paste}{MappingPackageOneXmpPageFull13}{MappingPackageOneXmpPageEmpty13}
+\pastebutton{MappingPackageOneXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{square2 3\free{square2 }}
+\indentrel{3}\begin{verbatim}
+   (13)  81
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty13}
+\begin{paste}{MappingPackageOneXmpPageEmpty13}{MappingPackageOneXmpPagePatch13}
+\pastebutton{MappingPackageOneXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{square2 3\free{square2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch14}
+\begin{paste}{MappingPackageOneXmpPageFull14}{MappingPackageOneXmpPageEmpty14}
+\pastebutton{MappingPackageOneXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sc(x: FRAC INT): FRAC INT == x + 1\bound{sc }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty14}
+\begin{paste}{MappingPackageOneXmpPageEmpty14}{MappingPackageOneXmpPagePatch14}
+\pastebutton{MappingPackageOneXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sc(x: FRAC INT): FRAC INT == x + 1\bound{sc }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch15}
+\begin{paste}{MappingPackageOneXmpPageFull15}{MappingPackageOneXmpPageEmpty15}
+\pastebutton{MappingPackageOneXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{incfns := [sc**i for i in 0..10]\free{sc }\bound{incfns }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [theMap(MAPPKG1;**;MNniM;6!0,314),
+    theMap(MAPPKG1;**;MNniM;6!0,963),
+    theMap(MAPPKG1;**;MNniM;6!0,810),
+    theMap(MAPPKG1;**;MNniM;6!0,546),
+    theMap(MAPPKG1;**;MNniM;6!0,338),
+    theMap(MAPPKG1;**;MNniM;6!0,989),
+    theMap(MAPPKG1;**;MNniM;6!0,218),
+    theMap(MAPPKG1;**;MNniM;6!0,20),
+    theMap(MAPPKG1;**;MNniM;6!0,533),
+    theMap(MAPPKG1;**;MNniM;6!0,437),
+    theMap(MAPPKG1;**;MNniM;6!0,900)]
+      Type: List (Fraction Integer -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty15}
+\begin{paste}{MappingPackageOneXmpPageEmpty15}{MappingPackageOneXmpPagePatch15}
+\pastebutton{MappingPackageOneXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{incfns := [sc**i for i in 0..10]\free{sc }\bound{incfns }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch16}
+\begin{paste}{MappingPackageOneXmpPageFull16}{MappingPackageOneXmpPageEmpty16}
+\pastebutton{MappingPackageOneXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{[f 4 for f in incfns]\free{incfns }}
+\indentrel{3}\begin{verbatim}
+   (16)  [4,5,6,7,8,9,10,11,12,13,14]
+                            Type: List Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty16}
+\begin{paste}{MappingPackageOneXmpPageEmpty16}{MappingPackageOneXmpPagePatch16}
+\pastebutton{MappingPackageOneXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[f 4 for f in incfns]\free{incfns }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch17}
+\begin{paste}{MappingPackageOneXmpPageFull17}{MappingPackageOneXmpPageEmpty17}
+\pastebutton{MappingPackageOneXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{times(n:NNI, i:INT):INT == n*i\bound{rdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty17}
+\begin{paste}{MappingPackageOneXmpPageEmpty17}{MappingPackageOneXmpPagePatch17}
+\pastebutton{MappingPackageOneXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{times(n:NNI, i:INT):INT == n*i\bound{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch18}
+\begin{paste}{MappingPackageOneXmpPageFull18}{MappingPackageOneXmpPageEmpty18}
+\pastebutton{MappingPackageOneXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{r := recur(times)\free{rdec }\bound{r }}
+\indentrel{3}\begin{verbatim}
+   (18)  theMap(MAPPKG1;recur;2M;7!0,161)
+        Type: ((NonNegativeInteger,Integer) -> Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty18}
+\begin{paste}{MappingPackageOneXmpPageEmpty18}{MappingPackageOneXmpPagePatch18}
+\pastebutton{MappingPackageOneXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{r := recur(times)\free{rdec }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch19}
+\begin{paste}{MappingPackageOneXmpPageFull19}{MappingPackageOneXmpPageEmpty19}
+\pastebutton{MappingPackageOneXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{fact := curryRight(r, 1)\free{r }\bound{fact }}
+\indentrel{3}\begin{verbatim}
+   (19)  theMap(MAPPKG3;curryRight;MBM;1!0,541)
+                  Type: (NonNegativeInteger -> Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty19}
+\begin{paste}{MappingPackageOneXmpPageEmpty19}{MappingPackageOneXmpPagePatch19}
+\pastebutton{MappingPackageOneXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{fact := curryRight(r, 1)\free{r }\bound{fact }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch20}
+\begin{paste}{MappingPackageOneXmpPageFull20}{MappingPackageOneXmpPageEmpty20}
+\pastebutton{MappingPackageOneXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{fact 4\free{fact }}
+\indentrel{3}\begin{verbatim}
+   (20)  24
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty20}
+\begin{paste}{MappingPackageOneXmpPageEmpty20}{MappingPackageOneXmpPagePatch20}
+\pastebutton{MappingPackageOneXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{fact 4\free{fact }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch21}
+\begin{paste}{MappingPackageOneXmpPageFull21}{MappingPackageOneXmpPageEmpty21}
+\pastebutton{MappingPackageOneXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{mto2ton(m, n) ==
+  raiser := square**n
+  raiser m
+\free{square }\bound{mto2ton }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty21}
+\begin{paste}{MappingPackageOneXmpPageEmpty21}{MappingPackageOneXmpPagePatch21}
+\pastebutton{MappingPackageOneXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{mto2ton(m, n) ==
+  raiser := square**n
+  raiser m
+\free{square }\bound{mto2ton }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch22}
+\begin{paste}{MappingPackageOneXmpPageFull22}{MappingPackageOneXmpPageEmpty22}
+\pastebutton{MappingPackageOneXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{mto2ton(3, 3)\free{mto2ton }}
+\indentrel{3}\begin{verbatim}
+   (22)  6561
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty22}
+\begin{paste}{MappingPackageOneXmpPageEmpty22}{MappingPackageOneXmpPagePatch22}
+\pastebutton{MappingPackageOneXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{mto2ton(3, 3)\free{mto2ton }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch23}
+\begin{paste}{MappingPackageOneXmpPageFull23}{MappingPackageOneXmpPageEmpty23}
+\pastebutton{MappingPackageOneXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{shiftfib(r: List INT) : INT ==
+  t := r.1
+  r.1 := r.2
+  r.2 := r.2 + t
+  t
+\bound{shiftfib }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty23}
+\begin{paste}{MappingPackageOneXmpPageEmpty23}{MappingPackageOneXmpPagePatch23}
+\pastebutton{MappingPackageOneXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{shiftfib(r: List INT) : INT ==
+  t := r.1
+  r.1 := r.2
+  r.2 := r.2 + t
+  t
+\bound{shiftfib }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch24}
+\begin{paste}{MappingPackageOneXmpPageFull24}{MappingPackageOneXmpPageEmpty24}
+\pastebutton{MappingPackageOneXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{fibinit: List INT := [0, 1]\bound{fibinitdec }}
+\indentrel{3}\begin{verbatim}
+   (24)  [0,1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty24}
+\begin{paste}{MappingPackageOneXmpPageEmpty24}{MappingPackageOneXmpPagePatch24}
+\pastebutton{MappingPackageOneXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{fibinit: List INT := [0, 1]\bound{fibinitdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch25}
+\begin{paste}{MappingPackageOneXmpPageFull25}{MappingPackageOneXmpPageEmpty25}
+\pastebutton{MappingPackageOneXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{fibs := curry(shiftfib, fibinit)\free{shiftfib fibinit }\bound{fibs }}
+\indentrel{3}\begin{verbatim}
+   (25)  theMap(MAPPKG2;curry;MAM;2!0,91)
+                                  Type: (() -> Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty25}
+\begin{paste}{MappingPackageOneXmpPageEmpty25}{MappingPackageOneXmpPagePatch25}
+\pastebutton{MappingPackageOneXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{fibs := curry(shiftfib, fibinit)\free{shiftfib fibinit }\bound{fibs }}
+\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPagePatch26}
+\begin{paste}{MappingPackageOneXmpPageFull26}{MappingPackageOneXmpPageEmpty26}
+\pastebutton{MappingPackageOneXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{[fibs() for i in 0..30]\free{fibs }}
+\indentrel{3}\begin{verbatim}
+   (26)
+   [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,
+    377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711,
+    28657, 46368, 75025, 121393, 196418, 317811, 514229,
+    832040]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MappingPackageOneXmpPageEmpty26}
+\begin{paste}{MappingPackageOneXmpPageEmpty26}{MappingPackageOneXmpPagePatch26}
+\pastebutton{MappingPackageOneXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{[fibs() for i in 0..30]\free{fibs }}
+\end{paste}\end{patch}
+
 @
 \section{mset.ht}
 \pagehead{MultiSetXmpPage}{mset.ht}{MultiSet}
@@ -15821,6 +42463,198 @@ Check some inclusion relations.
 \autobuttons
 \end{page}
 
+\begin{patch}{MultiSetXmpPagePatch1}
+\begin{paste}{MultiSetXmpPageFull1}{MultiSetXmpPageEmpty1}
+\pastebutton{MultiSetXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (1)  {7,2: 5,3: 3,1,10,6,4: 4,2: 2}
+                         Type: Multiset PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty1}
+\begin{paste}{MultiSetXmpPageEmpty1}{MultiSetXmpPagePatch1}
+\pastebutton{MultiSetXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch2}
+\begin{paste}{MultiSetXmpPageFull2}{MultiSetXmpPageEmpty2}
+\pastebutton{MultiSetXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{insert!(3,s)\bound{s1 }\free{s }}
+\indentrel{3}\begin{verbatim}
+   (2)  {7,2: 5,4: 3,1,10,6,4: 4,2: 2}
+                         Type: Multiset PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty2}
+\begin{paste}{MultiSetXmpPageEmpty2}{MultiSetXmpPagePatch2}
+\pastebutton{MultiSetXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{insert!(3,s)\bound{s1 }\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch3}
+\begin{paste}{MultiSetXmpPageFull3}{MultiSetXmpPageEmpty3}
+\pastebutton{MultiSetXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{remove!(3,s,1); s\bound{s2 }\free{s1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  {7,2: 5,3: 3,1,10,6,4: 4,2: 2}
+                         Type: Multiset PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty3}
+\begin{paste}{MultiSetXmpPageEmpty3}{MultiSetXmpPagePatch3}
+\pastebutton{MultiSetXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{remove!(3,s,1); s\bound{s2 }\free{s1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch4}
+\begin{paste}{MultiSetXmpPageFull4}{MultiSetXmpPageEmpty4}
+\pastebutton{MultiSetXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{remove!(5,s); s\bound{s2 }\free{s1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  {7,3: 3,1,10,6,4: 4,2: 2}
+                         Type: Multiset PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty4}
+\begin{paste}{MultiSetXmpPageEmpty4}{MultiSetXmpPagePatch4}
+\pastebutton{MultiSetXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{remove!(5,s); s\bound{s2 }\free{s1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch5}
+\begin{paste}{MultiSetXmpPageFull5}{MultiSetXmpPageEmpty5}
+\pastebutton{MultiSetXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{count(5,s)\free{s2 }}
+\indentrel{3}\begin{verbatim}
+   (5)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty5}
+\begin{paste}{MultiSetXmpPageEmpty5}{MultiSetXmpPagePatch5}
+\pastebutton{MultiSetXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{count(5,s)\free{s2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch6}
+\begin{paste}{MultiSetXmpPageFull6}{MultiSetXmpPageEmpty6}
+\pastebutton{MultiSetXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{t := multiset [2,2,2,-9]\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (6)  {- 9,3: 2}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty6}
+\begin{paste}{MultiSetXmpPageEmpty6}{MultiSetXmpPagePatch6}
+\pastebutton{MultiSetXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{t := multiset [2,2,2,-9]\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch7}
+\begin{paste}{MultiSetXmpPageFull7}{MultiSetXmpPageEmpty7}
+\pastebutton{MultiSetXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{U := union(s,t)\bound{U }}
+\indentrel{3}\begin{verbatim}
+   (7)  {7,3: 3,1,- 9,10,6,4: 4,5: 2}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty7}
+\begin{paste}{MultiSetXmpPageEmpty7}{MultiSetXmpPagePatch7}
+\pastebutton{MultiSetXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{U := union(s,t)\bound{U }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch8}
+\begin{paste}{MultiSetXmpPageFull8}{MultiSetXmpPageEmpty8}
+\pastebutton{MultiSetXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{I := intersect(s,t)\bound{I }}
+\indentrel{3}\begin{verbatim}
+   (8)  {5: 2}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty8}
+\begin{paste}{MultiSetXmpPageEmpty8}{MultiSetXmpPagePatch8}
+\pastebutton{MultiSetXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{I := intersect(s,t)\bound{I }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch9}
+\begin{paste}{MultiSetXmpPageFull9}{MultiSetXmpPageEmpty9}
+\pastebutton{MultiSetXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{difference(s,t)\free{s2 t }}
+\indentrel{3}\begin{verbatim}
+   (9)  {7,3: 3,1,10,6,4: 4}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty9}
+\begin{paste}{MultiSetXmpPageEmpty9}{MultiSetXmpPagePatch9}
+\pastebutton{MultiSetXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{difference(s,t)\free{s2 t }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch10}
+\begin{paste}{MultiSetXmpPageFull10}{MultiSetXmpPageEmpty10}
+\pastebutton{MultiSetXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{S := symmetricDifference(s,t)\bound{S }\free{s2 t }}
+\indentrel{3}\begin{verbatim}
+   (10)  {7,3: 3,1,- 9,10,6,4: 4}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty10}
+\begin{paste}{MultiSetXmpPageEmpty10}{MultiSetXmpPagePatch10}
+\pastebutton{MultiSetXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{S := symmetricDifference(s,t)\bound{S }\free{s2 t }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch11}
+\begin{paste}{MultiSetXmpPageFull11}{MultiSetXmpPageEmpty11}
+\pastebutton{MultiSetXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{(U = union(S,I))@Boolean\free{S I U }}
+\indentrel{3}\begin{verbatim}
+   (11)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty11}
+\begin{paste}{MultiSetXmpPageEmpty11}{MultiSetXmpPagePatch11}
+\pastebutton{MultiSetXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{(U = union(S,I))@Boolean\free{S I U }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPagePatch12}
+\begin{paste}{MultiSetXmpPageFull12}{MultiSetXmpPageEmpty12}
+\pastebutton{MultiSetXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{t1 := multiset [1,2,2,3]; [t1 < t, t1 < s, t < s, t1 <= s]\free{t s2 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [false,true,false,true]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultiSetXmpPageEmpty12}
+\begin{paste}{MultiSetXmpPageEmpty12}{MultiSetXmpPagePatch12}
+\pastebutton{MultiSetXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{t1 := multiset [1,2,2,3]; [t1 < t, t1 < s, t < s, t1 <= s]\free{t s2 }}
+\end{paste}\end{patch}
+
 @
 \section{matrix.ht}
 \pagehead{MatrixXmpPage}{matrix.ht}{Matrix}
@@ -15990,6 +42824,471 @@ reflection across the main diagonal.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxMatrixCreatePagePatch1}
+\begin{paste}{ugxMatrixCreatePageFull1}{ugxMatrixCreatePageEmpty1}
+\pastebutton{ugxMatrixCreatePageFull1}{\hidepaste}
+\tab{5}\spadcommand{m : Matrix(Integer) := new(3,3,0)\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú0  0  0¿
+        ³       ³
+   (1)  ³0  0  0³
+        ³       ³
+        À0  0  0Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty1}
+\begin{paste}{ugxMatrixCreatePageEmpty1}{ugxMatrixCreatePagePatch1}
+\pastebutton{ugxMatrixCreatePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m : Matrix(Integer) := new(3,3,0)\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch2}
+\begin{paste}{ugxMatrixCreatePageFull2}{ugxMatrixCreatePageEmpty2}
+\pastebutton{ugxMatrixCreatePageFull2}{\hidepaste}
+\tab{5}\spadcommand{setelt(m,2,3,5)\free{m }\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty2}
+\begin{paste}{ugxMatrixCreatePageEmpty2}{ugxMatrixCreatePagePatch2}
+\pastebutton{ugxMatrixCreatePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{setelt(m,2,3,5)\free{m }\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch3}
+\begin{paste}{ugxMatrixCreatePageFull3}{ugxMatrixCreatePageEmpty3}
+\pastebutton{ugxMatrixCreatePageFull3}{\hidepaste}
+\tab{5}\spadcommand{m(1,2) := 10\free{m1 }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty3}
+\begin{paste}{ugxMatrixCreatePageEmpty3}{ugxMatrixCreatePagePatch3}
+\pastebutton{ugxMatrixCreatePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{m(1,2) := 10\free{m1 }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch4}
+\begin{paste}{ugxMatrixCreatePageFull4}{ugxMatrixCreatePageEmpty4}
+\pastebutton{ugxMatrixCreatePageFull4}{\hidepaste}
+\tab{5}\spadcommand{m\free{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú0  10  0¿
+        ³        ³
+   (4)  ³0  0   5³
+        ³        ³
+        À0  0   0Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty4}
+\begin{paste}{ugxMatrixCreatePageEmpty4}{ugxMatrixCreatePagePatch4}
+\pastebutton{ugxMatrixCreatePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch5}
+\begin{paste}{ugxMatrixCreatePageFull5}{ugxMatrixCreatePageEmpty5}
+\pastebutton{ugxMatrixCreatePageFull5}{\hidepaste}
+\tab{5}\spadcommand{matrix [[1,2,3,4],[0,9,8,7]]}
+\indentrel{3}\begin{verbatim}
+        Ú1  2  3  4¿
+   (5)  ³          ³
+        À0  9  8  7Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty5}
+\begin{paste}{ugxMatrixCreatePageEmpty5}{ugxMatrixCreatePagePatch5}
+\pastebutton{ugxMatrixCreatePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{matrix [[1,2,3,4],[0,9,8,7]]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch6}
+\begin{paste}{ugxMatrixCreatePageFull6}{ugxMatrixCreatePageEmpty6}
+\pastebutton{ugxMatrixCreatePageFull6}{\hidepaste}
+\tab{5}\spadcommand{dm := diagonalMatrix [1,x**2,x**3,x**4,x**5]\bound{dm }}
+\indentrel{3}\begin{verbatim}
+        Ú1  0   0   0   0 ¿
+        ³                 ³
+        ³    2            ³
+        ³0  x   0   0   0 ³
+        ³                 ³
+        ³        3        ³
+   (6)  ³0  0   x   0   0 ³
+        ³                 ³
+        ³            4    ³
+        ³0  0   0   x   0 ³
+        ³                 ³
+        ³                5³
+        À0  0   0   0   x Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty6}
+\begin{paste}{ugxMatrixCreatePageEmpty6}{ugxMatrixCreatePagePatch6}
+\pastebutton{ugxMatrixCreatePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{dm := diagonalMatrix [1,x**2,x**3,x**4,x**5]\bound{dm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch7}
+\begin{paste}{ugxMatrixCreatePageFull7}{ugxMatrixCreatePageEmpty7}
+\pastebutton{ugxMatrixCreatePageFull7}{\hidepaste}
+\tab{5}\spadcommand{setRow!(dm,5,vector [1,1,1,1,1])\free{dm }\bound{dm1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  0   0   0   0¿
+        ³                ³
+        ³    2           ³
+        ³0  x   0   0   0³
+        ³                ³
+   (7)  ³        3       ³
+        ³0  0   x   0   0³
+        ³                ³
+        ³            4   ³
+        ³0  0   0   x   0³
+        ³                ³
+        À1  1   1   1   1Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty7}
+\begin{paste}{ugxMatrixCreatePageEmpty7}{ugxMatrixCreatePagePatch7}
+\pastebutton{ugxMatrixCreatePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{setRow!(dm,5,vector [1,1,1,1,1])\free{dm }\bound{dm1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch8}
+\begin{paste}{ugxMatrixCreatePageFull8}{ugxMatrixCreatePageEmpty8}
+\pastebutton{ugxMatrixCreatePageFull8}{\hidepaste}
+\tab{5}\spadcommand{setColumn!(dm,2,vector [y,y,y,y,y])\free{dm1 }\bound{dm2 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  y  0   0   0¿
+        ³               ³
+        ³0  y  0   0   0³
+        ³               ³
+        ³       3       ³
+   (8)  ³0  y  x   0   0³
+        ³               ³
+        ³           4   ³
+        ³0  y  0   x   0³
+        ³               ³
+        À1  y  1   1   1Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty8}
+\begin{paste}{ugxMatrixCreatePageEmpty8}{ugxMatrixCreatePagePatch8}
+\pastebutton{ugxMatrixCreatePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{setColumn!(dm,2,vector [y,y,y,y,y])\free{dm1 }\bound{dm2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch9}
+\begin{paste}{ugxMatrixCreatePageFull9}{ugxMatrixCreatePageEmpty9}
+\pastebutton{ugxMatrixCreatePageFull9}{\hidepaste}
+\tab{5}\spadcommand{cdm := copy(dm)\free{dm2 }\bound{cdm }}
+\indentrel{3}\begin{verbatim}
+        Ú1  y  0   0   0¿
+        ³               ³
+        ³0  y  0   0   0³
+        ³               ³
+        ³       3       ³
+   (9)  ³0  y  x   0   0³
+        ³               ³
+        ³           4   ³
+        ³0  y  0   x   0³
+        ³               ³
+        À1  y  1   1   1Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty9}
+\begin{paste}{ugxMatrixCreatePageEmpty9}{ugxMatrixCreatePagePatch9}
+\pastebutton{ugxMatrixCreatePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{cdm := copy(dm)\free{dm2 }\bound{cdm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch10}
+\begin{paste}{ugxMatrixCreatePageFull10}{ugxMatrixCreatePageEmpty10}
+\pastebutton{ugxMatrixCreatePageFull10}{\hidepaste}
+\tab{5}\spadcommand{setelt(dm,4,1,1-x**7)\free{dm2 }\bound{setdm }}
+\indentrel{3}\begin{verbatim}
+            7
+   (10)  - x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty10}
+\begin{paste}{ugxMatrixCreatePageEmpty10}{ugxMatrixCreatePagePatch10}
+\pastebutton{ugxMatrixCreatePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{setelt(dm,4,1,1-x**7)\free{dm2 }\bound{setdm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch11}
+\begin{paste}{ugxMatrixCreatePageFull11}{ugxMatrixCreatePageEmpty11}
+\pastebutton{ugxMatrixCreatePageFull11}{\hidepaste}
+\tab{5}\spadcommand{[dm,cdm]\free{setdm cdm }}
+\indentrel{3}\begin{verbatim}
+          Ú   1      y  0   0   0¿ Ú1  y  0   0   0¿
+          ³                      ³ ³               ³
+          ³   0      y  0   0   0³ ³0  y  0   0   0³
+          ³                      ³ ³               ³
+          ³              3       ³ ³       3       ³
+   (11)  [³   0      y  x   0   0³,³0  y  x   0   0³]
+          ³                      ³ ³               ³
+          ³   7              4   ³ ³           4   ³
+          ³- x  + 1  y  0   x   0³ ³0  y  0   x   0³
+          ³                      ³ ³               ³
+          À   1      y  1   1   1Ù À1  y  1   1   1Ù
+                   Type: List Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty11}
+\begin{paste}{ugxMatrixCreatePageEmpty11}{ugxMatrixCreatePagePatch11}
+\pastebutton{ugxMatrixCreatePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[dm,cdm]\free{setdm cdm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch12}
+\begin{paste}{ugxMatrixCreatePageFull12}{ugxMatrixCreatePageEmpty12}
+\pastebutton{ugxMatrixCreatePageFull12}{\hidepaste}
+\tab{5}\spadcommand{subMatrix(dm,2,3,2,4)\free{setdm }}
+\indentrel{3}\begin{verbatim}
+         Úy  0   0¿
+   (12)  ³        ³
+         ³    3   ³
+         Ày  x   0Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty12}
+\begin{paste}{ugxMatrixCreatePageEmpty12}{ugxMatrixCreatePagePatch12}
+\pastebutton{ugxMatrixCreatePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{subMatrix(dm,2,3,2,4)\free{setdm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch13}
+\begin{paste}{ugxMatrixCreatePageFull13}{ugxMatrixCreatePageEmpty13}
+\pastebutton{ugxMatrixCreatePageFull13}{\hidepaste}
+\tab{5}\spadcommand{d := diagonalMatrix [1.2,-1.3,1.4,-1.5]\bound{d }}
+\indentrel{3}\begin{verbatim}
+         Ú1.2   0.0   0.0   0.0 ¿
+         ³                      ³
+         ³0.0  - 1.3  0.0   0.0 ³
+   (13)  ³                      ³
+         ³0.0   0.0   1.4   0.0 ³
+         ³                      ³
+         À0.0   0.0   0.0  - 1.5Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty13}
+\begin{paste}{ugxMatrixCreatePageEmpty13}{ugxMatrixCreatePagePatch13}
+\pastebutton{ugxMatrixCreatePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{d := diagonalMatrix [1.2,-1.3,1.4,-1.5]\bound{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch14}
+\begin{paste}{ugxMatrixCreatePageFull14}{ugxMatrixCreatePageEmpty14}
+\pastebutton{ugxMatrixCreatePageFull14}{\hidepaste}
+\tab{5}\spadcommand{e := matrix [[6.7,9.11],[-31.33,67.19]]\bound{e }}
+\indentrel{3}\begin{verbatim}
+         Ú  6.7    9.11 ¿
+   (14)  ³              ³
+         À- 31.33  67.19Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty14}
+\begin{paste}{ugxMatrixCreatePageEmpty14}{ugxMatrixCreatePagePatch14}
+\pastebutton{ugxMatrixCreatePageEmpty14}{\showpaste}
+\tab{5}\spadcommand{e := matrix [[6.7,9.11],[-31.33,67.19]]\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch15}
+\begin{paste}{ugxMatrixCreatePageFull15}{ugxMatrixCreatePageEmpty15}
+\pastebutton{ugxMatrixCreatePageFull15}{\hidepaste}
+\tab{5}\spadcommand{setsubMatrix!(d,1,2,e)\free{d e }\bound{d1 }}
+\indentrel{3}\begin{verbatim}
+         Ú1.2    6.7    9.11    0.0 ¿
+         ³                          ³
+         ³0.0  - 31.33  67.19   0.0 ³
+   (15)  ³                          ³
+         ³0.0    0.0     1.4    0.0 ³
+         ³                          ³
+         À0.0    0.0     0.0   - 1.5Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty15}
+\begin{paste}{ugxMatrixCreatePageEmpty15}{ugxMatrixCreatePagePatch15}
+\pastebutton{ugxMatrixCreatePageEmpty15}{\showpaste}
+\tab{5}\spadcommand{setsubMatrix!(d,1,2,e)\free{d e }\bound{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch16}
+\begin{paste}{ugxMatrixCreatePageFull16}{ugxMatrixCreatePageEmpty16}
+\pastebutton{ugxMatrixCreatePageFull16}{\hidepaste}
+\tab{5}\spadcommand{d\free{d1 }}
+\indentrel{3}\begin{verbatim}
+         Ú1.2    6.7    9.11    0.0 ¿
+         ³                          ³
+         ³0.0  - 31.33  67.19   0.0 ³
+   (16)  ³                          ³
+         ³0.0    0.0     1.4    0.0 ³
+         ³                          ³
+         À0.0    0.0     0.0   - 1.5Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty16}
+\begin{paste}{ugxMatrixCreatePageEmpty16}{ugxMatrixCreatePagePatch16}
+\pastebutton{ugxMatrixCreatePageEmpty16}{\showpaste}
+\tab{5}\spadcommand{d\free{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch17}
+\begin{paste}{ugxMatrixCreatePageFull17}{ugxMatrixCreatePageEmpty17}
+\pastebutton{ugxMatrixCreatePageFull17}{\hidepaste}
+\tab{5}\spadcommand{a := matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]\bound{a }}
+\indentrel{3}\begin{verbatim}
+         Ú1  1  1¿
+         ³Ä  Ä  Ä³
+         ³2  3  4³
+   (17)  ³       ³
+         ³1  1  1³
+         ³Ä  Ä  Ä³
+         À5  6  7Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty17}
+\begin{paste}{ugxMatrixCreatePageEmpty17}{ugxMatrixCreatePagePatch17}
+\pastebutton{ugxMatrixCreatePageEmpty17}{\showpaste}
+\tab{5}\spadcommand{a := matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch18}
+\begin{paste}{ugxMatrixCreatePageFull18}{ugxMatrixCreatePageEmpty18}
+\pastebutton{ugxMatrixCreatePageFull18}{\hidepaste}
+\tab{5}\spadcommand{b := matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]\bound{b }}
+\indentrel{3}\begin{verbatim}
+         Ú3   3    3¿
+         ³Ä   Ä   ÄÄ³
+         ³5   7   11³
+   (18)  ³          ³
+         ³ 3   3   3³
+         ³ÄÄ  ÄÄ  ÄÄ³
+         À13  17  19Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty18}
+\begin{paste}{ugxMatrixCreatePageEmpty18}{ugxMatrixCreatePagePatch18}
+\pastebutton{ugxMatrixCreatePageEmpty18}{\showpaste}
+\tab{5}\spadcommand{b := matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch19}
+\begin{paste}{ugxMatrixCreatePageFull19}{ugxMatrixCreatePageEmpty19}
+\pastebutton{ugxMatrixCreatePageFull19}{\hidepaste}
+\tab{5}\spadcommand{horizConcat(a,b)\free{a b }}
+\indentrel{3}\begin{verbatim}
+         Ú1  1  1  3   3    3¿
+         ³Ä  Ä  Ä  Ä   Ä   ÄÄ³
+         ³2  3  4  5   7   11³
+   (19)  ³                   ³
+         ³1  1  1   3   3   3³
+         ³Ä  Ä  Ä  ÄÄ  ÄÄ  ÄÄ³
+         À5  6  7  13  17  19Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty19}
+\begin{paste}{ugxMatrixCreatePageEmpty19}{ugxMatrixCreatePagePatch19}
+\pastebutton{ugxMatrixCreatePageEmpty19}{\showpaste}
+\tab{5}\spadcommand{horizConcat(a,b)\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch20}
+\begin{paste}{ugxMatrixCreatePageFull20}{ugxMatrixCreatePageEmpty20}
+\pastebutton{ugxMatrixCreatePageFull20}{\hidepaste}
+\tab{5}\spadcommand{vab := vertConcat(a,b)\free{a b }\bound{vab }}
+\indentrel{3}\begin{verbatim}
+         Ú1   1   1 ¿
+         ³Ä   Ä   Ä ³
+         ³2   3   4 ³
+         ³          ³
+         ³1   1   1 ³
+         ³Ä   Ä   Ä ³
+         ³5   6   7 ³
+   (20)  ³          ³
+         ³3   3    3³
+         ³Ä   Ä   ÄÄ³
+         ³5   7   11³
+         ³          ³
+         ³ 3   3   3³
+         ³ÄÄ  ÄÄ  ÄÄ³
+         À13  17  19Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty20}
+\begin{paste}{ugxMatrixCreatePageEmpty20}{ugxMatrixCreatePagePatch20}
+\pastebutton{ugxMatrixCreatePageEmpty20}{\showpaste}
+\tab{5}\spadcommand{vab := vertConcat(a,b)\free{a b }\bound{vab }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePagePatch21}
+\begin{paste}{ugxMatrixCreatePageFull21}{ugxMatrixCreatePageEmpty21}
+\pastebutton{ugxMatrixCreatePageFull21}{\hidepaste}
+\tab{5}\spadcommand{transpose vab\free{vab }}
+\indentrel{3}\begin{verbatim}
+         Ú1  1  3    3¿
+         ³Ä  Ä  Ä   ÄÄ³
+         ³2  5  5   13³
+         ³            ³
+         ³1  1  3    3³
+   (21)  ³Ä  Ä  Ä   ÄÄ³
+         ³3  6  7   17³
+         ³            ³
+         ³1  1   3   3³
+         ³Ä  Ä  ÄÄ  ÄÄ³
+         À4  7  11  19Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixCreatePageEmpty21}
+\begin{paste}{ugxMatrixCreatePageEmpty21}{ugxMatrixCreatePagePatch21}
+\pastebutton{ugxMatrixCreatePageEmpty21}{\showpaste}
+\tab{5}\spadcommand{transpose vab\free{vab }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxMatrixOpsPage}{matrix.ht}{Operations on Matrices}
 \pageto{notitle}{ugIntroTwoDimPage}
@@ -16145,6 +43444,312 @@ Section 1.7\ignore{ugIntroTwoDim},
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxMatrixOpsPagePatch1}
+\begin{paste}{ugxMatrixOpsPageFull1}{ugxMatrixOpsPageEmpty1}
+\pastebutton{ugxMatrixOpsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[1,2],[3,4]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (1)  ³    ³
+        À3  4Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty1}
+\begin{paste}{ugxMatrixOpsPageEmpty1}{ugxMatrixOpsPagePatch1}
+\pastebutton{ugxMatrixOpsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[1,2],[3,4]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch2}
+\begin{paste}{ugxMatrixOpsPageFull2}{ugxMatrixOpsPageEmpty2}
+\pastebutton{ugxMatrixOpsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{4 * m * (-5)\free{m }}
+\indentrel{3}\begin{verbatim}
+        Ú- 20  - 40¿
+   (2)  ³          ³
+        À- 60  - 80Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty2}
+\begin{paste}{ugxMatrixOpsPageEmpty2}{ugxMatrixOpsPagePatch2}
+\pastebutton{ugxMatrixOpsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{4 * m * (-5)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch3}
+\begin{paste}{ugxMatrixOpsPageFull3}{ugxMatrixOpsPageEmpty3}
+\pastebutton{ugxMatrixOpsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{n := matrix([[1,0,-2],[-3,5,1]])\bound{n }}
+\indentrel{3}\begin{verbatim}
+        Ú 1   0  - 2¿
+   (3)  ³           ³
+        À- 3  5   1 Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty3}
+\begin{paste}{ugxMatrixOpsPageEmpty3}{ugxMatrixOpsPagePatch3}
+\pastebutton{ugxMatrixOpsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{n := matrix([[1,0,-2],[-3,5,1]])\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch4}
+\begin{paste}{ugxMatrixOpsPageFull4}{ugxMatrixOpsPageEmpty4}
+\pastebutton{ugxMatrixOpsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{m * n\free{m n }}
+\indentrel{3}\begin{verbatim}
+        Ú- 5  10   0 ¿
+   (4)  ³            ³
+        À- 9  20  - 2Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty4}
+\begin{paste}{ugxMatrixOpsPageEmpty4}{ugxMatrixOpsPagePatch4}
+\pastebutton{ugxMatrixOpsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m * n\free{m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch5}
+\begin{paste}{ugxMatrixOpsPageFull5}{ugxMatrixOpsPageEmpty5}
+\pastebutton{ugxMatrixOpsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{vec := column(n,3)\free{n }\bound{vec }}
+\indentrel{3}\begin{verbatim}
+   (5)  [- 2,1]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty5}
+\begin{paste}{ugxMatrixOpsPageEmpty5}{ugxMatrixOpsPagePatch5}
+\pastebutton{ugxMatrixOpsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{vec := column(n,3)\free{n }\bound{vec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch6}
+\begin{paste}{ugxMatrixOpsPageFull6}{ugxMatrixOpsPageEmpty6}
+\pastebutton{ugxMatrixOpsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{vec * m\free{vec m }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,0]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty6}
+\begin{paste}{ugxMatrixOpsPageEmpty6}{ugxMatrixOpsPagePatch6}
+\pastebutton{ugxMatrixOpsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{vec * m\free{vec m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch7}
+\begin{paste}{ugxMatrixOpsPageFull7}{ugxMatrixOpsPageEmpty7}
+\pastebutton{ugxMatrixOpsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{m * vec\free{vec m }}
+\indentrel{3}\begin{verbatim}
+   (7)  [0,- 2]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty7}
+\begin{paste}{ugxMatrixOpsPageEmpty7}{ugxMatrixOpsPagePatch7}
+\pastebutton{ugxMatrixOpsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m * vec\free{vec m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch8}
+\begin{paste}{ugxMatrixOpsPageFull8}{ugxMatrixOpsPageEmpty8}
+\pastebutton{ugxMatrixOpsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{hilb := matrix([[1/(i + j) for i in 1..3] for j in 1..3])\bound{hilb }}
+\indentrel{3}\begin{verbatim}
+        Ú1  1  1¿
+        ³Ä  Ä  Ä³
+        ³2  3  4³
+        ³       ³
+        ³1  1  1³
+   (8)  ³Ä  Ä  Ä³
+        ³3  4  5³
+        ³       ³
+        ³1  1  1³
+        ³Ä  Ä  Ä³
+        À4  5  6Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty8}
+\begin{paste}{ugxMatrixOpsPageEmpty8}{ugxMatrixOpsPagePatch8}
+\pastebutton{ugxMatrixOpsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{hilb := matrix([[1/(i + j) for i in 1..3] for j in 1..3])\bound{hilb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch9}
+\begin{paste}{ugxMatrixOpsPageFull9}{ugxMatrixOpsPageEmpty9}
+\pastebutton{ugxMatrixOpsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{inverse(hilb)\free{hilb }}
+\indentrel{3}\begin{verbatim}
+        Ú 72    - 240   180 ¿
+        ³                   ³
+   (9)  ³- 240   900   - 720³
+        ³                   ³
+        À 180   - 720   600 Ù
+               Type: Union(Matrix Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty9}
+\begin{paste}{ugxMatrixOpsPageEmpty9}{ugxMatrixOpsPagePatch9}
+\pastebutton{ugxMatrixOpsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{inverse(hilb)\free{hilb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch10}
+\begin{paste}{ugxMatrixOpsPageFull10}{ugxMatrixOpsPageEmpty10}
+\pastebutton{ugxMatrixOpsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{mm := matrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])\bound{mm }}
+\indentrel{3}\begin{verbatim}
+         Ú1   2   3   4 ¿
+         ³              ³
+         ³5   6   7   8 ³
+   (10)  ³              ³
+         ³9   10  11  12³
+         ³              ³
+         À13  14  15  16Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty10}
+\begin{paste}{ugxMatrixOpsPageEmpty10}{ugxMatrixOpsPagePatch10}
+\pastebutton{ugxMatrixOpsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{mm := matrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])\bound{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch11}
+\begin{paste}{ugxMatrixOpsPageFull11}{ugxMatrixOpsPageEmpty11}
+\pastebutton{ugxMatrixOpsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{inverse(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (11)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty11}
+\begin{paste}{ugxMatrixOpsPageEmpty11}{ugxMatrixOpsPagePatch11}
+\pastebutton{ugxMatrixOpsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{inverse(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch12}
+\begin{paste}{ugxMatrixOpsPageFull12}{ugxMatrixOpsPageEmpty12}
+\pastebutton{ugxMatrixOpsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{determinant(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (12)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty12}
+\begin{paste}{ugxMatrixOpsPageEmpty12}{ugxMatrixOpsPagePatch12}
+\pastebutton{ugxMatrixOpsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{determinant(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch13}
+\begin{paste}{ugxMatrixOpsPageFull13}{ugxMatrixOpsPageEmpty13}
+\pastebutton{ugxMatrixOpsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{trace(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (13)  34
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty13}
+\begin{paste}{ugxMatrixOpsPageEmpty13}{ugxMatrixOpsPagePatch13}
+\pastebutton{ugxMatrixOpsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{trace(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch14}
+\begin{paste}{ugxMatrixOpsPageFull14}{ugxMatrixOpsPageEmpty14}
+\pastebutton{ugxMatrixOpsPageFull14}{\hidepaste}
+\tab{5}\spadcommand{rank(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (14)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty14}
+\begin{paste}{ugxMatrixOpsPageEmpty14}{ugxMatrixOpsPagePatch14}
+\pastebutton{ugxMatrixOpsPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{rank(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch15}
+\begin{paste}{ugxMatrixOpsPageFull15}{ugxMatrixOpsPageEmpty15}
+\pastebutton{ugxMatrixOpsPageFull15}{\hidepaste}
+\tab{5}\spadcommand{nullity(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (15)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty15}
+\begin{paste}{ugxMatrixOpsPageEmpty15}{ugxMatrixOpsPagePatch15}
+\pastebutton{ugxMatrixOpsPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{nullity(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch16}
+\begin{paste}{ugxMatrixOpsPageFull16}{ugxMatrixOpsPageEmpty16}
+\pastebutton{ugxMatrixOpsPageFull16}{\hidepaste}
+\tab{5}\spadcommand{nullSpace(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+   (16)  [[1,- 2,1,0],[2,- 3,0,1]]
+                              Type: List Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty16}
+\begin{paste}{ugxMatrixOpsPageEmpty16}{ugxMatrixOpsPagePatch16}
+\pastebutton{ugxMatrixOpsPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{nullSpace(mm)\free{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPagePatch17}
+\begin{paste}{ugxMatrixOpsPageFull17}{ugxMatrixOpsPageEmpty17}
+\pastebutton{ugxMatrixOpsPageFull17}{\hidepaste}
+\tab{5}\spadcommand{rowEchelon(mm)\free{mm }}
+\indentrel{3}\begin{verbatim}
+         Ú1  2  3  4 ¿
+         ³           ³
+         ³0  4  8  12³
+   (17)  ³           ³
+         ³0  0  0  0 ³
+         ³           ³
+         À0  0  0  0 Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxMatrixOpsPageEmpty17}
+\begin{paste}{ugxMatrixOpsPageEmpty17}{ugxMatrixOpsPagePatch17}
+\pastebutton{ugxMatrixOpsPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{rowEchelon(mm)\free{mm }}
+\end{paste}\end{patch}
+
 @
 \section{mkfunc.ht}
 \pagehead{MakeFunctionXmpPage}{mkfunc.ht}{MakeFunction}
@@ -16232,6 +43837,177 @@ in Section 6.14\ignore{ugUserMake}.
 \autobuttons
 \end{page}
 
+\begin{patch}{MakeFunctionXmpPagePatch1}
+\begin{paste}{MakeFunctionXmpPageFull1}{MakeFunctionXmpPageEmpty1}
+\pastebutton{MakeFunctionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3\bound{expr }}
+\indentrel{3}\begin{verbatim}
+   (1)
+       3   x 2        4     3   x    5     4    3      2 3
+     (x (%e )  + (- 2x  - 2x )%e  + x  + 2x  + x )sin(x )
+   + 
+          2   x 2        3     2   x     4     3     2
+       (3x (%e )  + (- 6x  - 6x )%e  + 3x  + 6x  + 3x )
+    *
+            2 2
+       sin(x )
+   + 
+            x 2        2        x     3     2           2
+     (3x (%e )  + (- 6x  - 6x)%e  + 3x  + 6x  + 3x)sin(x )
+   + 
+        x 2               x    2
+     (%e )  + (- 2x - 2)%e  + x  + 2x + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty1}
+\begin{paste}{MakeFunctionXmpPageEmpty1}{MakeFunctionXmpPagePatch1}
+\pastebutton{MakeFunctionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3\bound{expr }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch2}
+\begin{paste}{MakeFunctionXmpPageFull2}{MakeFunctionXmpPageEmpty2}
+\pastebutton{MakeFunctionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{function(expr, f, x)\bound{f }\free{expr }}
+\indentrel{3}\begin{verbatim}
+   (2)  f
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty2}
+\begin{paste}{MakeFunctionXmpPageEmpty2}{MakeFunctionXmpPagePatch2}
+\pastebutton{MakeFunctionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{function(expr, f, x)\bound{f }\free{expr }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch3}
+\begin{paste}{MakeFunctionXmpPageFull3}{MakeFunctionXmpPageEmpty3}
+\pastebutton{MakeFunctionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{tbl := [f(0.1 * i - 1) for i in 0..20];\free{f }\bound{tbl }}
+\indentrel{3}\begin{verbatim}
+                                       Type: List Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty3}
+\begin{paste}{MakeFunctionXmpPageEmpty3}{MakeFunctionXmpPagePatch3}
+\pastebutton{MakeFunctionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{tbl := [f(0.1 * i - 1) for i in 0..20];\free{f }\bound{tbl }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch4}
+\begin{paste}{MakeFunctionXmpPageFull4}{MakeFunctionXmpPageEmpty4}
+\pastebutton{MakeFunctionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{e := (x - y + 1)**2 * (x**2 * y + 1)**2\bound{e }}
+\indentrel{3}\begin{verbatim}
+   (4)
+      4 4        5     4     2  3
+     x y  + (- 2x  - 2x  + 2x )y
+   + 
+       6     5    4     3     2      2
+     (x  + 2x  + x  - 4x  - 4x  + 1)y
+   + 
+        4     3     2               2
+     (2x  + 4x  + 2x  - 2x - 2)y + x  + 2x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty4}
+\begin{paste}{MakeFunctionXmpPageEmpty4}{MakeFunctionXmpPagePatch4}
+\pastebutton{MakeFunctionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{e := (x - y + 1)**2 * (x**2 * y + 1)**2\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch5}
+\begin{paste}{MakeFunctionXmpPageFull5}{MakeFunctionXmpPageEmpty5}
+\pastebutton{MakeFunctionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{function(e, g, [x, y])\free{e }}
+\indentrel{3}\begin{verbatim}
+   (5)  g
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty5}
+\begin{paste}{MakeFunctionXmpPageEmpty5}{MakeFunctionXmpPagePatch5}
+\pastebutton{MakeFunctionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{function(e, g, [x, y])\free{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch6}
+\begin{paste}{MakeFunctionXmpPageFull6}{MakeFunctionXmpPageEmpty6}
+\pastebutton{MakeFunctionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{function(e, h, x, y)\free{e }\bound{h }}
+\indentrel{3}\begin{verbatim}
+   (6)  h
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty6}
+\begin{paste}{MakeFunctionXmpPageEmpty6}{MakeFunctionXmpPagePatch6}
+\pastebutton{MakeFunctionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{function(e, h, x, y)\free{e }\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch7}
+\begin{paste}{MakeFunctionXmpPageFull7}{MakeFunctionXmpPageEmpty7}
+\pastebutton{MakeFunctionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{m1 := squareMatrix [[1, 2], [3, 4]]\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (7)  ³    ³
+        À3  4Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty7}
+\begin{paste}{MakeFunctionXmpPageEmpty7}{MakeFunctionXmpPagePatch7}
+\pastebutton{MakeFunctionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m1 := squareMatrix [[1, 2], [3, 4]]\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch8}
+\begin{paste}{MakeFunctionXmpPageFull8}{MakeFunctionXmpPageEmpty8}
+\pastebutton{MakeFunctionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{m2 := squareMatrix [[1, 0], [-1, 1]]\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú 1   0¿
+   (8)  ³      ³
+        À- 1  1Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty8}
+\begin{paste}{MakeFunctionXmpPageEmpty8}{MakeFunctionXmpPagePatch8}
+\pastebutton{MakeFunctionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{m2 := squareMatrix [[1, 0], [-1, 1]]\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPagePatch9}
+\begin{paste}{MakeFunctionXmpPageFull9}{MakeFunctionXmpPageEmpty9}
+\pastebutton{MakeFunctionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{h(m1, m2)\free{h m1 m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú- 7836   8960 ¿
+   (9)  ³              ³
+        À- 17132  19588Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MakeFunctionXmpPageEmpty9}
+\begin{paste}{MakeFunctionXmpPageEmpty9}{MakeFunctionXmpPagePatch9}
+\pastebutton{MakeFunctionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{h(m1, m2)\free{h m1 m2 }}
+\end{paste}\end{patch}
+
 @
 \section{mpoly.ht}
 \pagehead{MultivariatePolyXmpPage}{mpoly.ht}
@@ -16345,6 +44121,196 @@ For more information on related topics, see
 \autobuttons
 \end{page}
 
+\begin{patch}{MultivariatePolyXmpPagePatch1}
+\begin{paste}{MultivariatePolyXmpPageFull1}{MultivariatePolyXmpPageEmpty1}
+\pastebutton{MultivariatePolyXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2\bound{m }}
+\indentrel{3}\begin{verbatim}
+         4     3 3     6       2     4      2
+   (1)  x  - 2y x  + (y  + 6y)x  - 6y x + 9y
+            Type: MultivariatePolynomial([x,y],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty1}
+\begin{paste}{MultivariatePolyXmpPageEmpty1}{MultivariatePolyXmpPagePatch1}
+\pastebutton{MultivariatePolyXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch2}
+\begin{paste}{MultivariatePolyXmpPageFull2}{MultivariatePolyXmpPageEmpty2}
+\pastebutton{MultivariatePolyXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+         2 6       4     3 3     2     2     4
+   (2)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
+            Type: MultivariatePolynomial([y,x],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty2}
+\begin{paste}{MultivariatePolyXmpPageEmpty2}{MultivariatePolyXmpPagePatch2}
+\pastebutton{MultivariatePolyXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch3}
+\begin{paste}{MultivariatePolyXmpPageFull3}{MultivariatePolyXmpPageEmpty3}
+\pastebutton{MultivariatePolyXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p : MPOLY([x,y],POLY INT)\bound{pdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty3}
+\begin{paste}{MultivariatePolyXmpPageEmpty3}{MultivariatePolyXmpPagePatch3}
+\pastebutton{MultivariatePolyXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p : MPOLY([x,y],POLY INT)\bound{pdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch4}
+\begin{paste}{MultivariatePolyXmpPageFull4}{MultivariatePolyXmpPageEmpty4}
+\pastebutton{MultivariatePolyXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{p := (a**2*x - b*y**2 + 1)**2\free{pdec }\bound{p }}
+\indentrel{3}\begin{verbatim}
+         4 2        2   2     2      2 4       2
+   (4)  a x  + (- 2a b y  + 2a )x + b y  - 2b y  + 1
+ Type: MultivariatePolynomial([x,y],Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty4}
+\begin{paste}{MultivariatePolyXmpPageEmpty4}{MultivariatePolyXmpPagePatch4}
+\pastebutton{MultivariatePolyXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p := (a**2*x - b*y**2 + 1)**2\free{pdec }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch5}
+\begin{paste}{MultivariatePolyXmpPageFull5}{MultivariatePolyXmpPageEmpty5}
+\pastebutton{MultivariatePolyXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p :: POLY INT\free{p }\bound{prev }}
+\indentrel{3}\begin{verbatim}
+         2 4        2          2    4 2     2
+   (5)  b y  + (- 2a b x - 2b)y  + a x  + 2a x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty5}
+\begin{paste}{MultivariatePolyXmpPageEmpty5}{MultivariatePolyXmpPagePatch5}
+\pastebutton{MultivariatePolyXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p :: POLY INT\free{p }\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch6}
+\begin{paste}{MultivariatePolyXmpPageFull6}{MultivariatePolyXmpPageEmpty6}
+\pastebutton{MultivariatePolyXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{\% :: MPOLY([a,b],POLY INT)\free{prev }}
+\indentrel{3}\begin{verbatim}
+         2 4          2        2    4 2     2
+   (6)  x a  + (- 2x y b + 2x)a  + y b  - 2y b + 1
+ Type: MultivariatePolynomial([a,b],Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty6}
+\begin{paste}{MultivariatePolyXmpPageEmpty6}{MultivariatePolyXmpPagePatch6}
+\pastebutton{MultivariatePolyXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{\% :: MPOLY([a,b],POLY INT)\free{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch7}
+\begin{paste}{MultivariatePolyXmpPageFull7}{MultivariatePolyXmpPageEmpty7}
+\pastebutton{MultivariatePolyXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{q : UP(x, FRAC MPOLY([y,z],INT))\bound{qdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty7}
+\begin{paste}{MultivariatePolyXmpPageEmpty7}{MultivariatePolyXmpPagePatch7}
+\pastebutton{MultivariatePolyXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{q : UP(x, FRAC MPOLY([y,z],INT))\bound{qdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch8}
+\begin{paste}{MultivariatePolyXmpPageFull8}{MultivariatePolyXmpPageEmpty8}
+\pastebutton{MultivariatePolyXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{q := (x**2 - x*(z+1)/y +2)**2\free{qdec }\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (8)
+                          2    2
+      4   - 2z - 2  3   4y  + z  + 2z + 1  2   - 4z - 4
+     x  + ÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x
+              y                  2                 y
+                                y
+   + 
+     4
+Type: UnivariatePolynomial(x,Fraction MultivariatePolynomial([y,z],Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty8}
+\begin{paste}{MultivariatePolyXmpPageEmpty8}{MultivariatePolyXmpPagePatch8}
+\pastebutton{MultivariatePolyXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{q := (x**2 - x*(z+1)/y +2)**2\free{qdec }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch9}
+\begin{paste}{MultivariatePolyXmpPageFull9}{MultivariatePolyXmpPageEmpty9}
+\pastebutton{MultivariatePolyXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{q :: UP(z, FRAC MPOLY([x,y],INT))\free{q }}
+\indentrel{3}\begin{verbatim}
+   (9)
+      2            3     2
+     x   2   - 2y x  + 2x  - 4y x
+     ÄÄ z  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ z
+      2                2
+     y                y
+   + 
+      2 4       3      2      2            2
+     y x  - 2y x  + (4y  + 1)x  - 4y x + 4y
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                         2
+                        y
+Type: UnivariatePolynomial(z,Fraction MultivariatePolynomial([x,y],Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty9}
+\begin{paste}{MultivariatePolyXmpPageEmpty9}{MultivariatePolyXmpPagePatch9}
+\pastebutton{MultivariatePolyXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{q :: UP(z, FRAC MPOLY([x,y],INT))\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPagePatch10}
+\begin{paste}{MultivariatePolyXmpPageFull10}{MultivariatePolyXmpPageEmpty10}
+\pastebutton{MultivariatePolyXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{q :: MPOLY([x,z], FRAC UP(y,INT))\free{q }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                                            2
+      4      2     2  3     1  2    2     4y  + 1  2
+     x  + (- Ä z - Ä)x  + (ÄÄ z  + ÄÄ z + ÄÄÄÄÄÄÄ)x
+             y     y        2       2         2
+                           y       y         y
+   + 
+        4     4
+     (- Ä z - Ä)x + 4
+        y     y
+Type: MultivariatePolynomial([x,z],Fraction UnivariatePolynomial(y,Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{MultivariatePolyXmpPageEmpty10}
+\begin{paste}{MultivariatePolyXmpPageEmpty10}{MultivariatePolyXmpPagePatch10}
+\pastebutton{MultivariatePolyXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{q :: MPOLY([x,z], FRAC UP(y,INT))\free{q }}
+\end{paste}\end{patch}
+
 @
 \section{newuser.ht}
 \pagehead{NoMoreHelpPage}{newuser.ht}{No More Help :-(}
@@ -16398,6 +44364,54 @@ type directly, such as \spadtype{List NonNegativeInteger}, do it this way.
 \autobuttons
 \end{page}
 
+\begin{patch}{NoneXmpPagePatch1}
+\begin{paste}{NoneXmpPageFull1}{NoneXmpPageEmpty1}
+\pastebutton{NoneXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{[]}
+\indentrel{3}\begin{verbatim}
+   (1)  []
+                                        Type: List None
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{NoneXmpPageEmpty1}
+\begin{paste}{NoneXmpPageEmpty1}{NoneXmpPagePatch1}
+\pastebutton{NoneXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{[]}
+\end{paste}\end{patch}
+
+\begin{patch}{NoneXmpPagePatch2}
+\begin{paste}{NoneXmpPageFull2}{NoneXmpPageEmpty2}
+\pastebutton{NoneXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{[] :: List Float}
+\indentrel{3}\begin{verbatim}
+   (2)  []
+                                       Type: List Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{NoneXmpPageEmpty2}
+\begin{paste}{NoneXmpPageEmpty2}{NoneXmpPagePatch2}
+\pastebutton{NoneXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{[] :: List Float}
+\end{paste}\end{patch}
+
+\begin{patch}{NoneXmpPagePatch3}
+\begin{paste}{NoneXmpPageFull3}{NoneXmpPageEmpty3}
+\pastebutton{NoneXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[]$List(NonNegativeInteger)}
+\indentrel{3}\begin{verbatim}
+   (3)  []
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{NoneXmpPageEmpty3}
+\begin{paste}{NoneXmpPageEmpty3}{NoneXmpPagePatch3}
+\pastebutton{NoneXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[]$List(NonNegativeInteger)}
+\end{paste}\end{patch}
+
 @
 \section{numbers.ht}
 \pagehead{NumberPage}{numbers.ht}{Axiom Number Types}
@@ -16495,6 +44509,81 @@ Quotients over an arbitrary integral domain
 \autobuttons
 \end{page}
 
+\begin{patch}{FractionPagePatch1}
+\begin{paste}{FractionPageFull1}{FractionPageEmpty1}
+\pastebutton{FractionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{1/4 - 1/5}
+\indentrel{3}\begin{verbatim}
+         1
+   (1)  ÄÄ
+        20
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionPageEmpty1}
+\begin{paste}{FractionPageEmpty1}{FractionPagePatch1}
+\pastebutton{FractionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{1/4 - 1/5}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionPagePatch2}
+\begin{paste}{FractionPageFull2}{FractionPageEmpty2}
+\pastebutton{FractionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := (x**2 + 1)/(x - 1)\bound{f }}
+\indentrel{3}\begin{verbatim}
+         2
+        x  + 1
+   (2)  ÄÄÄÄÄÄ
+         x - 1
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionPageEmpty2}
+\begin{paste}{FractionPageEmpty2}{FractionPagePatch2}
+\pastebutton{FractionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := (x**2 + 1)/(x - 1)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionPagePatch3}
+\begin{paste}{FractionPageFull3}{FractionPageEmpty3}
+\pastebutton{FractionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{g := (x**2 - 3*x + 2)/(x + 2)\bound{g }}
+\indentrel{3}\begin{verbatim}
+         2
+        x  - 3x + 2
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄ
+           x + 2
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionPageEmpty3}
+\begin{paste}{FractionPageEmpty3}{FractionPagePatch3}
+\pastebutton{FractionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{g := (x**2 - 3*x + 2)/(x + 2)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{FractionPagePatch4}
+\begin{paste}{FractionPageFull4}{FractionPageEmpty4}
+\pastebutton{FractionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f * g\free{f g }}
+\indentrel{3}\begin{verbatim}
+         3     2
+        x  - 2x  + x - 2
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              x + 2
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{FractionPageEmpty4}
+\begin{paste}{FractionPageEmpty4}{FractionPagePatch4}
+\pastebutton{FractionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f * g\free{f g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{RationalNumberPage}{numbers.ht}{Rational Number}
 <<numbers.ht>>=
@@ -16521,6 +44610,111 @@ command:
 \autobuttons
 \end{page}
 
+\begin{patch}{RationalNumberPagePatch1}
+\begin{paste}{RationalNumberPageFull1}{RationalNumberPageEmpty1}
+\pastebutton{RationalNumberPageFull1}{\hidepaste}
+\tab{5}\spadcommand{61657 ** 10 / 999983 ** 12}
+\indentrel{3}\begin{verbatim}
+   (1)
+     794006207119672937688869745365148806136551203249
+  /
+    9997960190729191813417704955587887712239578440952258_
+     46167460930641229761
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty1}
+\begin{paste}{RationalNumberPageEmpty1}{RationalNumberPagePatch1}
+\pastebutton{RationalNumberPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{61657 ** 10 / 999983 ** 12}
+\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPagePatch2}
+\begin{paste}{RationalNumberPageFull2}{RationalNumberPageEmpty2}
+\pastebutton{RationalNumberPageFull2}{\hidepaste}
+\tab{5}\spadcommand{x := 104348/33215\bound{x }}
+\indentrel{3}\begin{verbatim}
+        104348
+   (2)  ÄÄÄÄÄÄ
+         33215
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty2}
+\begin{paste}{RationalNumberPageEmpty2}{RationalNumberPagePatch2}
+\pastebutton{RationalNumberPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{x := 104348/33215\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPagePatch3}
+\begin{paste}{RationalNumberPageFull3}{RationalNumberPageEmpty3}
+\pastebutton{RationalNumberPageFull3}{\hidepaste}
+\tab{5}\spadcommand{numeric x\free{x }}
+\indentrel{3}\begin{verbatim}
+   (3)  3.1415926539 214210447
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty3}
+\begin{paste}{RationalNumberPageEmpty3}{RationalNumberPagePatch3}
+\pastebutton{RationalNumberPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{numeric x\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPagePatch4}
+\begin{paste}{RationalNumberPageFull4}{RationalNumberPageEmpty4}
+\pastebutton{RationalNumberPageFull4}{\hidepaste}
+\tab{5}\spadcommand{numer(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (4)  104348
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty4}
+\begin{paste}{RationalNumberPageEmpty4}{RationalNumberPagePatch4}
+\pastebutton{RationalNumberPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{numer(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPagePatch5}
+\begin{paste}{RationalNumberPageFull5}{RationalNumberPageEmpty5}
+\pastebutton{RationalNumberPageFull5}{\hidepaste}
+\tab{5}\spadcommand{denom(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (5)  33215
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty5}
+\begin{paste}{RationalNumberPageEmpty5}{RationalNumberPagePatch5}
+\pastebutton{RationalNumberPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{denom(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPagePatch6}
+\begin{paste}{RationalNumberPageFull6}{RationalNumberPageEmpty6}
+\pastebutton{RationalNumberPageFull6}{\hidepaste}
+\tab{5}\spadcommand{factor(numer x) / factor(denom x)\free{x }}
+\indentrel{3}\begin{verbatim}
+         2
+        2 19 1373
+   (6)  ÄÄÄÄÄÄÄÄÄ
+        5 7 13 73
+                        Type: Fraction Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RationalNumberPageEmpty6}
+\begin{paste}{RationalNumberPageEmpty6}{RationalNumberPagePatch6}
+\pastebutton{RationalNumberPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{factor(numer x) / factor(denom x)\free{x }}
+\end{paste}\end{patch}
+
 @
 \pagehead{IntegerPage}{numbers.ht}{Integers}
 \pagepic{ps/v71integerpage.eps}{IntegerPage}
@@ -16570,6 +44764,160 @@ Problems from number theory.
 \autobuttons
 \end{page}
 
+\begin{patch}{IntegerPagePatch1}
+\begin{paste}{IntegerPageFull1}{IntegerPageEmpty1}
+\pastebutton{IntegerPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x := factorial(200)\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)
+  788657867364790503552363213932185062295135977687173263_
+   29474253324435944996340334292030428401198462390417721_
+   21389196388302576427902426371050619266249528299311134_
+   62857270763317237396988943922445621451664240254033291_
+   86413122742829485327752424240757390324032125740557956_
+   86602260319041703240623517008587961789222227896237038_
+   97374720000000000000000000000000000000000000000000000_
+   000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty1}
+\begin{paste}{IntegerPageEmpty1}{IntegerPagePatch1}
+\pastebutton{IntegerPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x := factorial(200)\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch2}
+\begin{paste}{IntegerPageFull2}{IntegerPageEmpty2}
+\pastebutton{IntegerPageFull2}{\hidepaste}
+\tab{5}\spadcommand{y := 2**90 - 1\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (2)  1237940039285380274899124223
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty2}
+\begin{paste}{IntegerPageEmpty2}{IntegerPagePatch2}
+\pastebutton{IntegerPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{y := 2**90 - 1\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch3}
+\begin{paste}{IntegerPageFull3}{IntegerPageEmpty3}
+\pastebutton{IntegerPageFull3}{\hidepaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (3)
+  788657867364790503552363213932185062295135977687173263_
+   29474253324435944996340334292030428401198462390417721_
+   21389196388302576427902426371050619266249528299311134_
+   62857270763317237396988943922445621451664240254033291_
+   86413122742829485327752424240757390324032125740557956_
+   86602260319041703240623517008587961789222227896237038_
+   97374720000000000000000000001237940039285380274899124_
+   223
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty3}
+\begin{paste}{IntegerPageEmpty3}{IntegerPagePatch3}
+\pastebutton{IntegerPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x + y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch4}
+\begin{paste}{IntegerPageFull4}{IntegerPageEmpty4}
+\pastebutton{IntegerPageFull4}{\hidepaste}
+\tab{5}\spadcommand{x - y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (4)
+  788657867364790503552363213932185062295135977687173263_
+   29474253324435944996340334292030428401198462390417721_
+   21389196388302576427902426371050619266249528299311134_
+   62857270763317237396988943922445621451664240254033291_
+   86413122742829485327752424240757390324032125740557956_
+   86602260319041703240623517008587961789222227896237038_
+   97374719999999999999999999998762059960714619725100875_
+   777
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty4}
+\begin{paste}{IntegerPageEmpty4}{IntegerPagePatch4}
+\pastebutton{IntegerPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{x - y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch5}
+\begin{paste}{IntegerPageFull5}{IntegerPageEmpty5}
+\pastebutton{IntegerPageFull5}{\hidepaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  976311151308292982184363119660950225776642966765414042_
+   37079496488133389834070329188092355479782812765687260_
+   17975734913119466356078732929100728088106228471338396_
+   75509315106953260921744797014165125163884859138819053_
+   52475858689630194698878995048210905618067437176553811_
+   33973032509524956986554360537566475497856969235918273_
+   09521182392695050703382396859842560000000000000000000_
+   000000000000000000000000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty5}
+\begin{paste}{IntegerPageEmpty5}{IntegerPagePatch5}
+\pastebutton{IntegerPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{x * y\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch6}
+\begin{paste}{IntegerPageFull6}{IntegerPageEmpty6}
+\pastebutton{IntegerPageFull6}{\hidepaste}
+\tab{5}\spadcommand{factor(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (6)
+      197 97 49 32  19  16  11  10  8  6  6  5  4  4  4  3
+     2   3  5  7  11  13  17  19  23 29 31 37 41 43 47 53
+  *
+       3  3  2  2  2  2  2  2  2
+     59 61 67 71 73 79 83 89 97 101 103 107 109 113 127
+  *
+     131 137 139 149 151 157 163 167 173 179 181 191 193
+  *
+     197 199
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty6}
+\begin{paste}{IntegerPageEmpty6}{IntegerPagePatch6}
+\pastebutton{IntegerPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{factor(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerPagePatch7}
+\begin{paste}{IntegerPageFull7}{IntegerPageEmpty7}
+\pastebutton{IntegerPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factor(y)\free{y }}
+\indentrel{3}\begin{verbatim}
+         3
+   (7)  3 7 11 19 31 73 151 331 631 23311 18837001
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerPageEmpty7}
+\begin{paste}{IntegerPageEmpty7}{IntegerPagePatch7}
+\pastebutton{IntegerPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factor(y)\free{y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{IntegerExamplePage}{numbers.ht}{Integer Examples}
 \pagepic{ps/v71integerexamplepage.eps}{IntegerExamplePage}
@@ -16599,6 +44947,89 @@ Obviously, Fermat didn't have access to Axiom!
 \autobuttons
 \end{page}
 
+\begin{patch}{IntegerExamplePagePatch1}
+\begin{paste}{IntegerExamplePageFull1}{IntegerExamplePageEmpty1}
+\pastebutton{IntegerExamplePageFull1}{\hidepaste}
+\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePageEmpty1}
+\begin{paste}{IntegerExamplePageEmpty1}{IntegerExamplePagePatch1}
+\pastebutton{IntegerExamplePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePagePatch2}
+\begin{paste}{IntegerExamplePageFull2}{IntegerExamplePageEmpty2}
+\pastebutton{IntegerExamplePageFull2}{\hidepaste}
+\tab{5}\spadcommand{f(n) == 2**(2**n) + 1\bound{f }\free{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePageEmpty2}
+\begin{paste}{IntegerExamplePageEmpty2}{IntegerExamplePagePatch2}
+\pastebutton{IntegerExamplePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f(n) == 2**(2**n) + 1\bound{f }\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePagePatch3}
+\begin{paste}{IntegerExamplePageFull3}{IntegerExamplePageEmpty3}
+\pastebutton{IntegerExamplePageFull3}{\hidepaste}
+\tab{5}\spadcommand{factor f(1)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  5
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePageEmpty3}
+\begin{paste}{IntegerExamplePageEmpty3}{IntegerExamplePagePatch3}
+\pastebutton{IntegerExamplePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{factor f(1)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePagePatch4}
+\begin{paste}{IntegerExamplePageFull4}{IntegerExamplePageEmpty4}
+\pastebutton{IntegerExamplePageFull4}{\hidepaste}
+\tab{5}\spadcommand{factor f(2)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (4)  17
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePageEmpty4}
+\begin{paste}{IntegerExamplePageEmpty4}{IntegerExamplePagePatch4}
+\pastebutton{IntegerExamplePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factor f(2)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePagePatch5}
+\begin{paste}{IntegerExamplePageFull5}{IntegerExamplePageEmpty5}
+\pastebutton{IntegerExamplePageFull5}{\hidepaste}
+\tab{5}\spadcommand{for n in 1..6 repeat output factor f(n)\free{f }}
+\indentrel{3}\begin{verbatim}
+   5
+   17
+   257
+   65537
+   641 6700417
+   274177 67280421310721
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerExamplePageEmpty5}
+\begin{paste}{IntegerExamplePageEmpty5}{IntegerExamplePagePatch5}
+\pastebutton{IntegerExamplePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{for n in 1..6 repeat output factor f(n)\free{f }}
+\end{paste}\end{patch}
+
 @
 \pagehead{IntegerExampleProofPage}{numbers.ht}{Integer Example Proof}
 <<numbers.ht>>=
@@ -16707,6 +45138,156 @@ is composite:
 \autobuttons
 \end{page}
 
+\begin{patch}{IntegerProblemAnswerPage1Patch1}
+\begin{paste}{IntegerProblemAnswerPage1Full1}{IntegerProblemAnswerPage1Empty1}
+\pastebutton{IntegerProblemAnswerPage1Full1}{\hidepaste}
+\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty1}
+\begin{paste}{IntegerProblemAnswerPage1Empty1}{IntegerProblemAnswerPage1Patch1}
+\pastebutton{IntegerProblemAnswerPage1Empty1}{\showpaste}
+\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch2}
+\begin{paste}{IntegerProblemAnswerPage1Full2}{IntegerProblemAnswerPage1Empty2}
+\pastebutton{IntegerProblemAnswerPage1Full2}{\hidepaste}
+\tab{5}\spadcommand{f(n) == 2**n - 1\bound{f }\free{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty2}
+\begin{paste}{IntegerProblemAnswerPage1Empty2}{IntegerProblemAnswerPage1Patch2}
+\pastebutton{IntegerProblemAnswerPage1Empty2}{\showpaste}
+\tab{5}\spadcommand{f(n) == 2**n - 1\bound{f }\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch3}
+\begin{paste}{IntegerProblemAnswerPage1Full3}{IntegerProblemAnswerPage1Empty3}
+\pastebutton{IntegerProblemAnswerPage1Full3}{\hidepaste}
+\tab{5}\spadcommand{factor f(7)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  127
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty3}
+\begin{paste}{IntegerProblemAnswerPage1Empty3}{IntegerProblemAnswerPage1Patch3}
+\pastebutton{IntegerProblemAnswerPage1Empty3}{\showpaste}
+\tab{5}\spadcommand{factor f(7)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch4}
+\begin{paste}{IntegerProblemAnswerPage1Full4}{IntegerProblemAnswerPage1Empty4}
+\pastebutton{IntegerProblemAnswerPage1Full4}{\hidepaste}
+\tab{5}\spadcommand{ints := [n for n in 1..]\bound{ints }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,2,3,4,5,6,7,8,9,10,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty4}
+\begin{paste}{IntegerProblemAnswerPage1Empty4}{IntegerProblemAnswerPage1Patch4}
+\pastebutton{IntegerProblemAnswerPage1Empty4}{\showpaste}
+\tab{5}\spadcommand{ints := [n for n in 1..]\bound{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch5}
+\begin{paste}{IntegerProblemAnswerPage1Full5}{IntegerProblemAnswerPage1Empty5}
+\pastebutton{IntegerProblemAnswerPage1Full5}{\hidepaste}
+\tab{5}\spadcommand{primes := [x for x in ints | prime? x]\bound{primes }\free{ints }}
+\indentrel{3}\begin{verbatim}
+   (5)  [2,3,5,7,11,13,17,19,23,29,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty5}
+\begin{paste}{IntegerProblemAnswerPage1Empty5}{IntegerProblemAnswerPage1Patch5}
+\pastebutton{IntegerProblemAnswerPage1Empty5}{\showpaste}
+\tab{5}\spadcommand{primes := [x for x in ints | prime? x]\bound{primes }\free{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch6}
+\begin{paste}{IntegerProblemAnswerPage1Full6}{IntegerProblemAnswerPage1Empty6}
+\pastebutton{IntegerProblemAnswerPage1Full6}{\hidepaste}
+\tab{5}\spadcommand{primes.25\free{primes }}
+\indentrel{3}\begin{verbatim}
+   (6)  97
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty6}
+\begin{paste}{IntegerProblemAnswerPage1Empty6}{IntegerProblemAnswerPage1Patch6}
+\pastebutton{IntegerProblemAnswerPage1Empty6}{\showpaste}
+\tab{5}\spadcommand{primes.25\free{primes }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch7}
+\begin{paste}{IntegerProblemAnswerPage1Full7}{IntegerProblemAnswerPage1Empty7}
+\pastebutton{IntegerProblemAnswerPage1Full7}{\hidepaste}
+\tab{5}\spadcommand{numbers := [f(n) for n in primes]\bound{numbers }\free{primes f }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607,
+    536870911, ...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty7}
+\begin{paste}{IntegerProblemAnswerPage1Empty7}{IntegerProblemAnswerPage1Patch7}
+\pastebutton{IntegerProblemAnswerPage1Empty7}{\showpaste}
+\tab{5}\spadcommand{numbers := [f(n) for n in primes]\bound{numbers }\free{primes f }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch8}
+\begin{paste}{IntegerProblemAnswerPage1Full8}{IntegerProblemAnswerPage1Empty8}
+\pastebutton{IntegerProblemAnswerPage1Full8}{\hidepaste}
+\tab{5}\spadcommand{factors := [factor n for n in numbers]\bound{factors }\free{numbers }}
+\indentrel{3}\begin{verbatim}
+   (8)
+   [3, 7, 31, 127, 23 89, 8191, 131071, 524287,
+    47 178481, 233 1103 2089, ...]
+                          Type: Stream Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty8}
+\begin{paste}{IntegerProblemAnswerPage1Empty8}{IntegerProblemAnswerPage1Patch8}
+\pastebutton{IntegerProblemAnswerPage1Empty8}{\showpaste}
+\tab{5}\spadcommand{factors := [factor n for n in numbers]\bound{factors }\free{numbers }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Patch9}
+\begin{paste}{IntegerProblemAnswerPage1Full9}{IntegerProblemAnswerPage1Empty9}
+\pastebutton{IntegerProblemAnswerPage1Full9}{\hidepaste}
+\tab{5}\spadcommand{nums := [x for x in numbers | not prime? x]\bound{nums }\free{numbers }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [2047, 8388607, 536870911, 137438953471,
+    2199023255551, 8796093022207, 140737488355327,
+    9007199254740991, 576460752303423487,
+    147573952589676412927, ...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage1Empty9}
+\begin{paste}{IntegerProblemAnswerPage1Empty9}{IntegerProblemAnswerPage1Patch9}
+\pastebutton{IntegerProblemAnswerPage1Empty9}{\showpaste}
+\tab{5}\spadcommand{nums := [x for x in numbers | not prime? x]\bound{nums }\free{numbers }}
+\end{paste}\end{patch}
+
 @
 \pagehead{IntegerProblemAnswerPage2}{numbers.ht}{Solution to Problem \#2}
 <<numbers.ht>>=
@@ -16727,6 +45308,46 @@ n**n - n + 41 is not prime.
 \autobuttons
 \end{page}
 
+\begin{patch}{IntegerProblemAnswerPage2Patch1}
+\begin{paste}{IntegerProblemAnswerPage2Full1}{IntegerProblemAnswerPage2Empty1}
+\pastebutton{IntegerProblemAnswerPage2Full1}{\hidepaste}
+\tab{5}\spadcommand{numbers := [n**2 - n + 41 for n in 0..40]\bound{numbers }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151,
+    173, 197, 223, 251, 281, 313, 347, 383, 421, 461,
+    503, 547, 593, 641, 691, 743, 797, 853, 911, 971,
+    1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage2Empty1}
+\begin{paste}{IntegerProblemAnswerPage2Empty1}{IntegerProblemAnswerPage2Patch1}
+\pastebutton{IntegerProblemAnswerPage2Empty1}{\showpaste}
+\tab{5}\spadcommand{numbers := [n**2 - n + 41 for n in 0..40]\bound{numbers }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage2Patch2}
+\begin{paste}{IntegerProblemAnswerPage2Full2}{IntegerProblemAnswerPage2Empty2}
+\pastebutton{IntegerProblemAnswerPage2Full2}{\hidepaste}
+\tab{5}\spadcommand{[factor n for n in numbers]\free{numbers }}
+\indentrel{3}\begin{verbatim}
+   (2)
+   [41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151,
+    173, 197, 223, 251, 281, 313, 347, 383, 421, 461,
+    503, 547, 593, 641, 691, 743, 797, 853, 911, 971,
+    1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601]
+                            Type: List Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerProblemAnswerPage2Empty2}
+\begin{paste}{IntegerProblemAnswerPage2Empty2}{IntegerProblemAnswerPage2Patch2}
+\pastebutton{IntegerProblemAnswerPage2Empty2}{\showpaste}
+\tab{5}\spadcommand{[factor n for n in numbers]\free{numbers }}
+\end{paste}\end{patch}
+
 @
 \section{oct.ht}
 \pagehead{OctonionXmpPage}{oct.ht}{Octonion}
@@ -16854,6 +45475,339 @@ Since the result is \spad{0}, the norm is multiplicative.
 \autobuttons
 \end{page}
 
+\begin{patch}{OctonionXmpPagePatch1}
+\begin{paste}{OctonionXmpPageFull1}{OctonionXmpPageEmpty1}
+\pastebutton{OctonionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{oci1 := octon(1,2,3,4,5,6,7,8)\bound{oci1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  1 + 2i + 3j + 4k + 5E + 6I + 7J + 8K
+                                 Type: Octonion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty1}
+\begin{paste}{OctonionXmpPageEmpty1}{OctonionXmpPagePatch1}
+\pastebutton{OctonionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{oci1 := octon(1,2,3,4,5,6,7,8)\bound{oci1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch2}
+\begin{paste}{OctonionXmpPageFull2}{OctonionXmpPageEmpty2}
+\pastebutton{OctonionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{oci2 := octon(7,2,3,-4,5,6,-7,0)\bound{oci2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  7 + 2i + 3j - 4k + 5E + 6I - 7J
+                                 Type: Octonion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty2}
+\begin{paste}{OctonionXmpPageEmpty2}{OctonionXmpPagePatch2}
+\pastebutton{OctonionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{oci2 := octon(7,2,3,-4,5,6,-7,0)\bound{oci2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch3}
+\begin{paste}{OctonionXmpPageFull3}{OctonionXmpPageEmpty3}
+\pastebutton{OctonionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0))\bound{oci3 }}
+\indentrel{3}\begin{verbatim}
+   (3)  - 7 - 12i + 3j - 10k + 5E + 6I + 9J
+                                 Type: Octonion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty3}
+\begin{paste}{OctonionXmpPageEmpty3}{OctonionXmpPagePatch3}
+\pastebutton{OctonionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0))\bound{oci3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch4}
+\begin{paste}{OctonionXmpPageFull4}{OctonionXmpPageEmpty4}
+\pastebutton{OctonionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)\free{oci1 oci2 oci3 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+   2696i - 2928j - 4072k + 16E - 1192I + 832J + 2616K
+                                 Type: Octonion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty4}
+\begin{paste}{OctonionXmpPageEmpty4}{OctonionXmpPagePatch4}
+\pastebutton{OctonionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)\free{oci1 oci2 oci3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch5}
+\begin{paste}{OctonionXmpPageFull5}{OctonionXmpPageEmpty5}
+\pastebutton{OctonionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1]\free{oci1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1,2,3,4,5,6,7,8]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty5}
+\begin{paste}{OctonionXmpPageEmpty5}{OctonionXmpPagePatch5}
+\pastebutton{OctonionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1]\free{oci1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch6}
+\begin{paste}{OctonionXmpPageFull6}{OctonionXmpPageEmpty6}
+\pastebutton{OctonionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk)\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (6)  q1 + qi i + qj j + qk k
+                    Type: Quaternion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty6}
+\begin{paste}{OctonionXmpPageEmpty6}{OctonionXmpPagePatch6}
+\pastebutton{OctonionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk)\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch7}
+\begin{paste}{OctonionXmpPageFull7}{OctonionXmpPageEmpty7}
+\pastebutton{OctonionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0)\bound{E }}
+\indentrel{3}\begin{verbatim}
+   (7)  E
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty7}
+\begin{paste}{OctonionXmpPageEmpty7}{OctonionXmpPagePatch7}
+\pastebutton{OctonionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0)\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch8}
+\begin{paste}{OctonionXmpPageFull8}{OctonionXmpPageEmpty8}
+\pastebutton{OctonionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{q * E\free{q E }}
+\indentrel{3}\begin{verbatim}
+   (8)  q1 E + qi I + qj J + qk K
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty8}
+\begin{paste}{OctonionXmpPageEmpty8}{OctonionXmpPagePatch8}
+\pastebutton{OctonionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{q * E\free{q E }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch9}
+\begin{paste}{OctonionXmpPageFull9}{OctonionXmpPageEmpty9}
+\pastebutton{OctonionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{E * q\free{E q }}
+\indentrel{3}\begin{verbatim}
+   (9)  q1 E - qi I - qj J - qk K
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty9}
+\begin{paste}{OctonionXmpPageEmpty9}{OctonionXmpPagePatch9}
+\pastebutton{OctonionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{E * q\free{E q }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch10}
+\begin{paste}{OctonionXmpPageFull10}{OctonionXmpPageEmpty10}
+\pastebutton{OctonionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{q * 1$(Octonion Polynomial Integer)\free{q }}
+\indentrel{3}\begin{verbatim}
+   (10)  q1 + qi i + qj j + qk k
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty10}
+\begin{paste}{OctonionXmpPageEmpty10}{OctonionXmpPagePatch10}
+\pastebutton{OctonionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{q * 1$(Octonion Polynomial Integer)\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch11}
+\begin{paste}{OctonionXmpPageFull11}{OctonionXmpPageEmpty11}
+\pastebutton{OctonionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{1$(Octonion Polynomial Integer) * q\free{q }}
+\indentrel{3}\begin{verbatim}
+   (11)  q1 + qi i + qj j + qk k
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty11}
+\begin{paste}{OctonionXmpPageEmpty11}{OctonionXmpPagePatch11}
+\pastebutton{OctonionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{1$(Octonion Polynomial Integer) * q\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch12}
+\begin{paste}{OctonionXmpPageFull12}{OctonionXmpPageEmpty12}
+\pastebutton{OctonionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK)\bound{o }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   o1 + oi i + oj j + ok k + oE E + oI I + oJ J + oK K
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty12}
+\begin{paste}{OctonionXmpPageEmpty12}{OctonionXmpPagePatch12}
+\pastebutton{OctonionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK)\bound{o }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch13}
+\begin{paste}{OctonionXmpPageFull13}{OctonionXmpPageEmpty13}
+\pastebutton{OctonionXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{norm o\free{o }}
+\indentrel{3}\begin{verbatim}
+           2     2     2     2     2     2     2     2
+   (13)  ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty13}
+\begin{paste}{OctonionXmpPageEmpty13}{OctonionXmpPagePatch13}
+\pastebutton{OctonionXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{norm o\free{o }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch14}
+\begin{paste}{OctonionXmpPageFull14}{OctonionXmpPageEmpty14}
+\pastebutton{OctonionXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK)\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (14)
+   p1 + pi i + pj j + pk k + pE E + pI I + pJ J + pK K
+                      Type: Octonion Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty14}
+\begin{paste}{OctonionXmpPageEmpty14}{OctonionXmpPagePatch14}
+\pastebutton{OctonionXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPagePatch15}
+\begin{paste}{OctonionXmpPageFull15}{OctonionXmpPageEmpty15}
+\pastebutton{OctonionXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{norm(o*p)-norm(p)*norm(p)\free{o p }}
+\indentrel{3}\begin{verbatim}
+   (15)
+         4
+     - pk
+   + 
+              2      2      2      2      2      2      2
+         - 2pj  - 2pi  - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1
+       + 
+           2     2     2     2     2     2     2     2
+         ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1
+    *
+         2
+       pk
+   + 
+         4
+     - pj
+   + 
+              2      2      2      2      2      2     2
+         - 2pi  - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1  + ok
+       + 
+           2     2     2     2     2     2     2
+         oj  + oi  + oK  + oJ  + oI  + oE  + o1
+    *
+         2
+       pj
+   + 
+         4
+     - pi
+   + 
+              2      2      2      2      2     2     2
+         - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1  + ok  + oj
+       + 
+           2     2     2     2     2     2
+         oi  + oK  + oJ  + oI  + oE  + o1
+    *
+         2
+       pi
+   + 
+         4
+     - pK
+   + 
+              2      2      2      2     2     2     2
+         - 2pJ  - 2pI  - 2pE  - 2p1  + ok  + oj  + oi
+       + 
+           2     2     2     2     2
+         oK  + oJ  + oI  + oE  + o1
+    *
+         2
+       pK
+   + 
+         4
+     - pJ
+   + 
+              2      2      2     2     2     2     2
+         - 2pI  - 2pE  - 2p1  + ok  + oj  + oi  + oK
+       + 
+           2     2     2     2
+         oJ  + oI  + oE  + o1
+    *
+         2
+       pJ
+   + 
+         4
+     - pI
+   + 
+              2      2     2     2     2     2     2     2
+         - 2pE  - 2p1  + ok  + oj  + oi  + oK  + oJ  + oI
+       + 
+           2     2
+         oE  + o1
+    *
+         2
+       pI
+   + 
+         4
+     - pE
+   + 
+              2     2     2     2     2     2     2     2
+         - 2p1  + ok  + oj  + oi  + oK  + oJ  + oI  + oE
+       + 
+           2
+         o1
+    *
+         2
+       pE
+   + 
+         4
+     - p1
+   + 
+        2     2     2     2     2     2     2     2   2
+     (ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1 )p1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OctonionXmpPageEmpty15}
+\begin{paste}{OctonionXmpPageEmpty15}{OctonionXmpPagePatch15}
+\pastebutton{OctonionXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{norm(o*p)-norm(p)*norm(p)\free{o p }}
+\end{paste}\end{patch}
+
 @
 \section{odpol.ht}
 \pagehead{OrderlyDifferentialPolyXmpPage}{odpol.ht}
@@ -17116,6 +46070,632 @@ and its derivatives.
 \autobuttons
 \end{page}
 
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch1}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull1}{OrderlyDifferentialPolynomialXmpPageEmpty1}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{dpol:= ODPOL(FRAC INT)\bound{dpol }}
+\indentrel{3}\begin{verbatim}
+   (1)  OrderlyDifferentialPolynomial Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty1}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty1}{OrderlyDifferentialPolynomialXmpPagePatch1}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{dpol:= ODPOL(FRAC INT)\bound{dpol }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch2}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull2}{OrderlyDifferentialPolynomialXmpPageEmpty2}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{w := makeVariable('w)$dpol\free{dpol }\bound{w }}
+\indentrel{3}\begin{verbatim}
+   (2)  theMap(DPOLCAT-;makeVariable;AM;17!0,62)
+Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty2}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty2}{OrderlyDifferentialPolynomialXmpPagePatch2}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{w := makeVariable('w)$dpol\free{dpol }\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch3}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull3}{OrderlyDifferentialPolynomialXmpPageEmpty3}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{z := makeVariable('z)$dpol\free{dpol }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (3)  theMap(DPOLCAT-;makeVariable;AM;17!0,187)
+Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty3}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty3}{OrderlyDifferentialPolynomialXmpPagePatch3}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{z := makeVariable('z)$dpol\free{dpol }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch4}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull4}{OrderlyDifferentialPolynomialXmpPageEmpty4}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{w.5\free{w }}
+\indentrel{3}\begin{verbatim}
+   (4)  w
+         5
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty4}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty4}{OrderlyDifferentialPolynomialXmpPagePatch4}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{w.5\free{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch5}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull5}{OrderlyDifferentialPolynomialXmpPageEmpty5}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{w 0\free{w }}
+\indentrel{3}\begin{verbatim}
+   (5)  w
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty5}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty5}{OrderlyDifferentialPolynomialXmpPagePatch5}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{w 0\free{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch6}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull6}{OrderlyDifferentialPolynomialXmpPageEmpty6}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[z.i for i in 1..5]\free{z }}
+\indentrel{3}\begin{verbatim}
+   (6)  [z ,z ,z ,z ,z ]
+          1  2  3  4  5
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty6}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty6}{OrderlyDifferentialPolynomialXmpPagePatch6}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[z.i for i in 1..5]\free{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch7}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull7}{OrderlyDifferentialPolynomialXmpPageEmpty7}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{f:= w.4 - w.1 * w.1 * z.3\free{w }\free{z }\bound{f }}
+\indentrel{3}\begin{verbatim}
+               2
+   (7)  w  - w  z
+         4    1  3
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty7}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty7}{OrderlyDifferentialPolynomialXmpPagePatch7}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f:= w.4 - w.1 * w.1 * z.3\free{w }\free{z }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch8}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull8}{OrderlyDifferentialPolynomialXmpPageEmpty8}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{g:=(z.1)**3 * (z.2)**2 - w.2\free{z }\free{w }\bound{g }}
+\indentrel{3}\begin{verbatim}
+          3  2
+   (8)  z  z   - w
+         1  2     2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty8}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty8}{OrderlyDifferentialPolynomialXmpPagePatch8}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g:=(z.1)**3 * (z.2)**2 - w.2\free{z }\free{w }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch9}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull9}{OrderlyDifferentialPolynomialXmpPageEmpty9}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{D(f)\free{f }}
+\indentrel{3}\begin{verbatim}
+               2
+   (9)  w  - w  z  - 2w w z
+         5    1  4     1 2 3
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty9}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty9}{OrderlyDifferentialPolynomialXmpPagePatch9}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{D(f)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch10}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull10}{OrderlyDifferentialPolynomialXmpPageEmpty10}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{D(f,4)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (10)
+            2                               2
+     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
+      8    1  7     1 2 6         1 3      2   5     1 3 5
+   + 
+                                         2
+     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
+          1 4      2 3  4     2 3 4     3  3
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty10}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty10}{OrderlyDifferentialPolynomialXmpPagePatch10}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{D(f,4)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch11}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull11}{OrderlyDifferentialPolynomialXmpPageEmpty11}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{df:=makeVariable(f)$dpol\free{f }\bound{df }}
+\indentrel{3}\begin{verbatim}
+   (11)  theMap(DPOLCAT-;makeVariable;AM;17!0,488)
+Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty11}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty11}{OrderlyDifferentialPolynomialXmpPagePatch11}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{df:=makeVariable(f)$dpol\free{f }\bound{df }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch12}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull12}{OrderlyDifferentialPolynomialXmpPageEmpty12}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{df.4\free{df }}
+\indentrel{3}\begin{verbatim}
+   (12)
+            2                               2
+     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
+      8    1  7     1 2 6         1 3      2   5     1 3 5
+   + 
+                                         2
+     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
+          1 4      2 3  4     2 3 4     3  3
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty12}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty12}{OrderlyDifferentialPolynomialXmpPagePatch12}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{df.4\free{df }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch13}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull13}{OrderlyDifferentialPolynomialXmpPageEmpty13}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{order(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (13)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty13}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty13}{OrderlyDifferentialPolynomialXmpPagePatch13}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{order(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch14}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull14}{OrderlyDifferentialPolynomialXmpPageEmpty14}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{order(g, 'w)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (14)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty14}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty14}{OrderlyDifferentialPolynomialXmpPagePatch14}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{order(g, 'w)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch15}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull15}{OrderlyDifferentialPolynomialXmpPageEmpty15}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{differentialVariables(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (15)  [z,w]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty15}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty15}{OrderlyDifferentialPolynomialXmpPagePatch15}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{differentialVariables(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch16}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull16}{OrderlyDifferentialPolynomialXmpPageEmpty16}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{degree(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+           2  3
+   (16)  z  z
+          2  1
+Type: IndexedExponents OrderlyDifferentialVariable Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty16}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty16}{OrderlyDifferentialPolynomialXmpPagePatch16}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{degree(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch17}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull17}{OrderlyDifferentialPolynomialXmpPageEmpty17}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{degree(g, 'w)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (17)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty17}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty17}{OrderlyDifferentialPolynomialXmpPagePatch17}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{degree(g, 'w)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch18}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull18}{OrderlyDifferentialPolynomialXmpPageEmpty18}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{weights(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (18)  [7,2]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty18}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty18}{OrderlyDifferentialPolynomialXmpPagePatch18}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{weights(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch19}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull19}{OrderlyDifferentialPolynomialXmpPageEmpty19}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{weights(g,'w)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (19)  [2]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty19}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty19}{OrderlyDifferentialPolynomialXmpPagePatch19}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{weights(g,'w)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch20}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull20}{OrderlyDifferentialPolynomialXmpPageEmpty20}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{weight(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (20)  7
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty20}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty20}{OrderlyDifferentialPolynomialXmpPagePatch20}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{weight(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch21}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull21}{OrderlyDifferentialPolynomialXmpPageEmpty21}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{isobaric?(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (21)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty21}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty21}{OrderlyDifferentialPolynomialXmpPagePatch21}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{isobaric?(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch22}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull22}{OrderlyDifferentialPolynomialXmpPageEmpty22}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{eval(g,['w::Symbol],[f])\free{f }\free{g }}
+\indentrel{3}\begin{verbatim}
+   (22)
+            2                           2        3  2
+   - w  + w  z  + 4w w z  + (2w w  + 2w  )z  + z  z
+      6    1  5     1 2 4      1 3     2   3    1  2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty22}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty22}{OrderlyDifferentialPolynomialXmpPagePatch22}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{eval(g,['w::Symbol],[f])\free{f }\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch23}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull23}{OrderlyDifferentialPolynomialXmpPageEmpty23}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{eval(g,variables(w.0),[f])\free{f }\free{g }}
+\indentrel{3}\begin{verbatim}
+           3  2
+   (23)  z  z   - w
+          1  2     2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty23}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty23}{OrderlyDifferentialPolynomialXmpPagePatch23}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{eval(g,variables(w.0),[f])\free{f }\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch24}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull24}{OrderlyDifferentialPolynomialXmpPageEmpty24}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{monomials(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+            3  2
+   (24)  [z  z  ,- w ]
+           1  2     2
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty24}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty24}{OrderlyDifferentialPolynomialXmpPagePatch24}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{monomials(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch25}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull25}{OrderlyDifferentialPolynomialXmpPageEmpty25}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{variables(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (25)  [z ,w ,z ]
+           2  2  1
+          Type: List OrderlyDifferentialVariable Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty25}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty25}{OrderlyDifferentialPolynomialXmpPagePatch25}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{variables(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch26}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull26}{OrderlyDifferentialPolynomialXmpPageEmpty26}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{gcd(f,g)\free{f }\free{g }}
+\indentrel{3}\begin{verbatim}
+   (26)  1
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty26}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty26}{OrderlyDifferentialPolynomialXmpPagePatch26}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{gcd(f,g)\free{f }\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch27}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull27}{OrderlyDifferentialPolynomialXmpPageEmpty27}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{groebner([f,g])\free{f }\free{g }}
+\indentrel{3}\begin{verbatim}
+                 2     3  2
+   (27)  [w  - w  z ,z  z   - w ]
+           4    1  3  1  2     2
+Type: List OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty27}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty27}{OrderlyDifferentialPolynomialXmpPagePatch27}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{groebner([f,g])\free{f }\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch28}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull28}{OrderlyDifferentialPolynomialXmpPageEmpty28}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{lg:=leader(g)\free{g }\bound{lg }}
+\indentrel{3}\begin{verbatim}
+   (28)  z
+          2
+               Type: OrderlyDifferentialVariable Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty28}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty28}{OrderlyDifferentialPolynomialXmpPagePatch28}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{lg:=leader(g)\free{g }\bound{lg }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch29}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull29}{OrderlyDifferentialPolynomialXmpPageEmpty29}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{sg:=separant(g)\free{g }\bound{sg }}
+\indentrel{3}\begin{verbatim}
+            3
+   (29)  2z  z
+           1  2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty29}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty29}{OrderlyDifferentialPolynomialXmpPagePatch29}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{sg:=separant(g)\free{g }\bound{sg }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch30}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull30}{OrderlyDifferentialPolynomialXmpPageEmpty30}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{ig:=initial(g)\free{g }\bound{ig }}
+\indentrel{3}\begin{verbatim}
+           3
+   (30)  z
+          1
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty30}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty30}{OrderlyDifferentialPolynomialXmpPagePatch30}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{ig:=initial(g)\free{g }\bound{ig }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch31}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull31}{OrderlyDifferentialPolynomialXmpPageEmpty31}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{g1 := D g\free{g }\bound{g1 }}
+\indentrel{3}\begin{verbatim}
+            3               2  3
+   (31)  2z  z z  - w  + 3z  z
+           1  2 3    3     1  2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty31}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty31}{OrderlyDifferentialPolynomialXmpPagePatch31}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{g1 := D g\free{g }\bound{g1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch32}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull32}{OrderlyDifferentialPolynomialXmpPageEmpty32}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{lg1:= leader g1\free{g1 }\bound{lg1 }}
+\indentrel{3}\begin{verbatim}
+   (32)  z
+          3
+               Type: OrderlyDifferentialVariable Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty32}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty32}{OrderlyDifferentialPolynomialXmpPagePatch32}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{lg1:= leader g1\free{g1 }\bound{lg1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch33}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull33}{OrderlyDifferentialPolynomialXmpPageEmpty33}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{pdf:=D(f, lg1)\free{f }\free{lg1 }\bound{pdf }}
+\indentrel{3}\begin{verbatim}
+             2
+   (33)  - w
+            1
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty33}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty33}{OrderlyDifferentialPolynomialXmpPagePatch33}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{pdf:=D(f, lg1)\free{f }\free{lg1 }\bound{pdf }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch34}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull34}{OrderlyDifferentialPolynomialXmpPageEmpty34}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{prf:=sg * f- pdf * g1\free{f }\free{sg }\free{pdf }\free{g1 }\bound{prf }}
+\indentrel{3}\begin{verbatim}
+            3         2        2  2  3
+   (34)  2z  z w  - w  w  + 3w  z  z
+           1  2 4    1  3     1  1  2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty34}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty34}{OrderlyDifferentialPolynomialXmpPagePatch34}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{prf:=sg * f- pdf * g1\free{f }\free{sg }\free{pdf }\free{g1 }\bound{prf }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch35}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull35}{OrderlyDifferentialPolynomialXmpPageEmpty35}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{lcf:=leadingCoefficient univariate(prf, lg)\free{prf }\free{lg }\bound{lcf }}
+\indentrel{3}\begin{verbatim}
+            2  2
+   (35)  3w  z
+           1  1
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty35}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty35}{OrderlyDifferentialPolynomialXmpPagePatch35}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{lcf:=leadingCoefficient univariate(prf, lg)\free{prf }\free{lg }\bound{lcf }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch36}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull36}{OrderlyDifferentialPolynomialXmpPageEmpty36}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{ig * prf - lcf * g * lg\free{ig }\free{prf }\free{lcf }\free{g }\free{lg }}
+\indentrel{3}\begin{verbatim}
+            6         2  3        2  2
+   (36)  2z  z w  - w  z  w  + 3w  z  w z
+           1  2 4    1  1  3     1  1  2 2
+   Type: OrderlyDifferentialPolynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty36}
+\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty36}{OrderlyDifferentialPolynomialXmpPagePatch36}
+\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{ig * prf - lcf * g * lg\free{ig }\free{prf }\free{lcf }\free{g }\free{lg }}
+\end{paste}\end{patch}
+
 @
 \section{op.ht}
 \pagehead{OperatorXmpPage}{op.ht}{Operator}
@@ -17286,6 +46866,379 @@ Here is the evaluation.
 \autobuttons
 \end{page}
 
+\begin{patch}{OperatorXmpPagePatch1}
+\begin{paste}{OperatorXmpPageFull1}{OperatorXmpPageEmpty1}
+\pastebutton{OperatorXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := SQMATRIX(2, INT)\bound{r }}
+\indentrel{3}\begin{verbatim}
+   (1)  SquareMatrix(2,Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty1}
+\begin{paste}{OperatorXmpPageEmpty1}{OperatorXmpPagePatch1}
+\pastebutton{OperatorXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := SQMATRIX(2, INT)\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch2}
+\begin{paste}{OperatorXmpPageFull2}{OperatorXmpPageEmpty2}
+\pastebutton{OperatorXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t := operator("tilde") :: OP(R)\free{r }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (2)  tilde
+                 Type: Operator SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty2}
+\begin{paste}{OperatorXmpPageEmpty2}{OperatorXmpPagePatch2}
+\pastebutton{OperatorXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t := operator("tilde") :: OP(R)\free{r }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch3}
+\begin{paste}{OperatorXmpPageFull3}{OperatorXmpPageEmpty3}
+\pastebutton{OperatorXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{)set expose add constructor Operator\free{t }\bound{expose }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty3}
+\begin{paste}{OperatorXmpPageEmpty3}{OperatorXmpPagePatch3}
+\pastebutton{OperatorXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{)set expose add constructor Operator\free{t }\bound{expose }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch4}
+\begin{paste}{OperatorXmpPageFull4}{OperatorXmpPageEmpty4}
+\pastebutton{OperatorXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{evaluate(t, m +-> transpose m)\free{expose }\free{t }\bound{evt }}
+\indentrel{3}\begin{verbatim}
+   (3)  tilde
+                 Type: Operator SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty4}
+\begin{paste}{OperatorXmpPageEmpty4}{OperatorXmpPagePatch4}
+\pastebutton{OperatorXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{evaluate(t, m +-> transpose m)\free{expose }\free{t }\bound{evt }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch5}
+\begin{paste}{OperatorXmpPageFull5}{OperatorXmpPageEmpty5}
+\pastebutton{OperatorXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{s : R := matrix [[0, 1], [1, 0]]\bound{s }}
+\indentrel{3}\begin{verbatim}
+        Ú0  1¿
+   (4)  ³    ³
+        À1  0Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty5}
+\begin{paste}{OperatorXmpPageEmpty5}{OperatorXmpPagePatch5}
+\pastebutton{OperatorXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{s : R := matrix [[0, 1], [1, 0]]\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch6}
+\begin{paste}{OperatorXmpPageFull6}{OperatorXmpPageEmpty6}
+\pastebutton{OperatorXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{rho := t * s\free{evt s }\bound{rho }}
+\indentrel{3}\begin{verbatim}
+             Ú0  1¿
+   (5)  tilde³    ³
+             À1  0Ù
+                 Type: Operator SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty6}
+\begin{paste}{OperatorXmpPageEmpty6}{OperatorXmpPagePatch6}
+\pastebutton{OperatorXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{rho := t * s\free{evt s }\bound{rho }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch7}
+\begin{paste}{OperatorXmpPageFull7}{OperatorXmpPageEmpty7}
+\pastebutton{OperatorXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{z := rho**4 - 1\free{rho }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (6)
+              Ú0  1¿     Ú0  1¿     Ú0  1¿     Ú0  1¿
+   - 1 + tilde³    ³tilde³    ³tilde³    ³tilde³    ³
+              À1  0Ù     À1  0Ù     À1  0Ù     À1  0Ù
+                 Type: Operator SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty7}
+\begin{paste}{OperatorXmpPageEmpty7}{OperatorXmpPagePatch7}
+\pastebutton{OperatorXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{z := rho**4 - 1\free{rho }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch8}
+\begin{paste}{OperatorXmpPageFull8}{OperatorXmpPageEmpty8}
+\pastebutton{OperatorXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{m:R := matrix [[1, 2], [3, 4]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (7)  ³    ³
+        À3  4Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty8}
+\begin{paste}{OperatorXmpPageEmpty8}{OperatorXmpPagePatch8}
+\pastebutton{OperatorXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{m:R := matrix [[1, 2], [3, 4]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch9}
+\begin{paste}{OperatorXmpPageFull9}{OperatorXmpPageEmpty9}
+\pastebutton{OperatorXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{z m\free{z m }}
+\indentrel{3}\begin{verbatim}
+        Ú0  0¿
+   (8)  ³    ³
+        À0  0Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty9}
+\begin{paste}{OperatorXmpPageEmpty9}{OperatorXmpPagePatch9}
+\pastebutton{OperatorXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{z m\free{z m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch10}
+\begin{paste}{OperatorXmpPageFull10}{OperatorXmpPageEmpty10}
+\pastebutton{OperatorXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{rho m\free{rho m }}
+\indentrel{3}\begin{verbatim}
+        Ú3  1¿
+   (9)  ³    ³
+        À4  2Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty10}
+\begin{paste}{OperatorXmpPageEmpty10}{OperatorXmpPagePatch10}
+\pastebutton{OperatorXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{rho m\free{rho m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch11}
+\begin{paste}{OperatorXmpPageFull11}{OperatorXmpPageEmpty11}
+\pastebutton{OperatorXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{rho rho m\free{rho m }}
+\indentrel{3}\begin{verbatim}
+         Ú4  3¿
+   (10)  ³    ³
+         À2  1Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty11}
+\begin{paste}{OperatorXmpPageEmpty11}{OperatorXmpPagePatch11}
+\pastebutton{OperatorXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{rho rho m\free{rho m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch12}
+\begin{paste}{OperatorXmpPageFull12}{OperatorXmpPageEmpty12}
+\pastebutton{OperatorXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{(rho**3) m\free{rho m }}
+\indentrel{3}\begin{verbatim}
+         Ú2  4¿
+   (11)  ³    ³
+         À1  3Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty12}
+\begin{paste}{OperatorXmpPageEmpty12}{OperatorXmpPagePatch12}
+\pastebutton{OperatorXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{(rho**3) m\free{rho m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch13}
+\begin{paste}{OperatorXmpPageFull13}{OperatorXmpPageEmpty13}
+\pastebutton{OperatorXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{b := t * s - s * t\free{s evt }\bound{b }}
+\indentrel{3}\begin{verbatim}
+           Ú0  1¿             Ú0  1¿
+   (12)  - ³    ³tilde + tilde³    ³
+           À1  0Ù             À1  0Ù
+                 Type: Operator SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty13}
+\begin{paste}{OperatorXmpPageEmpty13}{OperatorXmpPagePatch13}
+\pastebutton{OperatorXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{b := t * s - s * t\free{s evt }\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch14}
+\begin{paste}{OperatorXmpPageFull14}{OperatorXmpPageEmpty14}
+\pastebutton{OperatorXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{b m\free{b m }}
+\indentrel{3}\begin{verbatim}
+         Ú1  - 3¿
+   (13)  ³      ³
+         À3  - 1Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty14}
+\begin{paste}{OperatorXmpPageEmpty14}{OperatorXmpPagePatch14}
+\pastebutton{OperatorXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{b m\free{b m }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch15}
+\begin{paste}{OperatorXmpPageFull15}{OperatorXmpPageEmpty15}
+\pastebutton{OperatorXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{L n ==
+  n = 0 => 1
+  n = 1 => x
+  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
+\bound{l }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty15}
+\begin{paste}{OperatorXmpPageEmpty15}{OperatorXmpPagePatch15}
+\pastebutton{OperatorXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{L n ==
+  n = 0 => 1
+  n = 1 => x
+  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
+\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch16}
+\begin{paste}{OperatorXmpPageFull16}{OperatorXmpPageEmpty16}
+\pastebutton{OperatorXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{dx := operator("D") :: OP(POLY FRAC INT)\bound{dx }}
+\indentrel{3}\begin{verbatim}
+   (15)  D
+             Type: Operator Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty16}
+\begin{paste}{OperatorXmpPageEmpty16}{OperatorXmpPagePatch16}
+\pastebutton{OperatorXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{dx := operator("D") :: OP(POLY FRAC INT)\bound{dx }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch17}
+\begin{paste}{OperatorXmpPageFull17}{OperatorXmpPageEmpty17}
+\pastebutton{OperatorXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{evaluate(dx, p +-> D(p, 'x))\free{dx }\bound{edx }}
+\indentrel{3}\begin{verbatim}
+   (16)  D
+             Type: Operator Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty17}
+\begin{paste}{OperatorXmpPageEmpty17}{OperatorXmpPagePatch17}
+\pastebutton{OperatorXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{evaluate(dx, p +-> D(p, 'x))\free{dx }\bound{edx }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch18}
+\begin{paste}{OperatorXmpPageFull18}{OperatorXmpPageEmpty18}
+\pastebutton{OperatorXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1)\free{edx }\bound{E }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty18}
+\begin{paste}{OperatorXmpPageEmpty18}{OperatorXmpPagePatch18}
+\pastebutton{OperatorXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1)\free{edx }\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch19}
+\begin{paste}{OperatorXmpPageFull19}{OperatorXmpPageEmpty19}
+\pastebutton{OperatorXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{L 15\free{L }}
+\indentrel{3}\begin{verbatim}
+   (18)
+     9694845  15   35102025  13   50702925  11
+     ÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄÄ x
+       2048          2048           2048
+   + 
+       37182145  9   14549535  7   2909907  5   255255  3
+     - ÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x  - ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
+         2048          2048          2048        2048
+   + 
+       6435
+     - ÄÄÄÄ x
+       2048
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty19}
+\begin{paste}{OperatorXmpPageEmpty19}{OperatorXmpPagePatch19}
+\pastebutton{OperatorXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{L 15\free{L }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch20}
+\begin{paste}{OperatorXmpPageFull20}{OperatorXmpPageEmpty20}
+\pastebutton{OperatorXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{E 15\free{E }}
+\indentrel{3}\begin{verbatim}
+                        2      2
+   (19)  240 - 2x D - (x  - 1)D
+             Type: Operator Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty20}
+\begin{paste}{OperatorXmpPageEmpty20}{OperatorXmpPagePatch20}
+\pastebutton{OperatorXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{E 15\free{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPagePatch21}
+\begin{paste}{OperatorXmpPageFull21}{OperatorXmpPageEmpty21}
+\pastebutton{OperatorXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{(E 15)(L 15)\free{L E }}
+\indentrel{3}\begin{verbatim}
+   (20)  0
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OperatorXmpPageEmpty21}
+\begin{paste}{OperatorXmpPageEmpty21}{OperatorXmpPagePatch21}
+\pastebutton{OperatorXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{(E 15)(L 15)\free{L E }}
+\end{paste}\end{patch}
+
 @
 \section{ovar.ht}
 \pagehead{OrderedVariableListXmpPage}{ovar.ht}{OrderedVariableList}
@@ -17326,6 +47279,86 @@ Check that the ordering is right
 \autobuttons
 \end{page}
 
+\begin{patch}{OrderedVariableListXmpPagePatch1}
+\begin{paste}{OrderedVariableListXmpPageFull1}{OrderedVariableListXmpPageEmpty1}
+\pastebutton{OrderedVariableListXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ls:List Symbol:=['x,'a,'z]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (1)  [x,a,z]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPageEmpty1}
+\begin{paste}{OrderedVariableListXmpPageEmpty1}{OrderedVariableListXmpPagePatch1}
+\pastebutton{OrderedVariableListXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ls:List Symbol:=['x,'a,'z]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPagePatch2}
+\begin{paste}{OrderedVariableListXmpPageFull2}{OrderedVariableListXmpPageEmpty2}
+\pastebutton{OrderedVariableListXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{Z:=OVAR ls\bound{Z }\free{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  OrderedVariableList [x,a,z]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPageEmpty2}
+\begin{paste}{OrderedVariableListXmpPageEmpty2}{OrderedVariableListXmpPagePatch2}
+\pastebutton{OrderedVariableListXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{Z:=OVAR ls\bound{Z }\free{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPagePatch3}
+\begin{paste}{OrderedVariableListXmpPageFull3}{OrderedVariableListXmpPageEmpty3}
+\pastebutton{OrderedVariableListXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{size()$Z\free{Z }}
+\indentrel{3}\begin{verbatim}
+   (3)  3
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPageEmpty3}
+\begin{paste}{OrderedVariableListXmpPageEmpty3}{OrderedVariableListXmpPagePatch3}
+\pastebutton{OrderedVariableListXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{size()$Z\free{Z }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPagePatch4}
+\begin{paste}{OrderedVariableListXmpPageFull4}{OrderedVariableListXmpPageEmpty4}
+\pastebutton{OrderedVariableListXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{lv:=[index(i::PI)$Z for i in 1..size()$Z]\bound{lv }\free{Z }}
+\indentrel{3}\begin{verbatim}
+   (4)  [x,a,z]
+                 Type: List OrderedVariableList [x,a,z]
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPageEmpty4}
+\begin{paste}{OrderedVariableListXmpPageEmpty4}{OrderedVariableListXmpPagePatch4}
+\pastebutton{OrderedVariableListXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{lv:=[index(i::PI)$Z for i in 1..size()$Z]\bound{lv }\free{Z }}
+\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPagePatch5}
+\begin{paste}{OrderedVariableListXmpPageFull5}{OrderedVariableListXmpPageEmpty5}
+\pastebutton{OrderedVariableListXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{sorted?(>,lv)\free{lv }}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{OrderedVariableListXmpPageEmpty5}
+\begin{paste}{OrderedVariableListXmpPageEmpty5}{OrderedVariableListXmpPagePatch5}
+\pastebutton{OrderedVariableListXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sorted?(>,lv)\free{lv }}
+\end{paste}\end{patch}
+
 @
 \section{perman.ht}
 \pagehead{PermanentXmpPage}{perman.ht}{Permanent}
@@ -17374,6 +47407,65 @@ Here are some derangement numbers, which you see grow quite fast.
 \autobuttons
 \end{page}
 
+\begin{patch}{PermanentXmpPagePatch1}
+\begin{paste}{PermanentXmpPageFull1}{PermanentXmpPageEmpty1}
+\pastebutton{PermanentXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{kn n ==
+  r : MATRIX INT := new(n,n,1)
+  for i in 1..n repeat
+    r.i.i := 0
+  r
+\bound{kn }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PermanentXmpPageEmpty1}
+\begin{paste}{PermanentXmpPageEmpty1}{PermanentXmpPagePatch1}
+\pastebutton{PermanentXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{kn n ==
+  r : MATRIX INT := new(n,n,1)
+  for i in 1..n repeat
+    r.i.i := 0
+  r
+\bound{kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{PermanentXmpPagePatch2}
+\begin{paste}{PermanentXmpPageFull2}{PermanentXmpPageEmpty2}
+\pastebutton{PermanentXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{permanent(kn(5) :: SQMATRIX(5,INT))\free{kn }}
+\indentrel{3}\begin{verbatim}
+   (2)  44
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PermanentXmpPageEmpty2}
+\begin{paste}{PermanentXmpPageEmpty2}{PermanentXmpPagePatch2}
+\pastebutton{PermanentXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{permanent(kn(5) :: SQMATRIX(5,INT))\free{kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{PermanentXmpPagePatch3}
+\begin{paste}{PermanentXmpPageFull3}{PermanentXmpPageEmpty3}
+\pastebutton{PermanentXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13]\free{kn }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [0, 1, 2, 9, 44, 265, 1854, 14833, 133496, 1334961,
+    14684570, 176214841, 2290792932]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PermanentXmpPageEmpty3}
+\begin{paste}{PermanentXmpPageEmpty3}{PermanentXmpPagePatch3}
+\pastebutton{PermanentXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13]\free{kn }}
+\end{paste}\end{patch}
+
 @
 \section{pfr.ht}
 \pagehead{PartialFractionXmpPage}{pfr.ht}{PartialFraction}
@@ -17512,6 +47604,210 @@ factor-free conversion of quotients to full partial fractions.
 \autobuttons
 \end{page}
 
+\begin{patch}{PartialFractionXmpPagePatch1}
+\begin{paste}{PartialFractionXmpPageFull1}{PartialFractionXmpPageEmpty1}
+\pastebutton{PartialFractionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{partialFraction(1,factorial 10)\bound{prev1 }}
+\indentrel{3}\begin{verbatim}
+        159   23   12   1
+   (1)  ÄÄÄ - ÄÄ - ÄÄ + Ä
+          8    4    2   7
+         2    3    5
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty1}
+\begin{paste}{PartialFractionXmpPageEmpty1}{PartialFractionXmpPagePatch1}
+\pastebutton{PartialFractionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{partialFraction(1,factorial 10)\bound{prev1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch2}
+\begin{paste}{PartialFractionXmpPageFull2}{PartialFractionXmpPageEmpty2}
+\pastebutton{PartialFractionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := padicFraction(\%)\free{prev1 }\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (2)
+   1    1    1    1    1    1    2    1    2   2    2   1
+   Ä + ÄÄ + ÄÄ + ÄÄ + ÄÄ + ÄÄ - ÄÄ - ÄÄ - ÄÄ - Ä - ÄÄ + Ä
+   2    4    5    6    7    8    2    3    4   5    2   7
+       2    2    2    2    2    3    3    3        5
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty2}
+\begin{paste}{PartialFractionXmpPageEmpty2}{PartialFractionXmpPagePatch2}
+\pastebutton{PartialFractionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := padicFraction(\%)\free{prev1 }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch3}
+\begin{paste}{PartialFractionXmpPageFull3}{PartialFractionXmpPageEmpty3}
+\pastebutton{PartialFractionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{compactFraction(f)\free{f }}
+\indentrel{3}\begin{verbatim}
+        159   23   12   1
+   (3)  ÄÄÄ - ÄÄ - ÄÄ + Ä
+          8    4    2   7
+         2    3    5
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty3}
+\begin{paste}{PartialFractionXmpPageEmpty3}{PartialFractionXmpPagePatch3}
+\pastebutton{PartialFractionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{compactFraction(f)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch4}
+\begin{paste}{PartialFractionXmpPageFull4}{PartialFractionXmpPageEmpty4}
+\pastebutton{PartialFractionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{numberOfFractionalTerms(f)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (4)  12
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty4}
+\begin{paste}{PartialFractionXmpPageEmpty4}{PartialFractionXmpPagePatch4}
+\pastebutton{PartialFractionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{numberOfFractionalTerms(f)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch5}
+\begin{paste}{PartialFractionXmpPageFull5}{PartialFractionXmpPageEmpty5}
+\pastebutton{PartialFractionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{nthFractionalTerm(f,3)\free{f }}
+\indentrel{3}\begin{verbatim}
+         1
+   (5)  ÄÄ
+         5
+        2
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty5}
+\begin{paste}{PartialFractionXmpPageEmpty5}{PartialFractionXmpPagePatch5}
+\pastebutton{PartialFractionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{nthFractionalTerm(f,3)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch6}
+\begin{paste}{PartialFractionXmpPageFull6}{PartialFractionXmpPageEmpty6}
+\pastebutton{PartialFractionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{partialFraction(1,- 13 + 14 * \%i)\bound{prev2 }}
+\indentrel{3}\begin{verbatim}
+             1         4
+   (6)  - ÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄ
+          1 + 2%i   3 + 8%i
+                  Type: PartialFraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty6}
+\begin{paste}{PartialFractionXmpPageEmpty6}{PartialFractionXmpPagePatch6}
+\pastebutton{PartialFractionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{partialFraction(1,- 13 + 14 * \%i)\bound{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch7}
+\begin{paste}{PartialFractionXmpPageFull7}{PartialFractionXmpPageEmpty7}
+\pastebutton{PartialFractionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{prev2 }}
+\indentrel{3}\begin{verbatim}
+              %i
+   (7)  - ÄÄÄÄÄÄÄÄÄ
+          14 + 13%i
+                         Type: Fraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty7}
+\begin{paste}{PartialFractionXmpPageEmpty7}{PartialFractionXmpPagePatch7}
+\pastebutton{PartialFractionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch8}
+\begin{paste}{PartialFractionXmpPageFull8}{PartialFractionXmpPageEmpty8}
+\pastebutton{PartialFractionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4])\bound{u }}
+\indentrel{3}\begin{verbatim}
+                      2       3       4
+   (8)  (x + 1)(x + 2) (x + 3) (x + 4)
+Type: Factored UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty8}
+\begin{paste}{PartialFractionXmpPageEmpty8}{PartialFractionXmpPagePatch8}
+\pastebutton{PartialFractionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4])\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch9}
+\begin{paste}{PartialFractionXmpPageFull9}{PartialFractionXmpPageEmpty9}
+\pastebutton{PartialFractionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{partialFraction(1,u)\free{u }\bound{prev3 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+       1     1      7     17  2         139
+      ÄÄÄ    Ä x + ÄÄ   - ÄÄ x  - 12x - ÄÄÄ
+      648    4     16      8             8
+     ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+     x + 1          2                3
+             (x + 2)          (x + 3)
+   + 
+     607  3   10115  2   391     44179
+     ÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄ x + ÄÄÄÄÄ
+     324       432        4       324
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                         4
+                  (x + 4)
+Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty9}
+\begin{paste}{PartialFractionXmpPageEmpty9}{PartialFractionXmpPagePatch9}
+\pastebutton{PartialFractionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{partialFraction(1,u)\free{u }\bound{prev3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPagePatch10}
+\begin{paste}{PartialFractionXmpPageFull10}{PartialFractionXmpPageEmpty10}
+\pastebutton{PartialFractionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{padicFraction \%\free{prev3 }}
+\indentrel{3}\begin{verbatim}
+   (10)
+       1       1         1        17        3
+      ÄÄÄ      Ä        ÄÄ        ÄÄ        Ä
+      648      4        16         8        4
+     ÄÄÄÄÄ + ÄÄÄÄÄ - ÄÄÄÄÄÄÄÄ - ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
+     x + 1   x + 2          2   x + 3          2
+                     (x + 2)            (x + 3)
+   + 
+           1       607       403        13          1
+           Ä       ÄÄÄ       ÄÄÄ        ÄÄ         ÄÄ
+           2       324       432        36         12
+     - ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
+              3   x + 4          2          3          4
+       (x + 3)            (x + 4)    (x + 4)    (x + 4)
+Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PartialFractionXmpPageEmpty10}
+\begin{paste}{PartialFractionXmpPageEmpty10}{PartialFractionXmpPagePatch10}
+\pastebutton{PartialFractionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{padicFraction \%\free{prev3 }}
+\end{paste}\end{patch}
+
 @
 \section{poly.ht}
 \pagehead{PolynomialPage}{poly.ht}{Polynomials}
@@ -17624,6 +47920,322 @@ in the polynomial \spad{r(x,y)}.
 \autobuttons
 \end{page}
 
+\begin{patch}{PolynomialBasicPagePatch1}
+\begin{paste}{PolynomialBasicPageFull1}{PolynomialBasicPageEmpty1}
+\pastebutton{PolynomialBasicPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := a*x**2 + b*x*y + c*y**2\bound{p }}
+\indentrel{3}\begin{verbatim}
+           2              2
+   (1)  c y  + b x y + a x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty1}
+\begin{paste}{PolynomialBasicPageEmpty1}{PolynomialBasicPagePatch1}
+\pastebutton{PolynomialBasicPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := a*x**2 + b*x*y + c*y**2\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch2}
+\begin{paste}{PolynomialBasicPageFull2}{PolynomialBasicPageEmpty2}
+\pastebutton{PolynomialBasicPageFull2}{\hidepaste}
+\tab{5}\spadcommand{q := 13*x**2 + 3*z\bound{q }}
+\indentrel{3}\begin{verbatim}
+                2
+   (2)  3z + 13x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty2}
+\begin{paste}{PolynomialBasicPageEmpty2}{PolynomialBasicPagePatch2}
+\pastebutton{PolynomialBasicPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{q := 13*x**2 + 3*z\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch3}
+\begin{paste}{PolynomialBasicPageFull3}{PolynomialBasicPageEmpty3}
+\pastebutton{PolynomialBasicPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p + q\free{p q }}
+\indentrel{3}\begin{verbatim}
+                2                    2
+   (3)  3z + c y  + b x y + (a + 13)x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty3}
+\begin{paste}{PolynomialBasicPageEmpty3}{PolynomialBasicPagePatch3}
+\pastebutton{PolynomialBasicPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p + q\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch4}
+\begin{paste}{PolynomialBasicPageFull4}{PolynomialBasicPageEmpty4}
+\pastebutton{PolynomialBasicPageFull4}{\hidepaste}
+\tab{5}\spadcommand{p - 3*q\free{p q }}
+\indentrel{3}\begin{verbatim}
+                  2                    2
+   (4)  - 9z + c y  + b x y + (a - 39)x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty4}
+\begin{paste}{PolynomialBasicPageEmpty4}{PolynomialBasicPagePatch4}
+\pastebutton{PolynomialBasicPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p - 3*q\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch5}
+\begin{paste}{PolynomialBasicPageFull5}{PolynomialBasicPageEmpty5}
+\pastebutton{PolynomialBasicPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p**2 + p*q\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (5)
+          2                2      2 4           3
+     (3c y  + 3b x y + 3a x )z + c y  + 2b c x y
+   + 
+                  2  2 2               3      2        4
+   ((2a + 13)c + b )x y  + (2a + 13)b x y + (a  + 13a)x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty5}
+\begin{paste}{PolynomialBasicPageEmpty5}{PolynomialBasicPagePatch5}
+\pastebutton{PolynomialBasicPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p**2 + p*q\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch6}
+\begin{paste}{PolynomialBasicPageFull6}{PolynomialBasicPageEmpty6}
+\pastebutton{PolynomialBasicPageFull6}{\hidepaste}
+\tab{5}\spadcommand{r := (p + q)**2\bound{r }\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (6)
+       2        2                      2      2 4
+     9z  + (6c y  + 6b x y + (6a + 78)x )z + c y
+   + 
+             3                  2  2 2               3
+     2b c x y  + ((2a + 26)c + b )x y  + (2a + 26)b x y
+   + 
+       2              4
+     (a  + 26a + 169)x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty6}
+\begin{paste}{PolynomialBasicPageEmpty6}{PolynomialBasicPagePatch6}
+\pastebutton{PolynomialBasicPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{r := (p + q)**2\bound{r }\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch7}
+\begin{paste}{PolynomialBasicPageFull7}{PolynomialBasicPageEmpty7}
+\pastebutton{PolynomialBasicPageFull7}{\hidepaste}
+\tab{5}\spadcommand{setVariableOrder [a,b,c,x,y,z]\bound{vord }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty7}
+\begin{paste}{PolynomialBasicPageEmpty7}{PolynomialBasicPagePatch7}
+\pastebutton{PolynomialBasicPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{setVariableOrder [a,b,c,x,y,z]\bound{vord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch8}
+\begin{paste}{PolynomialBasicPageFull8}{PolynomialBasicPageEmpty8}
+\pastebutton{PolynomialBasicPageFull8}{\hidepaste}
+\tab{5}\spadcommand{p\free{p vord }}
+\indentrel{3}\begin{verbatim}
+         2             2
+   (8)  x a + y x b + y c
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty8}
+\begin{paste}{PolynomialBasicPageEmpty8}{PolynomialBasicPagePatch8}
+\pastebutton{PolynomialBasicPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p\free{p vord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch9}
+\begin{paste}{PolynomialBasicPageFull9}{PolynomialBasicPageEmpty9}
+\pastebutton{PolynomialBasicPageFull9}{\hidepaste}
+\tab{5}\spadcommand{q\free{q vord }}
+\indentrel{3}\begin{verbatim}
+           2
+   (9)  13x  + 3z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty9}
+\begin{paste}{PolynomialBasicPageEmpty9}{PolynomialBasicPagePatch9}
+\pastebutton{PolynomialBasicPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{q\free{q vord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch10}
+\begin{paste}{PolynomialBasicPageFull10}{PolynomialBasicPageEmpty10}
+\pastebutton{PolynomialBasicPageFull10}{\hidepaste}
+\tab{5}\spadcommand{r\free{r vord }}
+\indentrel{3}\begin{verbatim}
+   (10)
+      4 2        3      2 2       4       2      2 2 2
+     x a  + (2y x b + 2y x c + 26x  + 6z x )a + y x b
+   + 
+        3           3               4 2
+     (2y x c + 26y x  + 6z y x)b + y c
+   + 
+         2 2       2         4        2     2
+     (26y x  + 6z y )c + 169x  + 78z x  + 9z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty10}
+\begin{paste}{PolynomialBasicPageEmpty10}{PolynomialBasicPagePatch10}
+\pastebutton{PolynomialBasicPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{r\free{r vord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch11}
+\begin{paste}{PolynomialBasicPageFull11}{PolynomialBasicPageEmpty11}
+\pastebutton{PolynomialBasicPageFull11}{\hidepaste}
+\tab{5}\spadcommand{resetVariableOrder()\bound{rvord }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty11}
+\begin{paste}{PolynomialBasicPageEmpty11}{PolynomialBasicPagePatch11}
+\pastebutton{PolynomialBasicPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{resetVariableOrder()\bound{rvord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch12}
+\begin{paste}{PolynomialBasicPageFull12}{PolynomialBasicPageEmpty12}
+\pastebutton{PolynomialBasicPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p\free{p rvord }}
+\indentrel{3}\begin{verbatim}
+            2              2
+   (12)  c y  + b x y + a x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty12}
+\begin{paste}{PolynomialBasicPageEmpty12}{PolynomialBasicPagePatch12}
+\pastebutton{PolynomialBasicPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p\free{p rvord }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch13}
+\begin{paste}{PolynomialBasicPageFull13}{PolynomialBasicPageEmpty13}
+\pastebutton{PolynomialBasicPageFull13}{\hidepaste}
+\tab{5}\spadcommand{coefficient(q,x,2)\free{q }}
+\indentrel{3}\begin{verbatim}
+   (13)  13
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty13}
+\begin{paste}{PolynomialBasicPageEmpty13}{PolynomialBasicPagePatch13}
+\pastebutton{PolynomialBasicPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{coefficient(q,x,2)\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch14}
+\begin{paste}{PolynomialBasicPageFull14}{PolynomialBasicPageEmpty14}
+\pastebutton{PolynomialBasicPageFull14}{\hidepaste}
+\tab{5}\spadcommand{coefficient(r,x,3)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (14)  (2a + 26)b y
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty14}
+\begin{paste}{PolynomialBasicPageEmpty14}{PolynomialBasicPagePatch14}
+\pastebutton{PolynomialBasicPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{coefficient(r,x,3)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch15}
+\begin{paste}{PolynomialBasicPageFull15}{PolynomialBasicPageEmpty15}
+\pastebutton{PolynomialBasicPageFull15}{\hidepaste}
+\tab{5}\spadcommand{c := coefficient(r,z,1)\free{r }\bound{c }}
+\indentrel{3}\begin{verbatim}
+             2                      2
+   (15)  6c y  + 6b x y + (6a + 78)x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty15}
+\begin{paste}{PolynomialBasicPageEmpty15}{PolynomialBasicPagePatch15}
+\pastebutton{PolynomialBasicPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{c := coefficient(r,z,1)\free{r }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch16}
+\begin{paste}{PolynomialBasicPageFull16}{PolynomialBasicPageEmpty16}
+\pastebutton{PolynomialBasicPageFull16}{\hidepaste}
+\tab{5}\spadcommand{coefficient(c,x,2)\free{c }}
+\indentrel{3}\begin{verbatim}
+   (16)  6a + 78
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty16}
+\begin{paste}{PolynomialBasicPageEmpty16}{PolynomialBasicPagePatch16}
+\pastebutton{PolynomialBasicPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{coefficient(c,x,2)\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch17}
+\begin{paste}{PolynomialBasicPageFull17}{PolynomialBasicPageEmpty17}
+\pastebutton{PolynomialBasicPageFull17}{\hidepaste}
+\tab{5}\spadcommand{coefficient(q**2, [x,z], [2,1])\free{q }}
+\indentrel{3}\begin{verbatim}
+   (17)  78
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty17}
+\begin{paste}{PolynomialBasicPageEmpty17}{PolynomialBasicPagePatch17}
+\pastebutton{PolynomialBasicPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{coefficient(q**2, [x,z], [2,1])\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPagePatch18}
+\begin{paste}{PolynomialBasicPageFull18}{PolynomialBasicPageEmpty18}
+\pastebutton{PolynomialBasicPageFull18}{\hidepaste}
+\tab{5}\spadcommand{coefficient(r, [x,y], [2,2])\free{r }}
+\indentrel{3}\begin{verbatim}
+                       2
+   (18)  (2a + 26)c + b
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialBasicPageEmpty18}
+\begin{paste}{PolynomialBasicPageEmpty18}{PolynomialBasicPagePatch18}
+\pastebutton{PolynomialBasicPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{coefficient(r, [x,y], [2,2])\free{r }}
+\end{paste}\end{patch}
+
 @
 \pagehead{PolynomialSubstitutionPage}{poly.ht}
 {Polynomial Evaluation and Substitution}
@@ -17658,6 +48270,124 @@ variables:
 \autobuttons
 \end{page}
 
+\begin{patch}{PolynomialSubstitutionPagePatch1}
+\begin{paste}{PolynomialSubstitutionPageFull1}{PolynomialSubstitutionPageEmpty1}
+\pastebutton{PolynomialSubstitutionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := x**2 + y**2\bound{p }}
+\indentrel{3}\begin{verbatim}
+         2    2
+   (1)  y  + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty1}
+\begin{paste}{PolynomialSubstitutionPageEmpty1}{PolynomialSubstitutionPagePatch1}
+\pastebutton{PolynomialSubstitutionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := x**2 + y**2\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch2}
+\begin{paste}{PolynomialSubstitutionPageFull2}{PolynomialSubstitutionPageEmpty2}
+\pastebutton{PolynomialSubstitutionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{eval(p,x=5)\free{p }}
+\indentrel{3}\begin{verbatim}
+         2
+   (2)  y  + 25
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty2}
+\begin{paste}{PolynomialSubstitutionPageEmpty2}{PolynomialSubstitutionPagePatch2}
+\pastebutton{PolynomialSubstitutionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eval(p,x=5)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch3}
+\begin{paste}{PolynomialSubstitutionPageFull3}{PolynomialSubstitutionPageEmpty3}
+\pastebutton{PolynomialSubstitutionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{eval(p,[x = a + b,y = c + d])\free{p }}
+\indentrel{3}\begin{verbatim}
+         2           2    2           2
+   (3)  d  + 2c d + c  + b  + 2a b + a
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty3}
+\begin{paste}{PolynomialSubstitutionPageEmpty3}{PolynomialSubstitutionPagePatch3}
+\pastebutton{PolynomialSubstitutionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{eval(p,[x = a + b,y = c + d])\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch4}
+\begin{paste}{PolynomialSubstitutionPageFull4}{PolynomialSubstitutionPageEmpty4}
+\pastebutton{PolynomialSubstitutionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{q := x**3 + 5*x - y**4\bound{q }}
+\indentrel{3}\begin{verbatim}
+           4    3
+   (4)  - y  + x  + 5x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty4}
+\begin{paste}{PolynomialSubstitutionPageEmpty4}{PolynomialSubstitutionPagePatch4}
+\pastebutton{PolynomialSubstitutionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{q := x**3 + 5*x - y**4\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch5}
+\begin{paste}{PolynomialSubstitutionPageFull5}{PolynomialSubstitutionPageEmpty5}
+\pastebutton{PolynomialSubstitutionPageFull5}{\hidepaste}
+\tab{5}\spadcommand{eval(q,[x=y,y=x])\free{q }}
+\indentrel{3}\begin{verbatim}
+         3         4
+   (5)  y  + 5y - x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty5}
+\begin{paste}{PolynomialSubstitutionPageEmpty5}{PolynomialSubstitutionPagePatch5}
+\pastebutton{PolynomialSubstitutionPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{eval(q,[x=y,y=x])\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch6}
+\begin{paste}{PolynomialSubstitutionPageFull6}{PolynomialSubstitutionPageEmpty6}
+\pastebutton{PolynomialSubstitutionPageFull6}{\hidepaste}
+\tab{5}\spadcommand{px := eval(p, y = sin(2.0))\bound{px }\free{p }}
+\indentrel{3}\begin{verbatim}
+         2
+   (6)  x  + 0.8268218104 3180595732
+                                 Type: Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty6}
+\begin{paste}{PolynomialSubstitutionPageEmpty6}{PolynomialSubstitutionPagePatch6}
+\pastebutton{PolynomialSubstitutionPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{px := eval(p, y = sin(2.0))\bound{px }\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPagePatch7}
+\begin{paste}{PolynomialSubstitutionPageFull7}{PolynomialSubstitutionPageEmpty7}
+\pastebutton{PolynomialSubstitutionPageFull7}{\hidepaste}
+\tab{5}\spadcommand{eval(px, x = cos(2.0))\free{px }}
+\indentrel{3}\begin{verbatim}
+   (7)  1.0
+                                 Type: Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialSubstitutionPageEmpty7}
+\begin{paste}{PolynomialSubstitutionPageEmpty7}{PolynomialSubstitutionPagePatch7}
+\pastebutton{PolynomialSubstitutionPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{eval(px, x = cos(2.0))\free{px }}
+\end{paste}\end{patch}
+
 @
 \pagehead{PolynomialGCDPage}{poly.ht}
 {Greatest Common Divisors, Resultants, and Discriminants}
@@ -17684,6 +48414,73 @@ polynomials could have involved variables other than x.)
 \autobuttons
 \end{page}
 
+\begin{patch}{PolynomialGCDPagePatch1}
+\begin{paste}{PolynomialGCDPageFull1}{PolynomialGCDPageEmpty1}
+\pastebutton{PolynomialGCDPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2\bound{p }}
+\indentrel{3}\begin{verbatim}
+          8     7     2
+   (1)  3x  + 2x  + 6x  + 7x + 2
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPageEmpty1}
+\begin{paste}{PolynomialGCDPageEmpty1}{PolynomialGCDPagePatch1}
+\pastebutton{PolynomialGCDPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPagePatch2}
+\begin{paste}{PolynomialGCDPageFull2}{PolynomialGCDPageEmpty2}
+\pastebutton{PolynomialGCDPageFull2}{\hidepaste}
+\tab{5}\spadcommand{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5\bound{q }}
+\indentrel{3}\begin{verbatim}
+          13     7     6
+   (2)  2x   + 9x  + 2x  + 10x + 5
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPageEmpty2}
+\begin{paste}{PolynomialGCDPageEmpty2}{PolynomialGCDPagePatch2}
+\pastebutton{PolynomialGCDPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPagePatch3}
+\begin{paste}{PolynomialGCDPageFull3}{PolynomialGCDPageEmpty3}
+\pastebutton{PolynomialGCDPageFull3}{\hidepaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+         7
+   (3)  x  + 2x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPageEmpty3}
+\begin{paste}{PolynomialGCDPageEmpty3}{PolynomialGCDPagePatch3}
+\pastebutton{PolynomialGCDPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPagePatch4}
+\begin{paste}{PolynomialGCDPageFull4}{PolynomialGCDPageEmpty4}
+\pastebutton{PolynomialGCDPageFull4}{\hidepaste}
+\tab{5}\spadcommand{resultant(p,q,x)\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (4)  0
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialGCDPageEmpty4}
+\begin{paste}{PolynomialGCDPageEmpty4}{PolynomialGCDPagePatch4}
+\pastebutton{PolynomialGCDPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{resultant(p,q,x)\free{p q }}
+\end{paste}\end{patch}
+
 @
 \pagehead{PolynomialRootPage}{poly.ht}{Roots of Polynomials}
 <<poly.ht>>=
@@ -18071,6 +48868,779 @@ to display the full list of operations defined by
 \autobuttons
 \end{page}
 
+\begin{patch}{PolynomialXmpPagePatch1}
+\begin{paste}{PolynomialXmpPageFull1}{PolynomialXmpPageEmpty1}
+\pastebutton{PolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x + 1}
+\indentrel{3}\begin{verbatim}
+   (1)  x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty1}
+\begin{paste}{PolynomialXmpPageEmpty1}{PolynomialXmpPagePatch1}
+\pastebutton{PolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x + 1}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch2}
+\begin{paste}{PolynomialXmpPageFull2}{PolynomialXmpPageEmpty2}
+\pastebutton{PolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{z - 2.3}
+\indentrel{3}\begin{verbatim}
+   (2)  z - 2.3
+                                 Type: Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty2}
+\begin{paste}{PolynomialXmpPageEmpty2}{PolynomialXmpPagePatch2}
+\pastebutton{PolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{z - 2.3}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch3}
+\begin{paste}{PolynomialXmpPageFull3}{PolynomialXmpPageEmpty3}
+\pastebutton{PolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{y**2 - z + 3/4}
+\indentrel{3}\begin{verbatim}
+               2   3
+   (3)  - z + y  + Ä
+                   4
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty3}
+\begin{paste}{PolynomialXmpPageEmpty3}{PolynomialXmpPagePatch3}
+\pastebutton{PolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{y**2 - z + 3/4}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch4}
+\begin{paste}{PolynomialXmpPageFull4}{PolynomialXmpPageEmpty4}
+\pastebutton{PolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{y **2 + x*y + y\bound{prev }}
+\indentrel{3}\begin{verbatim}
+         2
+   (4)  y  + (x + 1)y
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty4}
+\begin{paste}{PolynomialXmpPageEmpty4}{PolynomialXmpPagePatch4}
+\pastebutton{PolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{y **2 + x*y + y\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch5}
+\begin{paste}{PolynomialXmpPageFull5}{PolynomialXmpPageEmpty5}
+\pastebutton{PolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{\% :: DMP([y,x],INT)\free{prev }}
+\indentrel{3}\begin{verbatim}
+         2
+   (5)  y  + y x + y
+ Type: DistributedMultivariatePolynomial([y,x],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty5}
+\begin{paste}{PolynomialXmpPageEmpty5}{PolynomialXmpPagePatch5}
+\pastebutton{PolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{\% :: DMP([y,x],INT)\free{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch6}
+\begin{paste}{PolynomialXmpPageFull6}{PolynomialXmpPageEmpty6}
+\pastebutton{PolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p := (y-1)**2 * x * z\bound{p }}
+\indentrel{3}\begin{verbatim}
+            2
+   (6)  (x y  - 2x y + x)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty6}
+\begin{paste}{PolynomialXmpPageEmpty6}{PolynomialXmpPagePatch6}
+\pastebutton{PolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p := (y-1)**2 * x * z\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch7}
+\begin{paste}{PolynomialXmpPageFull7}{PolynomialXmpPageEmpty7}
+\pastebutton{PolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{q := (y-1) * x * (z+5)\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (7)  (x y - x)z + 5x y - 5x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty7}
+\begin{paste}{PolynomialXmpPageEmpty7}{PolynomialXmpPagePatch7}
+\pastebutton{PolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{q := (y-1) * x * (z+5)\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch8}
+\begin{paste}{PolynomialXmpPageFull8}{PolynomialXmpPageEmpty8}
+\pastebutton{PolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{factor(q)\free{q }}
+\indentrel{3}\begin{verbatim}
+   (8)  x(y - 1)(z + 5)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty8}
+\begin{paste}{PolynomialXmpPageEmpty8}{PolynomialXmpPagePatch8}
+\pastebutton{PolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{factor(q)\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch9}
+\begin{paste}{PolynomialXmpPageFull9}{PolynomialXmpPageEmpty9}
+\pastebutton{PolynomialXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{p - q**2\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (9)
+         2 2     2     2  2
+     (- x y  + 2x y - x )z
+   + 
+            2      2       2             2            2 2
+     ((- 10x  + x)y  + (20x  - 2x)y - 10x  + x)z - 25x y
+   + 
+        2       2
+     50x y - 25x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty9}
+\begin{paste}{PolynomialXmpPageEmpty9}{PolynomialXmpPagePatch9}
+\pastebutton{PolynomialXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p - q**2\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch10}
+\begin{paste}{PolynomialXmpPageFull10}{PolynomialXmpPageEmpty10}
+\pastebutton{PolynomialXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }\bound{prev4 }}
+\indentrel{3}\begin{verbatim}
+   (10)  x y - x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty10}
+\begin{paste}{PolynomialXmpPageEmpty10}{PolynomialXmpPagePatch10}
+\pastebutton{PolynomialXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }\bound{prev4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch11}
+\begin{paste}{PolynomialXmpPageFull11}{PolynomialXmpPageEmpty11}
+\pastebutton{PolynomialXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{factor \%\free{prev4 }}
+\indentrel{3}\begin{verbatim}
+   (11)  x(y - 1)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty11}
+\begin{paste}{PolynomialXmpPageEmpty11}{PolynomialXmpPagePatch11}
+\pastebutton{PolynomialXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{factor \%\free{prev4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch12}
+\begin{paste}{PolynomialXmpPageFull12}{PolynomialXmpPageEmpty12}
+\pastebutton{PolynomialXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{lcm(p,q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+             2             2        2
+   (12)  (x y  - 2x y + x)z  + (5x y  - 10x y + 5x)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty12}
+\begin{paste}{PolynomialXmpPageEmpty12}{PolynomialXmpPagePatch12}
+\pastebutton{PolynomialXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{lcm(p,q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch13}
+\begin{paste}{PolynomialXmpPageFull13}{PolynomialXmpPageEmpty13}
+\pastebutton{PolynomialXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{content p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty13}
+\begin{paste}{PolynomialXmpPageEmpty13}{PolynomialXmpPagePatch13}
+\pastebutton{PolynomialXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{content p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch14}
+\begin{paste}{PolynomialXmpPageFull14}{PolynomialXmpPageEmpty14}
+\pastebutton{PolynomialXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{resultant(p,q,z)\free{p q }}
+\indentrel{3}\begin{verbatim}
+           2 3      2 2      2      2
+   (14)  5x y  - 15x y  + 15x y - 5x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty14}
+\begin{paste}{PolynomialXmpPageEmpty14}{PolynomialXmpPagePatch14}
+\pastebutton{PolynomialXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{resultant(p,q,z)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch15}
+\begin{paste}{PolynomialXmpPageFull15}{PolynomialXmpPageEmpty15}
+\pastebutton{PolynomialXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{resultant(p,q,x)\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+   (15)  0
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty15}
+\begin{paste}{PolynomialXmpPageEmpty15}{PolynomialXmpPagePatch15}
+\pastebutton{PolynomialXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{resultant(p,q,x)\free{p }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch16}
+\begin{paste}{PolynomialXmpPageFull16}{PolynomialXmpPageEmpty16}
+\pastebutton{PolynomialXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{mainVariable p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (16)  z
+                                Type: Union(Symbol,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty16}
+\begin{paste}{PolynomialXmpPageEmpty16}{PolynomialXmpPagePatch16}
+\pastebutton{PolynomialXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{mainVariable p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch17}
+\begin{paste}{PolynomialXmpPageFull17}{PolynomialXmpPageEmpty17}
+\pastebutton{PolynomialXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{mainVariable(1 :: POLY INT)}
+\indentrel{3}\begin{verbatim}
+   (17)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty17}
+\begin{paste}{PolynomialXmpPageEmpty17}{PolynomialXmpPagePatch17}
+\pastebutton{PolynomialXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{mainVariable(1 :: POLY INT)}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch18}
+\begin{paste}{PolynomialXmpPageFull18}{PolynomialXmpPageEmpty18}
+\pastebutton{PolynomialXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{ground? p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (18)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty18}
+\begin{paste}{PolynomialXmpPageEmpty18}{PolynomialXmpPagePatch18}
+\pastebutton{PolynomialXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{ground? p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch19}
+\begin{paste}{PolynomialXmpPageFull19}{PolynomialXmpPageEmpty19}
+\pastebutton{PolynomialXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{ground?(1 :: POLY INT)}
+\indentrel{3}\begin{verbatim}
+   (19)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty19}
+\begin{paste}{PolynomialXmpPageEmpty19}{PolynomialXmpPagePatch19}
+\pastebutton{PolynomialXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{ground?(1 :: POLY INT)}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch20}
+\begin{paste}{PolynomialXmpPageFull20}{PolynomialXmpPageEmpty20}
+\pastebutton{PolynomialXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{variables p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (20)  [z,y,x]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty20}
+\begin{paste}{PolynomialXmpPageEmpty20}{PolynomialXmpPagePatch20}
+\pastebutton{PolynomialXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{variables p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch21}
+\begin{paste}{PolynomialXmpPageFull21}{PolynomialXmpPageEmpty21}
+\pastebutton{PolynomialXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{degree(p,x)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (21)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty21}
+\begin{paste}{PolynomialXmpPageEmpty21}{PolynomialXmpPagePatch21}
+\pastebutton{PolynomialXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{degree(p,x)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch22}
+\begin{paste}{PolynomialXmpPageFull22}{PolynomialXmpPageEmpty22}
+\pastebutton{PolynomialXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{degree(p,y)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (22)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty22}
+\begin{paste}{PolynomialXmpPageEmpty22}{PolynomialXmpPagePatch22}
+\pastebutton{PolynomialXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{degree(p,y)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch23}
+\begin{paste}{PolynomialXmpPageFull23}{PolynomialXmpPageEmpty23}
+\pastebutton{PolynomialXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{degree(p,z)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (23)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty23}
+\begin{paste}{PolynomialXmpPageEmpty23}{PolynomialXmpPagePatch23}
+\pastebutton{PolynomialXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{degree(p,z)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch24}
+\begin{paste}{PolynomialXmpPageFull24}{PolynomialXmpPageEmpty24}
+\pastebutton{PolynomialXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{degree(p,[x,y,z])\free{p }}
+\indentrel{3}\begin{verbatim}
+   (24)  [1,2,1]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty24}
+\begin{paste}{PolynomialXmpPageEmpty24}{PolynomialXmpPagePatch24}
+\pastebutton{PolynomialXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{degree(p,[x,y,z])\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch25}
+\begin{paste}{PolynomialXmpPageFull25}{PolynomialXmpPageEmpty25}
+\pastebutton{PolynomialXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{minimumDegree(p,z)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (25)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty25}
+\begin{paste}{PolynomialXmpPageEmpty25}{PolynomialXmpPagePatch25}
+\pastebutton{PolynomialXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{minimumDegree(p,z)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch26}
+\begin{paste}{PolynomialXmpPageFull26}{PolynomialXmpPageEmpty26}
+\pastebutton{PolynomialXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{totalDegree p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (26)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty26}
+\begin{paste}{PolynomialXmpPageEmpty26}{PolynomialXmpPagePatch26}
+\pastebutton{PolynomialXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{totalDegree p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch27}
+\begin{paste}{PolynomialXmpPageFull27}{PolynomialXmpPageEmpty27}
+\pastebutton{PolynomialXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{leadingMonomial p\free{p }}
+\indentrel{3}\begin{verbatim}
+            2
+   (27)  x y z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty27}
+\begin{paste}{PolynomialXmpPageEmpty27}{PolynomialXmpPagePatch27}
+\pastebutton{PolynomialXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{leadingMonomial p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch28}
+\begin{paste}{PolynomialXmpPageFull28}{PolynomialXmpPageEmpty28}
+\pastebutton{PolynomialXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{reductum p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (28)  (- 2x y + x)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty28}
+\begin{paste}{PolynomialXmpPageEmpty28}{PolynomialXmpPagePatch28}
+\pastebutton{PolynomialXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{reductum p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch29}
+\begin{paste}{PolynomialXmpPageFull29}{PolynomialXmpPageEmpty29}
+\pastebutton{PolynomialXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{p - leadingMonomial p - reductum p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (29)  0
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty29}
+\begin{paste}{PolynomialXmpPageEmpty29}{PolynomialXmpPagePatch29}
+\pastebutton{PolynomialXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{p - leadingMonomial p - reductum p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch30}
+\begin{paste}{PolynomialXmpPageFull30}{PolynomialXmpPageEmpty30}
+\pastebutton{PolynomialXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{leadingCoefficient p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (30)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty30}
+\begin{paste}{PolynomialXmpPageEmpty30}{PolynomialXmpPagePatch30}
+\pastebutton{PolynomialXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{leadingCoefficient p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch31}
+\begin{paste}{PolynomialXmpPageFull31}{PolynomialXmpPageEmpty31}
+\pastebutton{PolynomialXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{p\free{p }}
+\indentrel{3}\begin{verbatim}
+             2
+   (31)  (x y  - 2x y + x)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty31}
+\begin{paste}{PolynomialXmpPageEmpty31}{PolynomialXmpPagePatch31}
+\pastebutton{PolynomialXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch32}
+\begin{paste}{PolynomialXmpPageFull32}{PolynomialXmpPageEmpty32}
+\pastebutton{PolynomialXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{eval(p,x,w)\free{p }}
+\indentrel{3}\begin{verbatim}
+             2
+   (32)  (w y  - 2w y + w)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty32}
+\begin{paste}{PolynomialXmpPageEmpty32}{PolynomialXmpPagePatch32}
+\pastebutton{PolynomialXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{eval(p,x,w)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch33}
+\begin{paste}{PolynomialXmpPageFull33}{PolynomialXmpPageEmpty33}
+\pastebutton{PolynomialXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{eval(p,x,1)\free{p }}
+\indentrel{3}\begin{verbatim}
+           2
+   (33)  (y  - 2y + 1)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty33}
+\begin{paste}{PolynomialXmpPageEmpty33}{PolynomialXmpPagePatch33}
+\pastebutton{PolynomialXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{eval(p,x,1)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch34}
+\begin{paste}{PolynomialXmpPageFull34}{PolynomialXmpPageEmpty34}
+\pastebutton{PolynomialXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{eval(p,x,y**2 - 1)\free{p }}
+\indentrel{3}\begin{verbatim}
+           4     3
+   (34)  (y  - 2y  + 2y - 1)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty34}
+\begin{paste}{PolynomialXmpPageEmpty34}{PolynomialXmpPagePatch34}
+\pastebutton{PolynomialXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{eval(p,x,y**2 - 1)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch35}
+\begin{paste}{PolynomialXmpPageFull35}{PolynomialXmpPageEmpty35}
+\pastebutton{PolynomialXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{D(p,x)\free{p }}
+\indentrel{3}\begin{verbatim}
+           2
+   (35)  (y  - 2y + 1)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty35}
+\begin{paste}{PolynomialXmpPageEmpty35}{PolynomialXmpPagePatch35}
+\pastebutton{PolynomialXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{D(p,x)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch36}
+\begin{paste}{PolynomialXmpPageFull36}{PolynomialXmpPageEmpty36}
+\pastebutton{PolynomialXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{D(p,y)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (36)  (2x y - 2x)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty36}
+\begin{paste}{PolynomialXmpPageEmpty36}{PolynomialXmpPagePatch36}
+\pastebutton{PolynomialXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{D(p,y)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch37}
+\begin{paste}{PolynomialXmpPageFull37}{PolynomialXmpPageEmpty37}
+\pastebutton{PolynomialXmpPageFull37}{\hidepaste}
+\tab{5}\spadcommand{D(p,z)\free{p }}
+\indentrel{3}\begin{verbatim}
+            2
+   (37)  x y  - 2x y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty37}
+\begin{paste}{PolynomialXmpPageEmpty37}{PolynomialXmpPagePatch37}
+\pastebutton{PolynomialXmpPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{D(p,z)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch38}
+\begin{paste}{PolynomialXmpPageFull38}{PolynomialXmpPageEmpty38}
+\pastebutton{PolynomialXmpPageFull38}{\hidepaste}
+\tab{5}\spadcommand{integrate(p,y)\free{p }}
+\indentrel{3}\begin{verbatim}
+          1    3      2
+   (38)  (Ä x y  - x y  + x y)z
+          3
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty38}
+\begin{paste}{PolynomialXmpPageEmpty38}{PolynomialXmpPagePatch38}
+\pastebutton{PolynomialXmpPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{integrate(p,y)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch39}
+\begin{paste}{PolynomialXmpPageFull39}{PolynomialXmpPageEmpty39}
+\pastebutton{PolynomialXmpPageFull39}{\hidepaste}
+\tab{5}\spadcommand{qr := monicDivide(p,x+1,x)\free{p }\bound{qr }}
+\indentrel{3}\begin{verbatim}
+   (39)
+                2                           2
+   [quotient= (y  - 2y + 1)z,remainder= (- y  + 2y - 1)z]
+Type: Record(quotient: Polynomial Integer,remainder: Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty39}
+\begin{paste}{PolynomialXmpPageEmpty39}{PolynomialXmpPagePatch39}
+\pastebutton{PolynomialXmpPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{qr := monicDivide(p,x+1,x)\free{p }\bound{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch40}
+\begin{paste}{PolynomialXmpPageFull40}{PolynomialXmpPageEmpty40}
+\pastebutton{PolynomialXmpPageFull40}{\hidepaste}
+\tab{5}\spadcommand{qr.remainder\free{qr }}
+\indentrel{3}\begin{verbatim}
+             2
+   (40)  (- y  + 2y - 1)z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty40}
+\begin{paste}{PolynomialXmpPageEmpty40}{PolynomialXmpPagePatch40}
+\pastebutton{PolynomialXmpPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{qr.remainder\free{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch41}
+\begin{paste}{PolynomialXmpPageFull41}{PolynomialXmpPageEmpty41}
+\pastebutton{PolynomialXmpPageFull41}{\hidepaste}
+\tab{5}\spadcommand{p - ((x+1) * qr.quotient + qr.remainder)\free{p }\free{qr }}
+\indentrel{3}\begin{verbatim}
+   (41)  0
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty41}
+\begin{paste}{PolynomialXmpPageEmpty41}{PolynomialXmpPagePatch41}
+\pastebutton{PolynomialXmpPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{p - ((x+1) * qr.quotient + qr.remainder)\free{p }\free{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch42}
+\begin{paste}{PolynomialXmpPageFull42}{PolynomialXmpPageEmpty42}
+\pastebutton{PolynomialXmpPageFull42}{\hidepaste}
+\tab{5}\spadcommand{p/q\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+         (y - 1)z
+   (42)  ÄÄÄÄÄÄÄÄ
+           z + 5
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty42}
+\begin{paste}{PolynomialXmpPageEmpty42}{PolynomialXmpPagePatch42}
+\pastebutton{PolynomialXmpPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{p/q\free{p }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch43}
+\begin{paste}{PolynomialXmpPageFull43}{PolynomialXmpPageEmpty43}
+\pastebutton{PolynomialXmpPageFull43}{\hidepaste}
+\tab{5}\spadcommand{(2/3) * x**2 - y + 4/5\bound{prev1 }}
+\indentrel{3}\begin{verbatim}
+               2  2   4
+   (43)  - y + Ä x  + Ä
+               3      5
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty43}
+\begin{paste}{PolynomialXmpPageEmpty43}{PolynomialXmpPagePatch43}
+\pastebutton{PolynomialXmpPageEmpty43}{\showpaste}
+\tab{5}\spadcommand{(2/3) * x**2 - y + 4/5\bound{prev1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch44}
+\begin{paste}{PolynomialXmpPageFull44}{PolynomialXmpPageEmpty44}
+\pastebutton{PolynomialXmpPageFull44}{\hidepaste}
+\tab{5}\spadcommand{\% :: FRAC POLY INT\free{prev1 }\bound{prev2 }}
+\indentrel{3}\begin{verbatim}
+                    2
+         - 15y + 10x  + 12
+   (44)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 15
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty44}
+\begin{paste}{PolynomialXmpPageEmpty44}{PolynomialXmpPagePatch44}
+\pastebutton{PolynomialXmpPageEmpty44}{\showpaste}
+\tab{5}\spadcommand{\% :: FRAC POLY INT\free{prev1 }\bound{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch45}
+\begin{paste}{PolynomialXmpPageFull45}{PolynomialXmpPageEmpty45}
+\pastebutton{PolynomialXmpPageFull45}{\hidepaste}
+\tab{5}\spadcommand{\% :: POLY FRAC INT\free{prev2 }\bound{prev3 }}
+\indentrel{3}\begin{verbatim}
+               2  2   4
+   (45)  - y + Ä x  + Ä
+               3      5
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty45}
+\begin{paste}{PolynomialXmpPageEmpty45}{PolynomialXmpPagePatch45}
+\pastebutton{PolynomialXmpPageEmpty45}{\showpaste}
+\tab{5}\spadcommand{\% :: POLY FRAC INT\free{prev2 }\bound{prev3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPagePatch46}
+\begin{paste}{PolynomialXmpPageFull46}{PolynomialXmpPageEmpty46}
+\pastebutton{PolynomialXmpPageFull46}{\hidepaste}
+\tab{5}\spadcommand{map(numeric,\%)\free{prev3 }}
+\indentrel{3}\begin{verbatim}
+                                            2
+   (46)  - 1.0 y + 0.6666666666 6666666667 x  + 0.8
+                                 Type: Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{PolynomialXmpPageEmpty46}
+\begin{paste}{PolynomialXmpPageEmpty46}{PolynomialXmpPagePatch46}
+\pastebutton{PolynomialXmpPageEmpty46}{\showpaste}
+\tab{5}\spadcommand{map(numeric,\%)\free{prev3 }}
+\end{paste}\end{patch}
+
 @
 \section{quat.ht}
 \pagehead{QuaternionXmpPage}{quat.ht}{Quaternion}
@@ -18153,6 +49723,207 @@ The norm is the quaternion times its conjugate.
 \autobuttons
 \end{page}
 
+\begin{patch}{QuaternionXmpPagePatch1}
+\begin{paste}{QuaternionXmpPageFull1}{QuaternionXmpPageEmpty1}
+\pastebutton{QuaternionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{q := quatern(2/11,-8,3/4,1)\bound{q }}
+\indentrel{3}\begin{verbatim}
+         2        3
+   (1)  ÄÄ - 8i + Ä j + k
+        11        4
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty1}
+\begin{paste}{QuaternionXmpPageEmpty1}{QuaternionXmpPagePatch1}
+\pastebutton{QuaternionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{q := quatern(2/11,-8,3/4,1)\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch2}
+\begin{paste}{QuaternionXmpPageFull2}{QuaternionXmpPageEmpty2}
+\pastebutton{QuaternionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{[real q, imagI q, imagJ q, imagK q]\free{q }}
+\indentrel{3}\begin{verbatim}
+          2     3
+   (2)  [ÄÄ,- 8,Ä,1]
+         11     4
+                            Type: List Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty2}
+\begin{paste}{QuaternionXmpPageEmpty2}{QuaternionXmpPagePatch2}
+\pastebutton{QuaternionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{[real q, imagI q, imagJ q, imagK q]\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch3}
+\begin{paste}{QuaternionXmpPageFull3}{QuaternionXmpPageEmpty3}
+\pastebutton{QuaternionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{inv q\free{q }}
+\indentrel{3}\begin{verbatim}
+          352     15488      484       1936
+   (3)  ÄÄÄÄÄÄ + ÄÄÄÄÄÄ i - ÄÄÄÄÄ j - ÄÄÄÄÄÄ k
+        126993   126993     42331     126993
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty3}
+\begin{paste}{QuaternionXmpPageEmpty3}{QuaternionXmpPagePatch3}
+\pastebutton{QuaternionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{inv q\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch4}
+\begin{paste}{QuaternionXmpPageFull4}{QuaternionXmpPageEmpty4}
+\pastebutton{QuaternionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{q**6\free{q }}
+\indentrel{3}\begin{verbatim}
+   (4)
+       2029490709319345   48251690851     144755072553
+     - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄÄÄÄÄÄÄÄ i + ÄÄÄÄÄÄÄÄÄÄÄÄ j
+          7256313856        1288408         41229056
+   + 
+     48251690851
+     ÄÄÄÄÄÄÄÄÄÄÄ k
+       10307264
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty4}
+\begin{paste}{QuaternionXmpPageEmpty4}{QuaternionXmpPagePatch4}
+\pastebutton{QuaternionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{q**6\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch5}
+\begin{paste}{QuaternionXmpPageFull5}{QuaternionXmpPageEmpty5}
+\pastebutton{QuaternionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{r := quatern(-2,3,23/9,-89); q + r\bound{r }\free{q }}
+\indentrel{3}\begin{verbatim}
+          20        119
+   (5)  - ÄÄ - 5i + ÄÄÄ j - 88k
+          11         36
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty5}
+\begin{paste}{QuaternionXmpPageEmpty5}{QuaternionXmpPagePatch5}
+\pastebutton{QuaternionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{r := quatern(-2,3,23/9,-89); q + r\bound{r }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch6}
+\begin{paste}{QuaternionXmpPageFull6}{QuaternionXmpPageEmpty6}
+\pastebutton{QuaternionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q * r - r * q\free{q r }}
+\indentrel{3}\begin{verbatim}
+          2495             817
+   (6)  - ÄÄÄÄ i - 1418j - ÄÄÄ k
+           18               18
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty6}
+\begin{paste}{QuaternionXmpPageEmpty6}{QuaternionXmpPagePatch6}
+\pastebutton{QuaternionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q * r - r * q\free{q r }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch7}
+\begin{paste}{QuaternionXmpPageFull7}{QuaternionXmpPageEmpty7}
+\pastebutton{QuaternionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1)\bound{i j k }}
+\indentrel{3}\begin{verbatim}
+   (7)  k
+                               Type: Quaternion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty7}
+\begin{paste}{QuaternionXmpPageEmpty7}{QuaternionXmpPagePatch7}
+\pastebutton{QuaternionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1)\bound{i j k }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch8}
+\begin{paste}{QuaternionXmpPageFull8}{QuaternionXmpPageEmpty8}
+\pastebutton{QuaternionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{[i*i, j*j, k*k, i*j, j*k, k*i, q*i]\free{i j k q }}
+\indentrel{3}\begin{verbatim}
+                                2         3
+   (8)  [- 1,- 1,- 1,k,i,j,8 + ÄÄ i + j - Ä k]
+                               11         4
+                 Type: List Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty8}
+\begin{paste}{QuaternionXmpPageEmpty8}{QuaternionXmpPagePatch8}
+\pastebutton{QuaternionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{[i*i, j*j, k*k, i*j, j*k, k*i, q*i]\free{i j k q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch9}
+\begin{paste}{QuaternionXmpPageFull9}{QuaternionXmpPageEmpty9}
+\pastebutton{QuaternionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{norm q\free{q }}
+\indentrel{3}\begin{verbatim}
+        126993
+   (9)  ÄÄÄÄÄÄ
+         1936
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty9}
+\begin{paste}{QuaternionXmpPageEmpty9}{QuaternionXmpPagePatch9}
+\pastebutton{QuaternionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{norm q\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch10}
+\begin{paste}{QuaternionXmpPageFull10}{QuaternionXmpPageEmpty10}
+\pastebutton{QuaternionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{conjugate q\free{q }\bound{prev }}
+\indentrel{3}\begin{verbatim}
+          2        3
+   (10)  ÄÄ + 8i - Ä j - k
+         11        4
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty10}
+\begin{paste}{QuaternionXmpPageEmpty10}{QuaternionXmpPagePatch10}
+\pastebutton{QuaternionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{conjugate q\free{q }\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPagePatch11}
+\begin{paste}{QuaternionXmpPageFull11}{QuaternionXmpPageEmpty11}
+\pastebutton{QuaternionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{q * \%\free{q prev }}
+\indentrel{3}\begin{verbatim}
+         126993
+   (11)  ÄÄÄÄÄÄ
+          1936
+                      Type: Quaternion Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{QuaternionXmpPageEmpty11}
+\begin{paste}{QuaternionXmpPageEmpty11}{QuaternionXmpPagePatch11}
+\pastebutton{QuaternionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{q * \%\free{q prev }}
+\end{paste}\end{patch}
+
 @
 \section{radix.ht}
 \pagehead{RadixExpansionXmpPage}{radix.ht}{RadixExpansion}
@@ -18274,7 +50045,290 @@ More examples of expansions are available in
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{RadixExpansionXmpPagePatch1}
+\begin{paste}{RadixExpansionXmpPageFull1}{RadixExpansionXmpPageEmpty1}
+\pastebutton{RadixExpansionXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{111::RadixExpansion(5)}
+\indentrel{3}\begin{verbatim}
+   (1)  421
+                                 Type: RadixExpansion 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty1}
+\begin{paste}{RadixExpansionXmpPageEmpty1}{RadixExpansionXmpPagePatch1}
+\pastebutton{RadixExpansionXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{111::RadixExpansion(5)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch2}
+\begin{paste}{RadixExpansionXmpPageFull2}{RadixExpansionXmpPageEmpty2}
+\pastebutton{RadixExpansionXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(2)}
+\indentrel{3}\begin{verbatim}
+             __
+   (2)  0.00110
+                                 Type: RadixExpansion 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty2}
+\begin{paste}{RadixExpansionXmpPageEmpty2}{RadixExpansionXmpPagePatch2}
+\pastebutton{RadixExpansionXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(2)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch3}
+\begin{paste}{RadixExpansionXmpPageFull3}{RadixExpansionXmpPageEmpty3}
+\pastebutton{RadixExpansionXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(3)}
+\indentrel{3}\begin{verbatim}
+           __
+   (3)  0.012
+                                 Type: RadixExpansion 3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty3}
+\begin{paste}{RadixExpansionXmpPageEmpty3}{RadixExpansionXmpPagePatch3}
+\pastebutton{RadixExpansionXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(3)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch4}
+\begin{paste}{RadixExpansionXmpPageFull4}{RadixExpansionXmpPageEmpty4}
+\pastebutton{RadixExpansionXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(8)}
+\indentrel{3}\begin{verbatim}
+           __
+   (4)  0.152
+                                 Type: RadixExpansion 8
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty4}
+\begin{paste}{RadixExpansionXmpPageEmpty4}{RadixExpansionXmpPagePatch4}
+\pastebutton{RadixExpansionXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(8)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch5}
+\begin{paste}{RadixExpansionXmpPageFull5}{RadixExpansionXmpPageEmpty5}
+\pastebutton{RadixExpansionXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(10)}
+\indentrel{3}\begin{verbatim}
+             _
+   (5)  0.2083
+                                Type: RadixExpansion 10
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty5}
+\begin{paste}{RadixExpansionXmpPageEmpty5}{RadixExpansionXmpPagePatch5}
+\pastebutton{RadixExpansionXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(10)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch6}
+\begin{paste}{RadixExpansionXmpPageFull6}{RadixExpansionXmpPageEmpty6}
+\pastebutton{RadixExpansionXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(12)}
+\indentrel{3}\begin{verbatim}
+   (6)  0.26
+                                Type: RadixExpansion 12
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty6}
+\begin{paste}{RadixExpansionXmpPageEmpty6}{RadixExpansionXmpPagePatch6}
+\pastebutton{RadixExpansionXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(12)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch7}
+\begin{paste}{RadixExpansionXmpPageFull7}{RadixExpansionXmpPageEmpty7}
+\pastebutton{RadixExpansionXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(16)}
+\indentrel{3}\begin{verbatim}
+           _
+   (7)  0.35
+                                Type: RadixExpansion 16
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty7}
+\begin{paste}{RadixExpansionXmpPageEmpty7}{RadixExpansionXmpPagePatch7}
+\pastebutton{RadixExpansionXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(16)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch8}
+\begin{paste}{RadixExpansionXmpPageFull8}{RadixExpansionXmpPageEmpty8}
+\pastebutton{RadixExpansionXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(36)}
+\indentrel{3}\begin{verbatim}
+   (8)  0.7I
+                                Type: RadixExpansion 36
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty8}
+\begin{paste}{RadixExpansionXmpPageEmpty8}{RadixExpansionXmpPagePatch8}
+\pastebutton{RadixExpansionXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(36)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch9}
+\begin{paste}{RadixExpansionXmpPageFull9}{RadixExpansionXmpPageEmpty9}
+\pastebutton{RadixExpansionXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(38)}
+\indentrel{3}\begin{verbatim}
+                    _____
+   (9)  0 . 7 34 31 25 12
+                                Type: RadixExpansion 38
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty9}
+\begin{paste}{RadixExpansionXmpPageEmpty9}{RadixExpansionXmpPagePatch9}
+\pastebutton{RadixExpansionXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{(5/24)::RadixExpansion(38)}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch10}
+\begin{paste}{RadixExpansionXmpPageFull10}{RadixExpansionXmpPageEmpty10}
+\pastebutton{RadixExpansionXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{a := (76543/210)::RadixExpansion(8)\bound{a }}
+\indentrel{3}\begin{verbatim}
+              ____
+   (10)  554.37307
+                                 Type: RadixExpansion 8
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty10}
+\begin{paste}{RadixExpansionXmpPageEmpty10}{RadixExpansionXmpPagePatch10}
+\pastebutton{RadixExpansionXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{a := (76543/210)::RadixExpansion(8)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch11}
+\begin{paste}{RadixExpansionXmpPageFull11}{RadixExpansionXmpPageEmpty11}
+\pastebutton{RadixExpansionXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{w := wholeRagits a\free{a }\bound{w }}
+\indentrel{3}\begin{verbatim}
+   (11)  [5,5,4]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty11}
+\begin{paste}{RadixExpansionXmpPageEmpty11}{RadixExpansionXmpPagePatch11}
+\pastebutton{RadixExpansionXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{w := wholeRagits a\free{a }\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch12}
+\begin{paste}{RadixExpansionXmpPageFull12}{RadixExpansionXmpPageEmpty12}
+\pastebutton{RadixExpansionXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{f0 := prefixRagits a\free{a }\bound{f0 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [3]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty12}
+\begin{paste}{RadixExpansionXmpPageEmpty12}{RadixExpansionXmpPagePatch12}
+\pastebutton{RadixExpansionXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{f0 := prefixRagits a\free{a }\bound{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch13}
+\begin{paste}{RadixExpansionXmpPageFull13}{RadixExpansionXmpPageEmpty13}
+\pastebutton{RadixExpansionXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{f1 := cycleRagits a\free{a }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (13)  [7,3,0,7]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty13}
+\begin{paste}{RadixExpansionXmpPageEmpty13}{RadixExpansionXmpPagePatch13}
+\pastebutton{RadixExpansionXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{f1 := cycleRagits a\free{a }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch14}
+\begin{paste}{RadixExpansionXmpPageFull14}{RadixExpansionXmpPageEmpty14}
+\pastebutton{RadixExpansionXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)\free{w f0 f1 }\bound{u }}
+\indentrel{3}\begin{verbatim}
+              ____
+   (14)  554.37307
+                                 Type: RadixExpansion 8
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty14}
+\begin{paste}{RadixExpansionXmpPageEmpty14}{RadixExpansionXmpPagePatch14}
+\pastebutton{RadixExpansionXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)\free{w f0 f1 }\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch15}
+\begin{paste}{RadixExpansionXmpPageFull15}{RadixExpansionXmpPageEmpty15}
+\pastebutton{RadixExpansionXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0])\bound{v }}
+\indentrel{3}\begin{verbatim}
+               _
+   (15)  0.123B0
+                                Type: RadixExpansion 12
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty15}
+\begin{paste}{RadixExpansionXmpPageEmpty15}{RadixExpansionXmpPagePatch15}
+\pastebutton{RadixExpansionXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0])\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch16}
+\begin{paste}{RadixExpansionXmpPageFull16}{RadixExpansionXmpPageEmpty16}
+\pastebutton{RadixExpansionXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{fractRagits(u)\free{u }}
+\indentrel{3}\begin{verbatim}
+              _______
+   (16)  [3,7,3,0,7,7]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty16}
+\begin{paste}{RadixExpansionXmpPageEmpty16}{RadixExpansionXmpPagePatch16}
+\pastebutton{RadixExpansionXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{fractRagits(u)\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPagePatch17}
+\begin{paste}{RadixExpansionXmpPageFull17}{RadixExpansionXmpPageEmpty17}
+\pastebutton{RadixExpansionXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{a :: Fraction(Integer)\free{a }}
+\indentrel{3}\begin{verbatim}
+         76543
+   (17)  ÄÄÄÄÄ
+          210
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RadixExpansionXmpPageEmpty17}
+\begin{paste}{RadixExpansionXmpPageEmpty17}{RadixExpansionXmpPagePatch17}
+\pastebutton{RadixExpansionXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{a :: Fraction(Integer)\free{a }}
+\end{paste}\end{patch}
 
 @
 \section{reclos.ht}
@@ -18680,6 +50734,1264 @@ sqrt(22+2*s5)-sqrt(11+2*s29)+s5 \free{s29}\free{s5}\bound{dst4}}
 \autobuttons
 \end{page}
 
+\begin{patch}{RealClosureXmpPagePatch1}
+\begin{paste}{RealClosureXmpPageFull1}{RealClosureXmpPageEmpty1}
+\pastebutton{RealClosureXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Ran := RECLOS(FRAC INT)\bound{Ran }}
+\indentrel{3}\begin{verbatim}
+   (1)  RealClosure Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty1}
+\begin{paste}{RealClosureXmpPageEmpty1}{RealClosureXmpPagePatch1}
+\pastebutton{RealClosureXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Ran := RECLOS(FRAC INT)\bound{Ran }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch2}
+\begin{paste}{RealClosureXmpPageFull2}{RealClosureXmpPageEmpty2}
+\pastebutton{RealClosureXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)\free{Ran }\bound{fs }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty2}
+\begin{paste}{RealClosureXmpPageEmpty2}{RealClosureXmpPagePatch2}
+\pastebutton{RealClosureXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)\free{Ran }\bound{fs }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch3}
+\begin{paste}{RealClosureXmpPageFull3}{RealClosureXmpPageEmpty3}
+\pastebutton{RealClosureXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{squareDiff1 := fourSquares(73,548,60,586)\free{fs }\bound{sd1 }}
+\indentrel{3}\begin{verbatim}
+           ÚÄÄÄ¿    ÚÄÄ¿    ÚÄÄÄ¿    ÚÄÄ¿
+   (3)  - \³586  - \³60  + \³548  + \³73
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty3}
+\begin{paste}{RealClosureXmpPageEmpty3}{RealClosureXmpPagePatch3}
+\pastebutton{RealClosureXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{squareDiff1 := fourSquares(73,548,60,586)\free{fs }\bound{sd1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch4}
+\begin{paste}{RealClosureXmpPageFull4}{RealClosureXmpPageEmpty4}
+\pastebutton{RealClosureXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff1)\free{sd1 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+                ÚÄÄÄ¿          ÚÄÄ¿  ÚÄÄ¿
+         (54602\³548  + 149602\³73 )\³60
+       + 
+               ÚÄÄ¿ ÚÄÄÄ¿
+         49502\³73 \³548  + 9900895
+    *
+        ÚÄÄÄ¿
+       \³586
+   + 
+             ÚÄÄ¿ ÚÄÄÄ¿             ÚÄÄ¿            ÚÄÄÄ¿
+     (154702\³73 \³548  + 30941947)\³60  + 10238421\³548
+   + 
+              ÚÄÄ¿
+     28051871\³73
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty4}
+\begin{paste}{RealClosureXmpPageEmpty4}{RealClosureXmpPagePatch4}
+\pastebutton{RealClosureXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff1)\free{sd1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch5}
+\begin{paste}{RealClosureXmpPageFull5}{RealClosureXmpPageEmpty5}
+\pastebutton{RealClosureXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff1)\free{sd1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty5}
+\begin{paste}{RealClosureXmpPageEmpty5}{RealClosureXmpPagePatch5}
+\pastebutton{RealClosureXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff1)\free{sd1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch6}
+\begin{paste}{RealClosureXmpPageFull6}{RealClosureXmpPageEmpty6}
+\pastebutton{RealClosureXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{squareDiff2 := fourSquares(165,778,86,990)\free{fs }\bound{sd2 }}
+\indentrel{3}\begin{verbatim}
+           ÚÄÄÄ¿    ÚÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
+   (6)  - \³990  - \³86  + \³778  + \³165
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty6}
+\begin{paste}{RealClosureXmpPageEmpty6}{RealClosureXmpPagePatch6}
+\pastebutton{RealClosureXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{squareDiff2 := fourSquares(165,778,86,990)\free{fs }\bound{sd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch7}
+\begin{paste}{RealClosureXmpPageFull7}{RealClosureXmpPageEmpty7}
+\pastebutton{RealClosureXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff2)\free{sd2 }}
+\indentrel{3}\begin{verbatim}
+   (7)
+                 ÚÄÄÄ¿           ÚÄÄÄ¿  ÚÄÄ¿
+         (556778\³778  + 1209010\³165 )\³86
+       + 
+                ÚÄÄÄ¿ ÚÄÄÄ¿
+         401966\³165 \³778  + 144019431
+    *
+        ÚÄÄÄ¿
+       \³990
+   + 
+              ÚÄÄÄ¿ ÚÄÄÄ¿              ÚÄÄ¿
+     (1363822\³165 \³778  + 488640503)\³86
+   + 
+               ÚÄÄÄ¿             ÚÄÄÄ¿
+     162460913\³778  + 352774119\³165
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty7}
+\begin{paste}{RealClosureXmpPageEmpty7}{RealClosureXmpPagePatch7}
+\pastebutton{RealClosureXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff2)\free{sd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch8}
+\begin{paste}{RealClosureXmpPageFull8}{RealClosureXmpPageEmpty8}
+\pastebutton{RealClosureXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff2)\free{sd2 }}
+\indentrel{3}\begin{verbatim}
+   (8)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty8}
+\begin{paste}{RealClosureXmpPageEmpty8}{RealClosureXmpPagePatch8}
+\pastebutton{RealClosureXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff2)\free{sd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch9}
+\begin{paste}{RealClosureXmpPageFull9}{RealClosureXmpPageEmpty9}
+\pastebutton{RealClosureXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{squareDiff3 := fourSquares(217,708,226,692)\free{fs }\bound{sd3 }}
+\indentrel{3}\begin{verbatim}
+           ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
+   (9)  - \³692  - \³226  + \³708  + \³217
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty9}
+\begin{paste}{RealClosureXmpPageEmpty9}{RealClosureXmpPagePatch9}
+\pastebutton{RealClosureXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{squareDiff3 := fourSquares(217,708,226,692)\free{fs }\bound{sd3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch10}
+\begin{paste}{RealClosureXmpPageFull10}{RealClosureXmpPageEmpty10}
+\pastebutton{RealClosureXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff3)\free{sd3 }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                  ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
+         (- 34102\³708  - 61598\³217 )\³226
+       + 
+                 ÚÄÄÄ¿ ÚÄÄÄ¿
+         - 34802\³217 \³708  - 13641141
+    *
+        ÚÄÄÄ¿
+       \³692
+   + 
+              ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿
+     (- 60898\³217 \³708  - 23869841)\³226
+   + 
+                ÚÄÄÄ¿            ÚÄÄÄ¿
+     - 13486123\³708  - 24359809\³217
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty10}
+\begin{paste}{RealClosureXmpPageEmpty10}{RealClosureXmpPagePatch10}
+\pastebutton{RealClosureXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff3)\free{sd3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch11}
+\begin{paste}{RealClosureXmpPageFull11}{RealClosureXmpPageEmpty11}
+\pastebutton{RealClosureXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff3)\free{sd3 }}
+\indentrel{3}\begin{verbatim}
+   (11)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty11}
+\begin{paste}{RealClosureXmpPageEmpty11}{RealClosureXmpPagePatch11}
+\pastebutton{RealClosureXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff3)\free{sd3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch12}
+\begin{paste}{RealClosureXmpPageFull12}{RealClosureXmpPageEmpty12}
+\pastebutton{RealClosureXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{squareDiff4 := fourSquares(155,836,162,820)\free{fs }\bound{sd4 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
+   (12)  - \³820  - \³162  + \³836  + \³155
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty12}
+\begin{paste}{RealClosureXmpPageEmpty12}{RealClosureXmpPagePatch12}
+\pastebutton{RealClosureXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{squareDiff4 := fourSquares(155,836,162,820)\free{fs }\bound{sd4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch13}
+\begin{paste}{RealClosureXmpPageFull13}{RealClosureXmpPageEmpty13}
+\pastebutton{RealClosureXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff4)\free{sd4 }}
+\indentrel{3}\begin{verbatim}
+   (13)
+                  ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
+         (- 37078\³836  - 86110\³155 )\³162
+       + 
+                 ÚÄÄÄ¿ ÚÄÄÄ¿
+         - 37906\³155 \³836  - 13645107
+    *
+        ÚÄÄÄ¿
+       \³820
+   + 
+              ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿
+     (- 85282\³155 \³836  - 30699151)\³162
+   + 
+                ÚÄÄÄ¿            ÚÄÄÄ¿
+     - 13513901\³836  - 31384703\³155
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty13}
+\begin{paste}{RealClosureXmpPageEmpty13}{RealClosureXmpPagePatch13}
+\pastebutton{RealClosureXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff4)\free{sd4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch14}
+\begin{paste}{RealClosureXmpPageFull14}{RealClosureXmpPageEmpty14}
+\pastebutton{RealClosureXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff4)\free{sd4 }}
+\indentrel{3}\begin{verbatim}
+   (14)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty14}
+\begin{paste}{RealClosureXmpPageEmpty14}{RealClosureXmpPagePatch14}
+\pastebutton{RealClosureXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff4)\free{sd4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch15}
+\begin{paste}{RealClosureXmpPageFull15}{RealClosureXmpPageEmpty15}
+\pastebutton{RealClosureXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{squareDiff5 := fourSquares(591,772,552,818)\free{fs }\bound{sd5 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
+   (15)  - \³818  - \³552  + \³772  + \³591
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty15}
+\begin{paste}{RealClosureXmpPageEmpty15}{RealClosureXmpPagePatch15}
+\pastebutton{RealClosureXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{squareDiff5 := fourSquares(591,772,552,818)\free{fs }\bound{sd5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch16}
+\begin{paste}{RealClosureXmpPageFull16}{RealClosureXmpPageEmpty16}
+\pastebutton{RealClosureXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff5)\free{sd5 }}
+\indentrel{3}\begin{verbatim}
+   (16)
+                ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
+         (70922\³772  + 81058\³591 )\³552
+       + 
+               ÚÄÄÄ¿ ÚÄÄÄ¿
+         68542\³591 \³772  + 46297673
+    *
+        ÚÄÄÄ¿
+       \³818
+   + 
+            ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿            ÚÄÄÄ¿
+     (83438\³591 \³772  + 56359389)\³552  + 47657051\³772
+   + 
+              ÚÄÄÄ¿
+     54468081\³591
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty16}
+\begin{paste}{RealClosureXmpPageEmpty16}{RealClosureXmpPagePatch16}
+\pastebutton{RealClosureXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff5)\free{sd5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch17}
+\begin{paste}{RealClosureXmpPageFull17}{RealClosureXmpPageEmpty17}
+\pastebutton{RealClosureXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff5)\free{sd5 }}
+\indentrel{3}\begin{verbatim}
+   (17)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty17}
+\begin{paste}{RealClosureXmpPageEmpty17}{RealClosureXmpPagePatch17}
+\pastebutton{RealClosureXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff5)\free{sd5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch18}
+\begin{paste}{RealClosureXmpPageFull18}{RealClosureXmpPageEmpty18}
+\pastebutton{RealClosureXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{squareDiff6 := fourSquares(434,1053,412,1088)\free{fs }\bound{sd6 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
+   (18)  - \³1088  - \³412  + \³1053  + \³434
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty18}
+\begin{paste}{RealClosureXmpPageEmpty18}{RealClosureXmpPagePatch18}
+\pastebutton{RealClosureXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{squareDiff6 := fourSquares(434,1053,412,1088)\free{fs }\bound{sd6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch19}
+\begin{paste}{RealClosureXmpPageFull19}{RealClosureXmpPageEmpty19}
+\pastebutton{RealClosureXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff6)\free{sd6 }}
+\indentrel{3}\begin{verbatim}
+   (19)
+                 ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
+         (115442\³1053  + 179818\³434 )\³412
+       + 
+                ÚÄÄÄ¿ ÚÄÄÄÄ¿
+         112478\³434 \³1053  + 76037291
+    *
+        ÚÄÄÄÄ¿
+       \³1088
+   + 
+             ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
+     (182782\³434 \³1053  + 123564147)\³412
+   + 
+              ÚÄÄÄÄ¿             ÚÄÄÄ¿
+     77290639\³1053  + 120391609\³434
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty19}
+\begin{paste}{RealClosureXmpPageEmpty19}{RealClosureXmpPagePatch19}
+\pastebutton{RealClosureXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff6)\free{sd6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch20}
+\begin{paste}{RealClosureXmpPageFull20}{RealClosureXmpPageEmpty20}
+\pastebutton{RealClosureXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff6)\free{sd6 }}
+\indentrel{3}\begin{verbatim}
+   (20)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty20}
+\begin{paste}{RealClosureXmpPageEmpty20}{RealClosureXmpPagePatch20}
+\pastebutton{RealClosureXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff6)\free{sd6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch21}
+\begin{paste}{RealClosureXmpPageFull21}{RealClosureXmpPageEmpty21}
+\pastebutton{RealClosureXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{squareDiff7 := fourSquares(514,1049,446,1152)\free{fs }\bound{sd7 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
+   (21)  - \³1152  - \³446  + \³1049  + \³514
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty21}
+\begin{paste}{RealClosureXmpPageEmpty21}{RealClosureXmpPagePatch21}
+\pastebutton{RealClosureXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{squareDiff7 := fourSquares(514,1049,446,1152)\free{fs }\bound{sd7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch22}
+\begin{paste}{RealClosureXmpPageFull22}{RealClosureXmpPageEmpty22}
+\pastebutton{RealClosureXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff7)\free{sd7 }}
+\indentrel{3}\begin{verbatim}
+   (22)
+                 ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
+         (349522\³1049  + 499322\³514 )\³446
+       + 
+                ÚÄÄÄ¿ ÚÄÄÄÄ¿
+         325582\³514 \³1049  + 239072537
+    *
+        ÚÄÄÄÄ¿
+       \³1152
+   + 
+             ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
+     (523262\³514 \³1049  + 384227549)\³446
+   + 
+               ÚÄÄÄÄ¿             ÚÄÄÄ¿
+     250534873\³1049  + 357910443\³514
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty22}
+\begin{paste}{RealClosureXmpPageEmpty22}{RealClosureXmpPagePatch22}
+\pastebutton{RealClosureXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff7)\free{sd7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch23}
+\begin{paste}{RealClosureXmpPageFull23}{RealClosureXmpPageEmpty23}
+\pastebutton{RealClosureXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff7)\free{sd7 }}
+\indentrel{3}\begin{verbatim}
+   (23)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty23}
+\begin{paste}{RealClosureXmpPageEmpty23}{RealClosureXmpPagePatch23}
+\pastebutton{RealClosureXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff7)\free{sd7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch24}
+\begin{paste}{RealClosureXmpPageFull24}{RealClosureXmpPageEmpty24}
+\pastebutton{RealClosureXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{squareDiff8 := fourSquares(190,1751,208,1698)\free{fs }\bound{sd8 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
+   (24)  - \³1698  - \³208  + \³1751  + \³190
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty24}
+\begin{paste}{RealClosureXmpPageEmpty24}{RealClosureXmpPagePatch24}
+\pastebutton{RealClosureXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{squareDiff8 := fourSquares(190,1751,208,1698)\free{fs }\bound{sd8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch25}
+\begin{paste}{RealClosureXmpPageFull25}{RealClosureXmpPageEmpty25}
+\pastebutton{RealClosureXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{recip(squareDiff8)\free{sd8 }}
+\indentrel{3}\begin{verbatim}
+   (25)
+                   ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
+         (- 214702\³1751  - 651782\³190 )\³208
+       + 
+                  ÚÄÄÄ¿ ÚÄÄÄÄ¿
+         - 224642\³190 \³1751  - 129571901
+    *
+        ÚÄÄÄÄ¿
+       \³1698
+   + 
+               ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
+     (- 641842\³190 \³1751  - 370209881)\³208
+   + 
+                 ÚÄÄÄÄ¿             ÚÄÄÄ¿
+     - 127595865\³1751  - 387349387\³190
+          Type: Union(RealClosure Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty25}
+\begin{paste}{RealClosureXmpPageEmpty25}{RealClosureXmpPagePatch25}
+\pastebutton{RealClosureXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{recip(squareDiff8)\free{sd8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch26}
+\begin{paste}{RealClosureXmpPageFull26}{RealClosureXmpPageEmpty26}
+\pastebutton{RealClosureXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{sign(squareDiff8)\free{sd8 }}
+\indentrel{3}\begin{verbatim}
+   (26)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty26}
+\begin{paste}{RealClosureXmpPageEmpty26}{RealClosureXmpPagePatch26}
+\pastebutton{RealClosureXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{sign(squareDiff8)\free{sd8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch27}
+\begin{paste}{RealClosureXmpPageFull27}{RealClosureXmpPageEmpty27}
+\pastebutton{RealClosureXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{relativeApprox(squareDiff8,10**(-3))::Float\free{sd8 }}
+\indentrel{3}\begin{verbatim}
+   (27)  - 0.2340527771 5937700123 E -10
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty27}
+\begin{paste}{RealClosureXmpPageEmpty27}{RealClosureXmpPagePatch27}
+\pastebutton{RealClosureXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{relativeApprox(squareDiff8,10**(-3))::Float\free{sd8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch28}
+\begin{paste}{RealClosureXmpPageFull28}{RealClosureXmpPageEmpty28}
+\pastebutton{RealClosureXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{l := allRootsOf((x**2-2)**2-2)$Ran\free{Ran }\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (28)  [%R33,%R34,%R35,%R36]
+                Type: List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty28}
+\begin{paste}{RealClosureXmpPageEmpty28}{RealClosureXmpPagePatch28}
+\pastebutton{RealClosureXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{l := allRootsOf((x**2-2)**2-2)$Ran\free{Ran }\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch29}
+\begin{paste}{RealClosureXmpPageFull29}{RealClosureXmpPageEmpty29}
+\pastebutton{RealClosureXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{removeDuplicates map(mainDefiningPolynomial,l)\free{l }}
+\indentrel{3}\begin{verbatim}
+           4     2
+   (29)  [?  - 4?  + 2]
+Type: List Union(SparseUnivariatePolynomial RealClosure Fraction Integer,"failed")
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty29}
+\begin{paste}{RealClosureXmpPageEmpty29}{RealClosureXmpPagePatch29}
+\pastebutton{RealClosureXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{removeDuplicates map(mainDefiningPolynomial,l)\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch30}
+\begin{paste}{RealClosureXmpPageFull30}{RealClosureXmpPageEmpty30}
+\pastebutton{RealClosureXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{map(mainCharacterization,l)\free{l }}
+\indentrel{3}\begin{verbatim}
+   (30)  [[- 2,- 1[,[- 1,0[,[0,1[,[1,2[]
+Type: List Union(RightOpenIntervalRootCharacterization(RealClosure Fraction Integer,SparseUnivariatePolynomial RealClosure Fraction Integer),"failed")
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty30}
+\begin{paste}{RealClosureXmpPageEmpty30}{RealClosureXmpPagePatch30}
+\pastebutton{RealClosureXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{map(mainCharacterization,l)\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch31}
+\begin{paste}{RealClosureXmpPageFull31}{RealClosureXmpPageEmpty31}
+\pastebutton{RealClosureXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{[reduce(+,l),reduce(*,l)-2]\free{l }}
+\indentrel{3}\begin{verbatim}
+   (31)  [0,0]
+                Type: List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty31}
+\begin{paste}{RealClosureXmpPageEmpty31}{RealClosureXmpPagePatch31}
+\pastebutton{RealClosureXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{[reduce(+,l),reduce(*,l)-2]\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch32}
+\begin{paste}{RealClosureXmpPageFull32}{RealClosureXmpPageEmpty32}
+\pastebutton{RealClosureXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)\free{Ran }\bound{s2 }\bound{s5 }\bound{s10 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄ¿
+   (32)  \³10
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty32}
+\begin{paste}{RealClosureXmpPageEmpty32}{RealClosureXmpPagePatch32}
+\pastebutton{RealClosureXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)\free{Ran }\bound{s2 }\bound{s5 }\bound{s10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch33}
+\begin{paste}{RealClosureXmpPageFull33}{RealClosureXmpPageEmpty33}
+\pastebutton{RealClosureXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)\free{s2 }\free{s5 }\free{s10 }\bound{eq1 }}
+\indentrel{3}\begin{verbatim}
+   (33)
+      ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿
+      ³ ÚÄÄ¿      ³ ÚÄ¿         ³ ÚÄÄ¿      ³ ÚÄ¿
+   - \³\³10  - 3 \³\³5  - 2  + \³\³10  + 3 \³\³5  + 2  =
+      ÚÄÄÄÄÄÄÄÄÄÄÄ¿
+      ³   ÚÄ¿
+     \³10\³2  + 10
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty33}
+\begin{paste}{RealClosureXmpPageEmpty33}{RealClosureXmpPagePatch33}
+\pastebutton{RealClosureXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)\free{s2 }\free{s5 }\free{s10 }\bound{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch34}
+\begin{paste}{RealClosureXmpPageFull34}{RealClosureXmpPageEmpty34}
+\pastebutton{RealClosureXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{eq1::Boolean\free{eq1 }}
+\indentrel{3}\begin{verbatim}
+   (34)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty34}
+\begin{paste}{RealClosureXmpPageEmpty34}{RealClosureXmpPagePatch34}
+\pastebutton{RealClosureXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{eq1::Boolean\free{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch35}
+\begin{paste}{RealClosureXmpPageFull35}{RealClosureXmpPageEmpty35}
+\pastebutton{RealClosureXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2 }\free{s5 }\free{s10 }\bound{eq2 }}
+\indentrel{3}\begin{verbatim}
+   (35)
+      ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿
+      ³ ÚÄ¿      ³ ÚÄ¿         ³ ÚÄ¿      ³ ÚÄ¿
+   - \³\³5  - 2 \³\³2  - 1  + \³\³5  + 2 \³\³2  + 1  =
+      ÚÄÄÄÄÄÄÄÄÄÄ¿
+      ³  ÚÄÄ¿
+     \³2\³10  + 2
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty35}
+\begin{paste}{RealClosureXmpPageEmpty35}{RealClosureXmpPagePatch35}
+\pastebutton{RealClosureXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2 }\free{s5 }\free{s10 }\bound{eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch36}
+\begin{paste}{RealClosureXmpPageFull36}{RealClosureXmpPageEmpty36}
+\pastebutton{RealClosureXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{eq2::Boolean\free{eq2 }}
+\indentrel{3}\begin{verbatim}
+   (36)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty36}
+\begin{paste}{RealClosureXmpPageEmpty36}{RealClosureXmpPagePatch36}
+\pastebutton{RealClosureXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{eq2::Boolean\free{eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch37}
+\begin{paste}{RealClosureXmpPageFull37}{RealClosureXmpPageEmpty37}
+\pastebutton{RealClosureXmpPageFull37}{\hidepaste}
+\tab{5}\spadcommand{s3 := sqrt(3)$Ran\free{Ran }\bound{s3 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄ¿
+   (37)  \³3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty37}
+\begin{paste}{RealClosureXmpPageEmpty37}{RealClosureXmpPagePatch37}
+\pastebutton{RealClosureXmpPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{s3 := sqrt(3)$Ran\free{Ran }\bound{s3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch38}
+\begin{paste}{RealClosureXmpPageFull38}{RealClosureXmpPageEmpty38}
+\pastebutton{RealClosureXmpPageFull38}{\hidepaste}
+\tab{5}\spadcommand{s7:= sqrt(7)$Ran\free{Ran }\bound{s7 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄ¿
+   (38)  \³7
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty38}
+\begin{paste}{RealClosureXmpPageEmpty38}{RealClosureXmpPagePatch38}
+\pastebutton{RealClosureXmpPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{s7:= sqrt(7)$Ran\free{Ran }\bound{s7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch39}
+\begin{paste}{RealClosureXmpPageFull39}{RealClosureXmpPageEmpty39}
+\pastebutton{RealClosureXmpPageFull39}{\hidepaste}
+\tab{5}\spadcommand{e1 := sqrt(2*s7-3*s3,3)\free{s7 }\free{s3 }\bound{e1 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+         3³  ÚÄ¿     ÚÄ¿
+   (39)  \³2\³7  - 3\³3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty39}
+\begin{paste}{RealClosureXmpPageEmpty39}{RealClosureXmpPagePatch39}
+\pastebutton{RealClosureXmpPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{e1 := sqrt(2*s7-3*s3,3)\free{s7 }\free{s3 }\bound{e1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch40}
+\begin{paste}{RealClosureXmpPageFull40}{RealClosureXmpPageEmpty40}
+\pastebutton{RealClosureXmpPageFull40}{\hidepaste}
+\tab{5}\spadcommand{e2 := sqrt(2*s7+3*s3,3)\free{s7 }\free{s3 }\bound{e2 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+         3³  ÚÄ¿     ÚÄ¿
+   (40)  \³2\³7  + 3\³3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty40}
+\begin{paste}{RealClosureXmpPageEmpty40}{RealClosureXmpPagePatch40}
+\pastebutton{RealClosureXmpPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{e2 := sqrt(2*s7+3*s3,3)\free{s7 }\free{s3 }\bound{e2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch41}
+\begin{paste}{RealClosureXmpPageFull41}{RealClosureXmpPageEmpty41}
+\pastebutton{RealClosureXmpPageFull41}{\hidepaste}
+\tab{5}\spadcommand{e2-e1-s3\free{e2 }\free{e1 }\free{s3 }}
+\indentrel{3}\begin{verbatim}
+   (41)  0
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty41}
+\begin{paste}{RealClosureXmpPageEmpty41}{RealClosureXmpPagePatch41}
+\pastebutton{RealClosureXmpPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{e2-e1-s3\free{e2 }\free{e1 }\free{s3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch42}
+\begin{paste}{RealClosureXmpPageFull42}{RealClosureXmpPageEmpty42}
+\pastebutton{RealClosureXmpPageFull42}{\hidepaste}
+\tab{5}\spadcommand{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)\free{Ran }\bound{pol }}
+\indentrel{3}\begin{verbatim}
+          4   7  2         100
+   (42)  x  + Ä x  + 30x - ÄÄÄ
+              3             3
+Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty42}
+\begin{paste}{RealClosureXmpPageEmpty42}{RealClosureXmpPagePatch42}
+\pastebutton{RealClosureXmpPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)\free{Ran }\bound{pol }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch43}
+\begin{paste}{RealClosureXmpPageFull43}{RealClosureXmpPageEmpty43}
+\pastebutton{RealClosureXmpPageFull43}{\hidepaste}
+\tab{5}\spadcommand{r1 := sqrt(7633)$Ran\free{Ran }\bound{r1 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄ¿
+   (43)  \³7633
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty43}
+\begin{paste}{RealClosureXmpPageEmpty43}{RealClosureXmpPagePatch43}
+\pastebutton{RealClosureXmpPageEmpty43}{\showpaste}
+\tab{5}\spadcommand{r1 := sqrt(7633)$Ran\free{Ran }\bound{r1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch44}
+\begin{paste}{RealClosureXmpPageFull44}{RealClosureXmpPageEmpty44}
+\pastebutton{RealClosureXmpPageFull44}{\hidepaste}
+\tab{5}\spadcommand{alpha := sqrt(5*r1-436,3)/3\free{r1 }\bound{alpha }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+         1 3³  ÚÄÄÄÄ¿
+   (44)  Ä \³5\³7633  - 436
+         3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty44}
+\begin{paste}{RealClosureXmpPageEmpty44}{RealClosureXmpPagePatch44}
+\pastebutton{RealClosureXmpPageEmpty44}{\showpaste}
+\tab{5}\spadcommand{alpha := sqrt(5*r1-436,3)/3\free{r1 }\bound{alpha }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch45}
+\begin{paste}{RealClosureXmpPageFull45}{RealClosureXmpPageEmpty45}
+\pastebutton{RealClosureXmpPageFull45}{\hidepaste}
+\tab{5}\spadcommand{beta := -sqrt(5*r1+436,3)/3\free{r1 }\bound{beta }}
+\indentrel{3}\begin{verbatim}
+              ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+           1 3³  ÚÄÄÄÄ¿
+   (45)  - Ä \³5\³7633  + 436
+           3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty45}
+\begin{paste}{RealClosureXmpPageEmpty45}{RealClosureXmpPagePatch45}
+\pastebutton{RealClosureXmpPageEmpty45}{\showpaste}
+\tab{5}\spadcommand{beta := -sqrt(5*r1+436,3)/3\free{r1 }\bound{beta }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch46}
+\begin{paste}{RealClosureXmpPageFull46}{RealClosureXmpPageEmpty46}
+\pastebutton{RealClosureXmpPageFull46}{\hidepaste}
+\tab{5}\spadcommand{pol.(alpha+beta-1/3)\free{pol }\free{alpha }\free{beta }}
+\indentrel{3}\begin{verbatim}
+   (46)  0
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty46}
+\begin{paste}{RealClosureXmpPageEmpty46}{RealClosureXmpPagePatch46}
+\pastebutton{RealClosureXmpPageEmpty46}{\showpaste}
+\tab{5}\spadcommand{pol.(alpha+beta-1/3)\free{pol }\free{alpha }\free{beta }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch47}
+\begin{paste}{RealClosureXmpPageFull47}{RealClosureXmpPageEmpty47}
+\pastebutton{RealClosureXmpPageFull47}{\hidepaste}
+\tab{5}\spadcommand{qol : UP(x,Ran) := x**5+10*x**3+20*x+22\free{Ran }\bound{qol }}
+\indentrel{3}\begin{verbatim}
+          5      3
+   (47)  x  + 10x  + 20x + 22
+Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty47}
+\begin{paste}{RealClosureXmpPageEmpty47}{RealClosureXmpPagePatch47}
+\pastebutton{RealClosureXmpPageEmpty47}{\showpaste}
+\tab{5}\spadcommand{qol : UP(x,Ran) := x**5+10*x**3+20*x+22\free{Ran }\bound{qol }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch48}
+\begin{paste}{RealClosureXmpPageFull48}{RealClosureXmpPageEmpty48}
+\pastebutton{RealClosureXmpPageFull48}{\hidepaste}
+\tab{5}\spadcommand{r2 := sqrt(153)$Ran\free{Ran }\bound{r2 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄ¿
+   (48)  \³153
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty48}
+\begin{paste}{RealClosureXmpPageEmpty48}{RealClosureXmpPagePatch48}
+\pastebutton{RealClosureXmpPageEmpty48}{\showpaste}
+\tab{5}\spadcommand{r2 := sqrt(153)$Ran\free{Ran }\bound{r2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch49}
+\begin{paste}{RealClosureXmpPageFull49}{RealClosureXmpPageEmpty49}
+\pastebutton{RealClosureXmpPageFull49}{\hidepaste}
+\tab{5}\spadcommand{alpha2 := sqrt(r2-11,5)\free{r2 }\bound{alpha2 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄÄ¿
+         5³ ÚÄÄÄ¿
+   (49)  \³\³153  - 11
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty49}
+\begin{paste}{RealClosureXmpPageEmpty49}{RealClosureXmpPagePatch49}
+\pastebutton{RealClosureXmpPageEmpty49}{\showpaste}
+\tab{5}\spadcommand{alpha2 := sqrt(r2-11,5)\free{r2 }\bound{alpha2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch50}
+\begin{paste}{RealClosureXmpPageFull50}{RealClosureXmpPageEmpty50}
+\pastebutton{RealClosureXmpPageFull50}{\hidepaste}
+\tab{5}\spadcommand{beta2 := -sqrt(r2+11,5)\free{r2 }\bound{beta2 }}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄÄÄÄÄÄÄÄ¿
+           5³ ÚÄÄÄ¿
+   (50)  - \³\³153  + 11
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty50}
+\begin{paste}{RealClosureXmpPageEmpty50}{RealClosureXmpPagePatch50}
+\pastebutton{RealClosureXmpPageEmpty50}{\showpaste}
+\tab{5}\spadcommand{beta2 := -sqrt(r2+11,5)\free{r2 }\bound{beta2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch51}
+\begin{paste}{RealClosureXmpPageFull51}{RealClosureXmpPageEmpty51}
+\pastebutton{RealClosureXmpPageFull51}{\hidepaste}
+\tab{5}\spadcommand{qol(alpha2+beta2)\free{qol }\free{alpha2 }\free{beta2 }}
+\indentrel{3}\begin{verbatim}
+   (51)  0
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty51}
+\begin{paste}{RealClosureXmpPageEmpty51}{RealClosureXmpPagePatch51}
+\pastebutton{RealClosureXmpPageEmpty51}{\showpaste}
+\tab{5}\spadcommand{qol(alpha2+beta2)\free{qol }\free{alpha2 }\free{beta2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch52}
+\begin{paste}{RealClosureXmpPageFull52}{RealClosureXmpPageEmpty52}
+\pastebutton{RealClosureXmpPageFull52}{\hidepaste}
+\tab{5}\spadcommand{dst1:=sqrt(9+4*s2)=1+2*s2\free{s2 }\bound{dst1 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄ¿
+          ³  ÚÄ¿         ÚÄ¿
+   (52)  \³4\³2  + 9 = 2\³2  + 1
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty52}
+\begin{paste}{RealClosureXmpPageEmpty52}{RealClosureXmpPagePatch52}
+\pastebutton{RealClosureXmpPageEmpty52}{\showpaste}
+\tab{5}\spadcommand{dst1:=sqrt(9+4*s2)=1+2*s2\free{s2 }\bound{dst1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch53}
+\begin{paste}{RealClosureXmpPageFull53}{RealClosureXmpPageEmpty53}
+\pastebutton{RealClosureXmpPageFull53}{\hidepaste}
+\tab{5}\spadcommand{dst1::Boolean\free{dst1 }}
+\indentrel{3}\begin{verbatim}
+   (53)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty53}
+\begin{paste}{RealClosureXmpPageEmpty53}{RealClosureXmpPagePatch53}
+\pastebutton{RealClosureXmpPageEmpty53}{\showpaste}
+\tab{5}\spadcommand{dst1::Boolean\free{dst1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch54}
+\begin{paste}{RealClosureXmpPageFull54}{RealClosureXmpPageEmpty54}
+\pastebutton{RealClosureXmpPageFull54}{\hidepaste}
+\tab{5}\spadcommand{s6:Ran:=sqrt 6\free{Ran }\bound{s6 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄ¿
+   (54)  \³6
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty54}
+\begin{paste}{RealClosureXmpPageEmpty54}{RealClosureXmpPagePatch54}
+\pastebutton{RealClosureXmpPageEmpty54}{\showpaste}
+\tab{5}\spadcommand{s6:Ran:=sqrt 6\free{Ran }\bound{s6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch55}
+\begin{paste}{RealClosureXmpPageFull55}{RealClosureXmpPageEmpty55}
+\pastebutton{RealClosureXmpPageFull55}{\hidepaste}
+\tab{5}\spadcommand{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3\free{s6 }\free{s3 }\bound{dst2 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄ¿
+          ³    ÚÄ¿         ³  ÚÄ¿         ÚÄ¿
+   (55)  \³- 2\³6  + 5  + \³2\³6  + 5 = 2\³3
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty55}
+\begin{paste}{RealClosureXmpPageEmpty55}{RealClosureXmpPagePatch55}
+\pastebutton{RealClosureXmpPageEmpty55}{\showpaste}
+\tab{5}\spadcommand{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3\free{s6 }\free{s3 }\bound{dst2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch56}
+\begin{paste}{RealClosureXmpPageFull56}{RealClosureXmpPageEmpty56}
+\pastebutton{RealClosureXmpPageFull56}{\hidepaste}
+\tab{5}\spadcommand{dst2::Boolean\free{dst2 }}
+\indentrel{3}\begin{verbatim}
+   (56)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty56}
+\begin{paste}{RealClosureXmpPageEmpty56}{RealClosureXmpPagePatch56}
+\pastebutton{RealClosureXmpPageEmpty56}{\showpaste}
+\tab{5}\spadcommand{dst2::Boolean\free{dst2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch57}
+\begin{paste}{RealClosureXmpPageFull57}{RealClosureXmpPageEmpty57}
+\pastebutton{RealClosureXmpPageFull57}{\hidepaste}
+\tab{5}\spadcommand{s29:Ran:=sqrt 29\free{Ran }\bound{s29 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄ¿
+   (57)  \³29
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty57}
+\begin{paste}{RealClosureXmpPageEmpty57}{RealClosureXmpPagePatch57}
+\pastebutton{RealClosureXmpPageEmpty57}{\showpaste}
+\tab{5}\spadcommand{s29:Ran:=sqrt 29\free{Ran }\bound{s29 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch58}
+\begin{paste}{RealClosureXmpPageFull58}{RealClosureXmpPageEmpty58}
+\pastebutton{RealClosureXmpPageFull58}{\hidepaste}
+\tab{5}\spadcommand{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5\free{s29 }\free{s5 }\bound{dst4 }}
+\indentrel{3}\begin{verbatim}
+   (58)
+    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+    ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+    ³  ³     ÚÄÄ¿           ÚÄÄ¿
+   \³2\³- 10\³29  + 55  - 2\³29  + 16  =
+        ÚÄÄÄÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄÄ¿
+        ³  ÚÄÄ¿          ³  ÚÄ¿          ÚÄ¿
+     - \³2\³29  + 11  + \³2\³5  + 22  + \³5
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty58}
+\begin{paste}{RealClosureXmpPageEmpty58}{RealClosureXmpPagePatch58}
+\pastebutton{RealClosureXmpPageEmpty58}{\showpaste}
+\tab{5}\spadcommand{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5\free{s29 }\free{s5 }\bound{dst4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch59}
+\begin{paste}{RealClosureXmpPageFull59}{RealClosureXmpPageEmpty59}
+\pastebutton{RealClosureXmpPageFull59}{\hidepaste}
+\tab{5}\spadcommand{dst4::Boolean\free{dst4 }}
+\indentrel{3}\begin{verbatim}
+   (59)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty59}
+\begin{paste}{RealClosureXmpPageEmpty59}{RealClosureXmpPagePatch59}
+\pastebutton{RealClosureXmpPageEmpty59}{\showpaste}
+\tab{5}\spadcommand{dst4::Boolean\free{dst4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch60}
+\begin{paste}{RealClosureXmpPageFull60}{RealClosureXmpPageEmpty60}
+\pastebutton{RealClosureXmpPageFull60}{\hidepaste}
+\tab{5}\spadcommand{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5\free{s2 }\free{s5 }\bound{dst6 }}
+\indentrel{3}\begin{verbatim}
+   (60)
+    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+    ³    ÚÄ¿       ÚÄ¿      ÚÄ¿
+   \³(34\³2  + 46)\³5  + 70\³2  + 112  =
+       ÚÄ¿      ÚÄ¿     ÚÄ¿
+     (\³2  + 3)\³5  + 4\³2  + 5
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty60}
+\begin{paste}{RealClosureXmpPageEmpty60}{RealClosureXmpPagePatch60}
+\pastebutton{RealClosureXmpPageEmpty60}{\showpaste}
+\tab{5}\spadcommand{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5\free{s2 }\free{s5 }\bound{dst6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch61}
+\begin{paste}{RealClosureXmpPageFull61}{RealClosureXmpPageEmpty61}
+\pastebutton{RealClosureXmpPageFull61}{\hidepaste}
+\tab{5}\spadcommand{dst6::Boolean\free{dst6 }}
+\indentrel{3}\begin{verbatim}
+   (61)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty61}
+\begin{paste}{RealClosureXmpPageEmpty61}{RealClosureXmpPagePatch61}
+\pastebutton{RealClosureXmpPageEmpty61}{\showpaste}
+\tab{5}\spadcommand{dst6::Boolean\free{dst6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch62}
+\begin{paste}{RealClosureXmpPageFull62}{RealClosureXmpPageEmpty62}
+\pastebutton{RealClosureXmpPageFull62}{\hidepaste}
+\tab{5}\spadcommand{f3:Ran:=sqrt(3,5)\free{Ran }\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+         5ÚÄ¿
+   (62)  \³3
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty62}
+\begin{paste}{RealClosureXmpPageEmpty62}{RealClosureXmpPagePatch62}
+\pastebutton{RealClosureXmpPageEmpty62}{\showpaste}
+\tab{5}\spadcommand{f3:Ran:=sqrt(3,5)\free{Ran }\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch63}
+\begin{paste}{RealClosureXmpPageFull63}{RealClosureXmpPageEmpty63}
+\pastebutton{RealClosureXmpPageFull63}{\hidepaste}
+\tab{5}\spadcommand{f25:Ran:=sqrt(1/25,5)\free{Ran }\bound{f25 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄ¿
+          ³ 1
+   (63)  5³ÄÄ
+         \³25
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty63}
+\begin{paste}{RealClosureXmpPageEmpty63}{RealClosureXmpPagePatch63}
+\pastebutton{RealClosureXmpPageEmpty63}{\showpaste}
+\tab{5}\spadcommand{f25:Ran:=sqrt(1/25,5)\free{Ran }\bound{f25 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch64}
+\begin{paste}{RealClosureXmpPageFull64}{RealClosureXmpPageEmpty64}
+\pastebutton{RealClosureXmpPageFull64}{\hidepaste}
+\tab{5}\spadcommand{f32:Ran:=sqrt(32/5,5)\free{Ran }\bound{f32 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄ¿
+          ³32
+   (64)  5³ÄÄ
+         \³ 5
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty64}
+\begin{paste}{RealClosureXmpPageEmpty64}{RealClosureXmpPagePatch64}
+\pastebutton{RealClosureXmpPageEmpty64}{\showpaste}
+\tab{5}\spadcommand{f32:Ran:=sqrt(32/5,5)\free{Ran }\bound{f32 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch65}
+\begin{paste}{RealClosureXmpPageFull65}{RealClosureXmpPageEmpty65}
+\pastebutton{RealClosureXmpPageFull65}{\hidepaste}
+\tab{5}\spadcommand{f27:Ran:=sqrt(27/5,5)\free{Ran }\bound{f27 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄ¿
+          ³27
+   (65)  5³ÄÄ
+         \³ 5
+                     Type: RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty65}
+\begin{paste}{RealClosureXmpPageEmpty65}{RealClosureXmpPagePatch65}
+\pastebutton{RealClosureXmpPageEmpty65}{\showpaste}
+\tab{5}\spadcommand{f27:Ran:=sqrt(27/5,5)\free{Ran }\bound{f27 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch66}
+\begin{paste}{RealClosureXmpPageFull66}{RealClosureXmpPageEmpty66}
+\pastebutton{RealClosureXmpPageFull66}{\hidepaste}
+\tab{5}\spadcommand{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32 }\free{f27 }\free{f25 }\free{f3 }\bound{dst5 }}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+          ³   ÚÄÄ¿    ÚÄÄ¿                         ÚÄÄ¿
+          ³   ³27     ³32       5ÚÄ¿2   5ÚÄ¿       ³ 1
+   (66)  3³- 5³ÄÄ  + 5³ÄÄ  = (- \³3   + \³3  + 1) 5³ÄÄ
+         \³  \³ 5    \³ 5                         \³25
+            Type: Equation RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty66}
+\begin{paste}{RealClosureXmpPageEmpty66}{RealClosureXmpPagePatch66}
+\pastebutton{RealClosureXmpPageEmpty66}{\showpaste}
+\tab{5}\spadcommand{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32 }\free{f27 }\free{f25 }\free{f3 }\bound{dst5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPagePatch67}
+\begin{paste}{RealClosureXmpPageFull67}{RealClosureXmpPageEmpty67}
+\pastebutton{RealClosureXmpPageFull67}{\hidepaste}
+\tab{5}\spadcommand{dst5::Boolean\free{dst5 }}
+\indentrel{3}\begin{verbatim}
+   (67)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RealClosureXmpPageEmpty67}
+\begin{paste}{RealClosureXmpPageEmpty67}{RealClosureXmpPagePatch67}
+\pastebutton{RealClosureXmpPageEmpty67}{\showpaste}
+\tab{5}\spadcommand{dst5::Boolean\free{dst5 }}
+\end{paste}\end{patch}
+
 @
 \section{record.ht}
 \pagehead{DomainRecord}{record.ht}{Domain {\bf Record(a:A,...,b:B)}}
@@ -19164,6 +52476,1018 @@ marc@nag.co.uk} for more information and help.
 \autobuttons
 \end{page}
 
+\begin{patch}{RegularTriangularSetXmpPagePatch1}
+\begin{paste}{RegularTriangularSetXmpPageFull1}{RegularTriangularSetXmpPageEmpty1}
+\pastebutton{RegularTriangularSetXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty1}
+\begin{paste}{RegularTriangularSetXmpPageEmpty1}{RegularTriangularSetXmpPagePatch1}
+\pastebutton{RegularTriangularSetXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch2}
+\begin{paste}{RegularTriangularSetXmpPageFull2}{RegularTriangularSetXmpPageEmpty2}
+\pastebutton{RegularTriangularSetXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [x,y,z,t]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty2}
+\begin{paste}{RegularTriangularSetXmpPageEmpty2}{RegularTriangularSetXmpPagePatch2}
+\pastebutton{RegularTriangularSetXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch3}
+\begin{paste}{RegularTriangularSetXmpPageFull3}{RegularTriangularSetXmpPageEmpty3}
+\pastebutton{RegularTriangularSetXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\indentrel{3}\begin{verbatim}
+   (3)  OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty3}
+\begin{paste}{RegularTriangularSetXmpPageEmpty3}{RegularTriangularSetXmpPagePatch3}
+\pastebutton{RegularTriangularSetXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch4}
+\begin{paste}{RegularTriangularSetXmpPageFull4}{RegularTriangularSetXmpPageEmpty4}
+\pastebutton{RegularTriangularSetXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\indentrel{3}\begin{verbatim}
+   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty4}
+\begin{paste}{RegularTriangularSetXmpPageEmpty4}{RegularTriangularSetXmpPagePatch4}
+\pastebutton{RegularTriangularSetXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch5}
+\begin{paste}{RegularTriangularSetXmpPageFull5}{RegularTriangularSetXmpPageEmpty5}
+\pastebutton{RegularTriangularSetXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  NewSparseMultivariatePolynomial(Integer,OrderedVariable
+  List [x,y,z,t])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty5}
+\begin{paste}{RegularTriangularSetXmpPageEmpty5}{RegularTriangularSetXmpPagePatch5}
+\pastebutton{RegularTriangularSetXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch6}
+\begin{paste}{RegularTriangularSetXmpPageFull6}{RegularTriangularSetXmpPageEmpty6}
+\pastebutton{RegularTriangularSetXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (6)  x
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty6}
+\begin{paste}{RegularTriangularSetXmpPageEmpty6}{RegularTriangularSetXmpPagePatch6}
+\pastebutton{RegularTriangularSetXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch7}
+\begin{paste}{RegularTriangularSetXmpPageFull7}{RegularTriangularSetXmpPageEmpty7}
+\pastebutton{RegularTriangularSetXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (7)  y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty7}
+\begin{paste}{RegularTriangularSetXmpPageEmpty7}{RegularTriangularSetXmpPagePatch7}
+\pastebutton{RegularTriangularSetXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch8}
+\begin{paste}{RegularTriangularSetXmpPageFull8}{RegularTriangularSetXmpPageEmpty8}
+\pastebutton{RegularTriangularSetXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (8)  z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty8}
+\begin{paste}{RegularTriangularSetXmpPageEmpty8}{RegularTriangularSetXmpPagePatch8}
+\pastebutton{RegularTriangularSetXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch9}
+\begin{paste}{RegularTriangularSetXmpPageFull9}{RegularTriangularSetXmpPageEmpty9}
+\pastebutton{RegularTriangularSetXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (9)  t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty9}
+\begin{paste}{RegularTriangularSetXmpPageEmpty9}{RegularTriangularSetXmpPagePatch9}
+\pastebutton{RegularTriangularSetXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch10}
+\begin{paste}{RegularTriangularSetXmpPageFull10}{RegularTriangularSetXmpPageEmpty10}
+\pastebutton{RegularTriangularSetXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\indentrel{3}\begin{verbatim}
+   (10)
+  RegularTriangularSet(Integer,IndexedExponents OrderedVa
+  riableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewS
+  parseMultivariatePolynomial(Integer,OrderedVariableList
+   [x,y,z,t]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty10}
+\begin{paste}{RegularTriangularSetXmpPageEmpty10}{RegularTriangularSetXmpPagePatch10}
+\pastebutton{RegularTriangularSetXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch11}
+\begin{paste}{RegularTriangularSetXmpPageFull11}{RegularTriangularSetXmpPageEmpty11}
+\pastebutton{RegularTriangularSetXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+          31    6
+   (11)  x   - x  - x - y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty11}
+\begin{paste}{RegularTriangularSetXmpPageEmpty11}{RegularTriangularSetXmpPagePatch11}
+\pastebutton{RegularTriangularSetXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch12}
+\begin{paste}{RegularTriangularSetXmpPageFull12}{RegularTriangularSetXmpPageEmpty12}
+\pastebutton{RegularTriangularSetXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+          8
+   (12)  x  - z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty12}
+\begin{paste}{RegularTriangularSetXmpPageEmpty12}{RegularTriangularSetXmpPagePatch12}
+\pastebutton{RegularTriangularSetXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch13}
+\begin{paste}{RegularTriangularSetXmpPageFull13}{RegularTriangularSetXmpPageEmpty13}
+\pastebutton{RegularTriangularSetXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+          10
+   (13)  x   - t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty13}
+\begin{paste}{RegularTriangularSetXmpPageEmpty13}{RegularTriangularSetXmpPagePatch13}
+\pastebutton{RegularTriangularSetXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch14}
+\begin{paste}{RegularTriangularSetXmpPageFull14}{RegularTriangularSetXmpPageEmpty14}
+\pastebutton{RegularTriangularSetXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+           31    6          8      10
+   (14)  [x   - x  - x - y,x  - z,x   - t]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty14}
+\begin{paste}{RegularTriangularSetXmpPageEmpty14}{RegularTriangularSetXmpPagePatch14}
+\pastebutton{RegularTriangularSetXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch15}
+\begin{paste}{RegularTriangularSetXmpPageFull15}{RegularTriangularSetXmpPageEmpty15}
+\pastebutton{RegularTriangularSetXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [
+       5    4       2     3     8     5    3    2
+     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
+        4                2
+      (t  - t)x - t y - z }
+     ]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty15}
+\begin{paste}{RegularTriangularSetXmpPageEmpty15}{RegularTriangularSetXmpPagePatch15}
+\pastebutton{RegularTriangularSetXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch16}
+\begin{paste}{RegularTriangularSetXmpPageFull16}{RegularTriangularSetXmpPageEmpty16}
+\pastebutton{RegularTriangularSetXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (16)
+   [
+       5    4       2     3     8     5    3    2
+     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
+        4                2
+      (t  - t)x - t y - z }
+     ,
+      3      5          2     3         2
+    {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t},
+    {t,z,y,x}]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty16}
+\begin{paste}{RegularTriangularSetXmpPageEmpty16}{RegularTriangularSetXmpPagePatch16}
+\pastebutton{RegularTriangularSetXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch17}
+\begin{paste}{RegularTriangularSetXmpPageFull17}{RegularTriangularSetXmpPageEmpty17}
+\pastebutton{RegularTriangularSetXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
+\indentrel{3}\begin{verbatim}
+   (17)  [1,0,0]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty17}
+\begin{paste}{RegularTriangularSetXmpPageEmpty17}{RegularTriangularSetXmpPagePatch17}
+\pastebutton{RegularTriangularSetXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch18}
+\begin{paste}{RegularTriangularSetXmpPageFull18}{RegularTriangularSetXmpPageEmpty18}
+\pastebutton{RegularTriangularSetXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{f1 := y**2*z+2*x*y*t-2*x-z\free{z }\free{x }\free{y }\free{t }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                          2
+   (18)  (2t y - 2)x + z y  - z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty18}
+\begin{paste}{RegularTriangularSetXmpPageEmpty18}{RegularTriangularSetXmpPagePatch18}
+\pastebutton{RegularTriangularSetXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{f1 := y**2*z+2*x*y*t-2*x-z\free{z }\free{x }\free{y }\free{t }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch19}
+\begin{paste}{RegularTriangularSetXmpPageFull19}{RegularTriangularSetXmpPageEmpty19}
+\pastebutton{RegularTriangularSetXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (19)
+          3              2        2              3      2
+     - z x  + (4t y + 4)x  + (4z y  + 4z)x + 2t y  - 10y
+   + 
+     - 10t y + 2
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty19}
+\begin{paste}{RegularTriangularSetXmpPageEmpty19}{RegularTriangularSetXmpPagePatch19}
+\pastebutton{RegularTriangularSetXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch20}
+\begin{paste}{RegularTriangularSetXmpPageFull20}{RegularTriangularSetXmpPageEmpty20}
+\pastebutton{RegularTriangularSetXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{f3 := 2*y*z*t+x*t**2-x-2*z\free{z }\free{x }\free{y }\free{t }\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+           2
+   (20)  (t  - 1)x + 2t z y - 2z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty20}
+\begin{paste}{RegularTriangularSetXmpPageEmpty20}{RegularTriangularSetXmpPagePatch20}
+\pastebutton{RegularTriangularSetXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{f3 := 2*y*z*t+x*t**2-x-2*z\free{z }\free{x }\free{y }\free{t }\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch21}
+\begin{paste}{RegularTriangularSetXmpPageFull21}{RegularTriangularSetXmpPageEmpty21}
+\pastebutton{RegularTriangularSetXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f4 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+         3      2                2     3             2
+     (- z  + (4t  + 4)z)x + (4t z  + 2t  - 10t)y + 4z
+   + 
+          2
+     - 10t  + 2
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty21}
+\begin{paste}{RegularTriangularSetXmpPageEmpty21}{RegularTriangularSetXmpPagePatch21}
+\pastebutton{RegularTriangularSetXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch22}
+\begin{paste}{RegularTriangularSetXmpPageFull22}{RegularTriangularSetXmpPageEmpty22}
+\pastebutton{RegularTriangularSetXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{lf := [f1, f2, f3, f4]\free{f1 }\free{f2 }\free{f3 }\free{f4 }\bound{lf }}
+\indentrel{3}\begin{verbatim}
+   (22)
+                     2
+   [(2t y - 2)x + z y  - z,
+
+            3              2        2              3
+       - z x  + (4t y + 4)x  + (4z y  + 4z)x + 2t y
+     + 
+            2
+       - 10y  - 10t y + 2
+     ,
+      2
+    (t  - 1)x + 2t z y - 2z,
+
+           3      2                2     3             2
+       (- z  + (4t  + 4)z)x + (4t z  + 2t  - 10t)y + 4z
+     + 
+            2
+       - 10t  + 2
+     ]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty22}
+\begin{paste}{RegularTriangularSetXmpPageEmpty22}{RegularTriangularSetXmpPagePatch22}
+\pastebutton{RegularTriangularSetXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{lf := [f1, f2, f3, f4]\free{f1 }\free{f2 }\free{f3 }\free{f4 }\bound{lf }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch23}
+\begin{paste}{RegularTriangularSetXmpPageFull23}{RegularTriangularSetXmpPageEmpty23}
+\pastebutton{RegularTriangularSetXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lf)$T\free{lf }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (23)
+   [
+       2       8      6       2
+     {t  - 1, z  - 16z  + 256z  - 256, t y - 1,
+        3            2
+      (z  - 8z)x - 8z  + 16}
+     ,
+       2      2     2
+    {3t  + 1,z  - 7t  - 1,y + t,x + z},
+      8      6      2         3            2
+    {t  - 10t  + 10t  - 1,z,(t  - 5t)y - 5t  + 1,x},
+      2      2
+    {t  + 3,z  - 4,y + t,x - z}]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty23}
+\begin{paste}{RegularTriangularSetXmpPageEmpty23}{RegularTriangularSetXmpPagePatch23}
+\pastebutton{RegularTriangularSetXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lf)$T\free{lf }\free{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch24}
+\begin{paste}{RegularTriangularSetXmpPageFull24}{RegularTriangularSetXmpPageEmpty24}
+\pastebutton{RegularTriangularSetXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{lts2 := zeroSetSplit(lf,false)$T\free{lf }\free{T }\bound{lts2 }}
+\indentrel{3}\begin{verbatim}
+   (24)
+      8      6      2         3            2
+   [{t  - 10t  + 10t  - 1,z,(t  - 5t)y - 5t  + 1,x},
+
+       2       8      6       2
+     {t  - 1, z  - 16z  + 256z  - 256, t y - 1,
+        3            2
+      (z  - 8z)x - 8z  + 16}
+     ,
+       2      2     2
+    {3t  + 1,z  - 7t  - 1,y + t,x + z},
+      2      2
+    {t  + 3,z  - 4,y + t,x - z}]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty24}
+\begin{paste}{RegularTriangularSetXmpPageEmpty24}{RegularTriangularSetXmpPagePatch24}
+\pastebutton{RegularTriangularSetXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{lts2 := zeroSetSplit(lf,false)$T\free{lf }\free{T }\bound{lts2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch25}
+\begin{paste}{RegularTriangularSetXmpPageFull25}{RegularTriangularSetXmpPageEmpty25}
+\pastebutton{RegularTriangularSetXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts2]\free{lts2 }}
+\indentrel{3}\begin{verbatim}
+   (25)  [0,0,0,0]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty25}
+\begin{paste}{RegularTriangularSetXmpPageEmpty25}{RegularTriangularSetXmpPagePatch25}
+\pastebutton{RegularTriangularSetXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{[coHeight(ts) for ts in lts2]\free{lts2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch26}
+\begin{paste}{RegularTriangularSetXmpPageFull26}{RegularTriangularSetXmpPageEmpty26}
+\pastebutton{RegularTriangularSetXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{degrees := [degree(ts) for ts in lts2]\free{lts2 }\bound{degrees }}
+\indentrel{3}\begin{verbatim}
+   (26)  [8,16,4,4]
+                          Type: List NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty26}
+\begin{paste}{RegularTriangularSetXmpPageEmpty26}{RegularTriangularSetXmpPagePatch26}
+\pastebutton{RegularTriangularSetXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{degrees := [degree(ts) for ts in lts2]\free{lts2 }\bound{degrees }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch27}
+\begin{paste}{RegularTriangularSetXmpPageFull27}{RegularTriangularSetXmpPageEmpty27}
+\pastebutton{RegularTriangularSetXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,degrees)\free{degrees }}
+\indentrel{3}\begin{verbatim}
+   (27)  32
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty27}
+\begin{paste}{RegularTriangularSetXmpPageEmpty27}{RegularTriangularSetXmpPagePatch27}
+\pastebutton{RegularTriangularSetXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{reduce(+,degrees)\free{degrees }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch28}
+\begin{paste}{RegularTriangularSetXmpPageFull28}{RegularTriangularSetXmpPageEmpty28}
+\pastebutton{RegularTriangularSetXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{u : R := 2\free{R }\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (28)  2
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty28}
+\begin{paste}{RegularTriangularSetXmpPageEmpty28}{RegularTriangularSetXmpPagePatch28}
+\pastebutton{RegularTriangularSetXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{u : R := 2\free{R }\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch29}
+\begin{paste}{RegularTriangularSetXmpPageFull29}{RegularTriangularSetXmpPageEmpty29}
+\pastebutton{RegularTriangularSetXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q1 }}
+\indentrel{3}\begin{verbatim}
+   (29)
+       2           2  2
+     (y  - 2t y + t )x
+   + 
+          2                            2           2
+     (- 2y  + ((2t + 4)z + 2t)y + (- 2t  + 2)z - 4t  - 2)x
+   + 
+      2                      2       2          2
+     y  + (- 2t z - 4t)y + (t  + 10)z  - 8z + 4t  + 2
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty29}
+\begin{paste}{RegularTriangularSetXmpPageEmpty29}{RegularTriangularSetXmpPagePatch29}
+\pastebutton{RegularTriangularSetXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch30}
+\begin{paste}{RegularTriangularSetXmpPageFull30}{RegularTriangularSetXmpPageEmpty30}
+\pastebutton{RegularTriangularSetXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q2 }}
+\indentrel{3}\begin{verbatim}
+                                               2
+   (30)  (- 3z y + 2t z + t)x + (z + 4)y + 4t z  - 7t z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty30}
+\begin{paste}{RegularTriangularSetXmpPageEmpty30}{RegularTriangularSetXmpPagePatch30}
+\pastebutton{RegularTriangularSetXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch31}
+\begin{paste}{RegularTriangularSetXmpPageFull31}{RegularTriangularSetXmpPageEmpty31}
+\pastebutton{RegularTriangularSetXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q3 }}
+\indentrel{3}\begin{verbatim}
+                         2
+   (31)  (- 2z - 2)x - 2z  + 8z - 2
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty31}
+\begin{paste}{RegularTriangularSetXmpPageEmpty31}{RegularTriangularSetXmpPagePatch31}
+\pastebutton{RegularTriangularSetXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch32}
+\begin{paste}{RegularTriangularSetXmpPageFull32}{RegularTriangularSetXmpPageEmpty32}
+\pastebutton{RegularTriangularSetXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{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)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q4 }}
+\indentrel{3}\begin{verbatim}
+   (32)
+        2     2      2        2                      2
+     (3y  - 3t  - 4)x  + (- 6y  + (12t z + 12t)y + 6t z)x
+   + 
+       2                       2      2         2
+     3y  + (12t z - 12t)y + (9t  + 4)z  + (- 24t  - 4)z
+   + 
+        2
+     12t  + 4
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty32}
+\begin{paste}{RegularTriangularSetXmpPageEmpty32}{RegularTriangularSetXmpPagePatch32}
+\pastebutton{RegularTriangularSetXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{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)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch33}
+\begin{paste}{RegularTriangularSetXmpPageFull33}{RegularTriangularSetXmpPageEmpty33}
+\pastebutton{RegularTriangularSetXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{lq := [q1, q2, q3, q4]\free{q1 }\free{q2 }\free{q3 }\free{q4 }\bound{lq }}
+\indentrel{3}\begin{verbatim}
+   (33)
+   [
+         2           2  2
+       (y  - 2t y + t )x
+     + 
+               2                            2           2
+           - 2y  + ((2t + 4)z + 2t)y + (- 2t  + 2)z - 4t
+         + 
+           - 2
+      *
+         x
+     + 
+        2                      2       2          2
+       y  + (- 2t z - 4t)y + (t  + 10)z  - 8z + 4t  + 2
+     ,
+                                          2
+    (- 3z y + 2t z + t)x + (z + 4)y + 4t z  - 7t z,
+                    2
+    (- 2z - 2)x - 2z  + 8z - 2,
+
+          2     2      2
+       (3y  - 3t  - 4)x
+     + 
+            2                      2        2
+       (- 6y  + (12t z + 12t)y + 6t z)x + 3y
+     + 
+                           2      2         2            2
+       (12t z - 12t)y + (9t  + 4)z  + (- 24t  - 4)z + 12t
+     + 
+       4
+     ]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty33}
+\begin{paste}{RegularTriangularSetXmpPageEmpty33}{RegularTriangularSetXmpPagePatch33}
+\pastebutton{RegularTriangularSetXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{lq := [q1, q2, q3, q4]\free{q1 }\free{q2 }\free{q3 }\free{q4 }\bound{lq }}
+\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPagePatch34}
+\begin{paste}{RegularTriangularSetXmpPageFull34}{RegularTriangularSetXmpPageEmpty34}
+\pastebutton{RegularTriangularSetXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lq,true,true)$T\free{lq }\free{T }}
+\indentrel{3}\begin{verbatim}
+
+   *** QCMPACK Statistics ***
+      Table     size:  36
+      Entries reused:  255
+
+   *** REGSETGCD: Gcd Statistics ***
+      Table     size:  125
+      Entries reused:  0
+
+   *** REGSETGCD: Inv Set Statistics ***
+      Table     size:  30
+      Entries reused:  0
+   (34)
+   [
+     {
+                         24                   23
+         960725655771966t   + 386820897948702t
+       + 
+                          22                    21
+         8906817198608181t   + 2704966893949428t
+       + 
+                           20                    19
+         37304033340228264t   + 7924782817170207t
+       + 
+                           18                     17
+         93126799040354990t   + 13101273653130910t
+       + 
+                            16                     15
+         156146250424711858t   + 16626490957259119t
+       + 
+                            14                     13
+         190699288479805763t   + 24339173367625275t
+       + 
+                            12                     11
+         180532313014960135t   + 35288089030975378t
+       + 
+                            10                     9
+         135054975747656285t   + 34733736952488540t
+       + 
+                           8                     7
+         75947600354493972t  + 19772555692457088t
+       + 
+                           6                    5
+         28871558573755428t  + 5576152439081664t
+       + 
+                          4                   3
+         6321711820352976t  + 438314209312320t
+       + 
+                       2
+       581105748367008t  - 60254467992576t + 1449115951104
+       ,
+
+              266042108694913023855152657370520823616684_
+               74181372891857784
+            *
+                23
+               t
+           + 
+              443104378424686086067294899528296664238693_
+               556855017735265295
+            *
+                22
+               t
+           + 
+              279078393286701234679141342358988327155321_
+               305829547090310242
+            *
+                21
+               t
+           + 
+              339027636141323246510761717661554305462062_
+               6391823613392185226
+            *
+                20
+               t
+           + 
+              941478179503540575554198645220352803719793_
+               196473813837434129
+            *
+                19
+               t
+           + 
+              115478551946794752422116967496739493525857_
+               47674184320988144390
+            *
+                18
+               t
+           + 
+              134360956676559778988170165669941321646721_
+               5660333356417241432
+            *
+                17
+               t
+           + 
+              232338138681478735039335516171756408598991_
+               02987800663566699334
+            *
+                16
+               t
+           + 
+              869574020537672336950845440508790740850931_
+               336484983573386433
+            *
+                15
+               t
+           + 
+              315615543058769348754194614869699265542417_
+               50065103460820476969
+            *
+                14
+               t
+           + 
+              127140099028771748744206595254773187955482_
+               3889855386072264931
+            *
+                13
+               t
+           + 
+              319450899138637360448025269640795401983370_
+               49550503295825160523
+            *
+                12
+               t
+           + 
+              373873570428814450987137156023284588443910_
+               2270778010470931960
+            *
+                11
+               t
+           + 
+              252939975123914120261446014357711315875619_
+               05532992045692885927
+            *
+                10
+               t
+           + 
+              521023900984606712346926279987005277341047_
+               1135950175008046524
+            *
+                9
+               t
+           + 
+              150838879869302971662598705686082704274031_
+               87606238713491129188
+            *
+                8
+               t
+           + 
+              352208723469293012638368627077577955348176_
+               9125670839075109000
+            *
+                7
+               t
+           + 
+              607994520039568101308653379256888649110124_
+               4247440034969288588
+            *
+                6
+               t
+           + 
+              109063485243390088819991375624798602319698_
+               7723469934933603680
+            *
+                5
+               t
+           + 
+              140581943087190710229443253753833540210283_
+               8994019667487458352
+            *
+                4
+               t
+           + 
+              880715279503204500725366712655077488783478_
+               28884933605202432
+            *
+                3
+               t
+           + 
+              135882489433640933229781177155977768016065_
+               765482378657129440
+            *
+                2
+               t
+           + 
+             -
+                 139572834428822622305598946074003140825_
+                  16690749975646520320
+               *
+                  t
+           + 
+            33463769297318929927725832570930847259211711_
+             2855749713920
+        *
+           z
+       + 
+          8567175484043952879756725964506833932149637101_
+           090521164936
+        *
+            23
+           t
+       + 
+          1497923928642017918457083740327289424987975192_
+           51667250945721
+        *
+            22
+           t
+       + 
+          7725837178364582215741086158215976413812300307_
+           4190374021550
+        *
+            21
+           t
+       + 
+          1108862254126854214498918940708612211184560556_
+           764334742191654
+        *
+            20
+           t
+       + 
+          2132504944606788652197744801068260537838157896_
+           21501732672327
+        *
+            19
+           t
+       + 
+          3668929075160666195729177894178343514501987898_
+           410131431699882
+        *
+            18
+           t
+       + 
+          1713889064710018728794901243687482363147654590_
+           39567820048872
+        *
+            17
+           t
+       + 
+          7192430746914602166660233477331022483144921771_
+           645523139658986
+        *
+            16
+           t
+       + 
+         -
+             1287986746896900728128799656330902919596631_
+              43108437362453385
+           *
+               15
+              t
+       + 
+          9553010858341425909306423132921134040856028790_
+           803526430270671
+        *
+            14
+           t
+       + 
+         -
+             1329609624567549287453868764630043782465845_
+              8709144441096603
+           *
+               13
+              t
+       + 
+          9475806805814145326383085518325333106881690568_
+           644274964864413
+        *
+            12
+           t
+       + 
+          8032346879251334588616598556640849276062987947_
+           99856265539336
+        *
+            11
+           t
+       + 
+          7338202759292865165994622349207516400662174302_
+           614595173333825
+        *
+            10
+           t
+       + 
+          1308004628480367351164369613111971668880538855_
+           640917200187108
+        *
+            9
+           t
+       + 
+          4268059455741255498880229598973705747098216067_
+           697754352634748
+        *
+            8
+           t
+       + 
+          8928935268585140957913187759040933001030456015_
+           14470613580600
+        *
+            7
+           t
+       + 
+          1679152575460683956631925852181341501981598137_
+           465328797013652
+        *
+            6
+           t
+       + 
+          2697574157679229803789671541433578355441131582_
+           80591408043936
+        *
+            5
+           t
+       + 
+          3809515278646575290335808298012827240813453726_
+           80202920198224
+        *
+            4
+           t
+       + 
+          1978554529422849503299882693760134113272503533_
+           9452913286656
+        *
+            3
+           t
+       + 
+          3647741205738478294236663530339663776330392817_
+           4935079178528
+        *
+            2
+           t
+       + 
+         -
+             3722212879279038648713080422224976273210890_
+              229485838670848
+           *
+              t
+       + 
+        890797248531143483612306344840138620247285999068_
+         74105856
+       ,
+         3      2                  3       2
+      (3z  - 11z  + 8z + 4)y + 2t z  + 4t z  - 5t z - t,
+                  2
+      (z + 1)x + z  - 4z + 1}
+     ]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RegularTriangularSetXmpPageEmpty34}
+\begin{paste}{RegularTriangularSetXmpPageEmpty34}{RegularTriangularSetXmpPagePatch34}
+\pastebutton{RegularTriangularSetXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lq,true,true)$T\free{lq }\free{T }}
+\end{paste}\end{patch}
+
 @
 \section{roman.ht}
 \pagehead{RomanNumeralXmpPage}{roman.ht}{RomanNumeral}
@@ -19246,6 +53570,188 @@ to display the full list of operations defined by
 \autobuttons
 \end{page}
 
+\begin{patch}{RomanNumeralXmpPagePatch1}
+\begin{paste}{RomanNumeralXmpPageFull1}{RomanNumeralXmpPageEmpty1}
+\pastebutton{RomanNumeralXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := operator 'f\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (1)  f
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty1}
+\begin{paste}{RomanNumeralXmpPageEmpty1}{RomanNumeralXmpPagePatch1}
+\pastebutton{RomanNumeralXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := operator 'f\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch2}
+\begin{paste}{RomanNumeralXmpPageFull2}{RomanNumeralXmpPageEmpty2}
+\pastebutton{RomanNumeralXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{D(f x,x,7)\free{f }}
+\indentrel{3}\begin{verbatim}
+         (vii)
+   (2)  f     (x)
+
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty2}
+\begin{paste}{RomanNumeralXmpPageEmpty2}{RomanNumeralXmpPagePatch2}
+\pastebutton{RomanNumeralXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{D(f x,x,7)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch3}
+\begin{paste}{RomanNumeralXmpPageFull3}{RomanNumeralXmpPageEmpty3}
+\pastebutton{RomanNumeralXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{a := roman(1978 - 1965)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (3)  XIII
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty3}
+\begin{paste}{RomanNumeralXmpPageEmpty3}{RomanNumeralXmpPagePatch3}
+\pastebutton{RomanNumeralXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a := roman(1978 - 1965)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch4}
+\begin{paste}{RomanNumeralXmpPageFull4}{RomanNumeralXmpPageEmpty4}
+\pastebutton{RomanNumeralXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{x : UTS(ROMAN,'x,0) := x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (4)  x
+         Type: UnivariateTaylorSeries(RomanNumeral,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty4}
+\begin{paste}{RomanNumeralXmpPageEmpty4}{RomanNumeralXmpPagePatch4}
+\pastebutton{RomanNumeralXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{x : UTS(ROMAN,'x,0) := x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch5}
+\begin{paste}{RomanNumeralXmpPageFull5}{RomanNumeralXmpPageEmpty5}
+\pastebutton{RomanNumeralXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{recip(1 - x - x**2)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                 2        3      4         5         6
+     I + x + II x  + III x  + V x  + VIII x  + XIII x
+   + 
+          7          8       9           10      11
+     XXI x  + XXXIV x  + LV x  + LXXXIX x   + O(x  )
+Type: Union(UnivariateTaylorSeries(RomanNumeral,x,0),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty5}
+\begin{paste}{RomanNumeralXmpPageEmpty5}{RomanNumeralXmpPagePatch5}
+\pastebutton{RomanNumeralXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{recip(1 - x - x**2)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch6}
+\begin{paste}{RomanNumeralXmpPageFull6}{RomanNumeralXmpPageEmpty6}
+\pastebutton{RomanNumeralXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{m : MATRIX FRAC ROMAN\bound{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty6}
+\begin{paste}{RomanNumeralXmpPageEmpty6}{RomanNumeralXmpPagePatch6}
+\pastebutton{RomanNumeralXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m : MATRIX FRAC ROMAN\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch7}
+\begin{paste}{RomanNumeralXmpPageFull7}{RomanNumeralXmpPageEmpty7}
+\pastebutton{RomanNumeralXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3]\free{m }\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú I    I    I¿
+        ³ÄÄ   ÄÄÄ  ÄÄ³
+        ³II   III  IV³
+        ³            ³
+        ³ I    I   I ³
+   (7)  ³ÄÄÄ  ÄÄ   Ä ³
+        ³III  IV   V ³
+        ³            ³
+        ³ I    I    I³
+        ³ÄÄ    Ä   ÄÄ³
+        ÀIV    V   VIÙ
+                     Type: Matrix Fraction RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty7}
+\begin{paste}{RomanNumeralXmpPageEmpty7}{RomanNumeralXmpPagePatch7}
+\pastebutton{RomanNumeralXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3]\free{m }\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch8}
+\begin{paste}{RomanNumeralXmpPageFull8}{RomanNumeralXmpPageEmpty8}
+\pastebutton{RomanNumeralXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{inverse m\free{m1 }}
+\indentrel{3}\begin{verbatim}
+        ÚLXXII   - CCXL    CLXXX ¿
+        ³                        ³
+   (8)  ³- CCXL    CM     - DCCXX³
+        ³                        ³
+        ÀCLXXX   - DCCXX    DC   Ù
+          Type: Union(Matrix Fraction RomanNumeral,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty8}
+\begin{paste}{RomanNumeralXmpPageEmpty8}{RomanNumeralXmpPagePatch8}
+\pastebutton{RomanNumeralXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{inverse m\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch9}
+\begin{paste}{RomanNumeralXmpPageFull9}{RomanNumeralXmpPageEmpty9}
+\pastebutton{RomanNumeralXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{y := factorial 10\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (9)  3628800
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty9}
+\begin{paste}{RomanNumeralXmpPageEmpty9}{RomanNumeralXmpPagePatch9}
+\pastebutton{RomanNumeralXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{y := factorial 10\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPagePatch10}
+\begin{paste}{RomanNumeralXmpPageFull10}{RomanNumeralXmpPageEmpty10}
+\pastebutton{RomanNumeralXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{roman y\free{y }}
+\indentrel{3}\begin{verbatim}
+   (10)
+  ((((I))))((((I))))((((I)))) (((I)))(((I)))(((I)))(((I))
+  )(((I)))(((I))) ((I))((I)) MMMMMMMMDCCC
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{RomanNumeralXmpPageEmpty10}
+\begin{paste}{RomanNumeralXmpPageEmpty10}{RomanNumeralXmpPagePatch10}
+\pastebutton{RomanNumeralXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{roman y\free{y }}
+\end{paste}\end{patch}
+
 @
 \section{seg.ht}
 \pagehead{SegmentXmpPage}{seg.ht}{Segment}
@@ -19336,6 +53842,166 @@ and \downlink{`UniversalSegment'}{UniversalSegmentXmpPage}
 \autobuttons
 \end{page}
 
+\begin{patch}{SegmentXmpPagePatch1}
+\begin{paste}{SegmentXmpPageFull1}{SegmentXmpPageEmpty1}
+\pastebutton{SegmentXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{s := 3..10\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (1)  3..10
+                          Type: Segment PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty1}
+\begin{paste}{SegmentXmpPageEmpty1}{SegmentXmpPagePatch1}
+\pastebutton{SegmentXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{s := 3..10\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch2}
+\begin{paste}{SegmentXmpPageFull2}{SegmentXmpPageEmpty2}
+\pastebutton{SegmentXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{lo s\free{s }}
+\indentrel{3}\begin{verbatim}
+   (2)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty2}
+\begin{paste}{SegmentXmpPageEmpty2}{SegmentXmpPagePatch2}
+\pastebutton{SegmentXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{lo s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch3}
+\begin{paste}{SegmentXmpPageFull3}{SegmentXmpPageEmpty3}
+\pastebutton{SegmentXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{hi s\free{s }}
+\indentrel{3}\begin{verbatim}
+   (3)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty3}
+\begin{paste}{SegmentXmpPageEmpty3}{SegmentXmpPagePatch3}
+\pastebutton{SegmentXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{hi s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch4}
+\begin{paste}{SegmentXmpPageFull4}{SegmentXmpPageEmpty4}
+\pastebutton{SegmentXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{t := 10..3 by -2\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (4)  10..3 by - 2
+                          Type: Segment PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty4}
+\begin{paste}{SegmentXmpPageEmpty4}{SegmentXmpPagePatch4}
+\pastebutton{SegmentXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{t := 10..3 by -2\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch5}
+\begin{paste}{SegmentXmpPageFull5}{SegmentXmpPageEmpty5}
+\pastebutton{SegmentXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{incr s\free{s }}
+\indentrel{3}\begin{verbatim}
+   (5)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty5}
+\begin{paste}{SegmentXmpPageEmpty5}{SegmentXmpPagePatch5}
+\pastebutton{SegmentXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{incr s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch6}
+\begin{paste}{SegmentXmpPageFull6}{SegmentXmpPageEmpty6}
+\pastebutton{SegmentXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{incr t\free{t }}
+\indentrel{3}\begin{verbatim}
+   (6)  - 2
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty6}
+\begin{paste}{SegmentXmpPageEmpty6}{SegmentXmpPagePatch6}
+\pastebutton{SegmentXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{incr t\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch7}
+\begin{paste}{SegmentXmpPageFull7}{SegmentXmpPageEmpty7}
+\pastebutton{SegmentXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{l := [1..3, 5, 9, 15..11 by -1]\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1..3,5..5,9..9,15..11 by - 1]
+                     Type: List Segment PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty7}
+\begin{paste}{SegmentXmpPageEmpty7}{SegmentXmpPagePatch7}
+\pastebutton{SegmentXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{l := [1..3, 5, 9, 15..11 by -1]\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch8}
+\begin{paste}{SegmentXmpPageFull8}{SegmentXmpPageEmpty8}
+\pastebutton{SegmentXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{expand s\free{s }}
+\indentrel{3}\begin{verbatim}
+   (8)  [3,4,5,6,7,8,9,10]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty8}
+\begin{paste}{SegmentXmpPageEmpty8}{SegmentXmpPagePatch8}
+\pastebutton{SegmentXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{expand s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch9}
+\begin{paste}{SegmentXmpPageFull9}{SegmentXmpPageEmpty9}
+\pastebutton{SegmentXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{expand t\free{t }}
+\indentrel{3}\begin{verbatim}
+   (9)  [10,8,6,4]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty9}
+\begin{paste}{SegmentXmpPageEmpty9}{SegmentXmpPagePatch9}
+\pastebutton{SegmentXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{expand t\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPagePatch10}
+\begin{paste}{SegmentXmpPageFull10}{SegmentXmpPageEmpty10}
+\pastebutton{SegmentXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{expand l\free{l }}
+\indentrel{3}\begin{verbatim}
+   (10)  [1,2,3,5,9,15,14,13,12,11]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentXmpPageEmpty10}
+\begin{paste}{SegmentXmpPageEmpty10}{SegmentXmpPagePatch10}
+\pastebutton{SegmentXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{expand l\free{l }}
+\end{paste}\end{patch}
+
 @
 \section{segbind.ht}
 \pagehead{SegmentBindingXmpPage}{segbind.ht}{SegmentBinding}
@@ -19390,7 +54056,106 @@ For more information on related topics, see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{SegmentBindingXmpPagePatch1}
+\begin{paste}{SegmentBindingXmpPageFull1}{SegmentBindingXmpPageEmpty1}
+\pastebutton{SegmentBindingXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x = a..b}
+\indentrel{3}\begin{verbatim}
+   (1)  x= a..b
+                            Type: SegmentBinding Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty1}
+\begin{paste}{SegmentBindingXmpPageEmpty1}{SegmentBindingXmpPagePatch1}
+\pastebutton{SegmentBindingXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x = a..b}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPagePatch2}
+\begin{paste}{SegmentBindingXmpPageFull2}{SegmentBindingXmpPageEmpty2}
+\pastebutton{SegmentBindingXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{sum(i**2, i = 0..n)}
+\indentrel{3}\begin{verbatim}
+          3     2
+        2n  + 3n  + n
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              6
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty2}
+\begin{paste}{SegmentBindingXmpPageEmpty2}{SegmentBindingXmpPagePatch2}
+\pastebutton{SegmentBindingXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sum(i**2, i = 0..n)}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPagePatch3}
+\begin{paste}{SegmentBindingXmpPageFull3}{SegmentBindingXmpPageEmpty3}
+\pastebutton{SegmentBindingXmpPageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2, x = -2..2)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/segmentbindingxmppage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/segmentbindingxmppage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty3}
+\begin{paste}{SegmentBindingXmpPageEmpty3}{SegmentBindingXmpPagePatch3}
+\pastebutton{SegmentBindingXmpPageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(x**2, x = -2..2)}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPagePatch4}
+\begin{paste}{SegmentBindingXmpPageFull4}{SegmentBindingXmpPageEmpty4}
+\pastebutton{SegmentBindingXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{sb := y = 1/2..3/2\bound{sb }}
+\indentrel{3}\begin{verbatim}
+            1    3
+   (4)  y= (Ä)..(Ä)
+            2    2
+                  Type: SegmentBinding Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty4}
+\begin{paste}{SegmentBindingXmpPageEmpty4}{SegmentBindingXmpPagePatch4}
+\pastebutton{SegmentBindingXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sb := y = 1/2..3/2\bound{sb }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPagePatch5}
+\begin{paste}{SegmentBindingXmpPageFull5}{SegmentBindingXmpPageEmpty5}
+\pastebutton{SegmentBindingXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{variable(sb)\free{sb }}
+\indentrel{3}\begin{verbatim}
+   (5)  y
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty5}
+\begin{paste}{SegmentBindingXmpPageEmpty5}{SegmentBindingXmpPagePatch5}
+\pastebutton{SegmentBindingXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{variable(sb)\free{sb }}
+\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPagePatch6}
+\begin{paste}{SegmentBindingXmpPageFull6}{SegmentBindingXmpPageEmpty6}
+\pastebutton{SegmentBindingXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{segment(sb)\free{sb }}
+\indentrel{3}\begin{verbatim}
+         1    3
+   (6)  (Ä)..(Ä)
+         2    2
+                         Type: Segment Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SegmentBindingXmpPageEmpty6}
+\begin{paste}{SegmentBindingXmpPageEmpty6}{SegmentBindingXmpPagePatch6}
+\pastebutton{SegmentBindingXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{segment(sb)\free{sb }}
+\end{paste}\end{patch}
 
 @
 \section{set.ht}
@@ -19522,7 +54287,332 @@ For more information about lists, see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{SetXmpPagePatch1}
+\begin{paste}{SetXmpPageFull1}{SetXmpPageEmpty1}
+\pastebutton{SetXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{s := set [x**2-1, y**2-1, z**2-1]\bound{s }}
+\indentrel{3}\begin{verbatim}
+          2      2      2
+   (1)  {x  - 1,y  - 1,z  - 1}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty1}
+\begin{paste}{SetXmpPageEmpty1}{SetXmpPagePatch1}
+\pastebutton{SetXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{s := set [x**2-1, y**2-1, z**2-1]\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch2}
+\begin{paste}{SetXmpPageFull2}{SetXmpPageEmpty2}
+\pastebutton{SetXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t := set [x**i - i+1 for i in 2..10 | prime? i]\bound{t }}
+\indentrel{3}\begin{verbatim}
+          2      3      5      7
+   (2)  {x  - 1,x  - 2,x  - 4,x  - 6}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty2}
+\begin{paste}{SetXmpPageEmpty2}{SetXmpPagePatch2}
+\pastebutton{SetXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t := set [x**i - i+1 for i in 2..10 | prime? i]\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch3}
+\begin{paste}{SetXmpPageFull3}{SetXmpPageEmpty3}
+\pastebutton{SetXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{i := intersect(s,t)\free{s t }\bound{i }}
+\indentrel{3}\begin{verbatim}
+          2
+   (3)  {x  - 1}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty3}
+\begin{paste}{SetXmpPageEmpty3}{SetXmpPagePatch3}
+\pastebutton{SetXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i := intersect(s,t)\free{s t }\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch4}
+\begin{paste}{SetXmpPageFull4}{SetXmpPageEmpty4}
+\pastebutton{SetXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{u := union(s,t)\free{s t }\bound{u }}
+\indentrel{3}\begin{verbatim}
+          2      3      5      7      2      2
+   (4)  {x  - 1,x  - 2,x  - 4,x  - 6,y  - 1,z  - 1}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty4}
+\begin{paste}{SetXmpPageEmpty4}{SetXmpPagePatch4}
+\pastebutton{SetXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{u := union(s,t)\free{s t }\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch5}
+\begin{paste}{SetXmpPageFull5}{SetXmpPageEmpty5}
+\pastebutton{SetXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{difference(s,t)\free{s t }}
+\indentrel{3}\begin{verbatim}
+          2      2
+   (5)  {y  - 1,z  - 1}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty5}
+\begin{paste}{SetXmpPageEmpty5}{SetXmpPagePatch5}
+\pastebutton{SetXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{difference(s,t)\free{s t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch6}
+\begin{paste}{SetXmpPageFull6}{SetXmpPageEmpty6}
+\pastebutton{SetXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{symmetricDifference(s,t)\free{s t }}
+\indentrel{3}\begin{verbatim}
+          3      5      7      2      2
+   (6)  {x  - 2,x  - 4,x  - 6,y  - 1,z  - 1}
+                           Type: Set Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty6}
+\begin{paste}{SetXmpPageEmpty6}{SetXmpPagePatch6}
+\pastebutton{SetXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{symmetricDifference(s,t)\free{s t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch7}
+\begin{paste}{SetXmpPageFull7}{SetXmpPageEmpty7}
+\pastebutton{SetXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{member?(y, s)\free{s }}
+\indentrel{3}\begin{verbatim}
+   (7)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty7}
+\begin{paste}{SetXmpPageEmpty7}{SetXmpPagePatch7}
+\pastebutton{SetXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{member?(y, s)\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch8}
+\begin{paste}{SetXmpPageFull8}{SetXmpPageEmpty8}
+\pastebutton{SetXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{member?((y+1)*(y-1), s)\free{s }}
+\indentrel{3}\begin{verbatim}
+   (8)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty8}
+\begin{paste}{SetXmpPageEmpty8}{SetXmpPagePatch8}
+\pastebutton{SetXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{member?((y+1)*(y-1), s)\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch9}
+\begin{paste}{SetXmpPageFull9}{SetXmpPageEmpty9}
+\pastebutton{SetXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{subset?(i, s)\free{i s }}
+\indentrel{3}\begin{verbatim}
+   (9)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty9}
+\begin{paste}{SetXmpPageEmpty9}{SetXmpPagePatch9}
+\pastebutton{SetXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{subset?(i, s)\free{i s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch10}
+\begin{paste}{SetXmpPageFull10}{SetXmpPageEmpty10}
+\pastebutton{SetXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{subset?(u, s)\free{u s }}
+\indentrel{3}\begin{verbatim}
+   (10)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty10}
+\begin{paste}{SetXmpPageEmpty10}{SetXmpPagePatch10}
+\pastebutton{SetXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{subset?(u, s)\free{u s }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch11}
+\begin{paste}{SetXmpPageFull11}{SetXmpPageEmpty11}
+\pastebutton{SetXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)]\bound{gs }}
+\indentrel{3}\begin{verbatim}
+   (11)  {2,6,7,8}
+                                Type: Set PrimeField 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty11}
+\begin{paste}{SetXmpPageEmpty11}{SetXmpPagePatch11}
+\pastebutton{SetXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)]\bound{gs }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch12}
+\begin{paste}{SetXmpPageFull12}{SetXmpPageEmpty12}
+\pastebutton{SetXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{complement gs\free{gs }}
+\indentrel{3}\begin{verbatim}
+   (12)  {1,3,4,5,9,10,0}
+                                Type: Set PrimeField 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty12}
+\begin{paste}{SetXmpPageEmpty12}{SetXmpPagePatch12}
+\pastebutton{SetXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{complement gs\free{gs }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch13}
+\begin{paste}{SetXmpPageFull13}{SetXmpPageEmpty13}
+\pastebutton{SetXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{a := set [i**2 for i in 1..5]\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (13)  {1,4,9,16,25}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty13}
+\begin{paste}{SetXmpPageEmpty13}{SetXmpPagePatch13}
+\pastebutton{SetXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{a := set [i**2 for i in 1..5]\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch14}
+\begin{paste}{SetXmpPageFull14}{SetXmpPageEmpty14}
+\pastebutton{SetXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{insert!(32, a)\free{a }\bound{ainsert }}
+\indentrel{3}\begin{verbatim}
+   (14)  {1,4,9,16,25,32}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty14}
+\begin{paste}{SetXmpPageEmpty14}{SetXmpPagePatch14}
+\pastebutton{SetXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{insert!(32, a)\free{a }\bound{ainsert }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch15}
+\begin{paste}{SetXmpPageFull15}{SetXmpPageEmpty15}
+\pastebutton{SetXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{remove!(25, a)\free{a }\bound{aremove }}
+\indentrel{3}\begin{verbatim}
+   (15)  {1,4,9,16,32}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty15}
+\begin{paste}{SetXmpPageEmpty15}{SetXmpPagePatch15}
+\pastebutton{SetXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{remove!(25, a)\free{a }\bound{aremove }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch16}
+\begin{paste}{SetXmpPageFull16}{SetXmpPageEmpty16}
+\pastebutton{SetXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{a\free{aremove ainsert }}
+\indentrel{3}\begin{verbatim}
+   (16)  {1,4,9,16,32}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty16}
+\begin{paste}{SetXmpPageEmpty16}{SetXmpPagePatch16}
+\pastebutton{SetXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{a\free{aremove ainsert }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch17}
+\begin{paste}{SetXmpPageFull17}{SetXmpPageEmpty17}
+\pastebutton{SetXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{b := b0 := set [i**2 for i in 1..5]\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (17)  {1,4,9,16,25}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty17}
+\begin{paste}{SetXmpPageEmpty17}{SetXmpPagePatch17}
+\pastebutton{SetXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{b := b0 := set [i**2 for i in 1..5]\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch18}
+\begin{paste}{SetXmpPageFull18}{SetXmpPageEmpty18}
+\pastebutton{SetXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{b := union(b,32)\free{b }\bound{binsert }}
+\indentrel{3}\begin{verbatim}
+   (18)  {1,4,9,16,25,32}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty18}
+\begin{paste}{SetXmpPageEmpty18}{SetXmpPagePatch18}
+\pastebutton{SetXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{b := union(b,32)\free{b }\bound{binsert }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch19}
+\begin{paste}{SetXmpPageFull19}{SetXmpPageEmpty19}
+\pastebutton{SetXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{b := difference(b,25)\free{binsert }\bound{bremove }}
+\indentrel{3}\begin{verbatim}
+   (19)  {1,4,9,16,32}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty19}
+\begin{paste}{SetXmpPageEmpty19}{SetXmpPagePatch19}
+\pastebutton{SetXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{b := difference(b,25)\free{binsert }\bound{bremove }}
+\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPagePatch20}
+\begin{paste}{SetXmpPageFull20}{SetXmpPageEmpty20}
+\pastebutton{SetXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{b0\free{bremove }}
+\indentrel{3}\begin{verbatim}
+   (20)  {1,4,9,16,25}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SetXmpPageEmpty20}
+\begin{paste}{SetXmpPageEmpty20}{SetXmpPagePatch20}
+\pastebutton{SetXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{b0\free{bremove }}
+\end{paste}\end{patch}
 
 @
 \section{sint.ht}
@@ -19633,6 +54723,182 @@ To see the other operations, use the Browse Hyperdoc facility
 \autobuttons
 \end{page}
 
+\begin{patch}{SingleIntegerXmpPagePatch1}
+\begin{paste}{SingleIntegerXmpPageFull1}{SingleIntegerXmpPageEmpty1}
+\pastebutton{SingleIntegerXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{min()$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (1)  - 134217728
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty1}
+\begin{paste}{SingleIntegerXmpPageEmpty1}{SingleIntegerXmpPagePatch1}
+\pastebutton{SingleIntegerXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{min()$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch2}
+\begin{paste}{SingleIntegerXmpPageFull2}{SingleIntegerXmpPageEmpty2}
+\pastebutton{SingleIntegerXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{max()$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (2)  134217727
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty2}
+\begin{paste}{SingleIntegerXmpPageEmpty2}{SingleIntegerXmpPagePatch2}
+\pastebutton{SingleIntegerXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{max()$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch3}
+\begin{paste}{SingleIntegerXmpPageFull3}{SingleIntegerXmpPageEmpty3}
+\pastebutton{SingleIntegerXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{a := 1234 :: SingleInteger\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (3)  1234
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty3}
+\begin{paste}{SingleIntegerXmpPageEmpty3}{SingleIntegerXmpPagePatch3}
+\pastebutton{SingleIntegerXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a := 1234 :: SingleInteger\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch4}
+\begin{paste}{SingleIntegerXmpPageFull4}{SingleIntegerXmpPageEmpty4}
+\pastebutton{SingleIntegerXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b := 124$SingleInteger\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (4)  124
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty4}
+\begin{paste}{SingleIntegerXmpPageEmpty4}{SingleIntegerXmpPagePatch4}
+\pastebutton{SingleIntegerXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b := 124$SingleInteger\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch5}
+\begin{paste}{SingleIntegerXmpPageFull5}{SingleIntegerXmpPageEmpty5}
+\pastebutton{SingleIntegerXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{gcd(a,b)\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (5)  2
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty5}
+\begin{paste}{SingleIntegerXmpPageEmpty5}{SingleIntegerXmpPagePatch5}
+\pastebutton{SingleIntegerXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{gcd(a,b)\free{a }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch6}
+\begin{paste}{SingleIntegerXmpPageFull6}{SingleIntegerXmpPageEmpty6}
+\pastebutton{SingleIntegerXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{lcm(a,b)\free{a }\free{b }}
+\indentrel{3}\begin{verbatim}
+   (6)  76508
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty6}
+\begin{paste}{SingleIntegerXmpPageEmpty6}{SingleIntegerXmpPagePatch6}
+\pastebutton{SingleIntegerXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{lcm(a,b)\free{a }\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch7}
+\begin{paste}{SingleIntegerXmpPageFull7}{SingleIntegerXmpPageEmpty7}
+\pastebutton{SingleIntegerXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{mulmod(5,6,13)$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (7)  4
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty7}
+\begin{paste}{SingleIntegerXmpPageEmpty7}{SingleIntegerXmpPagePatch7}
+\pastebutton{SingleIntegerXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{mulmod(5,6,13)$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch8}
+\begin{paste}{SingleIntegerXmpPageFull8}{SingleIntegerXmpPageEmpty8}
+\pastebutton{SingleIntegerXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{positiveRemainder(37,13)$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (8)  11
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty8}
+\begin{paste}{SingleIntegerXmpPageEmpty8}{SingleIntegerXmpPagePatch8}
+\pastebutton{SingleIntegerXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{positiveRemainder(37,13)$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch9}
+\begin{paste}{SingleIntegerXmpPageFull9}{SingleIntegerXmpPageEmpty9}
+\pastebutton{SingleIntegerXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{And(3,4)$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty9}
+\begin{paste}{SingleIntegerXmpPageEmpty9}{SingleIntegerXmpPagePatch9}
+\pastebutton{SingleIntegerXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{And(3,4)$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch10}
+\begin{paste}{SingleIntegerXmpPageFull10}{SingleIntegerXmpPageEmpty10}
+\pastebutton{SingleIntegerXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{shift(1,4)$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (10)  16
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty10}
+\begin{paste}{SingleIntegerXmpPageEmpty10}{SingleIntegerXmpPagePatch10}
+\pastebutton{SingleIntegerXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{shift(1,4)$SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPagePatch11}
+\begin{paste}{SingleIntegerXmpPageFull11}{SingleIntegerXmpPageEmpty11}
+\pastebutton{SingleIntegerXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{shift(31,-1)$SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (11)  15
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SingleIntegerXmpPageEmpty11}
+\begin{paste}{SingleIntegerXmpPageEmpty11}{SingleIntegerXmpPagePatch11}
+\pastebutton{SingleIntegerXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{shift(31,-1)$SingleInteger}
+\end{paste}\end{patch}
+
 @
 \section{sqmatrix.ht}
 \pagehead{SqMatrixXmpPage}{sqmatrix.ht}{SquareMatrix}
@@ -19701,6 +54967,116 @@ in Section 2.11\ignore{ugTypesExpose}, and
 \autobuttons
 \end{page}
 
+\begin{patch}{SqMatrixXmpPagePatch1}
+\begin{paste}{SqMatrixXmpPageFull1}{SqMatrixXmpPageEmpty1}
+\pastebutton{SqMatrixXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set expose add constructor SquareMatrix\bound{SQ }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty1}
+\begin{paste}{SqMatrixXmpPageEmpty1}{SqMatrixXmpPagePatch1}
+\pastebutton{SqMatrixXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set expose add constructor SquareMatrix\bound{SQ }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPagePatch2}
+\begin{paste}{SqMatrixXmpPageFull2}{SqMatrixXmpPageEmpty2}
+\pastebutton{SqMatrixXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := squareMatrix [[1,-\%i],[\%i,4]]\bound{m }\free{SQ }}
+\indentrel{3}\begin{verbatim}
+        Ú1   - %i¿
+   (1)  ³        ³
+        À%i   4  Ù
+                  Type: SquareMatrix(2,Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty2}
+\begin{paste}{SqMatrixXmpPageEmpty2}{SqMatrixXmpPagePatch2}
+\pastebutton{SqMatrixXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := squareMatrix [[1,-\%i],[\%i,4]]\bound{m }\free{SQ }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPagePatch3}
+\begin{paste}{SqMatrixXmpPageFull3}{SqMatrixXmpPageEmpty3}
+\pastebutton{SqMatrixXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{m*m - m\free{m }}
+\indentrel{3}\begin{verbatim}
+        Ú 1   - 4%i¿
+   (2)  ³          ³
+        À4%i   13  Ù
+                  Type: SquareMatrix(2,Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty3}
+\begin{paste}{SqMatrixXmpPageEmpty3}{SqMatrixXmpPagePatch3}
+\pastebutton{SqMatrixXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{m*m - m\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPagePatch4}
+\begin{paste}{SqMatrixXmpPageFull4}{SqMatrixXmpPageEmpty4}
+\pastebutton{SqMatrixXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{mm := squareMatrix [[m, 1], [1-m, m**2]]\free{m }\bound{mm }}
+\indentrel{3}\begin{verbatim}
+        ÚÚ1   - %i¿      Ú1  0¿   ¿
+        ³³        ³      ³    ³   ³
+        ³À%i   4  Ù      À0  1Ù   ³
+   (3)  ³                         ³
+        ³Ú 0    %i ¿  Ú 2   - 5%i¿³
+        ³³         ³  ³          ³³
+        ÀÀ- %i  - 3Ù  À5%i   17  ÙÙ
+  Type: SquareMatrix(2,SquareMatrix(2,Complex Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty4}
+\begin{paste}{SqMatrixXmpPageEmpty4}{SqMatrixXmpPagePatch4}
+\pastebutton{SqMatrixXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{mm := squareMatrix [[m, 1], [1-m, m**2]]\free{m }\bound{mm }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPagePatch5}
+\begin{paste}{SqMatrixXmpPageFull5}{SqMatrixXmpPageEmpty5}
+\pastebutton{SqMatrixXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p := (x + m)**2\free{m }\bound{p }}
+\indentrel{3}\begin{verbatim}
+         2   Ú 2   - 2%i¿    Ú 2   - 5%i¿
+   (4)  x  + ³          ³x + ³          ³
+             À2%i    8  Ù    À5%i   17  Ù
+       Type: Polynomial SquareMatrix(2,Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty5}
+\begin{paste}{SqMatrixXmpPageEmpty5}{SqMatrixXmpPagePatch5}
+\pastebutton{SqMatrixXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p := (x + m)**2\free{m }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPagePatch6}
+\begin{paste}{SqMatrixXmpPageFull6}{SqMatrixXmpPageEmpty6}
+\pastebutton{SqMatrixXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p::SquareMatrix(2, ?)\free{p }}
+\indentrel{3}\begin{verbatim}
+        Ú 2                        ¿
+        ³x  + 2x + 2  - 2%i x - 5%i³
+   (5)  ³                          ³
+        ³              2           ³
+        À2%i x + 5%i  x  + 8x + 17 Ù
+       Type: SquareMatrix(2,Polynomial Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqMatrixXmpPageEmpty6}
+\begin{paste}{SqMatrixXmpPageEmpty6}{SqMatrixXmpPagePatch6}
+\pastebutton{SqMatrixXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p::SquareMatrix(2, ?)\free{p }}
+\end{paste}\end{patch}
+
 @
 \section{sregset.ht}
 \pagehead{SqFreeRegTriangSetXmpPage}{sregset.ht}
@@ -19897,6 +55273,422 @@ Then we compute:
 \autobuttons
 \end{page}
 
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch1}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull1}{SqFreeRegTriangSetXmpPageEmpty1}
+\pastebutton{SqFreeRegTriangSetXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty1}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty1}{SqFreeRegTriangSetXmpPagePatch1}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch2}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull2}{SqFreeRegTriangSetXmpPageEmpty2}
+\pastebutton{SqFreeRegTriangSetXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [x,y,z,t]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty2}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty2}{SqFreeRegTriangSetXmpPagePatch2}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch3}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull3}{SqFreeRegTriangSetXmpPageEmpty3}
+\pastebutton{SqFreeRegTriangSetXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\indentrel{3}\begin{verbatim}
+   (3)  OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty3}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty3}{SqFreeRegTriangSetXmpPagePatch3}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch4}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull4}{SqFreeRegTriangSetXmpPageEmpty4}
+\pastebutton{SqFreeRegTriangSetXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\indentrel{3}\begin{verbatim}
+   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty4}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty4}{SqFreeRegTriangSetXmpPagePatch4}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch5}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull5}{SqFreeRegTriangSetXmpPageEmpty5}
+\pastebutton{SqFreeRegTriangSetXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  NewSparseMultivariatePolynomial(Integer,OrderedVariable
+  List [x,y,z,t])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty5}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty5}{SqFreeRegTriangSetXmpPagePatch5}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch6}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull6}{SqFreeRegTriangSetXmpPageEmpty6}
+\pastebutton{SqFreeRegTriangSetXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (6)  x
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty6}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty6}{SqFreeRegTriangSetXmpPagePatch6}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch7}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull7}{SqFreeRegTriangSetXmpPageEmpty7}
+\pastebutton{SqFreeRegTriangSetXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (7)  y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty7}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty7}{SqFreeRegTriangSetXmpPagePatch7}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch8}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull8}{SqFreeRegTriangSetXmpPageEmpty8}
+\pastebutton{SqFreeRegTriangSetXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (8)  z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty8}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty8}{SqFreeRegTriangSetXmpPagePatch8}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch9}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull9}{SqFreeRegTriangSetXmpPageEmpty9}
+\pastebutton{SqFreeRegTriangSetXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (9)  t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty9}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty9}{SqFreeRegTriangSetXmpPagePatch9}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch10}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull10}{SqFreeRegTriangSetXmpPageEmpty10}
+\pastebutton{SqFreeRegTriangSetXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
+\indentrel{3}\begin{verbatim}
+   (10)
+  SquareFreeRegularTriangularSet(Integer,IndexedExponents
+   OrderedVariableList [x,y,z,t],OrderedVariableList [x,y
+  ,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVa
+  riableList [x,y,z,t]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty10}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty10}{SqFreeRegTriangSetXmpPagePatch10}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch11}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull11}{SqFreeRegTriangSetXmpPageEmpty11}
+\pastebutton{SqFreeRegTriangSetXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+          31    6
+   (11)  x   - x  - x - y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty11}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty11}{SqFreeRegTriangSetXmpPagePatch11}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch12}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull12}{SqFreeRegTriangSetXmpPageEmpty12}
+\pastebutton{SqFreeRegTriangSetXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+          8
+   (12)  x  - z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty12}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty12}{SqFreeRegTriangSetXmpPagePatch12}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch13}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull13}{SqFreeRegTriangSetXmpPageEmpty13}
+\pastebutton{SqFreeRegTriangSetXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+          10
+   (13)  x   - t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty13}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty13}{SqFreeRegTriangSetXmpPagePatch13}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch14}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull14}{SqFreeRegTriangSetXmpPageEmpty14}
+\pastebutton{SqFreeRegTriangSetXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+           31    6          8      10
+   (14)  [x   - x  - x - y,x  - z,x   - t]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty14}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty14}{SqFreeRegTriangSetXmpPagePatch14}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch15}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull15}{SqFreeRegTriangSetXmpPageEmpty15}
+\pastebutton{SqFreeRegTriangSetXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$ST\free{lp }\free{ST }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [
+       5    4       2     3     8     5    3    2
+     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
+        4                2
+      (t  - t)x - t y - z }
+     ]
+Type: List SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty15}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty15}{SqFreeRegTriangSetXmpPagePatch15}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$ST\free{lp }\free{ST }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch16}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull16}{SqFreeRegTriangSetXmpPageEmpty16}
+\pastebutton{SqFreeRegTriangSetXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lp,false)$ST\free{lp }\free{ST }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (16)
+   [
+       5    4       2     3     8     5    3    2
+     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
+        4                2
+      (t  - t)x - t y - z }
+     ,
+      3      5            2    2
+    {t  - 1,z  - t,t y + z ,z x  - t}, {t,z,y,x}]
+Type: List SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty16}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty16}{SqFreeRegTriangSetXmpPagePatch16}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lp,false)$ST\free{lp }\free{ST }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch17}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull17}{SqFreeRegTriangSetXmpPageEmpty17}
+\pastebutton{SqFreeRegTriangSetXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\indentrel{3}\begin{verbatim}
+   (17)
+  RegularTriangularSet(Integer,IndexedExponents OrderedVa
+  riableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewS
+  parseMultivariatePolynomial(Integer,OrderedVariableList
+   [x,y,z,t]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty17}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty17}{SqFreeRegTriangSetXmpPagePatch17}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch18}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull18}{SqFreeRegTriangSetXmpPageEmpty18}
+\pastebutton{SqFreeRegTriangSetXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (18)
+   [
+       5    4       2     3     8     5    3    2
+     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
+        4                2
+      (t  - t)x - t y - z }
+     ,
+      3      5          2     3         2
+    {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t},
+    {t,z,y,x}]
+Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty18}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty18}{SqFreeRegTriangSetXmpPagePatch18}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch19}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull19}{SqFreeRegTriangSetXmpPageEmpty19}
+\pastebutton{SqFreeRegTriangSetXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{ts := lts.2\free{lts }\bound{ts }}
+\indentrel{3}\begin{verbatim}
+           3      5          2     3         2
+   (19)  {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t}
+Type: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty19}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty19}{SqFreeRegTriangSetXmpPagePatch19}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{ts := lts.2\free{lts }\bound{ts }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch20}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull20}{SqFreeRegTriangSetXmpPageEmpty20}
+\pastebutton{SqFreeRegTriangSetXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{pol := select(ts,'y)$T\free{ts }\free{y }\free{T }\bound{pol }}
+\indentrel{3}\begin{verbatim}
+              2     3
+   (20)  t z y  + 2z y + 1
+Type: Union(NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty20}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty20}{SqFreeRegTriangSetXmpPagePatch20}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{pol := select(ts,'y)$T\free{ts }\free{y }\free{T }\bound{pol }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch21}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull21}{SqFreeRegTriangSetXmpPageEmpty21}
+\pastebutton{SqFreeRegTriangSetXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{tower := collectUnder(ts,'y)$T\free{ts }\free{y }\free{T }\bound{tower }}
+\indentrel{3}\begin{verbatim}
+           3      5
+   (21)  {t  - 1,z  - t}
+Type: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty21}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty21}{SqFreeRegTriangSetXmpPagePatch21}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{tower := collectUnder(ts,'y)$T\free{ts }\free{y }\free{T }\bound{tower }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch22}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull22}{SqFreeRegTriangSetXmpPageEmpty22}
+\pastebutton{SqFreeRegTriangSetXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{pack := RegularTriangularSetGcdPackage(R,E,V,P,T)\free{R }\free{E }\free{V }\free{P }\free{T }\bound{pack }}
+\indentrel{3}\begin{verbatim}
+   (22)
+  RegularTriangularSetGcdPackage(Integer,IndexedExponents
+   OrderedVariableList [x,y,z,t],OrderedVariableList [x,y
+  ,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVa
+  riableList [x,y,z,t]),RegularTriangularSet(Integer,Inde
+  xedExponents OrderedVariableList [x,y,z,t],OrderedVaria
+  bleList [x,y,z,t],NewSparseMultivariatePolynomial(Integ
+  er,OrderedVariableList [x,y,z,t])))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty22}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty22}{SqFreeRegTriangSetXmpPagePatch22}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{pack := RegularTriangularSetGcdPackage(R,E,V,P,T)\free{R }\free{E }\free{V }\free{P }\free{T }\bound{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPagePatch23}
+\begin{paste}{SqFreeRegTriangSetXmpPageFull23}{SqFreeRegTriangSetXmpPageEmpty23}
+\pastebutton{SqFreeRegTriangSetXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{toseSquareFreePart(pol,tower)$pack\free{pol }\free{tower }\free{pack }}
+\indentrel{3}\begin{verbatim}
+                       2          3      5
+   (23)  [[val= t y + z ,tower= {t  - 1,z  - t}]]
+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])))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SqFreeRegTriangSetXmpPageEmpty23}
+\begin{paste}{SqFreeRegTriangSetXmpPageEmpty23}{SqFreeRegTriangSetXmpPagePatch23}
+\pastebutton{SqFreeRegTriangSetXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{toseSquareFreePart(pol,tower)$pack\free{pol }\free{tower }\free{pack }}
+\end{paste}\end{patch}
+
 @
 \section{stbl.ht}
 \pagehead{SparseTableXmpPage}{stbl.ht}{SparseTable}
@@ -19959,6 +55751,118 @@ For more information, see
 \autobuttons
 \end{page}
 
+\begin{patch}{SparseTableXmpPagePatch1}
+\begin{paste}{SparseTableXmpPageFull1}{SparseTableXmpPageEmpty1}
+\pastebutton{SparseTableXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{t: SparseTable(Integer, String, "Try again!") := table()\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (1)  table()
+           Type: SparseTable(Integer,String,Try again!)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty1}
+\begin{paste}{SparseTableXmpPageEmpty1}{SparseTableXmpPagePatch1}
+\pastebutton{SparseTableXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{t: SparseTable(Integer, String, "Try again!") := table()\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch2}
+\begin{paste}{SparseTableXmpPageFull2}{SparseTableXmpPageEmpty2}
+\pastebutton{SparseTableXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{t.3 := "Number three"\free{t }\bound{t1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  "Number three"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty2}
+\begin{paste}{SparseTableXmpPageEmpty2}{SparseTableXmpPagePatch2}
+\pastebutton{SparseTableXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{t.3 := "Number three"\free{t }\bound{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch3}
+\begin{paste}{SparseTableXmpPageFull3}{SparseTableXmpPageEmpty3}
+\pastebutton{SparseTableXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{t.4 := "Number four"\free{t }\bound{t2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  "Number four"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty3}
+\begin{paste}{SparseTableXmpPageEmpty3}{SparseTableXmpPagePatch3}
+\pastebutton{SparseTableXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{t.4 := "Number four"\free{t }\bound{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch4}
+\begin{paste}{SparseTableXmpPageFull4}{SparseTableXmpPageEmpty4}
+\pastebutton{SparseTableXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{t.3\free{t1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  "Number three"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty4}
+\begin{paste}{SparseTableXmpPageEmpty4}{SparseTableXmpPagePatch4}
+\pastebutton{SparseTableXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{t.3\free{t1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch5}
+\begin{paste}{SparseTableXmpPageFull5}{SparseTableXmpPageEmpty5}
+\pastebutton{SparseTableXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{t.2\free{t }}
+\indentrel{3}\begin{verbatim}
+   (5)  "Try again!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty5}
+\begin{paste}{SparseTableXmpPageEmpty5}{SparseTableXmpPagePatch5}
+\pastebutton{SparseTableXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{t.2\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch6}
+\begin{paste}{SparseTableXmpPageFull6}{SparseTableXmpPageEmpty6}
+\pastebutton{SparseTableXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{keys t\free{t1 t2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [4,3]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty6}
+\begin{paste}{SparseTableXmpPageEmpty6}{SparseTableXmpPagePatch6}
+\pastebutton{SparseTableXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{keys t\free{t1 t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPagePatch7}
+\begin{paste}{SparseTableXmpPageFull7}{SparseTableXmpPageEmpty7}
+\pastebutton{SparseTableXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{entries t\free{t1 t2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  ["Number four","Number three"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SparseTableXmpPageEmpty7}
+\begin{paste}{SparseTableXmpPageEmpty7}{SparseTableXmpPagePatch7}
+\pastebutton{SparseTableXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{entries t\free{t1 t2 }}
+\end{paste}\end{patch}
+
 @
 \section{stream.ht}
 \pagehead{StreamXmpPage}{stream.ht}{Stream}
@@ -20056,6 +55960,196 @@ in Section 8.9\ignore{ugProblemSeries},
 \autobuttons
 \end{page}
 
+\begin{patch}{StreamXmpPagePatch1}
+\begin{paste}{StreamXmpPageFull1}{StreamXmpPageEmpty1}
+\pastebutton{StreamXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ints := [i for i in 0..]\bound{ints }}
+\indentrel{3}\begin{verbatim}
+   (1)  [0,1,2,3,4,5,6,7,8,9,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty1}
+\begin{paste}{StreamXmpPageEmpty1}{StreamXmpPagePatch1}
+\pastebutton{StreamXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ints := [i for i in 0..]\bound{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch2}
+\begin{paste}{StreamXmpPageFull2}{StreamXmpPageEmpty2}
+\pastebutton{StreamXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f : List INT -> List INT\bound{fdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty2}
+\begin{paste}{StreamXmpPageEmpty2}{StreamXmpPagePatch2}
+\pastebutton{StreamXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f : List INT -> List INT\bound{fdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch3}
+\begin{paste}{StreamXmpPageFull3}{StreamXmpPageEmpty3}
+\pastebutton{StreamXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f x == [x.1 + x.2, x.1]\bound{f }\free{fdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty3}
+\begin{paste}{StreamXmpPageEmpty3}{StreamXmpPagePatch3}
+\pastebutton{StreamXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f x == [x.1 + x.2, x.1]\bound{f }\free{fdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch4}
+\begin{paste}{StreamXmpPageFull4}{StreamXmpPageEmpty4}
+\pastebutton{StreamXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{fibs := [i.2 for i in [generate(f,[1,1])]]\bound{fibs }\free{f }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,1,2,3,5,8,13,21,34,55,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty4}
+\begin{paste}{StreamXmpPageEmpty4}{StreamXmpPagePatch4}
+\pastebutton{StreamXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{fibs := [i.2 for i in [generate(f,[1,1])]]\bound{fibs }\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch5}
+\begin{paste}{StreamXmpPageFull5}{StreamXmpPageEmpty5}
+\pastebutton{StreamXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[i for i in ints | odd? i]\free{ints }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1,3,5,7,9,11,13,15,17,19,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty5}
+\begin{paste}{StreamXmpPageEmpty5}{StreamXmpPagePatch5}
+\pastebutton{StreamXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[i for i in ints | odd? i]\free{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch6}
+\begin{paste}{StreamXmpPageFull6}{StreamXmpPageEmpty6}
+\pastebutton{StreamXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{odds := [2*i+1 for i in ints]\bound{odds }\free{ints }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,3,5,7,9,11,13,15,17,19,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty6}
+\begin{paste}{StreamXmpPageEmpty6}{StreamXmpPagePatch6}
+\pastebutton{StreamXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{odds := [2*i+1 for i in ints]\bound{odds }\free{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch7}
+\begin{paste}{StreamXmpPageFull7}{StreamXmpPageEmpty7}
+\pastebutton{StreamXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{scan(0,+,odds)\free{odds }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1,4,9,16,25,36,49,64,81,100,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty7}
+\begin{paste}{StreamXmpPageEmpty7}{StreamXmpPagePatch7}
+\pastebutton{StreamXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{scan(0,+,odds)\free{odds }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch8}
+\begin{paste}{StreamXmpPageFull8}{StreamXmpPageEmpty8}
+\pastebutton{StreamXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{[i*j for i in ints for j in odds]\free{ints }\free{odds }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0,3,10,21,36,55,78,105,136,171,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty8}
+\begin{paste}{StreamXmpPageEmpty8}{StreamXmpPagePatch8}
+\pastebutton{StreamXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{[i*j for i in ints for j in odds]\free{ints }\free{odds }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch9}
+\begin{paste}{StreamXmpPageFull9}{StreamXmpPageEmpty9}
+\pastebutton{StreamXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{map(*,ints,odds)\free{ints odds }}
+\indentrel{3}\begin{verbatim}
+   (9)  [0,3,10,21,36,55,78,105,136,171,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty9}
+\begin{paste}{StreamXmpPageEmpty9}{StreamXmpPagePatch9}
+\pastebutton{StreamXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{map(*,ints,odds)\free{ints odds }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch10}
+\begin{paste}{StreamXmpPageFull10}{StreamXmpPageEmpty10}
+\pastebutton{StreamXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{first ints\free{ints }}
+\indentrel{3}\begin{verbatim}
+   (10)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty10}
+\begin{paste}{StreamXmpPageEmpty10}{StreamXmpPagePatch10}
+\pastebutton{StreamXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{first ints\free{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch11}
+\begin{paste}{StreamXmpPageFull11}{StreamXmpPageEmpty11}
+\pastebutton{StreamXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{rest ints\free{ints }}
+\indentrel{3}\begin{verbatim}
+   (11)  [1,2,3,4,5,6,7,8,9,10,...]
+                        Type: Stream NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty11}
+\begin{paste}{StreamXmpPageEmpty11}{StreamXmpPagePatch11}
+\pastebutton{StreamXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{rest ints\free{ints }}
+\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPagePatch12}
+\begin{paste}{StreamXmpPageFull12}{StreamXmpPageEmpty12}
+\pastebutton{StreamXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{fibs 20\free{fibs }}
+\indentrel{3}\begin{verbatim}
+   (12)  6765
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StreamXmpPageEmpty12}
+\begin{paste}{StreamXmpPageEmpty12}{StreamXmpPagePatch12}
+\pastebutton{StreamXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{fibs 20\free{fibs }}
+\end{paste}\end{patch}
+
 @
 \section{string.ht}
 \pagehead{StringXmpPage}{string.ht}{String}
@@ -20276,6 +56370,565 @@ a different first argument is used.
 \autobuttons
 \end{page}
 
+\begin{patch}{StringXmpPagePatch1}
+\begin{paste}{StringXmpPageFull1}{StringXmpPageEmpty1}
+\pastebutton{StringXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{hello := "Hello, I'm AXIOM!"\bound{hello }}
+\indentrel{3}\begin{verbatim}
+   (1)  "Hello, I'm AXIOM!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty1}
+\begin{paste}{StringXmpPageEmpty1}{StringXmpPagePatch1}
+\pastebutton{StringXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{hello := "Hello, I'm AXIOM!"\bound{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch2}
+\begin{paste}{StringXmpPageFull2}{StringXmpPageEmpty2}
+\pastebutton{StringXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{said := "Jane said, _"Look!_""\bound{said }}
+\indentrel{3}\begin{verbatim}
+   (2)  "Jane said, "Look!""
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty2}
+\begin{paste}{StringXmpPageEmpty2}{StringXmpPagePatch2}
+\pastebutton{StringXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{said := "Jane said, _"Look!_""\bound{said }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch3}
+\begin{paste}{StringXmpPageFull3}{StringXmpPageEmpty3}
+\pastebutton{StringXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{saw := "She saw exactly one underscore: __."\bound{saw }}
+\indentrel{3}\begin{verbatim}
+   (3)  "She saw exactly one underscore: _."
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty3}
+\begin{paste}{StringXmpPageEmpty3}{StringXmpPagePatch3}
+\pastebutton{StringXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{saw := "She saw exactly one underscore: __."\bound{saw }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch4}
+\begin{paste}{StringXmpPageFull4}{StringXmpPageEmpty4}
+\pastebutton{StringXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{gasp: String := new(32, char "x")\bound{gasp }}
+\indentrel{3}\begin{verbatim}
+   (4)  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty4}
+\begin{paste}{StringXmpPageEmpty4}{StringXmpPagePatch4}
+\pastebutton{StringXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{gasp: String := new(32, char "x")\bound{gasp }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch5}
+\begin{paste}{StringXmpPageFull5}{StringXmpPageEmpty5}
+\pastebutton{StringXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{\#gasp\free{gasp }}
+\indentrel{3}\begin{verbatim}
+   (5)  32
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty5}
+\begin{paste}{StringXmpPageEmpty5}{StringXmpPagePatch5}
+\pastebutton{StringXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{\#gasp\free{gasp }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch6}
+\begin{paste}{StringXmpPageFull6}{StringXmpPageEmpty6}
+\pastebutton{StringXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{hello.2\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (6)  e
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty6}
+\begin{paste}{StringXmpPageEmpty6}{StringXmpPagePatch6}
+\pastebutton{StringXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{hello.2\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch7}
+\begin{paste}{StringXmpPageFull7}{StringXmpPageEmpty7}
+\pastebutton{StringXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{hello 2\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (7)  e
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty7}
+\begin{paste}{StringXmpPageEmpty7}{StringXmpPagePatch7}
+\pastebutton{StringXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{hello 2\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch8}
+\begin{paste}{StringXmpPageFull8}{StringXmpPageEmpty8}
+\pastebutton{StringXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{hello(2)\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (8)  e
+                                        Type: Character
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty8}
+\begin{paste}{StringXmpPageEmpty8}{StringXmpPagePatch8}
+\pastebutton{StringXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{hello(2)\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch9}
+\begin{paste}{StringXmpPageFull9}{StringXmpPageEmpty9}
+\pastebutton{StringXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{hullo := copy hello\free{hello }\bound{hullo0 }}
+\indentrel{3}\begin{verbatim}
+   (9)  "Hello, I'm AXIOM!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty9}
+\begin{paste}{StringXmpPageEmpty9}{StringXmpPagePatch9}
+\pastebutton{StringXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{hullo := copy hello\free{hello }\bound{hullo0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch10}
+\begin{paste}{StringXmpPageFull10}{StringXmpPageEmpty10}
+\pastebutton{StringXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{hullo.2 := char "u"; [hello, hullo]\free{hullo0 hello }\bound{hullo }}
+\indentrel{3}\begin{verbatim}
+   (10)  ["Hello, I'm AXIOM!","Hullo, I'm AXIOM!"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty10}
+\begin{paste}{StringXmpPageEmpty10}{StringXmpPagePatch10}
+\pastebutton{StringXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{hullo.2 := char "u"; [hello, hullo]\free{hullo0 hello }\bound{hullo }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch11}
+\begin{paste}{StringXmpPageFull11}{StringXmpPageEmpty11}
+\pastebutton{StringXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{saidsaw := concat ["alpha","---","omega"]\bound{saidsaw }}
+\indentrel{3}\begin{verbatim}
+   (11)  "alpha---omega"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty11}
+\begin{paste}{StringXmpPageEmpty11}{StringXmpPagePatch11}
+\pastebutton{StringXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{saidsaw := concat ["alpha","---","omega"]\bound{saidsaw }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch12}
+\begin{paste}{StringXmpPageFull12}{StringXmpPageEmpty12}
+\pastebutton{StringXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{concat("hello ","goodbye")}
+\indentrel{3}\begin{verbatim}
+   (12)  "hello goodbye"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty12}
+\begin{paste}{StringXmpPageEmpty12}{StringXmpPagePatch12}
+\pastebutton{StringXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{concat("hello ","goodbye")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch13}
+\begin{paste}{StringXmpPageFull13}{StringXmpPageEmpty13}
+\pastebutton{StringXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{"This " "is " "several " "strings " "concatenated."}
+\indentrel{3}\begin{verbatim}
+   (13)  "This is several strings concatenated."
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty13}
+\begin{paste}{StringXmpPageEmpty13}{StringXmpPagePatch13}
+\pastebutton{StringXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{"This " "is " "several " "strings " "concatenated."}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch14}
+\begin{paste}{StringXmpPageFull14}{StringXmpPageEmpty14}
+\pastebutton{StringXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{hello(1..5)\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (14)  "Hello"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty14}
+\begin{paste}{StringXmpPageEmpty14}{StringXmpPagePatch14}
+\pastebutton{StringXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{hello(1..5)\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch15}
+\begin{paste}{StringXmpPageFull15}{StringXmpPageEmpty15}
+\pastebutton{StringXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{hello(8..)\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (15)  "I'm AXIOM!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty15}
+\begin{paste}{StringXmpPageEmpty15}{StringXmpPagePatch15}
+\pastebutton{StringXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{hello(8..)\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch16}
+\begin{paste}{StringXmpPageFull16}{StringXmpPageEmpty16}
+\pastebutton{StringXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{split(hello, char " ")\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (16)  ["Hello,","I'm","AXIOM!"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty16}
+\begin{paste}{StringXmpPageEmpty16}{StringXmpPagePatch16}
+\pastebutton{StringXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{split(hello, char " ")\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch17}
+\begin{paste}{StringXmpPageFull17}{StringXmpPageEmpty17}
+\pastebutton{StringXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{other := complement alphanumeric();\bound{other }}
+\indentrel{3}\begin{verbatim}
+                                   Type: CharacterClass
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty17}
+\begin{paste}{StringXmpPageEmpty17}{StringXmpPagePatch17}
+\pastebutton{StringXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{other := complement alphanumeric();\bound{other }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch18}
+\begin{paste}{StringXmpPageFull18}{StringXmpPageEmpty18}
+\pastebutton{StringXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{split(saidsaw, other)\free{saidsaw other }}
+\indentrel{3}\begin{verbatim}
+   (18)  ["alpha","omega"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty18}
+\begin{paste}{StringXmpPageEmpty18}{StringXmpPagePatch18}
+\pastebutton{StringXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{split(saidsaw, other)\free{saidsaw other }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch19}
+\begin{paste}{StringXmpPageFull19}{StringXmpPageEmpty19}
+\pastebutton{StringXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", char "\#")}
+\indentrel{3}\begin{verbatim}
+   (19)  " ++ relax ++ "
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty19}
+\begin{paste}{StringXmpPageEmpty19}{StringXmpPagePatch19}
+\pastebutton{StringXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", char "\#")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch20}
+\begin{paste}{StringXmpPageFull20}{StringXmpPageEmpty20}
+\pastebutton{StringXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", other)\free{other }}
+\indentrel{3}\begin{verbatim}
+   (20)  "relax"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty20}
+\begin{paste}{StringXmpPageEmpty20}{StringXmpPagePatch20}
+\pastebutton{StringXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", other)\free{other }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch21}
+\begin{paste}{StringXmpPageFull21}{StringXmpPageEmpty21}
+\pastebutton{StringXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{leftTrim ("\#\# ++ relax ++ \#\#", other)\free{other }}
+\indentrel{3}\begin{verbatim}
+   (21)  "relax ++ ##"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty21}
+\begin{paste}{StringXmpPageEmpty21}{StringXmpPagePatch21}
+\pastebutton{StringXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{leftTrim ("\#\# ++ relax ++ \#\#", other)\free{other }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch22}
+\begin{paste}{StringXmpPageFull22}{StringXmpPageEmpty22}
+\pastebutton{StringXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{rightTrim("\#\# ++ relax ++ \#\#", other)\free{other }}
+\indentrel{3}\begin{verbatim}
+   (22)  "## ++ relax"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty22}
+\begin{paste}{StringXmpPageEmpty22}{StringXmpPagePatch22}
+\pastebutton{StringXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{rightTrim("\#\# ++ relax ++ \#\#", other)\free{other }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch23}
+\begin{paste}{StringXmpPageFull23}{StringXmpPageEmpty23}
+\pastebutton{StringXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{upperCase hello\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (23)  "HELLO, I'M AXIOM!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty23}
+\begin{paste}{StringXmpPageEmpty23}{StringXmpPagePatch23}
+\pastebutton{StringXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{upperCase hello\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch24}
+\begin{paste}{StringXmpPageFull24}{StringXmpPageEmpty24}
+\pastebutton{StringXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{lowerCase hello\free{hello }}
+\indentrel{3}\begin{verbatim}
+   (24)  "hello, i'm axiom!"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty24}
+\begin{paste}{StringXmpPageEmpty24}{StringXmpPagePatch24}
+\pastebutton{StringXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{lowerCase hello\free{hello }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch25}
+\begin{paste}{StringXmpPageFull25}{StringXmpPageEmpty25}
+\pastebutton{StringXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{prefix?("He", "Hello")}
+\indentrel{3}\begin{verbatim}
+   (25)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty25}
+\begin{paste}{StringXmpPageEmpty25}{StringXmpPagePatch25}
+\pastebutton{StringXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{prefix?("He", "Hello")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch26}
+\begin{paste}{StringXmpPageFull26}{StringXmpPageEmpty26}
+\pastebutton{StringXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{prefix?("Her", "Hello")}
+\indentrel{3}\begin{verbatim}
+   (26)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty26}
+\begin{paste}{StringXmpPageEmpty26}{StringXmpPagePatch26}
+\pastebutton{StringXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{prefix?("Her", "Hello")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch27}
+\begin{paste}{StringXmpPageFull27}{StringXmpPageEmpty27}
+\pastebutton{StringXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{suffix?("", "Hello")}
+\indentrel{3}\begin{verbatim}
+   (27)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty27}
+\begin{paste}{StringXmpPageEmpty27}{StringXmpPagePatch27}
+\pastebutton{StringXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{suffix?("", "Hello")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch28}
+\begin{paste}{StringXmpPageFull28}{StringXmpPageEmpty28}
+\pastebutton{StringXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{suffix?("LO", "Hello")}
+\indentrel{3}\begin{verbatim}
+   (28)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty28}
+\begin{paste}{StringXmpPageEmpty28}{StringXmpPagePatch28}
+\pastebutton{StringXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{suffix?("LO", "Hello")}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch29}
+\begin{paste}{StringXmpPageFull29}{StringXmpPageEmpty29}
+\pastebutton{StringXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{substring?("ll", "Hello", 3)}
+\indentrel{3}\begin{verbatim}
+   (29)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty29}
+\begin{paste}{StringXmpPageEmpty29}{StringXmpPagePatch29}
+\pastebutton{StringXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{substring?("ll", "Hello", 3)}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch30}
+\begin{paste}{StringXmpPageFull30}{StringXmpPageEmpty30}
+\pastebutton{StringXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{substring?("ll", "Hello", 4)}
+\indentrel{3}\begin{verbatim}
+   (30)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty30}
+\begin{paste}{StringXmpPageEmpty30}{StringXmpPagePatch30}
+\pastebutton{StringXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{substring?("ll", "Hello", 4)}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch31}
+\begin{paste}{StringXmpPageFull31}{StringXmpPageEmpty31}
+\pastebutton{StringXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{n := position("nd", "underground", 1)\bound{n }}
+\indentrel{3}\begin{verbatim}
+   (31)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty31}
+\begin{paste}{StringXmpPageEmpty31}{StringXmpPagePatch31}
+\pastebutton{StringXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{n := position("nd", "underground", 1)\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch32}
+\begin{paste}{StringXmpPageFull32}{StringXmpPageEmpty32}
+\pastebutton{StringXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n }\bound{n1 }}
+\indentrel{3}\begin{verbatim}
+   (32)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty32}
+\begin{paste}{StringXmpPageEmpty32}{StringXmpPagePatch32}
+\pastebutton{StringXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n }\bound{n1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch33}
+\begin{paste}{StringXmpPageFull33}{StringXmpPageEmpty33}
+\pastebutton{StringXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n1 }\bound{n2 }}
+\indentrel{3}\begin{verbatim}
+   (33)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty33}
+\begin{paste}{StringXmpPageEmpty33}{StringXmpPagePatch33}
+\pastebutton{StringXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n1 }\bound{n2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch34}
+\begin{paste}{StringXmpPageFull34}{StringXmpPageEmpty34}
+\pastebutton{StringXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{position(char "d", "underground", 1)}
+\indentrel{3}\begin{verbatim}
+   (34)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty34}
+\begin{paste}{StringXmpPageEmpty34}{StringXmpPagePatch34}
+\pastebutton{StringXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{position(char "d", "underground", 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPagePatch35}
+\begin{paste}{StringXmpPageFull35}{StringXmpPageEmpty35}
+\pastebutton{StringXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{position(hexDigit(), "underground", 1)}
+\indentrel{3}\begin{verbatim}
+   (35)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringXmpPageEmpty35}
+\begin{paste}{StringXmpPageEmpty35}{StringXmpPagePatch35}
+\pastebutton{StringXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{position(hexDigit(), "underground", 1)}
+\end{paste}\end{patch}
+
 @
 \section{strtbl.ht}
 \pagehead{StringTableXmpPage}{strtbl.ht}{StringTable}
@@ -20314,7 +56967,63 @@ for s in split("My name is Ian Watt.",char " ")
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{StringTableXmpPagePatch1}
+\begin{paste}{StringTableXmpPageFull1}{StringTableXmpPageEmpty1}
+\pastebutton{StringTableXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{t: StringTable(Integer) := table()\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (1)  table()
+                              Type: StringTable Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringTableXmpPageEmpty1}
+\begin{paste}{StringTableXmpPageEmpty1}{StringTableXmpPagePatch1}
+\pastebutton{StringTableXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{t: StringTable(Integer) := table()\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringTableXmpPagePatch2}
+\begin{paste}{StringTableXmpPageFull2}{StringTableXmpPageEmpty2}
+\pastebutton{StringTableXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{for s in split("My name is Ian Watt.",char " ")
+  repeat
+    t.s := \#s
+\free{t }\bound{h }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringTableXmpPageEmpty2}
+\begin{paste}{StringTableXmpPageEmpty2}{StringTableXmpPagePatch2}
+\pastebutton{StringTableXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{for s in split("My name is Ian Watt.",char " ")
+  repeat
+    t.s := \#s
+\free{t }\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{StringTableXmpPagePatch3}
+\begin{paste}{StringTableXmpPageFull3}{StringTableXmpPageEmpty3}
+\pastebutton{StringTableXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for key in keys t repeat output [key, t.key]\free{t h }}
+\indentrel{3}\begin{verbatim}
+   ["Ian",3]
+   ["My",2]
+   ["Watt.",5]
+   ["name",4]
+   ["is",2]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{StringTableXmpPageEmpty3}
+\begin{paste}{StringTableXmpPageEmpty3}{StringTableXmpPagePatch3}
+\pastebutton{StringTableXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for key in keys t repeat output [key, t.key]\free{t h }}
+\end{paste}\end{patch}
 
 @
 \section{symbol.ht}
@@ -20464,6 +57173,404 @@ If trailing lists of scripts are omitted, they are assumed to be empty.
 \autobuttons
 \end{page}
 
+\begin{patch}{SymbolXmpPagePatch1}
+\begin{paste}{SymbolXmpPageFull1}{SymbolXmpPageEmpty1}
+\pastebutton{SymbolXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{X: Symbol := 'x\bound{X }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty1}
+\begin{paste}{SymbolXmpPageEmpty1}{SymbolXmpPagePatch1}
+\pastebutton{SymbolXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{X: Symbol := 'x\bound{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch2}
+\begin{paste}{SymbolXmpPageFull2}{SymbolXmpPageEmpty2}
+\pastebutton{SymbolXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{XX: Symbol := x}
+\indentrel{3}\begin{verbatim}
+   (2)  x
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty2}
+\begin{paste}{SymbolXmpPageEmpty2}{SymbolXmpPagePatch2}
+\pastebutton{SymbolXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{XX: Symbol := x}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch3}
+\begin{paste}{SymbolXmpPageFull3}{SymbolXmpPageEmpty3}
+\pastebutton{SymbolXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{A := 'a}
+\indentrel{3}\begin{verbatim}
+   (3)  a
+                                       Type: Variable a
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty3}
+\begin{paste}{SymbolXmpPageEmpty3}{SymbolXmpPagePatch3}
+\pastebutton{SymbolXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{A := 'a}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch4}
+\begin{paste}{SymbolXmpPageFull4}{SymbolXmpPageEmpty4}
+\pastebutton{SymbolXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{B := b}
+\indentrel{3}\begin{verbatim}
+   (4)  b
+                                       Type: Variable b
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty4}
+\begin{paste}{SymbolXmpPageEmpty4}{SymbolXmpPagePatch4}
+\pastebutton{SymbolXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{B := b}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch5}
+\begin{paste}{SymbolXmpPageFull5}{SymbolXmpPageEmpty5}
+\pastebutton{SymbolXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{x**2 + 1}
+\indentrel{3}\begin{verbatim}
+         2
+   (5)  x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty5}
+\begin{paste}{SymbolXmpPageEmpty5}{SymbolXmpPagePatch5}
+\pastebutton{SymbolXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{x**2 + 1}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch6}
+\begin{paste}{SymbolXmpPageFull6}{SymbolXmpPageEmpty6}
+\pastebutton{SymbolXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{"Hello"::Symbol}
+\indentrel{3}\begin{verbatim}
+   (6)  Hello
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty6}
+\begin{paste}{SymbolXmpPageEmpty6}{SymbolXmpPagePatch6}
+\pastebutton{SymbolXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{"Hello"::Symbol}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch7}
+\begin{paste}{SymbolXmpPageFull7}{SymbolXmpPageEmpty7}
+\pastebutton{SymbolXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{new()$Symbol}
+\indentrel{3}\begin{verbatim}
+   (7)  %A
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty7}
+\begin{paste}{SymbolXmpPageEmpty7}{SymbolXmpPagePatch7}
+\pastebutton{SymbolXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{new()$Symbol}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch8}
+\begin{paste}{SymbolXmpPageFull8}{SymbolXmpPageEmpty8}
+\pastebutton{SymbolXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{new()$Symbol}
+\indentrel{3}\begin{verbatim}
+   (8)  %B
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty8}
+\begin{paste}{SymbolXmpPageEmpty8}{SymbolXmpPagePatch8}
+\pastebutton{SymbolXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{new()$Symbol}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch9}
+\begin{paste}{SymbolXmpPageFull9}{SymbolXmpPageEmpty9}
+\pastebutton{SymbolXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{new("xyz")$Symbol}
+\indentrel{3}\begin{verbatim}
+   (9)  %xyz0
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty9}
+\begin{paste}{SymbolXmpPageEmpty9}{SymbolXmpPagePatch9}
+\pastebutton{SymbolXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{new("xyz")$Symbol}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch10}
+\begin{paste}{SymbolXmpPageFull10}{SymbolXmpPageEmpty10}
+\pastebutton{SymbolXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{X[i,j]\free{X }}
+\indentrel{3}\begin{verbatim}
+   (10)  x
+          i,j
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty10}
+\begin{paste}{SymbolXmpPageEmpty10}{SymbolXmpPagePatch10}
+\pastebutton{SymbolXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{X[i,j]\free{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch11}
+\begin{paste}{SymbolXmpPageFull11}{SymbolXmpPageEmpty11}
+\pastebutton{SymbolXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{U := subscript(u, [1,2,1,2])\bound{U }}
+\indentrel{3}\begin{verbatim}
+   (11)  u
+          1,2,1,2
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty11}
+\begin{paste}{SymbolXmpPageEmpty11}{SymbolXmpPagePatch11}
+\pastebutton{SymbolXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{U := subscript(u, [1,2,1,2])\bound{U }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch12}
+\begin{paste}{SymbolXmpPageFull12}{SymbolXmpPageEmpty12}
+\pastebutton{SymbolXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{V := superscript(v, [n])\bound{V }}
+\indentrel{3}\begin{verbatim}
+          n
+   (12)  v
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty12}
+\begin{paste}{SymbolXmpPageEmpty12}{SymbolXmpPagePatch12}
+\pastebutton{SymbolXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{V := superscript(v, [n])\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch13}
+\begin{paste}{SymbolXmpPageFull13}{SymbolXmpPageEmpty13}
+\pastebutton{SymbolXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{P := argscript(p, [t])\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (13)  p(t)
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty13}
+\begin{paste}{SymbolXmpPageEmpty13}{SymbolXmpPagePatch13}
+\pastebutton{SymbolXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{P := argscript(p, [t])\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch14}
+\begin{paste}{SymbolXmpPageFull14}{SymbolXmpPageEmpty14}
+\pastebutton{SymbolXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{scripted? U\free{U }}
+\indentrel{3}\begin{verbatim}
+   (14)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty14}
+\begin{paste}{SymbolXmpPageEmpty14}{SymbolXmpPagePatch14}
+\pastebutton{SymbolXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{scripted? U\free{U }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch15}
+\begin{paste}{SymbolXmpPageFull15}{SymbolXmpPageEmpty15}
+\pastebutton{SymbolXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{scripted? X\free{X }}
+\indentrel{3}\begin{verbatim}
+   (15)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty15}
+\begin{paste}{SymbolXmpPageEmpty15}{SymbolXmpPagePatch15}
+\pastebutton{SymbolXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{scripted? X\free{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch16}
+\begin{paste}{SymbolXmpPageFull16}{SymbolXmpPageEmpty16}
+\pastebutton{SymbolXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{string X\free{X }}
+\indentrel{3}\begin{verbatim}
+   (16)  "x"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty16}
+\begin{paste}{SymbolXmpPageEmpty16}{SymbolXmpPagePatch16}
+\pastebutton{SymbolXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{string X\free{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch17}
+\begin{paste}{SymbolXmpPageFull17}{SymbolXmpPageEmpty17}
+\pastebutton{SymbolXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{name U\free{U }}
+\indentrel{3}\begin{verbatim}
+   (17)  u
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty17}
+\begin{paste}{SymbolXmpPageEmpty17}{SymbolXmpPagePatch17}
+\pastebutton{SymbolXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{name U\free{U }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch18}
+\begin{paste}{SymbolXmpPageFull18}{SymbolXmpPageEmpty18}
+\pastebutton{SymbolXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{scripts U\free{U }}
+\indentrel{3}\begin{verbatim}
+   (18)
+   [sub= [1,2,1,2],sup= [],presup= [],presub= [],args= []]
+Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty18}
+\begin{paste}{SymbolXmpPageEmpty18}{SymbolXmpPagePatch18}
+\pastebutton{SymbolXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{scripts U\free{U }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch19}
+\begin{paste}{SymbolXmpPageFull19}{SymbolXmpPageEmpty19}
+\pastebutton{SymbolXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{name X\free{X }}
+\indentrel{3}\begin{verbatim}
+   (19)  x
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty19}
+\begin{paste}{SymbolXmpPageEmpty19}{SymbolXmpPagePatch19}
+\pastebutton{SymbolXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{name X\free{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch20}
+\begin{paste}{SymbolXmpPageFull20}{SymbolXmpPageEmpty20}
+\pastebutton{SymbolXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{scripts X\free{X }}
+\indentrel{3}\begin{verbatim}
+   (20)
+   [sub= [],sup= [],presup= [],presub= [],args= []]
+Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty20}
+\begin{paste}{SymbolXmpPageEmpty20}{SymbolXmpPagePatch20}
+\pastebutton{SymbolXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{scripts X\free{X }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch21}
+\begin{paste}{SymbolXmpPageFull21}{SymbolXmpPageEmpty21}
+\pastebutton{SymbolXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]])\bound{M }}
+\indentrel{3}\begin{verbatim}
+         0,1       k,l
+   (21)     Mammoth   (u,v,w)
+           2       i,j
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty21}
+\begin{paste}{SymbolXmpPageEmpty21}{SymbolXmpPagePatch21}
+\pastebutton{SymbolXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]])\bound{M }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch22}
+\begin{paste}{SymbolXmpPageFull22}{SymbolXmpPageEmpty22}
+\pastebutton{SymbolXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{scripts M\free{M }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [sub= [i,j], sup= [k,l], presup= [0,1], presub= [2],
+    args= [u,v,w]]
+Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty22}
+\begin{paste}{SymbolXmpPageEmpty22}{SymbolXmpPagePatch22}
+\pastebutton{SymbolXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{scripts M\free{M }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch23}
+\begin{paste}{SymbolXmpPageFull23}{SymbolXmpPageEmpty23}
+\pastebutton{SymbolXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{N := script(Nut, [[i,j],[k,l],[0,1]])\bound{N }}
+\indentrel{3}\begin{verbatim}
+         0,1   k,l
+   (23)     Nut
+               i,j
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty23}
+\begin{paste}{SymbolXmpPageEmpty23}{SymbolXmpPagePatch23}
+\pastebutton{SymbolXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{N := script(Nut, [[i,j],[k,l],[0,1]])\bound{N }}
+\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPagePatch24}
+\begin{paste}{SymbolXmpPageFull24}{SymbolXmpPageEmpty24}
+\pastebutton{SymbolXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{scripts N\free{N }}
+\indentrel{3}\begin{verbatim}
+   (24)
+   [sub= [i,j], sup= [k,l], presup= [0,1], presub= [],
+    args= []]
+Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{SymbolXmpPageEmpty24}
+\begin{paste}{SymbolXmpPageEmpty24}{SymbolXmpPagePatch24}
+\pastebutton{SymbolXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{scripts N\free{N }}
+\end{paste}\end{patch}
+
 @
 \section{table.ht}
 \pagehead{TableXmpPage}{table.ht}{Table}
@@ -20631,6 +57738,295 @@ for more information.
 \autobuttons
 \end{page}
 
+\begin{patch}{TableXmpPagePatch1}
+\begin{paste}{TableXmpPageFull1}{TableXmpPageEmpty1}
+\pastebutton{TableXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{t: Table(Polynomial Integer, String) := table()\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (1)  table()
+                 Type: Table(Polynomial Integer,String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty1}
+\begin{paste}{TableXmpPageEmpty1}{TableXmpPagePatch1}
+\pastebutton{TableXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{t: Table(Polynomial Integer, String) := table()\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch2}
+\begin{paste}{TableXmpPageFull2}{TableXmpPageEmpty2}
+\pastebutton{TableXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{setelt(t, x**2 - 1, "Easy to factor")\bound{p1 }\free{t }}
+\indentrel{3}\begin{verbatim}
+   (2)  "Easy to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty2}
+\begin{paste}{TableXmpPageEmpty2}{TableXmpPagePatch2}
+\pastebutton{TableXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{setelt(t, x**2 - 1, "Easy to factor")\bound{p1 }\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch3}
+\begin{paste}{TableXmpPageFull3}{TableXmpPageEmpty3}
+\pastebutton{TableXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{t(x**3 + 1) := "Harder to factor"\bound{p2 }\free{p1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  "Harder to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty3}
+\begin{paste}{TableXmpPageEmpty3}{TableXmpPagePatch3}
+\pastebutton{TableXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{t(x**3 + 1) := "Harder to factor"\bound{p2 }\free{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch4}
+\begin{paste}{TableXmpPageFull4}{TableXmpPageEmpty4}
+\pastebutton{TableXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{t(x) := "The easiest to factor"\bound{p3 }\free{p2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  "The easiest to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty4}
+\begin{paste}{TableXmpPageEmpty4}{TableXmpPagePatch4}
+\pastebutton{TableXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{t(x) := "The easiest to factor"\bound{p3 }\free{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch5}
+\begin{paste}{TableXmpPageFull5}{TableXmpPageEmpty5}
+\pastebutton{TableXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{elt(t, x)\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (5)  "The easiest to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty5}
+\begin{paste}{TableXmpPageEmpty5}{TableXmpPagePatch5}
+\pastebutton{TableXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{elt(t, x)\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch6}
+\begin{paste}{TableXmpPageFull6}{TableXmpPageEmpty6}
+\pastebutton{TableXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{t.x\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (6)  "The easiest to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty6}
+\begin{paste}{TableXmpPageEmpty6}{TableXmpPagePatch6}
+\pastebutton{TableXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{t.x\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch7}
+\begin{paste}{TableXmpPageFull7}{TableXmpPageEmpty7}
+\pastebutton{TableXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{t x\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (7)  "The easiest to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty7}
+\begin{paste}{TableXmpPageEmpty7}{TableXmpPagePatch7}
+\pastebutton{TableXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{t x\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch8}
+\begin{paste}{TableXmpPageFull8}{TableXmpPageEmpty8}
+\pastebutton{TableXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{t.(x**2 - 1)\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (8)  "Easy to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty8}
+\begin{paste}{TableXmpPageEmpty8}{TableXmpPagePatch8}
+\pastebutton{TableXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{t.(x**2 - 1)\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch9}
+\begin{paste}{TableXmpPageFull9}{TableXmpPageEmpty9}
+\pastebutton{TableXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{t (x**3 + 1)\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (9)  "Harder to factor"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty9}
+\begin{paste}{TableXmpPageEmpty9}{TableXmpPagePatch9}
+\pastebutton{TableXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{t (x**3 + 1)\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch10}
+\begin{paste}{TableXmpPageFull10}{TableXmpPageEmpty10}
+\pastebutton{TableXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{keys t\free{p3 }}
+\indentrel{3}\begin{verbatim}
+             3      2
+   (10)  [x,x  + 1,x  - 1]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty10}
+\begin{paste}{TableXmpPageEmpty10}{TableXmpPagePatch10}
+\pastebutton{TableXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{keys t\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch11}
+\begin{paste}{TableXmpPageFull11}{TableXmpPageEmpty11}
+\pastebutton{TableXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{search(x, t)\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (11)  "The easiest to factor"
+                                Type: Union(String,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty11}
+\begin{paste}{TableXmpPageEmpty11}{TableXmpPagePatch11}
+\pastebutton{TableXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{search(x, t)\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch12}
+\begin{paste}{TableXmpPageFull12}{TableXmpPageEmpty12}
+\pastebutton{TableXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{search(x**2, t)\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (12)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty12}
+\begin{paste}{TableXmpPageEmpty12}{TableXmpPagePatch12}
+\pastebutton{TableXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{search(x**2, t)\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch13}
+\begin{paste}{TableXmpPageFull13}{TableXmpPageEmpty13}
+\pastebutton{TableXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{search(x**2, t) case "failed"\free{p3 }}
+\indentrel{3}\begin{verbatim}
+   (13)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty13}
+\begin{paste}{TableXmpPageEmpty13}{TableXmpPagePatch13}
+\pastebutton{TableXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{search(x**2, t) case "failed"\free{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch14}
+\begin{paste}{TableXmpPageFull14}{TableXmpPageEmpty14}
+\pastebutton{TableXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{remove!(x**2-1, t)\free{p3 }\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (14)  "Easy to factor"
+                                Type: Union(String,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty14}
+\begin{paste}{TableXmpPageEmpty14}{TableXmpPagePatch14}
+\pastebutton{TableXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{remove!(x**2-1, t)\free{p3 }\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch15}
+\begin{paste}{TableXmpPageFull15}{TableXmpPageEmpty15}
+\pastebutton{TableXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{remove!(x-1, t)\free{p4 }\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (15)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty15}
+\begin{paste}{TableXmpPageEmpty15}{TableXmpPagePatch15}
+\pastebutton{TableXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{remove!(x-1, t)\free{p4 }\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch16}
+\begin{paste}{TableXmpPageFull16}{TableXmpPageEmpty16}
+\pastebutton{TableXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{\#t\free{p5 }}
+\indentrel{3}\begin{verbatim}
+   (16)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty16}
+\begin{paste}{TableXmpPageEmpty16}{TableXmpPagePatch16}
+\pastebutton{TableXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{\#t\free{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch17}
+\begin{paste}{TableXmpPageFull17}{TableXmpPageEmpty17}
+\pastebutton{TableXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{members t\free{p5 }}
+\indentrel{3}\begin{verbatim}
+   (17)  ["The easiest to factor","Harder to factor"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty17}
+\begin{paste}{TableXmpPageEmpty17}{TableXmpPagePatch17}
+\pastebutton{TableXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{members t\free{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPagePatch18}
+\begin{paste}{TableXmpPageFull18}{TableXmpPageEmpty18}
+\pastebutton{TableXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{count(s: String +-> prefix?("Hard", s), t)\free{p5 }}
+\indentrel{3}\begin{verbatim}
+   (18)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TableXmpPageEmpty18}
+\begin{paste}{TableXmpPageEmpty18}{TableXmpPagePatch18}
+\pastebutton{TableXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{count(s: String +-> prefix?("Hard", s), t)\free{p5 }}
+\end{paste}\end{patch}
+
 @
 \section{textfile.ht}
 \pagehead{TextFileXmpPage}{textfile.ht}{TextFile}
@@ -20718,7 +58114,185 @@ For more information on related topics,  see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{TextFileXmpPagePatch1}
+\begin{paste}{TextFileXmpPageFull1}{TextFileXmpPageEmpty1}
+\pastebutton{TextFileXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f1: TextFile := open("/etc/group", "input")\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  "/etc/group"
+                                         Type: TextFile
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty1}
+\begin{paste}{TextFileXmpPageEmpty1}{TextFileXmpPagePatch1}
+\pastebutton{TextFileXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f1: TextFile := open("/etc/group", "input")\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch2}
+\begin{paste}{TextFileXmpPageFull2}{TextFileXmpPageEmpty2}
+\pastebutton{TextFileXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f2: TextFile := open("/tmp/MOTD", "output")\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  "/tmp/MOTD"
+                                         Type: TextFile
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty2}
+\begin{paste}{TextFileXmpPageEmpty2}{TextFileXmpPagePatch2}
+\pastebutton{TextFileXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f2: TextFile := open("/tmp/MOTD", "output")\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch3}
+\begin{paste}{TextFileXmpPageFull3}{TextFileXmpPageEmpty3}
+\pastebutton{TextFileXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{l := readLine! f1\free{f1 }\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (3)  "system:*:0:root"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty3}
+\begin{paste}{TextFileXmpPageEmpty3}{TextFileXmpPagePatch3}
+\pastebutton{TextFileXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{l := readLine! f1\free{f1 }\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch4}
+\begin{paste}{TextFileXmpPageFull4}{TextFileXmpPageEmpty4}
+\pastebutton{TextFileXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{writeLine!(f2, upperCase l)\free{f2 l }}
+\indentrel{3}\begin{verbatim}
+   (4)  "SYSTEM:*:0:ROOT"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty4}
+\begin{paste}{TextFileXmpPageEmpty4}{TextFileXmpPagePatch4}
+\pastebutton{TextFileXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{writeLine!(f2, upperCase l)\free{f2 l }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch5}
+\begin{paste}{TextFileXmpPageFull5}{TextFileXmpPageEmpty5}
+\pastebutton{TextFileXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{while not endOfFile? f1 repeat
+    s := readLine! f1
+    writeLine!(f2, upperCase s)
+\free{f1 f2 }\bound{Copied }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty5}
+\begin{paste}{TextFileXmpPageEmpty5}{TextFileXmpPagePatch5}
+\pastebutton{TextFileXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{while not endOfFile? f1 repeat
+    s := readLine! f1
+    writeLine!(f2, upperCase s)
+\free{f1 f2 }\bound{Copied }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch6}
+\begin{paste}{TextFileXmpPageFull6}{TextFileXmpPageEmpty6}
+\pastebutton{TextFileXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{close! f1\free{Copied }\bound{closed1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  "/etc/group"
+                                         Type: TextFile
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty6}
+\begin{paste}{TextFileXmpPageEmpty6}{TextFileXmpPagePatch6}
+\pastebutton{TextFileXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{close! f1\free{Copied }\bound{closed1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch7}
+\begin{paste}{TextFileXmpPageFull7}{TextFileXmpPageEmpty7}
+\pastebutton{TextFileXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{write!(f2, "-The-")\free{Copied }\bound{tthhee }}
+\indentrel{3}\begin{verbatim}
+   (7)  "-The-"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty7}
+\begin{paste}{TextFileXmpPageEmpty7}{TextFileXmpPagePatch7}
+\pastebutton{TextFileXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{write!(f2, "-The-")\free{Copied }\bound{tthhee }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch8}
+\begin{paste}{TextFileXmpPageFull8}{TextFileXmpPageEmpty8}
+\pastebutton{TextFileXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{write!(f2, "-End-")\free{tthhee }\bound{eenndd }}
+\indentrel{3}\begin{verbatim}
+   (8)  "-End-"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty8}
+\begin{paste}{TextFileXmpPageEmpty8}{TextFileXmpPagePatch8}
+\pastebutton{TextFileXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{write!(f2, "-End-")\free{tthhee }\bound{eenndd }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch9}
+\begin{paste}{TextFileXmpPageFull9}{TextFileXmpPageEmpty9}
+\pastebutton{TextFileXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{writeLine! f2\free{eenndd }\bound{LastLine }}
+\indentrel{3}\begin{verbatim}
+   (9)  ""
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty9}
+\begin{paste}{TextFileXmpPageEmpty9}{TextFileXmpPagePatch9}
+\pastebutton{TextFileXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{writeLine! f2\free{eenndd }\bound{LastLine }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch10}
+\begin{paste}{TextFileXmpPageFull10}{TextFileXmpPageEmpty10}
+\pastebutton{TextFileXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{close! f2\free{LastLine }\bound{closed2 }}
+\indentrel{3}\begin{verbatim}
+   (10)  "/tmp/MOTD"
+                                         Type: TextFile
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty10}
+\begin{paste}{TextFileXmpPageEmpty10}{TextFileXmpPagePatch10}
+\pastebutton{TextFileXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{close! f2\free{LastLine }\bound{closed2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPagePatch11}
+\begin{paste}{TextFileXmpPageFull11}{TextFileXmpPageEmpty11}
+\pastebutton{TextFileXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{)system rm /tmp/MOTD\free{closed2 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{TextFileXmpPageEmpty11}
+\begin{paste}{TextFileXmpPageEmpty11}{TextFileXmpPagePatch11}
+\pastebutton{TextFileXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{)system rm /tmp/MOTD\free{closed2 }}
+\end{paste}\end{patch}
 
 @
 \section{topics.ht}
@@ -21091,7 +58665,150 @@ For more information on related topics,  see
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{UniversalSegmentXmpPagePatch1}
+\begin{paste}{UniversalSegmentXmpPageFull1}{UniversalSegmentXmpPageEmpty1}
+\pastebutton{UniversalSegmentXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{pints := 1..\bound{pints }}
+\indentrel{3}\begin{verbatim}
+   (1)  1..
+                 Type: UniversalSegment PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty1}
+\begin{paste}{UniversalSegmentXmpPageEmpty1}{UniversalSegmentXmpPagePatch1}
+\pastebutton{UniversalSegmentXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{pints := 1..\bound{pints }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch2}
+\begin{paste}{UniversalSegmentXmpPageFull2}{UniversalSegmentXmpPageEmpty2}
+\pastebutton{UniversalSegmentXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{nevens := (0..) by -2\bound{nevens }}
+\indentrel{3}\begin{verbatim}
+   (2)  0.. by - 2
+              Type: UniversalSegment NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty2}
+\begin{paste}{UniversalSegmentXmpPageEmpty2}{UniversalSegmentXmpPagePatch2}
+\pastebutton{UniversalSegmentXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{nevens := (0..) by -2\bound{nevens }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch3}
+\begin{paste}{UniversalSegmentXmpPageFull3}{UniversalSegmentXmpPageEmpty3}
+\pastebutton{UniversalSegmentXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{useg: UniversalSegment(Integer) := 3..10\bound{useg }}
+\indentrel{3}\begin{verbatim}
+   (3)  3..10
+                         Type: UniversalSegment Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty3}
+\begin{paste}{UniversalSegmentXmpPageEmpty3}{UniversalSegmentXmpPagePatch3}
+\pastebutton{UniversalSegmentXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{useg: UniversalSegment(Integer) := 3..10\bound{useg }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch4}
+\begin{paste}{UniversalSegmentXmpPageFull4}{UniversalSegmentXmpPageEmpty4}
+\pastebutton{UniversalSegmentXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{hasHi pints\free{pints }}
+\indentrel{3}\begin{verbatim}
+   (4)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty4}
+\begin{paste}{UniversalSegmentXmpPageEmpty4}{UniversalSegmentXmpPagePatch4}
+\pastebutton{UniversalSegmentXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{hasHi pints\free{pints }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch5}
+\begin{paste}{UniversalSegmentXmpPageFull5}{UniversalSegmentXmpPageEmpty5}
+\pastebutton{UniversalSegmentXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{hasHi nevens\free{nevens }}
+\indentrel{3}\begin{verbatim}
+   (5)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty5}
+\begin{paste}{UniversalSegmentXmpPageEmpty5}{UniversalSegmentXmpPagePatch5}
+\pastebutton{UniversalSegmentXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{hasHi nevens\free{nevens }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch6}
+\begin{paste}{UniversalSegmentXmpPageFull6}{UniversalSegmentXmpPageEmpty6}
+\pastebutton{UniversalSegmentXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{hasHi useg\free{useg }}
+\indentrel{3}\begin{verbatim}
+   (6)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty6}
+\begin{paste}{UniversalSegmentXmpPageEmpty6}{UniversalSegmentXmpPagePatch6}
+\pastebutton{UniversalSegmentXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{hasHi useg\free{useg }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch7}
+\begin{paste}{UniversalSegmentXmpPageFull7}{UniversalSegmentXmpPageEmpty7}
+\pastebutton{UniversalSegmentXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{expand pints\free{pints }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1,2,3,4,5,6,7,8,9,10,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty7}
+\begin{paste}{UniversalSegmentXmpPageEmpty7}{UniversalSegmentXmpPagePatch7}
+\pastebutton{UniversalSegmentXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{expand pints\free{pints }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch8}
+\begin{paste}{UniversalSegmentXmpPageFull8}{UniversalSegmentXmpPageEmpty8}
+\pastebutton{UniversalSegmentXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{expand nevens\free{nevens }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0,- 2,- 4,- 6,- 8,- 10,- 12,- 14,- 16,- 18,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty8}
+\begin{paste}{UniversalSegmentXmpPageEmpty8}{UniversalSegmentXmpPagePatch8}
+\pastebutton{UniversalSegmentXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{expand nevens\free{nevens }}
+\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPagePatch9}
+\begin{paste}{UniversalSegmentXmpPageFull9}{UniversalSegmentXmpPageEmpty9}
+\pastebutton{UniversalSegmentXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{expand [1, 3, 10..15, 100..]}
+\indentrel{3}\begin{verbatim}
+   (9)  [1,3,10,11,12,13,14,15,100,101,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UniversalSegmentXmpPageEmpty9}
+\begin{paste}{UniversalSegmentXmpPageEmpty9}{UniversalSegmentXmpPagePatch9}
+\pastebutton{UniversalSegmentXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{expand [1, 3, 10..15, 100..]}
+\end{paste}\end{patch}
 
 @
 \section{up.ht}
@@ -21375,6 +59092,618 @@ Section 2.7\ignore{ugTypesConvert},
 \autobuttons
 \end{page}
 
+\begin{patch}{UnivariatePolyXmpPagePatch1}
+\begin{paste}{UnivariatePolyXmpPageFull1}{UnivariatePolyXmpPageEmpty1}
+\pastebutton{UnivariatePolyXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(p,q) : UP(x,INT)\bound{pdec }\bound{qdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty1}
+\begin{paste}{UnivariatePolyXmpPageEmpty1}{UnivariatePolyXmpPagePatch1}
+\pastebutton{UnivariatePolyXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(p,q) : UP(x,INT)\bound{pdec }\bound{qdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch2}
+\begin{paste}{UnivariatePolyXmpPageFull2}{UnivariatePolyXmpPageEmpty2}
+\pastebutton{UnivariatePolyXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p := (3*x-1)**2 * (2*x + 8)\free{pdec }\bound{p }}
+\indentrel{3}\begin{verbatim}
+           3      2
+   (2)  18x  + 60x  - 46x + 8
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty2}
+\begin{paste}{UnivariatePolyXmpPageEmpty2}{UnivariatePolyXmpPagePatch2}
+\pastebutton{UnivariatePolyXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p := (3*x-1)**2 * (2*x + 8)\free{pdec }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch3}
+\begin{paste}{UnivariatePolyXmpPageFull3}{UnivariatePolyXmpPageEmpty3}
+\pastebutton{UnivariatePolyXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{q := (1 - 6*x + 9*x**2)**2\free{qdec }\bound{q }}
+\indentrel{3}\begin{verbatim}
+           4       3      2
+   (3)  81x  - 108x  + 54x  - 12x + 1
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty3}
+\begin{paste}{UnivariatePolyXmpPageEmpty3}{UnivariatePolyXmpPagePatch3}
+\pastebutton{UnivariatePolyXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{q := (1 - 6*x + 9*x**2)**2\free{qdec }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch4}
+\begin{paste}{UnivariatePolyXmpPageFull4}{UnivariatePolyXmpPageEmpty4}
+\pastebutton{UnivariatePolyXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{p**2 + p*q\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (4)
+          7        6        5         4        3        2
+     1458x  + 3240x  - 7074x  + 10584x  - 9282x  + 4120x
+   + 
+     - 878x + 72
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty4}
+\begin{paste}{UnivariatePolyXmpPageEmpty4}{UnivariatePolyXmpPagePatch4}
+\pastebutton{UnivariatePolyXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p**2 + p*q\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch5}
+\begin{paste}{UnivariatePolyXmpPageFull5}{UnivariatePolyXmpPageEmpty5}
+\pastebutton{UnivariatePolyXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{leadingCoefficient p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (5)  18
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty5}
+\begin{paste}{UnivariatePolyXmpPageEmpty5}{UnivariatePolyXmpPagePatch5}
+\pastebutton{UnivariatePolyXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{leadingCoefficient p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch6}
+\begin{paste}{UnivariatePolyXmpPageFull6}{UnivariatePolyXmpPageEmpty6}
+\pastebutton{UnivariatePolyXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{degree p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (6)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty6}
+\begin{paste}{UnivariatePolyXmpPageEmpty6}{UnivariatePolyXmpPagePatch6}
+\pastebutton{UnivariatePolyXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{degree p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch7}
+\begin{paste}{UnivariatePolyXmpPageFull7}{UnivariatePolyXmpPageEmpty7}
+\pastebutton{UnivariatePolyXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{reductum p\free{p }}
+\indentrel{3}\begin{verbatim}
+           2
+   (7)  60x  - 46x + 8
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty7}
+\begin{paste}{UnivariatePolyXmpPageEmpty7}{UnivariatePolyXmpPagePatch7}
+\pastebutton{UnivariatePolyXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{reductum p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch8}
+\begin{paste}{UnivariatePolyXmpPageFull8}{UnivariatePolyXmpPageEmpty8}
+\pastebutton{UnivariatePolyXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+          2
+   (8)  9x  - 6x + 1
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty8}
+\begin{paste}{UnivariatePolyXmpPageEmpty8}{UnivariatePolyXmpPagePatch8}
+\pastebutton{UnivariatePolyXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{gcd(p,q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch9}
+\begin{paste}{UnivariatePolyXmpPageFull9}{UnivariatePolyXmpPageEmpty9}
+\pastebutton{UnivariatePolyXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{lcm(p,q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+            5       4       3       2
+   (9)  162x  + 432x  - 756x  + 408x  - 94x + 8
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty9}
+\begin{paste}{UnivariatePolyXmpPageEmpty9}{UnivariatePolyXmpPagePatch9}
+\pastebutton{UnivariatePolyXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{lcm(p,q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch10}
+\begin{paste}{UnivariatePolyXmpPageFull10}{UnivariatePolyXmpPageEmpty10}
+\pastebutton{UnivariatePolyXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{resultant(p,q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (10)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty10}
+\begin{paste}{UnivariatePolyXmpPageEmpty10}{UnivariatePolyXmpPagePatch10}
+\pastebutton{UnivariatePolyXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{resultant(p,q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch11}
+\begin{paste}{UnivariatePolyXmpPageFull11}{UnivariatePolyXmpPageEmpty11}
+\pastebutton{UnivariatePolyXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{D p\free{p }}
+\indentrel{3}\begin{verbatim}
+            2
+   (11)  54x  + 120x - 46
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty11}
+\begin{paste}{UnivariatePolyXmpPageEmpty11}{UnivariatePolyXmpPagePatch11}
+\pastebutton{UnivariatePolyXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{D p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch12}
+\begin{paste}{UnivariatePolyXmpPageFull12}{UnivariatePolyXmpPageEmpty12}
+\pastebutton{UnivariatePolyXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p(2)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (12)  300
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty12}
+\begin{paste}{UnivariatePolyXmpPageEmpty12}{UnivariatePolyXmpPagePatch12}
+\pastebutton{UnivariatePolyXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p(2)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch13}
+\begin{paste}{UnivariatePolyXmpPageFull13}{UnivariatePolyXmpPageEmpty13}
+\pastebutton{UnivariatePolyXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{p(q)\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (13)
+             12            11            10            9
+     9565938x   - 38263752x   + 70150212x   - 77944680x
+   + 
+              8            7            6           5
+     58852170x  - 32227632x  + 13349448x  - 4280688x
+   + 
+             4          3         2
+     1058184x  - 192672x  + 23328x  - 1536x + 40
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty13}
+\begin{paste}{UnivariatePolyXmpPageEmpty13}{UnivariatePolyXmpPagePatch13}
+\pastebutton{UnivariatePolyXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{p(q)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch14}
+\begin{paste}{UnivariatePolyXmpPageFull14}{UnivariatePolyXmpPageEmpty14}
+\pastebutton{UnivariatePolyXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{q(p)\free{p q }}
+\indentrel{3}\begin{verbatim}
+   (14)
+             12             11             10
+     8503056x   + 113374080x   + 479950272x
+   + 
+               9              8             7
+     404997408x  - 1369516896x  - 626146848x
+   + 
+                6              5              4
+     2939858712x  - 2780728704x  + 1364312160x
+   + 
+                 3            2
+     - 396838872x  + 69205896x  - 6716184x + 279841
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty14}
+\begin{paste}{UnivariatePolyXmpPageEmpty14}{UnivariatePolyXmpPagePatch14}
+\pastebutton{UnivariatePolyXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{q(p)\free{p q }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch15}
+\begin{paste}{UnivariatePolyXmpPageFull15}{UnivariatePolyXmpPageEmpty15}
+\pastebutton{UnivariatePolyXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{l := coefficients p\free{p }\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (15)  [18,60,- 46,8]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty15}
+\begin{paste}{UnivariatePolyXmpPageEmpty15}{UnivariatePolyXmpPagePatch15}
+\pastebutton{UnivariatePolyXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{l := coefficients p\free{p }\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch16}
+\begin{paste}{UnivariatePolyXmpPageFull16}{UnivariatePolyXmpPageEmpty16}
+\pastebutton{UnivariatePolyXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{reduce(gcd,l)\free{l }}
+\indentrel{3}\begin{verbatim}
+   (16)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty16}
+\begin{paste}{UnivariatePolyXmpPageEmpty16}{UnivariatePolyXmpPagePatch16}
+\pastebutton{UnivariatePolyXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{reduce(gcd,l)\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch17}
+\begin{paste}{UnivariatePolyXmpPageFull17}{UnivariatePolyXmpPageEmpty17}
+\pastebutton{UnivariatePolyXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{content p\free{p }}
+\indentrel{3}\begin{verbatim}
+   (17)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty17}
+\begin{paste}{UnivariatePolyXmpPageEmpty17}{UnivariatePolyXmpPagePatch17}
+\pastebutton{UnivariatePolyXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{content p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch18}
+\begin{paste}{UnivariatePolyXmpPageFull18}{UnivariatePolyXmpPageEmpty18}
+\pastebutton{UnivariatePolyXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{ux := (x**4+2*x+3)::UP(x,INT)\bound{ux }}
+\indentrel{3}\begin{verbatim}
+          4
+   (18)  x  + 2x + 3
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty18}
+\begin{paste}{UnivariatePolyXmpPageEmpty18}{UnivariatePolyXmpPagePatch18}
+\pastebutton{UnivariatePolyXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{ux := (x**4+2*x+3)::UP(x,INT)\bound{ux }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch19}
+\begin{paste}{UnivariatePolyXmpPageFull19}{UnivariatePolyXmpPageEmpty19}
+\pastebutton{UnivariatePolyXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{vectorise(ux,5)\free{ux }}
+\indentrel{3}\begin{verbatim}
+   (19)  [3,2,0,0,1]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty19}
+\begin{paste}{UnivariatePolyXmpPageEmpty19}{UnivariatePolyXmpPagePatch19}
+\pastebutton{UnivariatePolyXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{vectorise(ux,5)\free{ux }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch20}
+\begin{paste}{UnivariatePolyXmpPageFull20}{UnivariatePolyXmpPageEmpty20}
+\pastebutton{UnivariatePolyXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{squareTerms(p) ==
+  reduce(+,[t**2 for t in monomials p])
+\bound{squareTerms }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty20}
+\begin{paste}{UnivariatePolyXmpPageEmpty20}{UnivariatePolyXmpPagePatch20}
+\pastebutton{UnivariatePolyXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{squareTerms(p) ==
+  reduce(+,[t**2 for t in monomials p])
+\bound{squareTerms }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch21}
+\begin{paste}{UnivariatePolyXmpPageFull21}{UnivariatePolyXmpPageEmpty21}
+\pastebutton{UnivariatePolyXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{p\free{p }}
+\indentrel{3}\begin{verbatim}
+            3      2
+   (21)  18x  + 60x  - 46x + 8
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty21}
+\begin{paste}{UnivariatePolyXmpPageEmpty21}{UnivariatePolyXmpPagePatch21}
+\pastebutton{UnivariatePolyXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{p\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch22}
+\begin{paste}{UnivariatePolyXmpPageFull22}{UnivariatePolyXmpPageEmpty22}
+\pastebutton{UnivariatePolyXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{squareTerms p\free{p }\free{squareTerms }}
+\indentrel{3}\begin{verbatim}
+             6        4        2
+   (22)  324x  + 3600x  + 2116x  + 64
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty22}
+\begin{paste}{UnivariatePolyXmpPageEmpty22}{UnivariatePolyXmpPagePatch22}
+\pastebutton{UnivariatePolyXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{squareTerms p\free{p }\free{squareTerms }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch23}
+\begin{paste}{UnivariatePolyXmpPageFull23}{UnivariatePolyXmpPageEmpty23}
+\pastebutton{UnivariatePolyXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{(r,s) : UP(a1,FRAC INT)\bound{rdec }\bound{sdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty23}
+\begin{paste}{UnivariatePolyXmpPageEmpty23}{UnivariatePolyXmpPagePatch23}
+\pastebutton{UnivariatePolyXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{(r,s) : UP(a1,FRAC INT)\bound{rdec }\bound{sdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch24}
+\begin{paste}{UnivariatePolyXmpPageFull24}{UnivariatePolyXmpPageEmpty24}
+\pastebutton{UnivariatePolyXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{r := a1**2 - 2/3\free{rdec }\bound{r }}
+\indentrel{3}\begin{verbatim}
+           2   2
+   (24)  a1  - Ä
+               3
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty24}
+\begin{paste}{UnivariatePolyXmpPageEmpty24}{UnivariatePolyXmpPagePatch24}
+\pastebutton{UnivariatePolyXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{r := a1**2 - 2/3\free{rdec }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch25}
+\begin{paste}{UnivariatePolyXmpPageFull25}{UnivariatePolyXmpPageEmpty25}
+\pastebutton{UnivariatePolyXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{s := a1 + 4\free{sdec }\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (25)  a1 + 4
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty25}
+\begin{paste}{UnivariatePolyXmpPageEmpty25}{UnivariatePolyXmpPagePatch25}
+\pastebutton{UnivariatePolyXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{s := a1 + 4\free{sdec }\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch26}
+\begin{paste}{UnivariatePolyXmpPageFull26}{UnivariatePolyXmpPageEmpty26}
+\pastebutton{UnivariatePolyXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{r quo s\free{r s }}
+\indentrel{3}\begin{verbatim}
+   (26)  a1 - 4
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty26}
+\begin{paste}{UnivariatePolyXmpPageEmpty26}{UnivariatePolyXmpPagePatch26}
+\pastebutton{UnivariatePolyXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{r quo s\free{r s }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch27}
+\begin{paste}{UnivariatePolyXmpPageFull27}{UnivariatePolyXmpPageEmpty27}
+\pastebutton{UnivariatePolyXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{r rem s\free{r s }}
+\indentrel{3}\begin{verbatim}
+         46
+   (27)  ÄÄ
+          3
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty27}
+\begin{paste}{UnivariatePolyXmpPageEmpty27}{UnivariatePolyXmpPagePatch27}
+\pastebutton{UnivariatePolyXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{r rem s\free{r s }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch28}
+\begin{paste}{UnivariatePolyXmpPageFull28}{UnivariatePolyXmpPageEmpty28}
+\pastebutton{UnivariatePolyXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{d := divide(r, s)\free{r s }\bound{d }}
+\indentrel{3}\begin{verbatim}
+                                      46
+   (28)  [quotient= a1 - 4,remainder= ÄÄ]
+                                       3
+Type: Record(quotient: UnivariatePolynomial(a1,Fraction Integer),remainder: UnivariatePolynomial(a1,Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty28}
+\begin{paste}{UnivariatePolyXmpPageEmpty28}{UnivariatePolyXmpPagePatch28}
+\pastebutton{UnivariatePolyXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{d := divide(r, s)\free{r s }\bound{d }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch29}
+\begin{paste}{UnivariatePolyXmpPageFull29}{UnivariatePolyXmpPageEmpty29}
+\pastebutton{UnivariatePolyXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{r - (d.quotient * s + d.remainder)\free{r s d }}
+\indentrel{3}\begin{verbatim}
+   (29)  0
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty29}
+\begin{paste}{UnivariatePolyXmpPageEmpty29}{UnivariatePolyXmpPagePatch29}
+\pastebutton{UnivariatePolyXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{r - (d.quotient * s + d.remainder)\free{r s d }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch30}
+\begin{paste}{UnivariatePolyXmpPageFull30}{UnivariatePolyXmpPageEmpty30}
+\pastebutton{UnivariatePolyXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{integrate r\free{r }}
+\indentrel{3}\begin{verbatim}
+         1   3   2
+   (30)  Ä a1  - Ä a1
+         3       3
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty30}
+\begin{paste}{UnivariatePolyXmpPageEmpty30}{UnivariatePolyXmpPagePatch30}
+\pastebutton{UnivariatePolyXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{integrate r\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch31}
+\begin{paste}{UnivariatePolyXmpPageFull31}{UnivariatePolyXmpPageEmpty31}
+\pastebutton{UnivariatePolyXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{integrate s\free{s }}
+\indentrel{3}\begin{verbatim}
+         1   2
+   (31)  Ä a1  + 4a1
+         2
+        Type: UnivariatePolynomial(a1,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty31}
+\begin{paste}{UnivariatePolyXmpPageEmpty31}{UnivariatePolyXmpPagePatch31}
+\pastebutton{UnivariatePolyXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{integrate s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch32}
+\begin{paste}{UnivariatePolyXmpPageFull32}{UnivariatePolyXmpPageEmpty32}
+\pastebutton{UnivariatePolyXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{t : UP(a1,FRAC POLY INT)\bound{tdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty32}
+\begin{paste}{UnivariatePolyXmpPageEmpty32}{UnivariatePolyXmpPagePatch32}
+\pastebutton{UnivariatePolyXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{t : UP(a1,FRAC POLY INT)\bound{tdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch33}
+\begin{paste}{UnivariatePolyXmpPageFull33}{UnivariatePolyXmpPageEmpty33}
+\pastebutton{UnivariatePolyXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)\free{tdec }\bound{t }}
+\indentrel{3}\begin{verbatim}
+                         2
+           2    1      b1  - b1
+   (33)  a1  - ÄÄ a1 + ÄÄÄÄÄÄÄÄ
+               b2       b2 + 3
+Type: UnivariatePolynomial(a1,Fraction Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty33}
+\begin{paste}{UnivariatePolyXmpPageEmpty33}{UnivariatePolyXmpPagePatch33}
+\pastebutton{UnivariatePolyXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)\free{tdec }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch34}
+\begin{paste}{UnivariatePolyXmpPageFull34}{UnivariatePolyXmpPageEmpty34}
+\pastebutton{UnivariatePolyXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{u : FRAC POLY INT := t\bound{u }\free{t }}
+\indentrel{3}\begin{verbatim}
+           2  2      2           2
+         a1 b2  + (b1  - b1 + 3a1  - a1)b2 - 3a1
+   (34)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                          2
+                        b2  + 3b2
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty34}
+\begin{paste}{UnivariatePolyXmpPageEmpty34}{UnivariatePolyXmpPagePatch34}
+\pastebutton{UnivariatePolyXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{u : FRAC POLY INT := t\bound{u }\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPagePatch35}
+\begin{paste}{UnivariatePolyXmpPageFull35}{UnivariatePolyXmpPageEmpty35}
+\pastebutton{UnivariatePolyXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{u :: UP(b1,?)\free{u }}
+\indentrel{3}\begin{verbatim}
+                                    2
+            1     2      1        a1 b2 - a1
+   (35)  ÄÄÄÄÄÄ b1  - ÄÄÄÄÄÄ b1 + ÄÄÄÄÄÄÄÄÄÄ
+         b2 + 3       b2 + 3          b2
+Type: UnivariatePolynomial(b1,Fraction Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UnivariatePolyXmpPageEmpty35}
+\begin{paste}{UnivariatePolyXmpPageEmpty35}{UnivariatePolyXmpPagePatch35}
+\pastebutton{UnivariatePolyXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{u :: UP(b1,?)\free{u }}
+\end{paste}\end{patch}
+
 @
 \section{vector.ht}
 \pagehead{VectorXmpPage}{vector.ht}{Vector}
@@ -21488,7 +59817,182 @@ to display the full list of operations defined by
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{VectorXmpPagePatch1}
+\begin{paste}{VectorXmpPageFull1}{VectorXmpPageEmpty1}
+\pastebutton{VectorXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{u : VECTOR INT := new(5,12)\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (1)  [12,12,12,12,12]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty1}
+\begin{paste}{VectorXmpPageEmpty1}{VectorXmpPagePatch1}
+\pastebutton{VectorXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u : VECTOR INT := new(5,12)\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch2}
+\begin{paste}{VectorXmpPageFull2}{VectorXmpPageEmpty2}
+\pastebutton{VectorXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{v : VECTOR INT := vector([1,2,3,4,5])\bound{v }}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3,4,5]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty2}
+\begin{paste}{VectorXmpPageEmpty2}{VectorXmpPagePatch2}
+\pastebutton{VectorXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{v : VECTOR INT := vector([1,2,3,4,5])\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch3}
+\begin{paste}{VectorXmpPageFull3}{VectorXmpPageEmpty3}
+\pastebutton{VectorXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{\#(v)\free{v }}
+\indentrel{3}\begin{verbatim}
+   (3)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty3}
+\begin{paste}{VectorXmpPageEmpty3}{VectorXmpPagePatch3}
+\pastebutton{VectorXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{\#(v)\free{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch4}
+\begin{paste}{VectorXmpPageFull4}{VectorXmpPageEmpty4}
+\pastebutton{VectorXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{v.2\free{v }}
+\indentrel{3}\begin{verbatim}
+   (4)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty4}
+\begin{paste}{VectorXmpPageEmpty4}{VectorXmpPagePatch4}
+\pastebutton{VectorXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{v.2\free{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch5}
+\begin{paste}{VectorXmpPageFull5}{VectorXmpPageEmpty5}
+\pastebutton{VectorXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{v.3 := 99\free{v }\bound{vdelta }}
+\indentrel{3}\begin{verbatim}
+   (5)  99
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty5}
+\begin{paste}{VectorXmpPageEmpty5}{VectorXmpPagePatch5}
+\pastebutton{VectorXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{v.3 := 99\free{v }\bound{vdelta }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch6}
+\begin{paste}{VectorXmpPageFull6}{VectorXmpPageEmpty6}
+\pastebutton{VectorXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{v\free{vdelta }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,2,99,4,5]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty6}
+\begin{paste}{VectorXmpPageEmpty6}{VectorXmpPagePatch6}
+\pastebutton{VectorXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{v\free{vdelta }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch7}
+\begin{paste}{VectorXmpPageFull7}{VectorXmpPageEmpty7}
+\pastebutton{VectorXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{5 * v\free{vdelta }}
+\indentrel{3}\begin{verbatim}
+   (7)  [5,10,495,20,25]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty7}
+\begin{paste}{VectorXmpPageEmpty7}{VectorXmpPagePatch7}
+\pastebutton{VectorXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{5 * v\free{vdelta }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch8}
+\begin{paste}{VectorXmpPageFull8}{VectorXmpPageEmpty8}
+\pastebutton{VectorXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{v * 7\free{vdelta }}
+\indentrel{3}\begin{verbatim}
+   (8)  [7,14,693,28,35]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty8}
+\begin{paste}{VectorXmpPageEmpty8}{VectorXmpPagePatch8}
+\pastebutton{VectorXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{v * 7\free{vdelta }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch9}
+\begin{paste}{VectorXmpPageFull9}{VectorXmpPageEmpty9}
+\pastebutton{VectorXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{w : VECTOR INT := vector([2,3,4,5,6])\bound{w }}
+\indentrel{3}\begin{verbatim}
+   (9)  [2,3,4,5,6]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty9}
+\begin{paste}{VectorXmpPageEmpty9}{VectorXmpPagePatch9}
+\pastebutton{VectorXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{w : VECTOR INT := vector([2,3,4,5,6])\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch10}
+\begin{paste}{VectorXmpPageFull10}{VectorXmpPageEmpty10}
+\pastebutton{VectorXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{v + w\free{vdelta w }}
+\indentrel{3}\begin{verbatim}
+   (10)  [3,5,103,9,11]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty10}
+\begin{paste}{VectorXmpPageEmpty10}{VectorXmpPagePatch10}
+\pastebutton{VectorXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{v + w\free{vdelta w }}
+\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPagePatch11}
+\begin{paste}{VectorXmpPageFull11}{VectorXmpPageEmpty11}
+\pastebutton{VectorXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{v - w\free{vdelta w }}
+\indentrel{3}\begin{verbatim}
+   (11)  [- 1,- 1,95,- 1,- 1]
+                                   Type: Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VectorXmpPageEmpty11}
+\begin{paste}{VectorXmpPageEmpty11}{VectorXmpPagePatch11}
+\pastebutton{VectorXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{v - w\free{vdelta w }}
+\end{paste}\end{patch}
 
 @
 \section{void.ht}
@@ -21543,6 +60047,95 @@ Once a value has been converted to \spadtype{Void}, it cannot be recovered.
 \autobuttons
 \end{page}
 
+\begin{patch}{VoidXmpPagePatch1}
+\begin{paste}{VoidXmpPageFull1}{VoidXmpPageEmpty1}
+\pastebutton{VoidXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a : Integer}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty1}
+\begin{paste}{VoidXmpPageEmpty1}{VoidXmpPagePatch1}
+\pastebutton{VoidXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a : Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPagePatch2}
+\begin{paste}{VoidXmpPageFull2}{VoidXmpPageEmpty2}
+\pastebutton{VoidXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set message void on}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty2}
+\begin{paste}{VoidXmpPageEmpty2}{VoidXmpPagePatch2}
+\pastebutton{VoidXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set message void on}
+\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPagePatch3}
+\begin{paste}{VoidXmpPageFull3}{VoidXmpPageEmpty3}
+\pastebutton{VoidXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{b : Fraction Integer}
+\indentrel{3}\begin{verbatim}
+   (2)  "()"
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty3}
+\begin{paste}{VoidXmpPageEmpty3}{VoidXmpPagePatch3}
+\pastebutton{VoidXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{b : Fraction Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPagePatch4}
+\begin{paste}{VoidXmpPageFull4}{VoidXmpPageEmpty4}
+\pastebutton{VoidXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{)set message void off}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty4}
+\begin{paste}{VoidXmpPageEmpty4}{VoidXmpPagePatch4}
+\pastebutton{VoidXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)set message void off}
+\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPagePatch5}
+\begin{paste}{VoidXmpPageFull5}{VoidXmpPageEmpty5}
+\pastebutton{VoidXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{3::Void\bound{prev }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty5}
+\begin{paste}{VoidXmpPageEmpty5}{VoidXmpPagePatch5}
+\pastebutton{VoidXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{3::Void\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPagePatch6}
+\begin{paste}{VoidXmpPageFull6}{VoidXmpPageEmpty6}
+\pastebutton{VoidXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{\% :: PositiveInteger\free{prev }}
+\indentrel{3}\begin{verbatim}
+   "()"
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{VoidXmpPageEmpty6}
+\begin{paste}{VoidXmpPageEmpty6}{VoidXmpPagePatch6}
+\pastebutton{VoidXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{\% :: PositiveInteger\free{prev }}
+\end{paste}\end{patch}
+
 @
 \section{wutset.ht}
 \pagehead{WuWenTsunTriangularSetXmpPage}{wutset.ht}{WuWenTsunTriangularSet}
@@ -21670,6 +60263,286 @@ constructor.
 \autobuttons
 \end{page}
 
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch1}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull1}{WuWenTsunTriangularSetXmpPageEmpty1}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty1}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty1}{WuWenTsunTriangularSetXmpPagePatch1}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch2}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull2}{WuWenTsunTriangularSetXmpPageEmpty2}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [x,y,z,t]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty2}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty2}{WuWenTsunTriangularSetXmpPagePatch2}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch3}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull3}{WuWenTsunTriangularSetXmpPageEmpty3}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\indentrel{3}\begin{verbatim}
+   (3)  OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty3}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty3}{WuWenTsunTriangularSetXmpPagePatch3}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch4}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull4}{WuWenTsunTriangularSetXmpPageEmpty4}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\indentrel{3}\begin{verbatim}
+   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty4}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty4}{WuWenTsunTriangularSetXmpPagePatch4}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch5}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull5}{WuWenTsunTriangularSetXmpPageEmpty5}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  NewSparseMultivariatePolynomial(Integer,OrderedVariable
+  List [x,y,z,t])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty5}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty5}{WuWenTsunTriangularSetXmpPagePatch5}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch6}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull6}{WuWenTsunTriangularSetXmpPageEmpty6}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (6)  x
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty6}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty6}{WuWenTsunTriangularSetXmpPagePatch6}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch7}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull7}{WuWenTsunTriangularSetXmpPageEmpty7}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (7)  y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty7}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty7}{WuWenTsunTriangularSetXmpPagePatch7}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch8}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull8}{WuWenTsunTriangularSetXmpPageEmpty8}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (8)  z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty8}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty8}{WuWenTsunTriangularSetXmpPagePatch8}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch9}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull9}{WuWenTsunTriangularSetXmpPageEmpty9}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (9)  t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty9}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty9}{WuWenTsunTriangularSetXmpPagePatch9}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch10}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull10}{WuWenTsunTriangularSetXmpPageEmpty10}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{T := WUTSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\indentrel{3}\begin{verbatim}
+   (10)
+  WuWenTsunTriangularSet(Integer,IndexedExponents Ordered
+  VariableList [x,y,z,t],OrderedVariableList [x,y,z,t],Ne
+  wSparseMultivariatePolynomial(Integer,OrderedVariableLi
+  st [x,y,z,t]))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty10}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty10}{WuWenTsunTriangularSetXmpPagePatch10}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{T := WUTSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch11}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull11}{WuWenTsunTriangularSetXmpPageEmpty11}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+          31    6
+   (11)  x   - x  - x - y
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty11}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty11}{WuWenTsunTriangularSetXmpPagePatch11}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch12}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull12}{WuWenTsunTriangularSetXmpPageEmpty12}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+          8
+   (12)  x  - z
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty12}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty12}{WuWenTsunTriangularSetXmpPagePatch12}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch13}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull13}{WuWenTsunTriangularSetXmpPageEmpty13}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+          10
+   (13)  x   - t
+Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty13}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty13}{WuWenTsunTriangularSetXmpPagePatch13}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch14}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull14}{WuWenTsunTriangularSetXmpPageEmpty14}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+           31    6          8      10
+   (14)  [x   - x  - x - y,x  - z,x   - t]
+Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty14}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty14}{WuWenTsunTriangularSetXmpPagePatch14}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch15}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull15}{WuWenTsunTriangularSetXmpPageEmpty15}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{characteristicSet(lp)$T\free{lp }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (15)
+     5    4   4 2 2     3 4        7     4      6    6
+   {z  - t , t z y  + 2t z y + (- t  + 2t  - t)z  + t z,
+      3      3     3     3
+    (t  - 1)z x - z y - t }
+Type: Union(WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty15}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty15}{WuWenTsunTriangularSetXmpPagePatch15}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{characteristicSet(lp)$T\free{lp }\free{T }}
+\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPagePatch16}
+\begin{paste}{WuWenTsunTriangularSetXmpPageFull16}{WuWenTsunTriangularSetXmpPageEmpty16}
+\pastebutton{WuWenTsunTriangularSetXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
+\indentrel{3}\begin{verbatim}
+   (16)
+                 3      5    4  3     3    2
+   [{t,z,y,x}, {t  - 1,z  - t ,z y + t ,z x  - t},
+
+       5    4
+     {z  - t ,
+       4 2 2     3 4        7     4      6    6
+      t z y  + 2t z y + (- t  + 2t  - t)z  + t z,
+        3      3     3     3
+      (t  - 1)z x - z y - t }
+     ]
+Type: List WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty16}
+\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty16}{WuWenTsunTriangularSetXmpPagePatch16}
+\pastebutton{WuWenTsunTriangularSetXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
+\end{paste}\end{patch}
+
 @
 \section{xmpexp.ht}
 \pagehead{ExamplesExposedPage}{xmpexp.ht}
@@ -22063,6 +60936,883 @@ Calculations with verification in \axiomType{XRecursivePolynomial}.
 \autobuttons
 \end{page}
 
+\begin{patch}{XPBWPolynomialXmpPagePatch1}
+\begin{paste}{XPBWPolynomialXmpPageFull1}{XPBWPolynomialXmpPageEmpty1}
+\pastebutton{XPBWPolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (1)  a
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty1}
+\begin{paste}{XPBWPolynomialXmpPageEmpty1}{XPBWPolynomialXmpPagePatch1}
+\pastebutton{XPBWPolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch2}
+\begin{paste}{XPBWPolynomialXmpPageFull2}{XPBWPolynomialXmpPageEmpty2}
+\pastebutton{XPBWPolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (2)  b
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty2}
+\begin{paste}{XPBWPolynomialXmpPageEmpty2}{XPBWPolynomialXmpPagePatch2}
+\pastebutton{XPBWPolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch3}
+\begin{paste}{XPBWPolynomialXmpPageFull3}{XPBWPolynomialXmpPageEmpty3}
+\pastebutton{XPBWPolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{RN := Fraction(Integer)\bound{RN }}
+\indentrel{3}\begin{verbatim}
+   (3)  Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty3}
+\begin{paste}{XPBWPolynomialXmpPageEmpty3}{XPBWPolynomialXmpPagePatch3}
+\pastebutton{XPBWPolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{RN := Fraction(Integer)\bound{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch4}
+\begin{paste}{XPBWPolynomialXmpPageFull4}{XPBWPolynomialXmpPageEmpty4}
+\pastebutton{XPBWPolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid Symbol\bound{word }}
+\indentrel{3}\begin{verbatim}
+   (4)  OrderedFreeMonoid Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty4}
+\begin{paste}{XPBWPolynomialXmpPageEmpty4}{XPBWPolynomialXmpPagePatch4}
+\pastebutton{XPBWPolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{word := OrderedFreeMonoid Symbol\bound{word }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch5}
+\begin{paste}{XPBWPolynomialXmpPageFull5}{XPBWPolynomialXmpPageEmpty5}
+\pastebutton{XPBWPolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{lword := LyndonWord(Symbol)\bound{lword }}
+\indentrel{3}\begin{verbatim}
+   (5)  LyndonWord Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty5}
+\begin{paste}{XPBWPolynomialXmpPageEmpty5}{XPBWPolynomialXmpPagePatch5}
+\pastebutton{XPBWPolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{lword := LyndonWord(Symbol)\bound{lword }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch6}
+\begin{paste}{XPBWPolynomialXmpPageFull6}{XPBWPolynomialXmpPageEmpty6}
+\pastebutton{XPBWPolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{base := PoincareBirkhoffWittLyndonBasis Symbol\bound{base }}
+\indentrel{3}\begin{verbatim}
+   (6)  PoincareBirkhoffWittLyndonBasis Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty6}
+\begin{paste}{XPBWPolynomialXmpPageEmpty6}{XPBWPolynomialXmpPagePatch6}
+\pastebutton{XPBWPolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{base := PoincareBirkhoffWittLyndonBasis Symbol\bound{base }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch7}
+\begin{paste}{XPBWPolynomialXmpPageFull7}{XPBWPolynomialXmpPageEmpty7}
+\pastebutton{XPBWPolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{dpoly := XDistributedPolynomial(Symbol, RN)\bound{dpoly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (7)  XDistributedPolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty7}
+\begin{paste}{XPBWPolynomialXmpPageEmpty7}{XPBWPolynomialXmpPagePatch7}
+\pastebutton{XPBWPolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{dpoly := XDistributedPolynomial(Symbol, RN)\bound{dpoly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch8}
+\begin{paste}{XPBWPolynomialXmpPageFull8}{XPBWPolynomialXmpPageEmpty8}
+\pastebutton{XPBWPolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{rpoly := XRecursivePolynomial(Symbol, RN)\bound{rpoly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (8)  XRecursivePolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty8}
+\begin{paste}{XPBWPolynomialXmpPageEmpty8}{XPBWPolynomialXmpPagePatch8}
+\pastebutton{XPBWPolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{rpoly := XRecursivePolynomial(Symbol, RN)\bound{rpoly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch9}
+\begin{paste}{XPBWPolynomialXmpPageFull9}{XPBWPolynomialXmpPageEmpty9}
+\pastebutton{XPBWPolynomialXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{lpoly := LiePolynomial(Symbol, RN)\bound{lpoly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (9)  LiePolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty9}
+\begin{paste}{XPBWPolynomialXmpPageEmpty9}{XPBWPolynomialXmpPagePatch9}
+\pastebutton{XPBWPolynomialXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{lpoly := LiePolynomial(Symbol, RN)\bound{lpoly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch10}
+\begin{paste}{XPBWPolynomialXmpPageFull10}{XPBWPolynomialXmpPageEmpty10}
+\pastebutton{XPBWPolynomialXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{poly := XPBWPolynomial(Symbol, RN)\bound{poly }\free{RN }}
+\indentrel{3}\begin{verbatim}
+   (10)  XPBWPolynomial(Symbol,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty10}
+\begin{paste}{XPBWPolynomialXmpPageEmpty10}{XPBWPolynomialXmpPagePatch10}
+\pastebutton{XPBWPolynomialXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{poly := XPBWPolynomial(Symbol, RN)\bound{poly }\free{RN }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch11}
+\begin{paste}{XPBWPolynomialXmpPageFull11}{XPBWPolynomialXmpPageEmpty11}
+\pastebutton{XPBWPolynomialXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{liste : List lword := LyndonWordsList([a,b], 6)\bound{liste }\free{lword a b }}
+\indentrel{3}\begin{verbatim}
+   (11)
+                       2        2     3      2 2
+   [[a], [b], [a b], [a b], [a b ], [a b], [a b ],
+        3     4      3 2     2          2 3           2
+    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
+        4     5      4 2     3          3 3     2     2
+    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
+      2 2        2 4           3       5
+    [a b a b], [a b ], [a b a b ], [a b ]]
+                           Type: List LyndonWord Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty11}
+\begin{paste}{XPBWPolynomialXmpPageEmpty11}{XPBWPolynomialXmpPagePatch11}
+\pastebutton{XPBWPolynomialXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{liste : List lword := LyndonWordsList([a,b], 6)\bound{liste }\free{lword a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch12}
+\begin{paste}{XPBWPolynomialXmpPageFull12}{XPBWPolynomialXmpPageEmpty12}
+\pastebutton{XPBWPolynomialXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{0$poly\free{poly }}
+\indentrel{3}\begin{verbatim}
+   (12)  0
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty12}
+\begin{paste}{XPBWPolynomialXmpPageEmpty12}{XPBWPolynomialXmpPagePatch12}
+\pastebutton{XPBWPolynomialXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{0$poly\free{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch13}
+\begin{paste}{XPBWPolynomialXmpPageFull13}{XPBWPolynomialXmpPageEmpty13}
+\pastebutton{XPBWPolynomialXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{1$poly\free{poly }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty13}
+\begin{paste}{XPBWPolynomialXmpPageEmpty13}{XPBWPolynomialXmpPagePatch13}
+\pastebutton{XPBWPolynomialXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{1$poly\free{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch14}
+\begin{paste}{XPBWPolynomialXmpPageFull14}{XPBWPolynomialXmpPageEmpty14}
+\pastebutton{XPBWPolynomialXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{p : poly := a\free{a poly }\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (14)  [a]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty14}
+\begin{paste}{XPBWPolynomialXmpPageEmpty14}{XPBWPolynomialXmpPagePatch14}
+\pastebutton{XPBWPolynomialXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{p : poly := a\free{a poly }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch15}
+\begin{paste}{XPBWPolynomialXmpPageFull15}{XPBWPolynomialXmpPageEmpty15}
+\pastebutton{XPBWPolynomialXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{q : poly := b\free{b poly }\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (15)  [b]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty15}
+\begin{paste}{XPBWPolynomialXmpPageEmpty15}{XPBWPolynomialXmpPagePatch15}
+\pastebutton{XPBWPolynomialXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{q : poly := b\free{b poly }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch16}
+\begin{paste}{XPBWPolynomialXmpPageFull16}{XPBWPolynomialXmpPageEmpty16}
+\pastebutton{XPBWPolynomialXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{pq: poly := p*q\free{p q poly }\bound{pq }}
+\indentrel{3}\begin{verbatim}
+   (16)  [a b] + [b][a]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty16}
+\begin{paste}{XPBWPolynomialXmpPageEmpty16}{XPBWPolynomialXmpPagePatch16}
+\pastebutton{XPBWPolynomialXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{pq: poly := p*q\free{p q poly }\bound{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch17}
+\begin{paste}{XPBWPolynomialXmpPageFull17}{XPBWPolynomialXmpPageEmpty17}
+\pastebutton{XPBWPolynomialXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{pq :: dpoly\free{pq dpoly }}
+\indentrel{3}\begin{verbatim}
+   (17)  a b
+  Type: XDistributedPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty17}
+\begin{paste}{XPBWPolynomialXmpPageEmpty17}{XPBWPolynomialXmpPagePatch17}
+\pastebutton{XPBWPolynomialXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{pq :: dpoly\free{pq dpoly }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch18}
+\begin{paste}{XPBWPolynomialXmpPageFull18}{XPBWPolynomialXmpPageEmpty18}
+\pastebutton{XPBWPolynomialXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{mirror pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (18)  [b][a]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty18}
+\begin{paste}{XPBWPolynomialXmpPageEmpty18}{XPBWPolynomialXmpPagePatch18}
+\pastebutton{XPBWPolynomialXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{mirror pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch19}
+\begin{paste}{XPBWPolynomialXmpPageFull19}{XPBWPolynomialXmpPageEmpty19}
+\pastebutton{XPBWPolynomialXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{ListOfTerms pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (19)  [[k= [b][a],c= 1],[k= [a b],c= 1]]
+Type: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty19}
+\begin{paste}{XPBWPolynomialXmpPageEmpty19}{XPBWPolynomialXmpPagePatch19}
+\pastebutton{XPBWPolynomialXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{ListOfTerms pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch20}
+\begin{paste}{XPBWPolynomialXmpPageFull20}{XPBWPolynomialXmpPageEmpty20}
+\pastebutton{XPBWPolynomialXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{reductum pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (20)  [a b]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty20}
+\begin{paste}{XPBWPolynomialXmpPageEmpty20}{XPBWPolynomialXmpPagePatch20}
+\pastebutton{XPBWPolynomialXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{reductum pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch21}
+\begin{paste}{XPBWPolynomialXmpPageFull21}{XPBWPolynomialXmpPageEmpty21}
+\pastebutton{XPBWPolynomialXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{leadingMonomial pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (21)  [b][a]
+           Type: PoincareBirkhoffWittLyndonBasis Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty21}
+\begin{paste}{XPBWPolynomialXmpPageEmpty21}{XPBWPolynomialXmpPagePatch21}
+\pastebutton{XPBWPolynomialXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{leadingMonomial pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch22}
+\begin{paste}{XPBWPolynomialXmpPageFull22}{XPBWPolynomialXmpPageEmpty22}
+\pastebutton{XPBWPolynomialXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{coefficients pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (22)  [1,1]
+                            Type: List Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty22}
+\begin{paste}{XPBWPolynomialXmpPageEmpty22}{XPBWPolynomialXmpPagePatch22}
+\pastebutton{XPBWPolynomialXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{coefficients pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch23}
+\begin{paste}{XPBWPolynomialXmpPageFull23}{XPBWPolynomialXmpPageEmpty23}
+\pastebutton{XPBWPolynomialXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{leadingTerm pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (23)  [k= [b][a],c= 1]
+Type: Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty23}
+\begin{paste}{XPBWPolynomialXmpPageEmpty23}{XPBWPolynomialXmpPagePatch23}
+\pastebutton{XPBWPolynomialXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{leadingTerm pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch24}
+\begin{paste}{XPBWPolynomialXmpPageFull24}{XPBWPolynomialXmpPageEmpty24}
+\pastebutton{XPBWPolynomialXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{degree pq\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (24)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty24}
+\begin{paste}{XPBWPolynomialXmpPageEmpty24}{XPBWPolynomialXmpPagePatch24}
+\pastebutton{XPBWPolynomialXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{degree pq\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch25}
+\begin{paste}{XPBWPolynomialXmpPageFull25}{XPBWPolynomialXmpPageEmpty25}
+\pastebutton{XPBWPolynomialXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{pq4:=exp(pq,4)\bound{pq4 }\free{pq }}
+\indentrel{3}\begin{verbatim}
+   (25)
+                          1              1     2
+     1 + [a b] + [b][a] + Ä [a b][a b] + Ä [a b ][a]
+                          2              2
+   + 
+     1      2     3               1
+     Ä [b][a b] + Ä [b][a b][a] + Ä [b][b][a][a]
+     2            2               2
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty25}
+\begin{paste}{XPBWPolynomialXmpPageEmpty25}{XPBWPolynomialXmpPagePatch25}
+\pastebutton{XPBWPolynomialXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{pq4:=exp(pq,4)\bound{pq4 }\free{pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch26}
+\begin{paste}{XPBWPolynomialXmpPageFull26}{XPBWPolynomialXmpPageEmpty26}
+\pastebutton{XPBWPolynomialXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{log(pq4,4) - pq\free{pq4 pq }}
+\indentrel{3}\begin{verbatim}
+   (26)  0
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty26}
+\begin{paste}{XPBWPolynomialXmpPageEmpty26}{XPBWPolynomialXmpPagePatch26}
+\pastebutton{XPBWPolynomialXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{log(pq4,4) - pq\free{pq4 pq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch27}
+\begin{paste}{XPBWPolynomialXmpPageFull27}{XPBWPolynomialXmpPageEmpty27}
+\pastebutton{XPBWPolynomialXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{lp1 :lpoly := LiePoly liste.10\free{liste lpoly }\bound{lp1 }}
+\indentrel{3}\begin{verbatim}
+           3 2
+   (27)  [a b ]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty27}
+\begin{paste}{XPBWPolynomialXmpPageEmpty27}{XPBWPolynomialXmpPagePatch27}
+\pastebutton{XPBWPolynomialXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{lp1 :lpoly := LiePoly liste.10\free{liste lpoly }\bound{lp1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch28}
+\begin{paste}{XPBWPolynomialXmpPageFull28}{XPBWPolynomialXmpPageEmpty28}
+\pastebutton{XPBWPolynomialXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{lp2 :lpoly := LiePoly liste.11\free{liste lpoly }\bound{lp2 }}
+\indentrel{3}\begin{verbatim}
+           2
+   (28)  [a b a b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty28}
+\begin{paste}{XPBWPolynomialXmpPageEmpty28}{XPBWPolynomialXmpPagePatch28}
+\pastebutton{XPBWPolynomialXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{lp2 :lpoly := LiePoly liste.11\free{liste lpoly }\bound{lp2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch29}
+\begin{paste}{XPBWPolynomialXmpPageFull29}{XPBWPolynomialXmpPageEmpty29}
+\pastebutton{XPBWPolynomialXmpPageFull29}{\hidepaste}
+\tab{5}\spadcommand{lp :lpoly := [lp1, lp2]\free{lp1 lp2 lpoly }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+           3 2 2
+   (29)  [a b a b a b]
+           Type: LiePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty29}
+\begin{paste}{XPBWPolynomialXmpPageEmpty29}{XPBWPolynomialXmpPagePatch29}
+\pastebutton{XPBWPolynomialXmpPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{lp :lpoly := [lp1, lp2]\free{lp1 lp2 lpoly }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch30}
+\begin{paste}{XPBWPolynomialXmpPageFull30}{XPBWPolynomialXmpPageEmpty30}
+\pastebutton{XPBWPolynomialXmpPageFull30}{\hidepaste}
+\tab{5}\spadcommand{lpd1: dpoly := lp1\free{lp1 dpoly }\bound{lpd1 }}
+\indentrel{3}\begin{verbatim}
+   (30)
+      3 2     2         2 2                    2 2
+     a b  - 2a b a b - a b a + 4a b a b a - a b a
+   + 
+               2    2 3
+     - 2b a b a  + b a
+  Type: XDistributedPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty30}
+\begin{paste}{XPBWPolynomialXmpPageEmpty30}{XPBWPolynomialXmpPagePatch30}
+\pastebutton{XPBWPolynomialXmpPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{lpd1: dpoly := lp1\free{lp1 dpoly }\bound{lpd1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch31}
+\begin{paste}{XPBWPolynomialXmpPageFull31}{XPBWPolynomialXmpPageEmpty31}
+\pastebutton{XPBWPolynomialXmpPageFull31}{\hidepaste}
+\tab{5}\spadcommand{lpd2: dpoly := lp2\free{lp2 dpoly }\bound{lpd2 }}
+\indentrel{3}\begin{verbatim}
+   (31)
+      2         2 2          2                    2 2
+     a b a b - a b a - 3a b a b + 4a b a b a - a b a
+   + 
+         3        2             2
+     2b a b - 3b a b a + b a b a
+  Type: XDistributedPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty31}
+\begin{paste}{XPBWPolynomialXmpPageEmpty31}{XPBWPolynomialXmpPagePatch31}
+\pastebutton{XPBWPolynomialXmpPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{lpd2: dpoly := lp2\free{lp2 dpoly }\bound{lpd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch32}
+\begin{paste}{XPBWPolynomialXmpPageFull32}{XPBWPolynomialXmpPageEmpty32}
+\pastebutton{XPBWPolynomialXmpPageFull32}{\hidepaste}
+\tab{5}\spadcommand{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1\free{dpoly lpd1 lpd2 }\bound{lpd }}
+\indentrel{3}\begin{verbatim}
+   (32)
+      3 2 2         3 2 2 2      3 2     2
+     a b a b a b - a b a b a - 3a b a b a b
+   + 
+       3 2             3 2   2 2     3 3 3      3 3 2
+     4a b a b a b a - a b a b a  + 2a b a b - 3a b a b a
+   + 
+      3 3     2    2       3 2     2       2 2
+     a b a b a  - a b a b a b  + 3a b a b a b a
+   + 
+       2           2       2
+     6a b a b a b a b - 12a b a b a b a b a
+   + 
+       2         2 2     2     2 3      2     2 2
+     3a b a b a b a  - 4a b a b a b + 6a b a b a b a
+   + 
+        2     3 3    2 2 4 2     2 2 3          2 2 2   2
+     - a b a b a  + a b a b  - 3a b a b a b + 3a b a b a b
+   + 
+         2 2     3      2 2     2        2 2         2
+     - 2a b a b a b + 3a b a b a b a - 3a b a b a b a
+   + 
+      2 2   2 3         2   3 2         2   2
+     a b a b a  + 3a b a b a b  - 6a b a b a b a b
+   + 
+             2   2 2           2
+     - 3a b a b a b a + 12a b a b a b a b a
+   + 
+             2     2 2         2 2     2         2 3 3
+     - 3a b a b a b a  - 6a b a b a b a  + 3a b a b a
+   + 
+                 4 2              3
+     - 4a b a b a b  + 12a b a b a b a b
+   + 
+                  2   2                  3
+     - 12a b a b a b a b + 8a b a b a b a b
+   + 
+                      2                         2
+     - 12a b a b a b a b a + 12a b a b a b a b a
+   + 
+                   2 3      2 5 2       2 4
+     - 4a b a b a b a  + a b a b  - 3a b a b a b
+   + 
+         2 3   2        2 2   3        2 2   2
+     3a b a b a b - 2a b a b a b + 3a b a b a b a
+   + 
+           2 2       2      2 2 2 3       3   3 2
+     - 3a b a b a b a  + a b a b a  - 2b a b a b
+   + 
+         3   2            3   2 2        3
+     4b a b a b a b + 2b a b a b a - 8b a b a b a b a
+   + 
+         3     2 2       3 2     2       3 3 3
+     2b a b a b a  + 4b a b a b a  - 2b a b a
+   + 
+         2   4 2       2   3            2   3 2
+     3b a b a b  - 6b a b a b a b - 3b a b a b a
+   + 
+          2   2              2   2 2 2       2           2
+     12b a b a b a b a - 3b a b a b a  - 6b a b a b a b a
+   + 
+         2     2 3          5 2           4 2
+     3b a b a b a  - b a b a b  + 3b a b a b a
+   + 
+             3   2             3                  3 2 2
+     6b a b a b a b - 12b a b a b a b a + 3b a b a b a
+   + 
+               2   3            2   2             2 2 3
+     - 4b a b a b a b + 6b a b a b a b a - b a b a b a
+   + 
+      2 5         2 5 2      2 4   2      2 4
+     b a b a b - b a b a - 3b a b a b + 4b a b a b a
+   + 
+      2 4 2 2     2 3   3      2 3   2       2 3       2
+   - b a b a  + 2b a b a b - 3b a b a b a + b a b a b a
+  Type: XDistributedPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty32}
+\begin{paste}{XPBWPolynomialXmpPageEmpty32}{XPBWPolynomialXmpPagePatch32}
+\pastebutton{XPBWPolynomialXmpPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1\free{dpoly lpd1 lpd2 }\bound{lpd }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch33}
+\begin{paste}{XPBWPolynomialXmpPageFull33}{XPBWPolynomialXmpPageEmpty33}
+\pastebutton{XPBWPolynomialXmpPageFull33}{\hidepaste}
+\tab{5}\spadcommand{lp :: dpoly - lpd\free{lpd dpoly lp }}
+\indentrel{3}\begin{verbatim}
+   (33)  0
+  Type: XDistributedPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty33}
+\begin{paste}{XPBWPolynomialXmpPageEmpty33}{XPBWPolynomialXmpPagePatch33}
+\pastebutton{XPBWPolynomialXmpPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{lp :: dpoly - lpd\free{lpd dpoly lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch34}
+\begin{paste}{XPBWPolynomialXmpPageFull34}{XPBWPolynomialXmpPageEmpty34}
+\pastebutton{XPBWPolynomialXmpPageFull34}{\hidepaste}
+\tab{5}\spadcommand{p := 3 * lp\free{lp }\bound{pp }}
+\indentrel{3}\begin{verbatim}
+            3 2 2
+   (34)  3[a b a b a b]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty34}
+\begin{paste}{XPBWPolynomialXmpPageEmpty34}{XPBWPolynomialXmpPagePatch34}
+\pastebutton{XPBWPolynomialXmpPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{p := 3 * lp\free{lp }\bound{pp }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch35}
+\begin{paste}{XPBWPolynomialXmpPageFull35}{XPBWPolynomialXmpPageEmpty35}
+\pastebutton{XPBWPolynomialXmpPageFull35}{\hidepaste}
+\tab{5}\spadcommand{q := lp1\free{lp1 }\bound{qq }}
+\indentrel{3}\begin{verbatim}
+           3 2
+   (35)  [a b ]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty35}
+\begin{paste}{XPBWPolynomialXmpPageEmpty35}{XPBWPolynomialXmpPagePatch35}
+\pastebutton{XPBWPolynomialXmpPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{q := lp1\free{lp1 }\bound{qq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch36}
+\begin{paste}{XPBWPolynomialXmpPageFull36}{XPBWPolynomialXmpPageEmpty36}
+\pastebutton{XPBWPolynomialXmpPageFull36}{\hidepaste}
+\tab{5}\spadcommand{pq:= p * q\free{pp qq }\bound{pqpq }}
+\indentrel{3}\begin{verbatim}
+            3 2 2        3 2
+   (36)  3[a b a b a b][a b ]
+          Type: XPBWPolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty36}
+\begin{paste}{XPBWPolynomialXmpPageEmpty36}{XPBWPolynomialXmpPagePatch36}
+\pastebutton{XPBWPolynomialXmpPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{pq:= p * q\free{pp qq }\bound{pqpq }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch37}
+\begin{paste}{XPBWPolynomialXmpPageFull37}{XPBWPolynomialXmpPageEmpty37}
+\pastebutton{XPBWPolynomialXmpPageFull37}{\hidepaste}
+\tab{5}\spadcommand{pr:rpoly := p :: rpoly\free{rpoly pp }\bound{pr }}
+\indentrel{3}\begin{verbatim}
+   (37)
+       a
+    *
+           a
+        *
+               a b b
+            *
+                   a
+                *
+                     a b(a b 3 + b a(- 3))
+                   + 
+                     b(a(a b(- 9) + b a 12) + b a a(- 3))
+               + 
+                 b a(a(a b 6 + b a(- 9)) + b a a 3)
+           + 
+               b
+            *
+                   a b
+                *
+                       a
+                    *
+                         a(a b b(- 3) + b b a 9)
+                       + 
+                       b(a(a b 18 + b a(- 36)) + b a a 9)
+                   + 
+                       b
+                    *
+                         a a(a b(- 12) + b a 18)
+                       + 
+                         b a a a(- 3)
+               + 
+                   b a
+                *
+                       a
+                    *
+                     (a(a b b 3 + b a b(- 9)) + b a a b 9)
+                   + 
+                       b
+                    *
+                           a
+                        *
+                             a(a b(- 6) + b a 9)
+                           + 
+                             b a a(- 9)
+                       + 
+                         b a a a 3
+       + 
+           b
+        *
+               a
+            *
+                   a b
+                *
+                       a
+                    *
+                           a
+                        *
+                             a b b 9
+                           + 
+                             b(a b(- 18) + b a(- 9))
+                       + 
+                         b(a b a 36 + b a a(- 9))
+                   + 
+                     b(a b a a(- 18) + b a a a 9)
+               + 
+                   b a
+                *
+                       a
+                    *
+                         a(a b b(- 12) + b a b 36)
+                       + 
+                         b a a b(- 36)
+                   + 
+                       b
+                    *
+                           a
+                        *
+                             a(a b 24 + b a(- 36))
+                           + 
+                             b a a 36
+                       + 
+                         b a a a(- 12)
+           + 
+               b a a
+            *
+                 a(a(a b b 3 + b a b(- 9)) + b a a b 9)
+               + 
+                   b
+                *
+                     a(a(a b(- 6) + b a 9) + b a a(- 9))
+                   + 
+                     b a a a 3
+   + 
+       b
+    *
+           a
+        *
+               a
+            *
+                   a b
+                *
+                       a
+                    *
+                         a(a b b(- 6) + b(a b 12 + b a 6))
+                       + 
+                         b(a b a(- 24) + b a a 6)
+                   + 
+                     b(a b a a 12 + b a a a(- 6))
+               + 
+                   b a
+                *
+                       a
+                    *
+                           a
+                        *
+                             a b b 9
+                           + 
+                             b(a b(- 18) + b a(- 9))
+                       + 
+                         b(a b a 36 + b a a(- 9))
+                   + 
+                     b(a b a a(- 18) + b a a a 9)
+           + 
+               b a a
+            *
+                   a
+                *
+                     a(a b b(- 3) + b b a 9)
+                   + 
+                     b(a(a b 18 + b a(- 36)) + b a a 9)
+               + 
+               b(a a(a b(- 12) + b a 18) + b a a a(- 3))
+       + 
+           b a a a
+        *
+               a
+            *
+                 a b(a b 3 + b a(- 3))
+               + 
+                 b(a(a b(- 9) + b a 12) + b a a(- 3))
+           + 
+             b a(a(a b 6 + b a(- 9)) + b a a 3)
+    Type: XRecursivePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty37}
+\begin{paste}{XPBWPolynomialXmpPageEmpty37}{XPBWPolynomialXmpPagePatch37}
+\pastebutton{XPBWPolynomialXmpPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{pr:rpoly := p :: rpoly\free{rpoly pp }\bound{pr }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch38}
+\begin{paste}{XPBWPolynomialXmpPageFull38}{XPBWPolynomialXmpPageEmpty38}
+\pastebutton{XPBWPolynomialXmpPageFull38}{\hidepaste}
+\tab{5}\spadcommand{qr:rpoly := q :: rpoly\free{rpoly qq }\bound{qr }}
+\indentrel{3}\begin{verbatim}
+   (38)
+       a
+    *
+         a(a b b 1 + b(a b(- 2) + b a(- 1)))
+       + 
+         b(a b a 4 + b a a(- 1))
+   + 
+     b(a b a a(- 2) + b a a a 1)
+    Type: XRecursivePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty38}
+\begin{paste}{XPBWPolynomialXmpPageEmpty38}{XPBWPolynomialXmpPagePatch38}
+\pastebutton{XPBWPolynomialXmpPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{qr:rpoly := q :: rpoly\free{rpoly qq }\bound{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPagePatch39}
+\begin{paste}{XPBWPolynomialXmpPageFull39}{XPBWPolynomialXmpPageEmpty39}
+\pastebutton{XPBWPolynomialXmpPageFull39}{\hidepaste}
+\tab{5}\spadcommand{pq :: rpoly - pr*qr\free{pr qr rpoly pqpq }}
+\indentrel{3}\begin{verbatim}
+   (39)  0
+    Type: XRecursivePolynomial(Symbol,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPBWPolynomialXmpPageEmpty39}
+\begin{paste}{XPBWPolynomialXmpPageEmpty39}{XPBWPolynomialXmpPagePatch39}
+\pastebutton{XPBWPolynomialXmpPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{pq :: rpoly - pr*qr\free{pr qr rpoly pqpq }}
+\end{paste}\end{patch}
+
 @
 \section{xpoly.ht}
 \pagehead{XPolynomialXmpPage}{xpoly.ht}{XPolynomial}
@@ -22180,6 +61930,251 @@ and the shuffle-product of {\bf pr} by {\bf r}:
 \autobuttons
 \end{page}
 
+\begin{patch}{XPolynomialXmpPagePatch1}
+\begin{paste}{XPolynomialXmpPageFull1}{XPolynomialXmpPageEmpty1}
+\pastebutton{XPolynomialXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{poly := XPolynomial(Integer)\bound{poly }}
+\indentrel{3}\begin{verbatim}
+   (1)  XPolynomial Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty1}
+\begin{paste}{XPolynomialXmpPageEmpty1}{XPolynomialXmpPagePatch1}
+\pastebutton{XPolynomialXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{poly := XPolynomial(Integer)\bound{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch2}
+\begin{paste}{XPolynomialXmpPageFull2}{XPolynomialXmpPageEmpty2}
+\pastebutton{XPolynomialXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{pr: poly := 2*x + 3*y-5\free{poly }\bound{pr }}
+\indentrel{3}\begin{verbatim}
+   (2)  - 5 + x 2 + y 3
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty2}
+\begin{paste}{XPolynomialXmpPageEmpty2}{XPolynomialXmpPagePatch2}
+\pastebutton{XPolynomialXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{pr: poly := 2*x + 3*y-5\free{poly }\bound{pr }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch3}
+\begin{paste}{XPolynomialXmpPageFull3}{XPolynomialXmpPageEmpty3}
+\pastebutton{XPolynomialXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{pr2: poly := pr*pr\free{poly }\bound{pr2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  25 + x(- 20 + x 4 + y 6) + y(- 30 + x 6 + y 9)
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty3}
+\begin{paste}{XPolynomialXmpPageEmpty3}{XPolynomialXmpPagePatch3}
+\pastebutton{XPolynomialXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{pr2: poly := pr*pr\free{poly }\bound{pr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch4}
+\begin{paste}{XPolynomialXmpPageFull4}{XPolynomialXmpPageEmpty4}
+\pastebutton{XPolynomialXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{pd := expand pr\free{pr }\bound{pd }}
+\indentrel{3}\begin{verbatim}
+   (4)  - 5 + 2x + 3y
+           Type: XDistributedPolynomial(Symbol,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty4}
+\begin{paste}{XPolynomialXmpPageEmpty4}{XPolynomialXmpPagePatch4}
+\pastebutton{XPolynomialXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{pd := expand pr\free{pr }\bound{pd }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch5}
+\begin{paste}{XPolynomialXmpPageFull5}{XPolynomialXmpPageEmpty5}
+\pastebutton{XPolynomialXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{pd2 := pd*pd\free{pd }\bound{pd2 }}
+\indentrel{3}\begin{verbatim}
+                           2                   2
+   (5)  25 - 20x - 30y + 4x  + 6x y + 6y x + 9y
+           Type: XDistributedPolynomial(Symbol,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty5}
+\begin{paste}{XPolynomialXmpPageEmpty5}{XPolynomialXmpPagePatch5}
+\pastebutton{XPolynomialXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{pd2 := pd*pd\free{pd }\bound{pd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch6}
+\begin{paste}{XPolynomialXmpPageFull6}{XPolynomialXmpPageEmpty6}
+\pastebutton{XPolynomialXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{expand(pr2) - pd2\free{pr2 }\free{pd2 }}
+\indentrel{3}\begin{verbatim}
+   (6)  0
+           Type: XDistributedPolynomial(Symbol,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty6}
+\begin{paste}{XPolynomialXmpPageEmpty6}{XPolynomialXmpPagePatch6}
+\pastebutton{XPolynomialXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{expand(pr2) - pd2\free{pr2 }\free{pd2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch7}
+\begin{paste}{XPolynomialXmpPageFull7}{XPolynomialXmpPageEmpty7}
+\pastebutton{XPolynomialXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{qr := pr**3\free{pr }\bound{qr }}
+\indentrel{3}\begin{verbatim}
+   (7)
+     - 125
+   + 
+     x(150 + x(- 60 + x 8 + y 12) + y(- 90 + x 12 + y 18))
+   + 
+   y(225 + x(- 90 + x 12 + y 18) + y(- 135 + x 18 + y 27))
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty7}
+\begin{paste}{XPolynomialXmpPageEmpty7}{XPolynomialXmpPagePatch7}
+\pastebutton{XPolynomialXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{qr := pr**3\free{pr }\bound{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch8}
+\begin{paste}{XPolynomialXmpPageFull8}{XPolynomialXmpPageEmpty8}
+\pastebutton{XPolynomialXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{qd := pd**3\free{pd }\bound{qd }}
+\indentrel{3}\begin{verbatim}
+   (8)
+                              2                       2
+     - 125 + 150x + 225y - 60x  - 90x y - 90y x - 135y
+   + 
+       3      2                   2        2
+     8x  + 12x y + 12x y x + 18x y  + 12y x  + 18y x y
+   + 
+        2       3
+     18y x + 27y
+           Type: XDistributedPolynomial(Symbol,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty8}
+\begin{paste}{XPolynomialXmpPageEmpty8}{XPolynomialXmpPagePatch8}
+\pastebutton{XPolynomialXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{qd := pd**3\free{pd }\bound{qd }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch9}
+\begin{paste}{XPolynomialXmpPageFull9}{XPolynomialXmpPageEmpty9}
+\pastebutton{XPolynomialXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{ trunc(qd,2)\free{qd }}
+\indentrel{3}\begin{verbatim}
+   (9)
+                            2                       2
+   - 125 + 150x + 225y - 60x  - 90x y - 90y x - 135y
+           Type: XDistributedPolynomial(Symbol,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty9}
+\begin{paste}{XPolynomialXmpPageEmpty9}{XPolynomialXmpPagePatch9}
+\pastebutton{XPolynomialXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{ trunc(qd,2)\free{qd }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch10}
+\begin{paste}{XPolynomialXmpPageFull10}{XPolynomialXmpPageEmpty10}
+\pastebutton{XPolynomialXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{trunc(qr,2)\free{qr }}
+\indentrel{3}\begin{verbatim}
+   (10)
+     - 125 + x(150 + x(- 60) + y(- 90))
+   + 
+     y(225 + x(- 90) + y(- 135))
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty10}
+\begin{paste}{XPolynomialXmpPageEmpty10}{XPolynomialXmpPagePatch10}
+\pastebutton{XPolynomialXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{trunc(qr,2)\free{qr }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch11}
+\begin{paste}{XPolynomialXmpPageFull11}{XPolynomialXmpPageEmpty11}
+\pastebutton{XPolynomialXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{Word := OrderedFreeMonoid Symbol\bound{Word }}
+\indentrel{3}\begin{verbatim}
+   (11)  OrderedFreeMonoid Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty11}
+\begin{paste}{XPolynomialXmpPageEmpty11}{XPolynomialXmpPagePatch11}
+\pastebutton{XPolynomialXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{Word := OrderedFreeMonoid Symbol\bound{Word }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch12}
+\begin{paste}{XPolynomialXmpPageFull12}{XPolynomialXmpPageEmpty12}
+\pastebutton{XPolynomialXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{w: Word := x*y**2\free{Word }\bound{w }}
+\indentrel{3}\begin{verbatim}
+            2
+   (12)  x y
+                         Type: OrderedFreeMonoid Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty12}
+\begin{paste}{XPolynomialXmpPageEmpty12}{XPolynomialXmpPagePatch12}
+\pastebutton{XPolynomialXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{w: Word := x*y**2\free{Word }\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch13}
+\begin{paste}{XPolynomialXmpPageFull13}{XPolynomialXmpPageEmpty13}
+\pastebutton{XPolynomialXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{rquo(qr,w)\free{qr }\free{w }}
+\indentrel{3}\begin{verbatim}
+   (13)  18
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty13}
+\begin{paste}{XPolynomialXmpPageEmpty13}{XPolynomialXmpPagePatch13}
+\pastebutton{XPolynomialXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{rquo(qr,w)\free{qr }\free{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPagePatch14}
+\begin{paste}{XPolynomialXmpPageFull14}{XPolynomialXmpPageEmpty14}
+\pastebutton{XPolynomialXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sh(pr,w::poly)\free{pr }\free{w }}
+\indentrel{3}\begin{verbatim}
+   (14)
+   x(x y y 4 + y(x y 2 + y(- 5 + x 2 + y 9))) + y x y y 3
+                              Type: XPolynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialXmpPageEmpty14}
+\begin{paste}{XPolynomialXmpPageEmpty14}{XPolynomialXmpPagePatch14}
+\pastebutton{XPolynomialXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sh(pr,w::poly)\free{pr }\free{w }}
+\end{paste}\end{patch}
+
 @
 \section{xpr.ht}
 \pagehead{XPolynomialRingXmpPage}{xpr.ht}{XPolynomialRing}
@@ -22311,6 +62306,331 @@ and the following power.
 \autobuttons
 \end{page}
 
+\begin{patch}{XPolynomialRingXmpPagePatch1}
+\begin{paste}{XPolynomialRingXmpPageFull1}{XPolynomialRingXmpPageEmpty1}
+\pastebutton{XPolynomialRingXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Word := OrderedFreeMonoid(Symbol)\bound{Word }}
+\indentrel{3}\begin{verbatim}
+   (1)  OrderedFreeMonoid Symbol
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty1}
+\begin{paste}{XPolynomialRingXmpPageEmpty1}{XPolynomialRingXmpPagePatch1}
+\pastebutton{XPolynomialRingXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Word := OrderedFreeMonoid(Symbol)\bound{Word }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch2}
+\begin{paste}{XPolynomialRingXmpPageFull2}{XPolynomialRingXmpPageEmpty2}
+\pastebutton{XPolynomialRingXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{poly:= XPR(Integer,Word)\free{Word }\bound{poly }}
+\indentrel{3}\begin{verbatim}
+   (2)
+   XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty2}
+\begin{paste}{XPolynomialRingXmpPageEmpty2}{XPolynomialRingXmpPagePatch2}
+\pastebutton{XPolynomialRingXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{poly:= XPR(Integer,Word)\free{Word }\bound{poly }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch3}
+\begin{paste}{XPolynomialRingXmpPageFull3}{XPolynomialRingXmpPageEmpty3}
+\pastebutton{XPolynomialRingXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p:poly := 2 * x - 3 * y + 1\free{poly }\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (3)  1 + 2x - 3y
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty3}
+\begin{paste}{XPolynomialRingXmpPageEmpty3}{XPolynomialRingXmpPagePatch3}
+\pastebutton{XPolynomialRingXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p:poly := 2 * x - 3 * y + 1\free{poly }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch4}
+\begin{paste}{XPolynomialRingXmpPageFull4}{XPolynomialRingXmpPageEmpty4}
+\pastebutton{XPolynomialRingXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{q:poly := 2 * x + 1\free{poly }\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (4)  1 + 2x
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty4}
+\begin{paste}{XPolynomialRingXmpPageEmpty4}{XPolynomialRingXmpPagePatch4}
+\pastebutton{XPolynomialRingXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{q:poly := 2 * x + 1\free{poly }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch5}
+\begin{paste}{XPolynomialRingXmpPageFull5}{XPolynomialRingXmpPageEmpty5}
+\pastebutton{XPolynomialRingXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p + q\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+   (5)  2 + 4x - 3y
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty5}
+\begin{paste}{XPolynomialRingXmpPageEmpty5}{XPolynomialRingXmpPagePatch5}
+\pastebutton{XPolynomialRingXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p + q\free{p }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch6}
+\begin{paste}{XPolynomialRingXmpPageFull6}{XPolynomialRingXmpPageEmpty6}
+\pastebutton{XPolynomialRingXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p * q\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+                        2
+   (6)  1 + 4x - 3y + 4x  - 6y x
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty6}
+\begin{paste}{XPolynomialRingXmpPageEmpty6}{XPolynomialRingXmpPagePatch6}
+\pastebutton{XPolynomialRingXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p * q\free{p }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch7}
+\begin{paste}{XPolynomialRingXmpPageFull7}{XPolynomialRingXmpPageEmpty7}
+\pastebutton{XPolynomialRingXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{(p +q)^2 -p^2 -q^2 - 2*p*q\free{p }\free{q }}
+\indentrel{3}\begin{verbatim}
+   (7)  - 6x y + 6y x
+Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty7}
+\begin{paste}{XPolynomialRingXmpPageEmpty7}{XPolynomialRingXmpPagePatch7}
+\pastebutton{XPolynomialRingXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{(p +q)^2 -p^2 -q^2 - 2*p*q\free{p }\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch8}
+\begin{paste}{XPolynomialRingXmpPageFull8}{XPolynomialRingXmpPageEmpty8}
+\pastebutton{XPolynomialRingXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{M := SquareMatrix(2,Fraction Integer)\bound{M }}
+\indentrel{3}\begin{verbatim}
+   (8)  SquareMatrix(2,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty8}
+\begin{paste}{XPolynomialRingXmpPageEmpty8}{XPolynomialRingXmpPagePatch8}
+\pastebutton{XPolynomialRingXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{M := SquareMatrix(2,Fraction Integer)\bound{M }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch9}
+\begin{paste}{XPolynomialRingXmpPageFull9}{XPolynomialRingXmpPageEmpty9}
+\pastebutton{XPolynomialRingXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{poly1:= XPR(M,Word)\free{Word }\free{M }\bound{poly1 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+  XPolynomialRing(SquareMatrix(2,Fraction Integer),Ordere
+  dFreeMonoid Symbol)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty9}
+\begin{paste}{XPolynomialRingXmpPageEmpty9}{XPolynomialRingXmpPagePatch9}
+\pastebutton{XPolynomialRingXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{poly1:= XPR(M,Word)\free{Word }\free{M }\bound{poly1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch10}
+\begin{paste}{XPolynomialRingXmpPageFull10}{XPolynomialRingXmpPageEmpty10}
+\pastebutton{XPolynomialRingXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2]\free{M }\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+         Ú1  2¿
+   (10)  ³    ³
+         À4  8Ù
+                 Type: SquareMatrix(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty10}
+\begin{paste}{XPolynomialRingXmpPageEmpty10}{XPolynomialRingXmpPagePatch10}
+\pastebutton{XPolynomialRingXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2]\free{M }\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch11}
+\begin{paste}{XPolynomialRingXmpPageFull11}{XPolynomialRingXmpPageEmpty11}
+\pastebutton{XPolynomialRingXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{m2:M := m1 - 5/4\free{M }\free{m1 }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+         Ú  1    ¿
+         ³- Ä  2 ³
+         ³  4    ³
+   (11)  ³       ³
+         ³     27³
+         ³ 4   ÄÄ³
+         À      4Ù
+                 Type: SquareMatrix(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty11}
+\begin{paste}{XPolynomialRingXmpPageEmpty11}{XPolynomialRingXmpPagePatch11}
+\pastebutton{XPolynomialRingXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{m2:M := m1 - 5/4\free{M }\free{m1 }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch12}
+\begin{paste}{XPolynomialRingXmpPageFull12}{XPolynomialRingXmpPageEmpty12}
+\pastebutton{XPolynomialRingXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{m3: M := m2**2\free{M }\free{m2 }\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+         Ú129     ¿
+         ³ÄÄÄ  13 ³
+         ³ 16     ³
+   (12)  ³        ³
+         ³     857³
+         ³26   ÄÄÄ³
+         À      16Ù
+                 Type: SquareMatrix(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty12}
+\begin{paste}{XPolynomialRingXmpPageEmpty12}{XPolynomialRingXmpPagePatch12}
+\pastebutton{XPolynomialRingXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{m3: M := m2**2\free{M }\free{m2 }\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch13}
+\begin{paste}{XPolynomialRingXmpPageFull13}{XPolynomialRingXmpPageEmpty13}
+\pastebutton{XPolynomialRingXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{pm:poly1 := m1*x + m2*y + m3*z - 2/3\free{poly1 }\free{m1 }\free{m2 }\free{m3 }\bound{pm }}
+\indentrel{3}\begin{verbatim}
+         Ú  2     ¿             Ú  1    ¿    Ú129     ¿
+         ³- Ä   0 ³             ³- Ä  2 ³    ³ÄÄÄ  13 ³
+         ³  3     ³   Ú1  2¿    ³  4    ³    ³ 16     ³
+   (13)  ³        ³ + ³    ³x + ³       ³y + ³        ³z
+         ³       2³   À4  8Ù    ³     27³    ³     857³
+         ³ 0   - Ä³             ³ 4   ÄÄ³    ³26   ÄÄÄ³
+         À       3Ù             À      4Ù    À      16Ù
+Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty13}
+\begin{paste}{XPolynomialRingXmpPageEmpty13}{XPolynomialRingXmpPagePatch13}
+\pastebutton{XPolynomialRingXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{pm:poly1 := m1*x + m2*y + m3*z - 2/3\free{poly1 }\free{m1 }\free{m2 }\free{m3 }\bound{pm }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch14}
+\begin{paste}{XPolynomialRingXmpPageFull14}{XPolynomialRingXmpPageEmpty14}
+\pastebutton{XPolynomialRingXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{qm:poly1 := pm - m1*x\free{m1 }\free{pm }\bound{qm }}
+\indentrel{3}\begin{verbatim}
+         Ú  2     ¿   Ú  1    ¿    Ú129     ¿
+         ³- Ä   0 ³   ³- Ä  2 ³    ³ÄÄÄ  13 ³
+         ³  3     ³   ³  4    ³    ³ 16     ³
+   (14)  ³        ³ + ³       ³y + ³        ³z
+         ³       2³   ³     27³    ³     857³
+         ³ 0   - Ä³   ³ 4   ÄÄ³    ³26   ÄÄÄ³
+         À       3Ù   À      4Ù    À      16Ù
+Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty14}
+\begin{paste}{XPolynomialRingXmpPageEmpty14}{XPolynomialRingXmpPagePatch14}
+\pastebutton{XPolynomialRingXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{qm:poly1 := pm - m1*x\free{m1 }\free{pm }\bound{qm }}
+\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPagePatch15}
+\begin{paste}{XPolynomialRingXmpPageFull15}{XPolynomialRingXmpPageEmpty15}
+\pastebutton{XPolynomialRingXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{qm**3\bound{qm }}
+\indentrel{3}\begin{verbatim}
+   (15)
+     Ú   8      ¿   Ú  1  8¿    Ú43   52 ¿
+     ³- ÄÄ   0  ³   ³- Ä  Ä³    ³ÄÄ   ÄÄ ³
+     ³  27      ³   ³  3  3³    ³ 4    3 ³
+     ³          ³ + ³      ³y + ³        ³z
+     ³         8³   ³16    ³    ³104  857³
+     ³ 0    - ÄÄ³   ³ÄÄ   9³    ³ÄÄÄ  ÄÄÄ³
+     À        27Ù   À 3    Ù    À 3    12Ù
+   + 
+     Ú  129       ¿     Ú  3199     831 ¿
+     ³- ÄÄÄ  - 26 ³     ³- ÄÄÄÄ   - ÄÄÄ ³
+     ³   8        ³ 2   ³   32       4  ³
+     ³            ³y  + ³               ³y z
+     ³         857³     ³  831     26467³
+     ³- 52   - ÄÄÄ³     ³- ÄÄÄ   - ÄÄÄÄÄ³
+     À          8 Ù     À   2        32 Ù
+   + 
+     Ú  3199     831 ¿      Ú  103169     6409 ¿
+     ³- ÄÄÄÄ   - ÄÄÄ ³      ³- ÄÄÄÄÄÄ   - ÄÄÄÄ ³
+     ³   32       4  ³      ³    128        4  ³ 2
+     ³               ³z y + ³                  ³z
+     ³  831     26467³      ³   6409     820977³
+     ³- ÄÄÄ   - ÄÄÄÄÄ³      ³ - ÄÄÄÄ   - ÄÄÄÄÄÄ³
+     À   2        32 Ù      À     2        128 Ù
+   + 
+     Ú3199   831 ¿     Ú103169   6409 ¿
+     ³ÄÄÄÄ   ÄÄÄ ³     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³
+     ³ 64     8  ³ 3   ³  256      8  ³ 2
+     ³           ³y  + ³              ³y z
+     ³831   26467³     ³ 6409   820977³
+     ³ÄÄÄ   ÄÄÄÄÄ³     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³
+     À 4      64 Ù     À   4      256 Ù
+   + 
+     Ú103169   6409 ¿        Ú3178239   795341 ¿
+     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³        ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³
+     ³  256      8  ³        ³  1024      128  ³   2
+     ³              ³y z y + ³                 ³y z
+     ³ 6409   820977³        ³795341   25447787³
+     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³        ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³
+     À   4      256 Ù        À  64       1024  Ù
+   + 
+     Ú103169   6409 ¿       Ú3178239   795341 ¿
+     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³       ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³
+     ³  256      8  ³   2   ³  1024      128  ³
+     ³              ³z y  + ³                 ³z y z
+     ³ 6409   820977³       ³795341   25447787³
+     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³       ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³
+     À   4      256 Ù       À  64       1024  Ù
+   + 
+     Ú3178239   795341 ¿      Ú98625409  12326223 ¿
+     ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³      ³ÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ ³
+     ³  1024      128  ³ 2    ³  4096       256   ³ 3
+     ³                 ³z y + ³                   ³z
+     ³795341   25447787³      ³12326223  788893897³
+     ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³      ³ÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄÄ³
+     À  64       1024  Ù      À   128       4096  Ù
+Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{XPolynomialRingXmpPageEmpty15}
+\begin{paste}{XPolynomialRingXmpPageEmpty15}{XPolynomialRingXmpPagePatch15}
+\pastebutton{XPolynomialRingXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{qm**3\bound{qm }}
+\end{paste}\end{patch}
+
 @
 \section{zdsolve.ht}
 \pagehead{ZeroDimSolvePkgXmpPage}{zdsolve.ht}
@@ -22594,6 +62914,2280 @@ digits:
 \autobuttons
 \end{page}
 
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch1}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull1}{ZeroDimSolvePkgXmpPageEmpty1}
+\pastebutton{ZeroDimSolvePkgXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\indentrel{3}\begin{verbatim}
+   (1)  Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty1}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty1}{ZeroDimSolvePkgXmpPagePatch1}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{R := Integer\bound{R }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch2}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull2}{ZeroDimSolvePkgXmpPageEmpty2}
+\pastebutton{ZeroDimSolvePkgXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\indentrel{3}\begin{verbatim}
+   (2)  [x,y,z,t]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty2}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty2}{ZeroDimSolvePkgXmpPagePatch2}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch3}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull3}{ZeroDimSolvePkgXmpPageEmpty3}
+\pastebutton{ZeroDimSolvePkgXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{ls2 : List Symbol := [x,y,z,t,new()$Symbol]\bound{ls2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [x,y,z,t,%A]
+                                      Type: List Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty3}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty3}{ZeroDimSolvePkgXmpPagePatch3}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{ls2 : List Symbol := [x,y,z,t,new()$Symbol]\bound{ls2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch4}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull4}{ZeroDimSolvePkgXmpPageEmpty4}
+\pastebutton{ZeroDimSolvePkgXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{pack := ZDSOLVE(R,ls,ls2)\free{ls }\free{ls2 }\free{R }\bound{pack }}
+\indentrel{3}\begin{verbatim}
+   (4)
+  ZeroDimensionalSolvePackage(Integer,[x,y,z,t],[x,y,z,t,
+  %A])
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty4}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty4}{ZeroDimSolvePkgXmpPagePatch4}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{pack := ZDSOLVE(R,ls,ls2)\free{ls }\free{ls2 }\free{R }\bound{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch5}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull5}{ZeroDimSolvePkgXmpPageEmpty5}
+\pastebutton{ZeroDimSolvePkgXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+             2       2     2
+   (5)  x y z  + (x y  + (x  + x + 1)y + x)z + x y
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty5}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty5}{ZeroDimSolvePkgXmpPagePatch5}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch6}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull6}{ZeroDimSolvePkgXmpPageEmpty6}
+\pastebutton{ZeroDimSolvePkgXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+           2 2     2 2     2
+   (6)  x y z  + (x y  + (x  + x + 1)y + 1)z + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty6}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty6}{ZeroDimSolvePkgXmpPagePatch6}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch7}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull7}{ZeroDimSolvePkgXmpPageEmpty7}
+\pastebutton{ZeroDimSolvePkgXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+         2 2 2      2      2
+   (7)  x y z  + ((x  + x)y  + x y + x + 1)z + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty7}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty7}{ZeroDimSolvePkgXmpPagePatch7}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch8}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull8}{ZeroDimSolvePkgXmpPageEmpty8}
+\pastebutton{ZeroDimSolvePkgXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\indentrel{3}\begin{verbatim}
+   (8)
+         2       2     2
+   [x y z  + (x y  + (x  + x + 1)y + x)z + x y,
+       2 2     2 2     2
+    x y z  + (x y  + (x  + x + 1)y + 1)z + x,
+     2 2 2      2      2
+    x y z  + ((x  + x)y  + x y + x + 1)z + 1]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty8}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty8}{ZeroDimSolvePkgXmpPagePatch8}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch9}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull9}{ZeroDimSolvePkgXmpPageEmpty9}
+\pastebutton{ZeroDimSolvePkgXmpPageFull9}{\hidepaste}
+\tab{5}\spadcommand{triangSolve(lp)$pack\free{lp }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [
+     {
+          20     19      18      17       16      15
+         z   - 6z   - 41z   + 71z   + 106z   + 92z
+       + 
+             14       13       12       11       10
+         197z   + 145z   + 257z   + 278z   + 201z
+       + 
+             9       8       7       6      5       4
+         278z  + 257z  + 145z  + 197z  + 92z  + 106z
+       + 
+            3      2
+         71z  - 41z  - 6z + 1
+       ,
+
+                      19            18             17
+             14745844z   + 50357474z   - 130948857z
+           + 
+                         16             15             14
+             - 185261586z   - 180077775z   - 338007307z
+           + 
+                         13             12             11
+             - 275379623z   - 453190404z   - 474597456z
+           + 
+                         10             9             8
+             - 366147695z   - 481433567z  - 430613166z
+           + 
+                         7             6             5
+             - 261878358z  - 326073537z  - 163008796z
+           + 
+                         4             3            2
+             - 177213227z  - 104356755z  + 65241699z
+           + 
+             9237732z - 1567348
+        *
+           y
+       + 
+                 19           18            17
+         1917314z   + 6508991z   - 16973165z
+       + 
+                    16            15            14
+         - 24000259z   - 23349192z   - 43786426z
+       + 
+                    13            12            11
+         - 35696474z   - 58724172z   - 61480792z
+       + 
+                    10            9            8
+         - 47452440z   - 62378085z  - 55776527z
+       + 
+                    7            6            5
+         - 33940618z  - 42233406z  - 21122875z
+       + 
+                    4            3           2
+         - 22958177z  - 13504569z  + 8448317z  + 1195888z
+       + 
+         - 202934
+       ,
+
+               3       2       3    2               2
+             (z  - 2z)y  + (- z  - z  - 2z - 1)y - z  - z
+           + 
+             1
+        *
+           x
+       + 
+          2
+         z  - 1
+       }
+     ]
+             Type: List RegularChain(Integer,[x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty9}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty9}{ZeroDimSolvePkgXmpPagePatch9}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{triangSolve(lp)$pack\free{lp }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch10}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull10}{ZeroDimSolvePkgXmpPageEmpty10}
+\pastebutton{ZeroDimSolvePkgXmpPageFull10}{\hidepaste}
+\tab{5}\spadcommand{univariateSolve(lp)$pack\free{lp }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (10)
+   [
+     [
+       complexRoots =
+            12      11      10     9     8      7      6
+           ?   - 12?   + 24?   + 4?  - 9?  + 27?  - 21?
+         + 
+              5     4     3      2
+           27?  - 9?  + 4?  + 24?  - 12? + 1
+       ,
+
+       coordinates =
+         [
+                       11        10         9        8
+             63x + 62%A   - 721%A   + 1220%A  + 705%A
+           + 
+                    7         6        5         4       3
+             - 285%A  + 1512%A  - 735%A  + 1401%A  - 21%A
+           + 
+                  2
+             215%A  + 1577%A - 142
+           ,
+
+                       11        10         9        8
+             63y - 75%A   + 890%A   - 1682%A  - 516%A
+           + 
+                  7         6         5         4        3
+             588%A  - 1953%A  + 1323%A  - 1815%A  + 426%A
+           + 
+                    2
+             - 243%A  - 1801%A + 679
+           ,
+          z - %A]
+       ]
+     ,
+
+                     6    5    4    3    2
+     [complexRoots= ?  + ?  + ?  + ?  + ?  + ? + 1,
+                          5       3
+      coordinates= [x - %A ,y - %A ,z - %A]]
+     ,
+
+                     2
+     [complexRoots= ?  + 5? + 1,
+      coordinates= [x - 1,y - 1,z - %A]]
+     ]
+Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty10}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty10}{ZeroDimSolvePkgXmpPagePatch10}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{univariateSolve(lp)$pack\free{lp }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch11}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull11}{ZeroDimSolvePkgXmpPageEmpty11}
+\pastebutton{ZeroDimSolvePkgXmpPageFull11}{\hidepaste}
+\tab{5}\spadcommand{lr := realSolve(lp)$pack\free{lp }\free{pack }\bound{lr }}
+\indentrel{3}\begin{verbatim}
+   (11)
+   [
+     [%R1,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄÄ %R1
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄ %R1
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄ %R1
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R1 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄ %R1
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄ %R1
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R1 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R2,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄÄ %R2
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄ %R2
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄ %R2
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R2 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄ %R2
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄ %R2
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R2 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R3,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄÄ %R3
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄ %R3
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄ %R3
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R3 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄ %R3
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄ %R3
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R3 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R4,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄÄ %R4
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄ %R4
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄ %R4
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R4 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄ %R4
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄ %R4
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R4 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R5,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄÄ %R5
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄ %R5
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄ %R5
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R5 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄ %R5
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄ %R5
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R5 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R6,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄÄ %R6
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄ %R6
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄ %R6
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R6 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄ %R6
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄ %R6
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R6 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R7,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄÄ %R7
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄ %R7
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄ %R7
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R7 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄ %R7
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄ %R7
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R7 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ,
+
+     [%R8,
+
+         1184459    19   2335702    18   5460230    17
+         ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8
+         1645371          548457          182819
+       + 
+         79900378    16   43953929    15   13420192    14
+         ÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8
+          1645371          548457           182819
+       + 
+         553986    13   193381378    12   35978916    11
+         ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8
+          3731           1645371           182819
+       + 
+         358660781    10   271667666    9   118784873    8
+         ÄÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄÄ %R8
+          1645371           1645371           548457
+       + 
+         337505020    7   1389370    6   688291    5
+         ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄ %R8
+          1645371          11193          4459
+       + 
+         3378002    4   140671876    3   32325724    2
+         ÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄ %R8
+          42189          1645371          548457
+       + 
+           8270       9741532
+         - ÄÄÄÄ %R8 - ÄÄÄÄÄÄÄ
+            343       1645371
+       ,
+
+            91729    19   487915    18   4114333    17
+         - ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄ %R8
+           705159         705159          705159
+       + 
+           1276987    16   13243117    15   16292173    14
+         - ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8
+            235053          705159           705159
+       + 
+           26536060    13   722714    12   5382578    11
+         - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8
+            705159           18081          100737
+       + 
+           15449995    10   14279770    9   6603890    8
+         - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄ %R8
+            235053           235053          100737
+       + 
+           409930    7   37340389    6   34893715    5
+         - ÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8
+            6027          705159          705159
+       + 
+           26686318    4   801511    3   17206178    2
+         - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8
+            705159          26117         705159
+       + 
+           4406102       377534
+         - ÄÄÄÄÄÄÄ %R8 + ÄÄÄÄÄÄ
+            705159       705159
+       ]
+     ]
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty11}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty11}{ZeroDimSolvePkgXmpPagePatch11}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{lr := realSolve(lp)$pack\free{lp }\free{pack }\bound{lr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch12}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull12}{ZeroDimSolvePkgXmpPageEmpty12}
+\pastebutton{ZeroDimSolvePkgXmpPageFull12}{\hidepaste}
+\tab{5}\spadcommand{\# lr\free{lr }}
+\indentrel{3}\begin{verbatim}
+   (12)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty12}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty12}{ZeroDimSolvePkgXmpPagePatch12}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{\# lr\free{lr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch13}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull13}{ZeroDimSolvePkgXmpPageEmpty13}
+\pastebutton{ZeroDimSolvePkgXmpPageFull13}{\hidepaste}
+\tab{5}\spadcommand{[[approximate(r,1/1000000) for r in point] for point in lr]\free{lr }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   [
+        10048059
+     [- ÄÄÄÄÄÄÄÄ,
+         2097152
+
+        450305731698538794352439791383896641459673197621_
+         17682193358812083855163140589245671760914236296_
+         95777403099833360761048898228916578137094309838_
+         59733113720258484693913237615701950676035760116_
+         59174549868153820987890948515234203928112931261_
+         41329856546977145464661495487825919941188447041_
+         72244049192156726354215802806143775884436463441_
+         0045253024786561923163288214175
+      /
+        450305728302524548851651180698582663508310069375_
+         73204652805547068656449495775099168672018894380_
+         90408354817931718593862797624551518983570793048_
+         77442429148870882984032418920030143612331486020_
+         08214437337907553112436329198648954217042289495_
+         71290016119498807957023663865443069392027148979_
+         68826671232335604349152343406892427528041733857_
+         4817381189277066143312396681216
+       ,
+
+        210626076882347507389479868048601659624960714869_
+         06855387636837150206396808586496507900558895056_
+         46893309447097099937802187329095325898785247249_
+         02071750498366048207515661873872451468533306001_
+         12029646351663813515432559822002503052839810868_
+         37110614842307026091211297929876896285681830479_
+         05476005638076266490561846205530604781619178201_
+         15887037891389881895
+      /
+        210626060949846419247211380481647417534196295329_
+         64341024139031423687579676852738885855909759652_
+         11778862189872881953943640246297357061959812326_
+         10365979902512686325867656720234210687703171018_
+         42474841814232889218376812370627084702957062184_
+         85928867400771937828499200923760593314168901000_
+         66637389634759811822855673103707202647449677622_
+         83837629939232800768
+       ]
+     ,
+
+        2563013
+     [- ÄÄÄÄÄÄÄ,
+        2097152
+
+       -
+           261134617679192778969861769323775771923825996_
+            30635417819227523304401898996680729283384907_
+            68623593207442125925986733815932243504809294_
+            83752303023733723680666816744617300172727135_
+            3311571242897
+         /
+           116522540050522253058398191600458914375722661_
+            02768589900087901348199149409224137539839713_
+            94019523433320408139928153188829495755455163_
+            96341761930839597754479714023146923426903492_
+            1938055593984
+       ,
+
+        357259455027591722109658872961578827299851705467_
+         56032395781981410060340917352828265906219023044_
+         66963941971038923304526273329316373757450061978_
+         9892286110976997087250466235373
+      /
+        103954826934559893687707124483402605580081455112_
+         01705922005223665917594096594864423391410294529_
+         50265179989960104811875822530205346505131581243_
+         9017247289173865014702966308864
+       ]
+     ,
+
+        1715967
+     [- ÄÄÄÄÄÄÄ,
+        2097152
+
+       -
+           421309353378430352108483951797708239037726150_
+            39695862248289984366060306560763593745648137_
+            73498376603121267822565801436206939519951465_
+            18222580524697287410022543952491
+         /
+           944181414418537445864969203434922405243659747_
+            09662536639306419607958058825854931998401916_
+            99917659443264824641135187383583888147867340_
+            19307857605820364195856822304768
+       ,
+
+        763583334711264422251562542441083122534747566900_
+         85893388341621725019049943763467308768090428452_
+         08919919925302105720971453918982731389072591403_
+         5
+      /
+        262418876408609719978429761047806663393423046789_
+         58516022785809785037845492057884990196406022669_
+         66026891580103543567625039018629887141284916756_
+         48
+       ]
+     ,
+
+         437701
+     [- ÄÄÄÄÄÄÄ,
+        2097152
+
+        168310690863834958832217233265422591356298631318_
+         19510314527501614414974734553281507213648683555_
+         79646781603507777199075077835213366484533654913_
+         83623741304759
+      /
+        168310686809521338900170998270591363896307766873_
+         12261111677851880049074252262986803258878109626_
+         14140298597366984264887998908377068799998454233_
+         81649008099328
+       ,
+
+        496155010983501018642268101342210873595871480100_
+         37606397079680966469128267084728344431172391721_
+         9104249213450966312411133
+      /
+        496154987275773831550919207821020902985289711861_
+         10971262363840408293765926191431317025486746479_
+         2718363492160482442215424
+       ]
+     ,
+
+       222801
+     [ÄÄÄÄÄÄÄ,
+      2097152
+
+       -
+           899488488040242826510759512197069142713604569_
+            25419782755730018652137599215881377166961263_
+            49101655220195142994932299137183241705867672_
+            383477
+         /
+           116788999866502637217776510069188858270896996_
+            02299347696908357524570777794164352094737678_
+            66507769405888942764587718542434255625992456_
+            372224
+       ,
+
+       -
+           238970488813315687832080154437380839561277150_
+            92084910198474529918855095465195254678390166_
+            13593999693886640036283570552321155037871291_
+            458703265
+         /
+           535548727364509632609040328668993190598822544_
+            46854114332215938336811929575628336714686542_
+            90340746993656285925599117602120446183443145_
+            479421952
+       ]
+     ,
+
+       765693
+     [ÄÄÄÄÄÄÄ,
+      2097152
+
+        855896921981671626787324476117819808872469895861_
+         66701402137657543220023032516857861186783308402_
+         03328837654339523418704917749518340772512899000_
+         391009630373148561
+      /
+        294144244553301079097642841137639349981558021594_
+         58569179064525354957230138568189417023302287798_
+         90141296236721138154231997238917322156711965244_
+         4639331719460159488
+       ,
+
+       -
+           205761823058257210124765032486024256111130258_
+            15435888088439236627675493822416593627122907_
+            77612800192921420574408948085193743688582762_
+            2246433251878894899015
+         /
+           267159820332573553809795235350145022057631375_
+            98908350970917225206427101987719026671839489_
+            06289863714759678360292483949204616471537777_
+            775324180661095366656
+       ]
+     ,
+
+      5743879
+     [ÄÄÄÄÄÄÄ,
+      2097152
+
+        107628881696890684795554639477357020817145672494_
+         26186140236631235747689608504342639713980725465_
+         92772662158833449797698617455397887562900072984_
+         76800060834355318980169340872720504761255988923_
+         27575638305286889535354218094827710589175426028_
+         90060941949620874083007858366669453501766248414_
+         88732463225
+      /
+        313176895708031794664846194002355204419037661345_
+         85849862285496319161966016162197817656155325322_
+         94746529648276430583810894079374566460757823146_
+         88858119555602920851521883888320031865840746939_
+         94260632605898286123092315966691297079864813198_
+         51571942927230340622934023923486703042068153044_
+         0845099008
+       ,
+
+       -
+           211328669918575091836412047556545843787017248_
+            98654859943898281353352644446652845575264927_
+            34931691731407872701432935503473348172076098_
+            72054584900878007756416053431789468836611952_
+            97399805029441626685500981279619504962102219_
+            42878089359674925850594427768502251789758706_
+            752831632503615
+         /
+           162761558493798758024290662434710458088914446_
+            61684597180431538394083725255333098080703636_
+            99585502216011211087103263609551026027769414_
+            08739114812622116813978168258743807532259146_
+            61319399754572005223498385689642856344480185_
+            62038272378787354460106106141518010935617205_
+            1706396253618176
+       ]
+     ,
+
+      19739877
+     [ÄÄÄÄÄÄÄÄ,
+       2097152
+
+       -
+           299724993683270330379901580486152094921504038_
+            75007071777012857667201925305794224789535660_
+            24359860143101547801638082771611160372212874_
+            84777803580987284314922548423836585801362934_
+            17053217025823333509180096017899370239859353_
+            04900460493389873837030853410347089908880814_
+            85398113201846458245880061539477074169948729_
+            58759602107502158919488144768548710315309312_
+            95467332190133702671098200902282300510751860_
+            71859284570302778073977965258138627622392869_
+            96106809728023675
+         /
+           230843327485227859072891008119181102390650414_
+            13214326461239367948739333192706089607021381_
+            93417647898360620229519176632937631786851455_
+            01476602720625902225250555174182368889688380_
+            66366025744317604722402920931967294751602472_
+            68834121141893318848728661844434927287285112_
+            89708076755286489505658586403317856591038706_
+            50061128015164035227410373609905560544769495_
+            27059227070809593049491257519554708879259595_
+            52929920110858560812556635485429471554031675_
+            979542656381353984
+       ,
+
+       -
+           512818926354822848909627639786894008060093841_
+            06630804594079663358450092641094905204598253_
+            16250084723010047035024497436523038925818959_
+            28931293158470135392762143543439867426304729_
+            39091228501338519906964902315660943719943337_
+            95070782624011727587749989296611277318372294_
+            62420711653791043655457414608288470130554391_
+            26204193548854107359401577758966028223645758_
+            64611831512943973974715166920465061850603762_
+            87516256195847052412587282839139194642913955
+         /
+           228828193977843933053120879318129047118363109_
+            24553689903863908242435094636442362497730806_
+            47438987739144921607794682653851741189091711_
+            74186814511497833728419182249767586835872948_
+            66447308566225526872092037244118004814057028_
+            37198310642291275676195774614443815996713502_
+            62939174978359004147086012775237299648862774_
+            26724876224800632688088893248918508424949343_
+            47337603075939980268208482904859678177751444_
+            65749979827872616963053217673201717237252096
+       ]
+     ]
+                       Type: List List Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty13}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty13}{ZeroDimSolvePkgXmpPagePatch13}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{[[approximate(r,1/1000000) for r in point] for point in lr]\free{lr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch14}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull14}{ZeroDimSolvePkgXmpPageEmpty14}
+\pastebutton{ZeroDimSolvePkgXmpPageFull14}{\hidepaste}
+\tab{5}\spadcommand{lpr := positiveSolve(lp)$pack\free{lp }\free{pack }\bound{lpr }}
+\indentrel{3}\begin{verbatim}
+   (14)  []
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty14}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty14}{ZeroDimSolvePkgXmpPagePatch14}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{lpr := positiveSolve(lp)$pack\free{lp }\free{pack }\bound{lpr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch15}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull15}{ZeroDimSolvePkgXmpPageEmpty15}
+\pastebutton{ZeroDimSolvePkgXmpPageFull15}{\hidepaste}
+\tab{5}\spadcommand{f0 := x**3 + y + z + t- 1\bound{f0 }}
+\indentrel{3}\begin{verbatim}
+                  3
+   (15)  z + y + x  + t - 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty15}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty15}{ZeroDimSolvePkgXmpPagePatch15}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{f0 := x**3 + y + z + t- 1\bound{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch16}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull16}{ZeroDimSolvePkgXmpPageEmpty16}
+\pastebutton{ZeroDimSolvePkgXmpPageFull16}{\hidepaste}
+\tab{5}\spadcommand{f1 := x + y**3 + z + t -1\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+              3
+   (16)  z + y  + x + t - 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty16}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty16}{ZeroDimSolvePkgXmpPagePatch16}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{f1 := x + y**3 + z + t -1\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch17}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull17}{ZeroDimSolvePkgXmpPageEmpty17}
+\pastebutton{ZeroDimSolvePkgXmpPageFull17}{\hidepaste}
+\tab{5}\spadcommand{f2 := x + y + z**3 + t-1\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+          3
+   (17)  z  + y + x + t - 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty17}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty17}{ZeroDimSolvePkgXmpPagePatch17}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{f2 := x + y + z**3 + t-1\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch18}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull18}{ZeroDimSolvePkgXmpPageEmpty18}
+\pastebutton{ZeroDimSolvePkgXmpPageFull18}{\hidepaste}
+\tab{5}\spadcommand{f3 := x + y + z + t**3 -1\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+                      3
+   (18)  z + y + x + t  - 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty18}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty18}{ZeroDimSolvePkgXmpPagePatch18}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{f3 := x + y + z + t**3 -1\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch19}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull19}{ZeroDimSolvePkgXmpPageEmpty19}
+\pastebutton{ZeroDimSolvePkgXmpPageFull19}{\hidepaste}
+\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
+\indentrel{3}\begin{verbatim}
+   (19)
+             3               3
+   [z + y + x  + t - 1, z + y  + x + t - 1,
+     3                               3
+    z  + y + x + t - 1, z + y + x + t  - 1]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty19}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty19}{ZeroDimSolvePkgXmpPagePatch19}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch20}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull20}{ZeroDimSolvePkgXmpPageEmpty20}
+\pastebutton{ZeroDimSolvePkgXmpPageFull20}{\hidepaste}
+\tab{5}\spadcommand{lts := triangSolve(lf)$pack\free{lf }\free{pack }\bound{lts }}
+\indentrel{3}\begin{verbatim}
+   (20)
+   [
+       2           3        3
+     {t  + t + 1, z  - z - t  + t,
+
+                 3      2
+         (3z + 3t  - 3)y
+       + 
+            2      3           6     3            3      2
+         (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
+       + 
+            6     3          9     6     3
+         (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
+       ,
+      x + y + z}
+     ,
+
+       16     13     10     7      4      2
+     {t   - 6t   + 9t   + 4t  + 15t  - 54t  + 27,
+
+                     15            14             13
+             4907232t   + 40893984t   - 115013088t
+           + 
+                      12            11             10
+             22805712t   + 36330336t   + 162959040t
+           + 
+                         9             8             7
+             - 159859440t  - 156802608t  + 117168768t
+           + 
+                       6             5             4
+             126282384t  - 129351600t  + 306646992t
+           + 
+                       3              2
+             475302816t  - 1006837776t  - 237269088t
+           + 
+             480716208
+        *
+           z
+       + 
+            54       51        48      46         45
+         48t   - 912t   + 8232t   - 72t   - 46848t
+       + 
+              43          42        40          39
+         1152t   + 186324t   - 3780t   - 543144t
+       + 
+                38         37           36         35
+         - 3168t   - 21384t   + 1175251t   + 41184t
+       + 
+                34           33          32           31
+         278003t   - 1843242t   - 301815t   - 1440726t
+       + 
+                 30           29           28          27
+         1912012t   + 1442826t   + 4696262t   - 922481t
+       + 
+                   26            25          24
+         - 4816188t   - 10583524t   - 208751t
+       + 
+                  23            22          21
+         11472138t   + 16762859t   - 857663t
+       + 
+                    20            19           18
+         - 19328175t   - 18270421t   + 4914903t
+       + 
+                  17            16           15
+         22483044t   + 12926517t   - 8605511t
+       + 
+                    14           13           12
+         - 17455518t   - 5014597t   + 8108814t
+       + 
+                 11          10           9           8
+         8465535t   + 190542t   - 4305624t  - 2226123t
+       + 
+                7           6          5          4
+         661905t  + 1169775t  + 226260t  - 209952t
+       + 
+                  3
+         - 141183t  + 27216t
+       ,
+
+                 3      2
+         (3z + 3t  - 3)y
+       + 
+            2      3           6     3            3      2
+         (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
+       + 
+            6     3          9     6     3
+         (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
+       ,
+                   3
+      x + y + z + t  - 1}
+     ,
+              2                       2
+    {t,z - 1,y  - 1,x + y}, {t - 1,z,y  - 1,x + y},
+            2
+    {t - 1,z  - 1,z y + 1,x},
+
+       16     13     10     7      4      2
+     {t   - 6t   + 9t   + 4t  + 15t  - 54t  + 27,
+
+                     29            28             27
+             4907232t   + 40893984t   - 115013088t
+           + 
+                       26             25             24
+             - 1730448t   - 168139584t   + 738024480t
+           + 
+                         23             22              21
+             - 195372288t   + 315849456t   - 2567279232t
+           + 
+                       20              19              18
+             937147968t   + 1026357696t   + 4780488240t
+           + 
+                          17              16
+             - 2893767696t   - 5617160352t
+           + 
+                          15              14
+             - 3427651728t   + 5001100848t
+           + 
+                        13              12             11
+             8720098416t   + 2331732960t   - 499046544t
+           + 
+                           10              9
+             - 16243306272t   - 9748123200t
+           + 
+                        8               7               6
+             3927244320t  + 25257280896t  + 10348032096t
+           + 
+                           5               4             3
+             - 17128672128t  - 14755488768t  + 544086720t
+           + 
+                         2
+             10848188736t  + 1423614528t - 2884297248
+        *
+           z
+       + 
+              68        65         62       60          59
+         - 48t   + 1152t   - 13560t   + 360t   + 103656t
+       + 
+                57          56         54           53
+         - 7560t   - 572820t   + 71316t   + 2414556t
+       + 
+              52          51           50         49
+         2736t   - 402876t   - 7985131t   - 49248t
+       + 
+                 48            47          46           45
+         1431133t   + 20977409t   + 521487t   - 2697635t
+       + 
+                    44           43           42
+         - 43763654t   - 3756573t   - 2093410t
+       + 
+                  41            40            39
+         71546495t   + 19699032t   + 35025028t
+       + 
+                    38            37             36
+         - 89623786t   - 77798760t   - 138654191t
+       + 
+                  35             34             33
+         87596128t   + 235642497t   + 349607642t
+       + 
+                    32             31             30
+         - 93299834t   - 551563167t   - 630995176t
+       + 
+                   29             28             27
+         186818962t   + 995427468t   + 828416204t
+       + 
+                     26              25              24
+         - 393919231t   - 1076617485t   - 1609479791t
+       + 
+                   23              22              21
+         595738126t   + 1198787136t   + 4342832069t
+       + 
+                      20              19              18
+         - 2075938757t   - 4390835799t   - 4822843033t
+       + 
+                    17              16              15
+         6932747678t   + 6172196808t   + 1141517740t
+       + 
+                      14              13              12
+         - 4981677585t   - 9819815280t   - 7404299976t
+       + 
+                     11               10               9
+         - 157295760t   + 29124027630t   + 14856038208t
+       + 
+                       8               7              6
+         - 16184101410t  - 26935440354t  - 3574164258t
+       + 
+                     5               4              3
+         10271338974t  + 11191425264t  + 6869861262t
+       + 
+                      2
+         - 9780477840t  - 3586674168t + 2884297248
+       ,
+
+               3      3      2      6      3           9
+             3z  + (6t  - 6)z  + (6t  - 12t  + 3)z + 2t
+           + 
+                 6    3
+             - 6t  + t  + 3t
+        *
+           y
+       + 
+            3      3      6      3      2
+         (3t  - 3)z  + (6t  - 12t  + 6)z
+       + 
+            9      6      3          12     9     6     3
+         (4t  - 12t  + 11t  - 3)z + t   - 4t  + 5t  - 2t
+       ,
+                   3
+      x + y + z + t  - 1}
+     ,
+            2
+    {t - 1,z  - 1,y,x + z},
+
+       8    7    6     5     4     3      2
+     {t  + t  + t  - 2t  - 2t  - 2t  + 19t  + 19t - 8,
+
+                     7           6           5
+             2395770t  + 3934440t  - 3902067t
+           + 
+                        4           3            2
+             - 10084164t  - 1010448t  + 32386932t
+           + 
+             22413225t - 10432368
+        *
+           z
+       + 
+                  7           6           5           4
+         - 463519t  + 3586833t  + 9494955t  - 8539305t
+       + 
+                    3            2
+         - 33283098t  + 35479377t  + 46263256t - 17419896
+       ,
+
+               4      3      3       6      3      2
+             3z  + (9t  - 9)z  + (12t  - 24t  + 9)z
+           + 
+                    3                    6      4      3
+             (- 152t  + 219t - 67)z - 41t  + 57t  + 25t
+           + 
+             - 57t + 16
+        *
+           y
+       + 
+            3      4      6      3      3
+         (3t  - 3)z  + (9t  - 18t  + 9)z
+       + 
+                3              2
+         (- 181t  + 270t - 89)z
+       + 
+               6       4      3                    7
+         (- 92t  + 135t  + 49t  - 135t + 43)z + 27t
+       + 
+              6      4       3
+         - 27t  - 54t  + 396t  - 486t + 144
+       ,
+                   3
+      x + y + z + t  - 1}
+     ,
+            3
+    {t,z - t  + 1,y - 1,x - 1}, {t - 1,z,y,x},
+    {t,z - 1,y,x}, {t,z,y - 1,x}, {t,z,y,x - 1}]
+             Type: List RegularChain(Integer,[x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty20}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty20}{ZeroDimSolvePkgXmpPagePatch20}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{lts := triangSolve(lf)$pack\free{lf }\free{pack }\bound{lts }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch21}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull21}{ZeroDimSolvePkgXmpPageEmpty21}
+\pastebutton{ZeroDimSolvePkgXmpPageFull21}{\hidepaste}
+\tab{5}\spadcommand{univariateSolve(lf)$pack\free{lf }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   [
+     [complexRoots= ?,
+      coordinates= [x - 1,y - 1,z + 1,t - %A]]
+     ,
+    [complexRoots= ?,coordinates= [x,y - 1,z,t - %A]],
+    [complexRoots= ? - 1,coordinates= [x,y,z,t - %A]],
+    [complexRoots= ?,coordinates= [x - 1,y,z,t - %A]],
+    [complexRoots= ?,coordinates= [x,y,z - 1,t - %A]],
+
+     [complexRoots= ? - 2,
+      coordinates= [x - 1,y + 1,z,t - 1]]
+     ,
+    [complexRoots= ?,coordinates= [x + 1,y - 1,z,t - 1]],
+
+     [complexRoots= ? - 1,
+      coordinates= [x - 1,y + 1,z - 1,t]]
+     ,
+
+     [complexRoots= ? + 1,
+      coordinates= [x + 1,y - 1,z - 1,t]]
+     ,
+
+                     6     3     2
+     [complexRoots= ?  - 2?  + 3?  - 3,
+
+       coordinates =
+                 3                  3
+         [2x + %A  + %A - 1, 2y + %A  + %A - 1, z - %A,
+          t - %A]
+       ]
+     ,
+
+                     5     3     2
+     [complexRoots= ?  + 3?  - 2?  + 3? - 3,
+
+       coordinates =
+                              3
+         [x - %A,y - %A,z + %A  + 2%A - 1,t - %A]
+       ]
+     ,
+
+                     4    3     2
+     [complexRoots= ?  - ?  - 2?  + 3,
+
+       coordinates =
+                3                 3
+         [x + %A  - %A - 1, y + %A  - %A - 1,
+                3
+          z - %A  + 2%A + 1, t - %A]
+       ]
+     ,
+
+     [complexRoots= ? + 1,
+      coordinates= [x - 1,y - 1,z,t - %A]]
+     ,
+
+                     6     3     2
+     [complexRoots= ?  + 2?  + 3?  - 3,
+
+       coordinates =
+                 3                          3
+         [2x - %A  - %A - 1, y + %A, 2z - %A  - %A - 1,
+          t + %A]
+       ]
+     ,
+
+                     6      4      3      2
+     [complexRoots= ?  + 12?  + 20?  - 45?  - 42? - 953,
+
+       coordinates =
+         [
+                          5       4       3        2
+             12609x + 23%A  + 49%A  - 46%A  + 362%A
+           + 
+             - 5015%A - 8239
+           ,
+
+                          5       4       3        2
+             25218y + 23%A  + 49%A  - 46%A  + 362%A
+           + 
+             7594%A - 8239
+           ,
+
+                          5       4       3        2
+             25218z + 23%A  + 49%A  - 46%A  + 362%A
+           + 
+             7594%A - 8239
+           ,
+
+                          5       4       3        2
+             12609t + 23%A  + 49%A  - 46%A  + 362%A
+           + 
+             - 5015%A - 8239
+           ]
+       ]
+     ,
+
+                     5      3      2
+     [complexRoots= ?  + 12?  - 16?  + 48? - 96,
+
+       coordinates =
+                 3
+         [8x + %A  + 8%A - 8,2y - %A,2z - %A,2t - %A]
+       ]
+     ,
+
+                     5    4     3     2
+     [complexRoots= ?  + ?  - 5?  - 3?  + 9? + 3,
+
+       coordinates =
+                 3                   3
+         [2x - %A  + 2%A - 1, 2y + %A  - 4%A + 1,
+                 3                   3
+          2z - %A  + 2%A - 1, 2t - %A  + 2%A - 1]
+       ]
+     ,
+
+                     4     3     2
+     [complexRoots= ?  - 3?  + 4?  - 6? + 13,
+
+       coordinates =
+                  3      2
+         [9x - 2%A  + 4%A  - %A + 2,
+                 3      2
+          9y + %A  - 2%A  + 5%A - 1,
+                 3      2
+          9z + %A  - 2%A  + 5%A - 1,
+                 3      2
+          9t + %A  - 2%A  - 4%A - 1]
+       ]
+     ,
+
+                     4      2
+     [complexRoots= ?  - 11?  + 37,
+
+       coordinates =
+                 2             2                   2
+         [3x - %A  + 7, 6y + %A  + 3%A - 7, 3z - %A  + 7,
+                 2
+          6t + %A  - 3%A - 7]
+       ]
+     ,
+
+     [complexRoots= ? + 1,
+      coordinates= [x - 1,y,z - 1,t + 1]]
+     ,
+
+     [complexRoots= ? + 2,
+      coordinates= [x,y - 1,z - 1,t + 1]]
+     ,
+
+     [complexRoots= ? - 2,
+      coordinates= [x,y - 1,z + 1,t - 1]]
+     ,
+    [complexRoots= ?,coordinates= [x,y + 1,z - 1,t - 1]],
+
+     [complexRoots= ? - 2,
+      coordinates= [x - 1,y,z + 1,t - 1]]
+     ,
+    [complexRoots= ?,coordinates= [x + 1,y,z - 1,t - 1]],
+
+                     4     3      2
+     [complexRoots= ?  + 5?  + 16?  + 30? + 57,
+
+       coordinates =
+                     3       2
+         [151x + 15%A  + 54%A  + 104%A + 93,
+                     3       2
+          151y - 10%A  - 36%A  - 19%A - 62,
+                    3       2
+          151z - 5%A  - 18%A  - 85%A - 31,
+                    3       2
+          151t - 5%A  - 18%A  - 85%A - 31]
+       ]
+     ,
+
+                     4    3     2
+     [complexRoots= ?  - ?  - 2?  + 3,
+
+       coordinates =
+                3                  3
+         [x - %A  + 2%A + 1, y + %A  - %A - 1, z - %A,
+                3
+          t + %A  - %A - 1]
+       ]
+     ,
+
+                     4     3     2
+     [complexRoots= ?  + 2?  - 8?  + 48,
+
+       coordinates =
+                 3
+         [8x - %A  + 4%A - 8, 2y + %A,
+                 3                   3
+          8z + %A  - 8%A + 8, 8t - %A  + 4%A - 8]
+       ]
+     ,
+
+                     5    4     3     2
+     [complexRoots= ?  + ?  - 2?  - 4?  + 5? + 8,
+
+       coordinates =
+                 3            3            3
+         [3x + %A  - 1,3y + %A  - 1,3z + %A  - 1,t - %A]
+       ]
+     ,
+
+                     3
+     [complexRoots= ?  + 3? - 1,
+      coordinates= [x - %A,y - %A,z - %A,t - %A]]
+     ]
+Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty21}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty21}{ZeroDimSolvePkgXmpPagePatch21}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{univariateSolve(lf)$pack\free{lf }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch22}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull22}{ZeroDimSolvePkgXmpPageEmpty22}
+\pastebutton{ZeroDimSolvePkgXmpPageFull22}{\hidepaste}
+\tab{5}\spadcommand{ts := lts.1\free{lts }\bound{ts }}
+\indentrel{3}\begin{verbatim}
+   (22)
+     2           3        3
+   {t  + t + 1, z  - z - t  + t,
+
+               3      2
+       (3z + 3t  - 3)y
+     + 
+          2      3           6     3            3      2
+       (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
+     + 
+          6     3          9     6     3
+       (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
+     ,
+    x + y + z}
+                  Type: RegularChain(Integer,[x,y,z,t])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty22}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty22}{ZeroDimSolvePkgXmpPagePatch22}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{ts := lts.1\free{lts }\bound{ts }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch23}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull23}{ZeroDimSolvePkgXmpPageEmpty23}
+\pastebutton{ZeroDimSolvePkgXmpPageFull23}{\hidepaste}
+\tab{5}\spadcommand{univariateSolve(ts)$pack\free{ts }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (23)
+   [
+                     4     3      2
+     [complexRoots= ?  + 5?  + 16?  + 30? + 57,
+
+       coordinates =
+                     3       2
+         [151x + 15%A  + 54%A  + 104%A + 93,
+                     3       2
+          151y - 10%A  - 36%A  - 19%A - 62,
+                    3       2
+          151z - 5%A  - 18%A  - 85%A - 31,
+                    3       2
+          151t - 5%A  - 18%A  - 85%A - 31]
+       ]
+     ,
+
+                     4    3     2
+     [complexRoots= ?  - ?  - 2?  + 3,
+
+       coordinates =
+                3                  3
+         [x - %A  + 2%A + 1, y + %A  - %A - 1, z - %A,
+                3
+          t + %A  - %A - 1]
+       ]
+     ,
+
+                     4     3     2
+     [complexRoots= ?  + 2?  - 8?  + 48,
+
+       coordinates =
+                 3
+         [8x - %A  + 4%A - 8, 2y + %A,
+                 3                   3
+          8z + %A  - 8%A + 8, 8t - %A  + 4%A - 8]
+       ]
+     ]
+Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty23}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty23}{ZeroDimSolvePkgXmpPagePatch23}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{univariateSolve(ts)$pack\free{ts }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch24}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull24}{ZeroDimSolvePkgXmpPageEmpty24}
+\pastebutton{ZeroDimSolvePkgXmpPageFull24}{\hidepaste}
+\tab{5}\spadcommand{realSolve(ts)$pack\free{ts }\free{pack }}
+\indentrel{3}\begin{verbatim}
+   (24)  []
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty24}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty24}{ZeroDimSolvePkgXmpPagePatch24}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{realSolve(ts)$pack\free{ts }\free{pack }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch25}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull25}{ZeroDimSolvePkgXmpPageEmpty25}
+\pastebutton{ZeroDimSolvePkgXmpPageFull25}{\hidepaste}
+\tab{5}\spadcommand{lr2 := realSolve(lf)$pack\free{lf }\free{pack }\bound{lr2 }}
+\indentrel{3}\begin{verbatim}
+   (25)
+   [[0,- 1,1,1], [0,0,1,0], [1,0,0,0], [0,0,0,1],
+    [0,1,0,0], [1,0,%R37,- %R37], [1,0,%R38,- %R38],
+    [0,1,%R35,- %R35], [0,1,%R36,- %R36], [- 1,0,1,1],
+
+     [%R32,
+
+          1     15    2     14    1     13    4     12
+         ÄÄ %R32   + ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32
+         27          27          27          27
+       + 
+           11     11    4     10    1     9   14     8
+         - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32  + ÄÄ %R32
+           27          27          27         27
+       + 
+          1     7   2     6   1     5   2     4       3
+         ÄÄ %R32  + Ä %R32  + Ä %R32  + Ä %R32  + %R32
+         27         9         3         9
+       + 
+         4     2
+         Ä %R32  - %R32 - 2
+         3
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R32   - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32  - ÄÄ %R32
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R32  - Ä %R32  - Ä %R32  - Ä %R32  - %R32
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R32  + Ä %R32 + Ä
+           3         2        2
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R32   - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32  - ÄÄ %R32
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R32  - Ä %R32  - Ä %R32  - Ä %R32  - %R32
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R32  + Ä %R32 + Ä
+           3         2        2
+       ]
+     ,
+
+     [%R33,
+
+          1     15    2     14    1     13    4     12
+         ÄÄ %R33   + ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33
+         27          27          27          27
+       + 
+           11     11    4     10    1     9   14     8
+         - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33  + ÄÄ %R33
+           27          27          27         27
+       + 
+          1     7   2     6   1     5   2     4       3
+         ÄÄ %R33  + Ä %R33  + Ä %R33  + Ä %R33  + %R33
+         27         9         3         9
+       + 
+         4     2
+         Ä %R33  - %R33 - 2
+         3
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R33   - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33  - ÄÄ %R33
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R33  - Ä %R33  - Ä %R33  - Ä %R33  - %R33
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R33  + Ä %R33 + Ä
+           3         2        2
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R33   - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33  - ÄÄ %R33
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R33  - Ä %R33  - Ä %R33  - Ä %R33  - %R33
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R33  + Ä %R33 + Ä
+           3         2        2
+       ]
+     ,
+
+     [%R34,
+
+          1     15    2     14    1     13    4     12
+         ÄÄ %R34   + ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34
+         27          27          27          27
+       + 
+           11     11    4     10    1     9   14     8
+         - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34  + ÄÄ %R34
+           27          27          27         27
+       + 
+          1     7   2     6   1     5   2     4       3
+         ÄÄ %R34  + Ä %R34  + Ä %R34  + Ä %R34  + %R34
+         27         9         3         9
+       + 
+         4     2
+         Ä %R34  - %R34 - 2
+         3
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R34   - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34  - ÄÄ %R34
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R34  - Ä %R34  - Ä %R34  - Ä %R34  - %R34
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R34  + Ä %R34 + Ä
+           3         2        2
+       ,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R34   - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34  - ÄÄ %R34
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R34  - Ä %R34  - Ä %R34  - Ä %R34  - %R34
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R34  + Ä %R34 + Ä
+           3         2        2
+       ]
+     ,
+    [- 1,1,0,1], [- 1,1,1,0],
+
+     [%R23,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R23   + ÄÄ %R23   - ÄÄ %R23  - ÄÄ %R23
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R23  - Ä %R23  - Ä %R23  - Ä %R23  - %R23
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R23  + Ä %R23 + Ä
+           3         2        2
+       ,
+      %R30,
+
+                   1     15    1     14    1     13
+         - %R30 + ÄÄ %R23   + ÄÄ %R23   + ÄÄ %R23
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R23  + ÄÄ %R23  + Ä %R23  + Ä %R23  + Ä %R23
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R23  - Ä %R23 - Ä
+         3         2        2
+       ]
+     ,
+
+     [%R23,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R23   + ÄÄ %R23   - ÄÄ %R23  - ÄÄ %R23
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R23  - Ä %R23  - Ä %R23  - Ä %R23  - %R23
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R23  + Ä %R23 + Ä
+           3         2        2
+       ,
+      %R31,
+
+                   1     15    1     14    1     13
+         - %R31 + ÄÄ %R23   + ÄÄ %R23   + ÄÄ %R23
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R23  + ÄÄ %R23  + Ä %R23  + Ä %R23  + Ä %R23
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R23  - Ä %R23 - Ä
+         3         2        2
+       ]
+     ,
+
+     [%R24,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R24   + ÄÄ %R24   - ÄÄ %R24  - ÄÄ %R24
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R24  - Ä %R24  - Ä %R24  - Ä %R24  - %R24
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R24  + Ä %R24 + Ä
+           3         2        2
+       ,
+      %R28,
+
+                   1     15    1     14    1     13
+         - %R28 + ÄÄ %R24   + ÄÄ %R24   + ÄÄ %R24
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R24  + ÄÄ %R24  + Ä %R24  + Ä %R24  + Ä %R24
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R24  - Ä %R24 - Ä
+         3         2        2
+       ]
+     ,
+
+     [%R24,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R24   + ÄÄ %R24   - ÄÄ %R24  - ÄÄ %R24
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R24  - Ä %R24  - Ä %R24  - Ä %R24  - %R24
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R24  + Ä %R24 + Ä
+           3         2        2
+       ,
+      %R29,
+
+                   1     15    1     14    1     13
+         - %R29 + ÄÄ %R24   + ÄÄ %R24   + ÄÄ %R24
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R24  + ÄÄ %R24  + Ä %R24  + Ä %R24  + Ä %R24
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R24  - Ä %R24 - Ä
+         3         2        2
+       ]
+     ,
+
+     [%R25,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R25   + ÄÄ %R25   - ÄÄ %R25  - ÄÄ %R25
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R25  - Ä %R25  - Ä %R25  - Ä %R25  - %R25
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R25  + Ä %R25 + Ä
+           3         2        2
+       ,
+      %R26,
+
+                   1     15    1     14    1     13
+         - %R26 + ÄÄ %R25   + ÄÄ %R25   + ÄÄ %R25
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R25  + ÄÄ %R25  + Ä %R25  + Ä %R25  + Ä %R25
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R25  - Ä %R25 - Ä
+         3         2        2
+       ]
+     ,
+
+     [%R25,
+
+            1     15    1     14    1     13    2     12
+         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
+           54          27          54          27
+       + 
+         11     11    2     10    1     9    7     8
+         ÄÄ %R25   + ÄÄ %R25   - ÄÄ %R25  - ÄÄ %R25
+         54          27          54         27
+       + 
+            1     7   1     6   1     5   1     4       3
+         - ÄÄ %R25  - Ä %R25  - Ä %R25  - Ä %R25  - %R25
+           54         9         6         9
+       + 
+           2     2   1        3
+         - Ä %R25  + Ä %R25 + Ä
+           3         2        2
+       ,
+      %R27,
+
+                   1     15    1     14    1     13
+         - %R27 + ÄÄ %R25   + ÄÄ %R25   + ÄÄ %R25
+                  54          27          54
+       + 
+            2     12   11     11    2     10    1     9
+         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
+           27          54          27          54
+       + 
+          7     8    1     7   1     6   1     5   1     4
+         ÄÄ %R25  + ÄÄ %R25  + Ä %R25  + Ä %R25  + Ä %R25
+         27         54         9         6         9
+       + 
+         2     2   1        1
+         Ä %R25  - Ä %R25 - Ä
+         3         2        2
+       ]
+     ,
+    [1,%R21,- %R21,0], [1,%R22,- %R22,0],
+    [1,%R19,0,- %R19], [1,%R20,0,- %R20],
+            1     3   1   1     3   1   1     3   1
+    [%R17,- Ä %R17  + Ä,- Ä %R17  + Ä,- Ä %R17  + Ä],
+            3         3   3         3   3         3
+            1     3   1   1     3   1   1     3   1
+    [%R18,- Ä %R18  + Ä,- Ä %R18  + Ä,- Ä %R18  + Ä]]
+            3         3   3         3   3         3
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty25}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty25}{ZeroDimSolvePkgXmpPagePatch25}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{lr2 := realSolve(lf)$pack\free{lf }\free{pack }\bound{lr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch26}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull26}{ZeroDimSolvePkgXmpPageEmpty26}
+\pastebutton{ZeroDimSolvePkgXmpPageFull26}{\hidepaste}
+\tab{5}\spadcommand{\#lr2\free{lr2 }}
+\indentrel{3}\begin{verbatim}
+   (26)  27
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty26}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty26}{ZeroDimSolvePkgXmpPagePatch26}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{\#lr2\free{lr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch27}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull27}{ZeroDimSolvePkgXmpPageEmpty27}
+\pastebutton{ZeroDimSolvePkgXmpPageFull27}{\hidepaste}
+\tab{5}\spadcommand{lpr2 := positiveSolve(lf)$pack\free{lf }\free{pack }\bound{lpr2 }}
+\indentrel{3}\begin{verbatim}
+   (27)
+            1     3   1   1     3   1   1     3   1
+   [[%R40,- Ä %R40  + Ä,- Ä %R40  + Ä,- Ä %R40  + Ä]]
+            3         3   3         3   3         3
+           Type: List List RealClosure Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty27}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty27}{ZeroDimSolvePkgXmpPagePatch27}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{lpr2 := positiveSolve(lf)$pack\free{lf }\free{pack }\bound{lpr2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPagePatch28}
+\begin{paste}{ZeroDimSolvePkgXmpPageFull28}{ZeroDimSolvePkgXmpPageEmpty28}
+\pastebutton{ZeroDimSolvePkgXmpPageFull28}{\hidepaste}
+\tab{5}\spadcommand{[approximate(r,1/10**21)::Float for r in lpr2.1]\free{lpr2 }}
+\indentrel{3}\begin{verbatim}
+   (28)
+   [0.3221853546 2608559291, 0.3221853546 2608559291,
+    0.3221853546 2608559291, 0.3221853546 2608559291]
+                                       Type: List Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ZeroDimSolvePkgXmpPageEmpty28}
+\begin{paste}{ZeroDimSolvePkgXmpPageEmpty28}{ZeroDimSolvePkgXmpPagePatch28}
+\pastebutton{ZeroDimSolvePkgXmpPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{[approximate(r,1/10**21)::Float for r in lpr2.1]\free{lpr2 }}
+\end{paste}\end{patch}
+
 @
 \section{zlindep.ht}
 \pagehead{IntegerLinearDependenceXmpPage}{zlindep.ht}
@@ -22681,6 +65275,144 @@ To express a given element in terms of other elements, use the operation
 \autobuttons
 \end{page}
 
+\begin{patch}{IntegerLinearDependenceXmpPagePatch1}
+\begin{paste}{IntegerLinearDependenceXmpPageFull1}{IntegerLinearDependenceXmpPageEmpty1}
+\pastebutton{IntegerLinearDependenceXmpPageFull1}{\hidepaste}
+\tab{5}\spadcommand{M := SQMATRIX(2,INT)\bound{M }}
+\indentrel{3}\begin{verbatim}
+   (1)  SquareMatrix(2,Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty1}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty1}{IntegerLinearDependenceXmpPagePatch1}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{M := SQMATRIX(2,INT)\bound{M }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch2}
+\begin{paste}{IntegerLinearDependenceXmpPageFull2}{IntegerLinearDependenceXmpPageEmpty2}
+\pastebutton{IntegerLinearDependenceXmpPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m1: M := squareMatrix matrix [[1, 2], [0, -1]]\free{M }\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1   2 ¿
+   (2)  ³      ³
+        À0  - 1Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty2}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty2}{IntegerLinearDependenceXmpPagePatch2}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m1: M := squareMatrix matrix [[1, 2], [0, -1]]\free{M }\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch3}
+\begin{paste}{IntegerLinearDependenceXmpPageFull3}{IntegerLinearDependenceXmpPageEmpty3}
+\pastebutton{IntegerLinearDependenceXmpPageFull3}{\hidepaste}
+\tab{5}\spadcommand{m2: M := squareMatrix matrix [[2, 3], [1, -2]]\free{M }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú2   3 ¿
+   (3)  ³      ³
+        À1  - 2Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty3}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty3}{IntegerLinearDependenceXmpPagePatch3}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{m2: M := squareMatrix matrix [[2, 3], [1, -2]]\free{M }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch4}
+\begin{paste}{IntegerLinearDependenceXmpPageFull4}{IntegerLinearDependenceXmpPageEmpty4}
+\pastebutton{IntegerLinearDependenceXmpPageFull4}{\hidepaste}
+\tab{5}\spadcommand{m3: M := squareMatrix matrix [[3, 4], [2, -3]]\free{M }\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú3   4 ¿
+   (4)  ³      ³
+        À2  - 3Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty4}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty4}{IntegerLinearDependenceXmpPagePatch4}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m3: M := squareMatrix matrix [[3, 4], [2, -3]]\free{M }\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch5}
+\begin{paste}{IntegerLinearDependenceXmpPageFull5}{IntegerLinearDependenceXmpPageEmpty5}
+\pastebutton{IntegerLinearDependenceXmpPageFull5}{\hidepaste}
+\tab{5}\spadcommand{linearlyDependentOverZ? vector [m1, m2, m3]\free{m1 m2 m3 }}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty5}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty5}{IntegerLinearDependenceXmpPagePatch5}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{linearlyDependentOverZ? vector [m1, m2, m3]\free{m1 m2 m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch6}
+\begin{paste}{IntegerLinearDependenceXmpPageFull6}{IntegerLinearDependenceXmpPageEmpty6}
+\pastebutton{IntegerLinearDependenceXmpPageFull6}{\hidepaste}
+\tab{5}\spadcommand{c := linearDependenceOverZ vector [m1, m2, m3]\free{m1 m2 m3 }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,- 2,1]
+                        Type: Union(Vector Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty6}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty6}{IntegerLinearDependenceXmpPagePatch6}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{c := linearDependenceOverZ vector [m1, m2, m3]\free{m1 m2 m3 }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch7}
+\begin{paste}{IntegerLinearDependenceXmpPageFull7}{IntegerLinearDependenceXmpPageEmpty7}
+\pastebutton{IntegerLinearDependenceXmpPageFull7}{\hidepaste}
+\tab{5}\spadcommand{c.1 * m1 + c.2 * m2 + c.3 * m3\free{c m1 m2 m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú0  0¿
+   (7)  ³    ³
+        À0  0Ù
+                          Type: SquareMatrix(2,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty7}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty7}{IntegerLinearDependenceXmpPagePatch7}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{c.1 * m1 + c.2 * m2 + c.3 * m3\free{c m1 m2 m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPagePatch8}
+\begin{paste}{IntegerLinearDependenceXmpPageFull8}{IntegerLinearDependenceXmpPageEmpty8}
+\pastebutton{IntegerLinearDependenceXmpPageFull8}{\hidepaste}
+\tab{5}\spadcommand{solveLinearlyOverQ(vector [m1, m3], m2)\free{m1 m2 m3 }}
+\indentrel{3}\begin{verbatim}
+         1 1
+   (8)  [Ä,Ä]
+         2 2
+               Type: Union(Vector Fraction Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{IntegerLinearDependenceXmpPageEmpty8}
+\begin{paste}{IntegerLinearDependenceXmpPageEmpty8}{IntegerLinearDependenceXmpPagePatch8}
+\pastebutton{IntegerLinearDependenceXmpPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{solveLinearlyOverQ(vector [m1, m3], m2)\free{m1 m2 m3 }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Pages (ug.ht)}
 \pagehead{UsersGuidePage}{page.ht}{Users Guide}
@@ -23519,6 +66251,60 @@ right, from inside out).
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroArithmeticPagePatch1}
+\begin{paste}{ugIntroArithmeticPageFull1}{ugIntroArithmeticPageEmpty1}
+\pastebutton{ugIntroArithmeticPageFull1}{\hidepaste}
+\tab{5}\spadcommand{1 + 2 - 3 / 4 * 3 ** 2 - 1}
+\indentrel{3}\begin{verbatim}
+          19
+   (1)  - ÄÄ
+           4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroArithmeticPageEmpty1}
+\begin{paste}{ugIntroArithmeticPageEmpty1}{ugIntroArithmeticPagePatch1}
+\pastebutton{ugIntroArithmeticPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{1 + 2 - 3 / 4 * 3 ** 2 - 1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroArithmeticPagePatch2}
+\begin{paste}{ugIntroArithmeticPageFull2}{ugIntroArithmeticPageEmpty2}
+\pastebutton{ugIntroArithmeticPageFull2}{\hidepaste}
+\tab{5}\spadcommand{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
+\indentrel{3}\begin{verbatim}
+          19
+   (2)  - ÄÄ
+           4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroArithmeticPageEmpty2}
+\begin{paste}{ugIntroArithmeticPageEmpty2}{ugIntroArithmeticPagePatch2}
+\pastebutton{ugIntroArithmeticPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroArithmeticPagePatch3}
+\begin{paste}{ugIntroArithmeticPageFull3}{ugIntroArithmeticPageEmpty3}
+\pastebutton{ugIntroArithmeticPageFull3}{\hidepaste}
+\tab{5}\spadcommand{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
+\indentrel{3}\begin{verbatim}
+        11
+   (3)  ÄÄ
+         4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroArithmeticPageEmpty3}
+\begin{paste}{ugIntroArithmeticPageEmpty3}{ugIntroArithmeticPagePatch3}
+\pastebutton{ugIntroArithmeticPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroPreviousPage}{ug01.ht}{Previous Results}
 <<ug01.ht>>=
@@ -23559,6 +66345,70 @@ This is the result from step number 1.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroPreviousPagePatch1}
+\begin{paste}{ugIntroPreviousPageFull1}{ugIntroPreviousPageEmpty1}
+\pastebutton{ugIntroPreviousPageFull1}{\hidepaste}
+\tab{5}\spadcommand{10 ** 10\bound{prev }}
+\indentrel{3}\begin{verbatim}
+   (1)  10000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPageEmpty1}
+\begin{paste}{ugIntroPreviousPageEmpty1}{ugIntroPreviousPagePatch1}
+\pastebutton{ugIntroPreviousPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{10 ** 10\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPagePatch2}
+\begin{paste}{ugIntroPreviousPageFull2}{ugIntroPreviousPageEmpty2}
+\pastebutton{ugIntroPreviousPageFull2}{\hidepaste}
+\tab{5}\spadcommand{\% - 1\free{prev }\bound{prev1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  9999999999
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPageEmpty2}
+\begin{paste}{ugIntroPreviousPageEmpty2}{ugIntroPreviousPagePatch2}
+\pastebutton{ugIntroPreviousPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{\% - 1\free{prev }\bound{prev1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPagePatch3}
+\begin{paste}{ugIntroPreviousPageFull3}{ugIntroPreviousPageEmpty3}
+\pastebutton{ugIntroPreviousPageFull3}{\hidepaste}
+\tab{5}\spadcommand{\%\%(-1)\free{prev1 }\bound{prev2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  9999999999
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPageEmpty3}
+\begin{paste}{ugIntroPreviousPageEmpty3}{ugIntroPreviousPagePatch3}
+\pastebutton{ugIntroPreviousPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{\%\%(-1)\free{prev1 }\bound{prev2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPagePatch4}
+\begin{paste}{ugIntroPreviousPageFull4}{ugIntroPreviousPageEmpty4}
+\pastebutton{ugIntroPreviousPageFull4}{\hidepaste}
+\tab{5}\spadcommand{\%\%(1)\free{prev2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  10000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroPreviousPageEmpty4}
+\begin{paste}{ugIntroPreviousPageEmpty4}{ugIntroPreviousPagePatch4}
+\pastebutton{ugIntroPreviousPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{\%\%(1)\free{prev2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroTypesPage}{ug01.ht}{Some Types}
 \pageto{notitle}{ugTypesPage}
@@ -23603,6 +66453,74 @@ Here a negative integer exponent produces a fraction.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroTypesPagePatch1}
+\begin{paste}{ugIntroTypesPageFull1}{ugIntroTypesPageEmpty1}
+\pastebutton{ugIntroTypesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{8}
+\indentrel{3}\begin{verbatim}
+   (1)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPageEmpty1}
+\begin{paste}{ugIntroTypesPageEmpty1}{ugIntroTypesPagePatch1}
+\pastebutton{ugIntroTypesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{8}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPagePatch2}
+\begin{paste}{ugIntroTypesPageFull2}{ugIntroTypesPageEmpty2}
+\pastebutton{ugIntroTypesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{-8}
+\indentrel{3}\begin{verbatim}
+   (2)  - 8
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPageEmpty2}
+\begin{paste}{ugIntroTypesPageEmpty2}{ugIntroTypesPagePatch2}
+\pastebutton{ugIntroTypesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{-8}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPagePatch3}
+\begin{paste}{ugIntroTypesPageFull3}{ugIntroTypesPageEmpty3}
+\pastebutton{ugIntroTypesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{x**8}
+\indentrel{3}\begin{verbatim}
+         8
+   (3)  x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPageEmpty3}
+\begin{paste}{ugIntroTypesPageEmpty3}{ugIntroTypesPagePatch3}
+\pastebutton{ugIntroTypesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x**8}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPagePatch4}
+\begin{paste}{ugIntroTypesPageFull4}{ugIntroTypesPageEmpty4}
+\pastebutton{ugIntroTypesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{x**(-8)}
+\indentrel{3}\begin{verbatim}
+         1
+   (4)  ÄÄ
+         8
+        x
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTypesPageEmpty4}
+\begin{paste}{ugIntroTypesPageEmpty4}{ugIntroTypesPagePatch4}
+\pastebutton{ugIntroTypesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{x**(-8)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroAssignPage}{ug01.ht}
 {Symbols, Variables, Assignments, and Declarations}
@@ -23731,6 +66649,217 @@ We try to point out the location of such trouble spots.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroAssignPagePatch1}
+\begin{paste}{ugIntroAssignPageFull1}{ugIntroAssignPageEmpty1}
+\pastebutton{ugIntroAssignPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(x - y*z)**2}
+\indentrel{3}\begin{verbatim}
+         2 2             2
+   (1)  y z  - 2x y z + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty1}
+\begin{paste}{ugIntroAssignPageEmpty1}{ugIntroAssignPagePatch1}
+\pastebutton{ugIntroAssignPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(x - y*z)**2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch2}
+\begin{paste}{ugIntroAssignPageFull2}{ugIntroAssignPageEmpty2}
+\pastebutton{ugIntroAssignPageFull2}{\hidepaste}
+\tab{5}\spadcommand{x := 4}
+\indentrel{3}\begin{verbatim}
+   (2)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty2}
+\begin{paste}{ugIntroAssignPageEmpty2}{ugIntroAssignPagePatch2}
+\pastebutton{ugIntroAssignPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{x := 4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch3}
+\begin{paste}{ugIntroAssignPageFull3}{ugIntroAssignPageEmpty3}
+\pastebutton{ugIntroAssignPageFull3}{\hidepaste}
+\tab{5}\spadcommand{x := z + 3/5}
+\indentrel{3}\begin{verbatim}
+            3
+   (3)  z + Ä
+            5
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty3}
+\begin{paste}{ugIntroAssignPageEmpty3}{ugIntroAssignPagePatch3}
+\pastebutton{ugIntroAssignPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x := z + 3/5}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch4}
+\begin{paste}{ugIntroAssignPageFull4}{ugIntroAssignPageEmpty4}
+\pastebutton{ugIntroAssignPageFull4}{\hidepaste}
+\tab{5}\spadcommand{y : Integer\bound{y }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty4}
+\begin{paste}{ugIntroAssignPageEmpty4}{ugIntroAssignPagePatch4}
+\pastebutton{ugIntroAssignPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{y : Integer\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch5}
+\begin{paste}{ugIntroAssignPageFull5}{ugIntroAssignPageEmpty5}
+\pastebutton{ugIntroAssignPageFull5}{\hidepaste}
+\tab{5}\spadcommand{y := 89\bound{y1 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (5)  89
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty5}
+\begin{paste}{ugIntroAssignPageEmpty5}{ugIntroAssignPagePatch5}
+\pastebutton{ugIntroAssignPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{y := 89\bound{y1 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch6}
+\begin{paste}{ugIntroAssignPageFull6}{ugIntroAssignPageEmpty6}
+\pastebutton{ugIntroAssignPageFull6}{\hidepaste}
+\tab{5}\spadcommand{y := sin \%pi}
+\indentrel{3}\begin{verbatim}
+   (6)  0
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty6}
+\begin{paste}{ugIntroAssignPageEmpty6}{ugIntroAssignPagePatch6}
+\pastebutton{ugIntroAssignPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{y := sin \%pi}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch7}
+\begin{paste}{ugIntroAssignPageFull7}{ugIntroAssignPageEmpty7}
+\pastebutton{ugIntroAssignPageFull7}{\hidepaste}
+\tab{5}\spadcommand{y := 2/3}
+\indentrel{3}\begin{verbatim}
+   2
+   Ä
+   3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty7}
+\begin{paste}{ugIntroAssignPageEmpty7}{ugIntroAssignPagePatch7}
+\pastebutton{ugIntroAssignPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y := 2/3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch8}
+\begin{paste}{ugIntroAssignPageFull8}{ugIntroAssignPageEmpty8}
+\pastebutton{ugIntroAssignPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f : Float := 2/3}
+\indentrel{3}\begin{verbatim}
+   (7)  0.6666666666 6666666667
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty8}
+\begin{paste}{ugIntroAssignPageEmpty8}{ugIntroAssignPagePatch8}
+\pastebutton{ugIntroAssignPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f : Float := 2/3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch9}
+\begin{paste}{ugIntroAssignPageFull9}{ugIntroAssignPageEmpty9}
+\pastebutton{ugIntroAssignPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f : Float; f := 2/3\bound{fff }}
+\indentrel{3}\begin{verbatim}
+   (8)  0.6666666666 6666666667
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty9}
+\begin{paste}{ugIntroAssignPageEmpty9}{ugIntroAssignPagePatch9}
+\pastebutton{ugIntroAssignPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f : Float; f := 2/3\bound{fff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch10}
+\begin{paste}{ugIntroAssignPageFull10}{ugIntroAssignPageEmpty10}
+\pastebutton{ugIntroAssignPageFull10}{\hidepaste}
+\tab{5}\spadcommand{q}
+\indentrel{3}\begin{verbatim}
+   (9)  q
+                                       Type: Variable q
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty10}
+\begin{paste}{ugIntroAssignPageEmpty10}{ugIntroAssignPagePatch10}
+\pastebutton{ugIntroAssignPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{q}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch11}
+\begin{paste}{ugIntroAssignPageFull11}{ugIntroAssignPageEmpty11}
+\pastebutton{ugIntroAssignPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[q, r]}
+\indentrel{3}\begin{verbatim}
+   (10)  [q,r]
+                   Type: List OrderedVariableList [q,r]
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty11}
+\begin{paste}{ugIntroAssignPageEmpty11}{ugIntroAssignPagePatch11}
+\pastebutton{ugIntroAssignPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[q, r]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch12}
+\begin{paste}{ugIntroAssignPageFull12}{ugIntroAssignPageEmpty12}
+\pastebutton{ugIntroAssignPageFull12}{\hidepaste}
+\tab{5}\spadcommand{f\free{fff }}
+\indentrel{3}\begin{verbatim}
+   (11)  0.6666666666 6666666667
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty12}
+\begin{paste}{ugIntroAssignPageEmpty12}{ugIntroAssignPagePatch12}
+\pastebutton{ugIntroAssignPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{f\free{fff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPagePatch13}
+\begin{paste}{ugIntroAssignPageFull13}{ugIntroAssignPageEmpty13}
+\pastebutton{ugIntroAssignPageFull13}{\hidepaste}
+\tab{5}\spadcommand{'f}
+\indentrel{3}\begin{verbatim}
+   (12)  f
+                                       Type: Variable f
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroAssignPageEmpty13}
+\begin{paste}{ugIntroAssignPageEmpty13}{ugIntroAssignPagePatch13}
+\pastebutton{ugIntroAssignPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{'f}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroConversionPage}{ug01.ht}{Conversion}
 \pageto{notitle}{ugTypesConvertPage}
@@ -23767,6 +66896,43 @@ Others conversions must be explicitly requested.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroConversionPagePatch1}
+\begin{paste}{ugIntroConversionPageFull1}{ugIntroConversionPageEmpty1}
+\pastebutton{ugIntroConversionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := r**2 + 2/3\bound{p }}
+\indentrel{3}\begin{verbatim}
+         2   2
+   (1)  r  + Ä
+             3
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroConversionPageEmpty1}
+\begin{paste}{ugIntroConversionPageEmpty1}{ugIntroConversionPagePatch1}
+\pastebutton{ugIntroConversionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := r**2 + 2/3\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroConversionPagePatch2}
+\begin{paste}{ugIntroConversionPageFull2}{ugIntroConversionPageEmpty2}
+\pastebutton{ugIntroConversionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p :: Fraction Polynomial Integer\free{p }}
+\indentrel{3}\begin{verbatim}
+          2
+        3r  + 2
+   (2)  ÄÄÄÄÄÄÄ
+           3
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroConversionPageEmpty2}
+\begin{paste}{ugIntroConversionPageEmpty2}{ugIntroConversionPagePatch2}
+\pastebutton{ugIntroConversionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p :: Fraction Polynomial Integer\free{p }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroCallFunPage}{ug01.ht}{Calling Functions}
 <<ug01.ht>>=
@@ -23828,6 +66994,71 @@ operations are provided for efficiency reasons.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroCallFunPagePatch1}
+\begin{paste}{ugIntroCallFunPageFull1}{ugIntroCallFunPageEmpty1}
+\pastebutton{ugIntroCallFunPageFull1}{\hidepaste}
+\tab{5}\spadcommand{factor(120)}
+\indentrel{3}\begin{verbatim}
+         3
+   (1)  2 3 5
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPageEmpty1}
+\begin{paste}{ugIntroCallFunPageEmpty1}{ugIntroCallFunPagePatch1}
+\pastebutton{ugIntroCallFunPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{factor(120)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPagePatch2}
+\begin{paste}{ugIntroCallFunPageFull2}{ugIntroCallFunPageEmpty2}
+\pastebutton{ugIntroCallFunPageFull2}{\hidepaste}
+\tab{5}\spadcommand{divide(125,7)}
+\indentrel{3}\begin{verbatim}
+   (2)  [quotient= 17,remainder= 6]
+     Type: Record(quotient: Integer,remainder: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPageEmpty2}
+\begin{paste}{ugIntroCallFunPageEmpty2}{ugIntroCallFunPagePatch2}
+\pastebutton{ugIntroCallFunPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{divide(125,7)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPagePatch3}
+\begin{paste}{ugIntroCallFunPageFull3}{ugIntroCallFunPageEmpty3}
+\pastebutton{ugIntroCallFunPageFull3}{\hidepaste}
+\tab{5}\spadcommand{quatern(3.4,5.6,2.9,0.1)}
+\indentrel{3}\begin{verbatim}
+   (3)  3.4 + 5.6 i + 2.9 j + 0.1 k
+                                 Type: Quaternion Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPageEmpty3}
+\begin{paste}{ugIntroCallFunPageEmpty3}{ugIntroCallFunPagePatch3}
+\pastebutton{ugIntroCallFunPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{quatern(3.4,5.6,2.9,0.1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPagePatch4}
+\begin{paste}{ugIntroCallFunPageFull4}{ugIntroCallFunPageEmpty4}
+\pastebutton{ugIntroCallFunPageFull4}{\hidepaste}
+\tab{5}\spadcommand{factorial 10}
+\indentrel{3}\begin{verbatim}
+   (4)  3628800
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCallFunPageEmpty4}
+\begin{paste}{ugIntroCallFunPageEmpty4}{ugIntroCallFunPagePatch4}
+\pastebutton{ugIntroCallFunPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factorial 10}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroMacrosPage}{ug01.ht}{Some Predefined Macros}
 \pageto{notitle}{ugUserMacrosPage}
@@ -23932,6 +67163,22 @@ other than starting each line with \axiomSyntax{--} or
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroCommentsPagePatch1}
+\begin{paste}{ugIntroCommentsPageFull1}{ugIntroCommentsPageEmpty1}
+\pastebutton{ugIntroCommentsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{2 + 3 -- this is rather simple, no?}
+\indentrel{3}\begin{verbatim}
+   (1)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCommentsPageEmpty1}
+\begin{paste}{ugIntroCommentsPageEmpty1}{ugIntroCommentsPagePatch1}
+\pastebutton{ugIntroCommentsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{2 + 3 -- this is rather simple, no?}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroGraphicsPage}{ug01.ht}{Graphics}
 \pageto{notitle}{ugProblemNumericPage}
@@ -23997,6 +67244,32 @@ using Axiom's graphics facilities.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroGraphicsPagePatch1}
+\begin{paste}{ugIntroGraphicsPageFull1}{ugIntroGraphicsPageEmpty1}
+\pastebutton{ugIntroGraphicsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintrographicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintrographicspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroGraphicsPageEmpty1}
+\begin{paste}{ugIntroGraphicsPageEmpty1}{ugIntroGraphicsPagePatch1}
+\pastebutton{ugIntroGraphicsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroGraphicsPagePatch2}
+\begin{paste}{ugIntroGraphicsPageFull2}{ugIntroGraphicsPageEmpty2}
+\pastebutton{ugIntroGraphicsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintrographicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintrographicspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroGraphicsPageEmpty2}
+\begin{paste}{ugIntroGraphicsPageEmpty2}{ugIntroGraphicsPagePatch2}
+\pastebutton{ugIntroGraphicsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroNumbersPage}{ug01.ht}{Numbers}
 \pagepic{ps/v71ugintronumberspage.eps}{ugIntroNumbersPage}
@@ -24268,6 +67541,667 @@ quatern(5,6,7,8)*quatern(1,2,3,4)}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroNumbersPagePatch1}
+\begin{paste}{ugIntroNumbersPageFull1}{ugIntroNumbersPageEmpty1}
+\pastebutton{ugIntroNumbersPageFull1}{\hidepaste}
+\tab{5}\spadcommand{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
+\indentrel{3}\begin{verbatim}
+   (1)  25387751112538918594666224484237298
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty1}
+\begin{paste}{ugIntroNumbersPageEmpty1}{ugIntroNumbersPagePatch1}
+\pastebutton{ugIntroNumbersPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch2}
+\begin{paste}{ugIntroNumbersPageFull2}{ugIntroNumbersPageEmpty2}
+\pastebutton{ugIntroNumbersPageFull2}{\hidepaste}
+\tab{5}\spadcommand{factor 643238070748569023720594412551704344145570763243\bound{ex1 }}
+\indentrel{3}\begin{verbatim}
+          13  11  7  5  3  2
+   (2)  11  13  17 19 23 29
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty2}
+\begin{paste}{ugIntroNumbersPageEmpty2}{ugIntroNumbersPagePatch2}
+\pastebutton{ugIntroNumbersPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{factor 643238070748569023720594412551704344145570763243\bound{ex1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch3}
+\begin{paste}{ugIntroNumbersPageFull3}{ugIntroNumbersPageEmpty3}
+\pastebutton{ugIntroNumbersPageFull3}{\hidepaste}
+\tab{5}\spadcommand{\% * 12\free{ex1 }}
+\indentrel{3}\begin{verbatim}
+         2    13  11  7  5  3  2
+   (3)  2 3 11  13  17 19 23 29
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty3}
+\begin{paste}{ugIntroNumbersPageEmpty3}{ugIntroNumbersPagePatch3}
+\pastebutton{ugIntroNumbersPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{\% * 12\free{ex1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch4}
+\begin{paste}{ugIntroNumbersPageFull4}{ugIntroNumbersPageEmpty4}
+\pastebutton{ugIntroNumbersPageFull4}{\hidepaste}
+\tab{5}\spadcommand{radix(25937424601,11)}
+\indentrel{3}\begin{verbatim}
+   (4)  10000000000
+                                Type: RadixExpansion 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty4}
+\begin{paste}{ugIntroNumbersPageEmpty4}{ugIntroNumbersPagePatch4}
+\pastebutton{ugIntroNumbersPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{radix(25937424601,11)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch5}
+\begin{paste}{ugIntroNumbersPageFull5}{ugIntroNumbersPageEmpty5}
+\pastebutton{ugIntroNumbersPageFull5}{\hidepaste}
+\tab{5}\spadcommand{roman(1992)}
+\indentrel{3}\begin{verbatim}
+   (5)  MCMXCII
+                                     Type: RomanNumeral
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty5}
+\begin{paste}{ugIntroNumbersPageEmpty5}{ugIntroNumbersPagePatch5}
+\pastebutton{ugIntroNumbersPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{roman(1992)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch6}
+\begin{paste}{ugIntroNumbersPageFull6}{ugIntroNumbersPageEmpty6}
+\pastebutton{ugIntroNumbersPageFull6}{\hidepaste}
+\tab{5}\spadcommand{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r }}
+\indentrel{3}\begin{verbatim}
+        55739
+   (6)  ÄÄÄÄÄ
+         2520
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty6}
+\begin{paste}{ugIntroNumbersPageEmpty6}{ugIntroNumbersPagePatch6}
+\pastebutton{ugIntroNumbersPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch7}
+\begin{paste}{ugIntroNumbersPageFull7}{ugIntroNumbersPageEmpty7}
+\pastebutton{ugIntroNumbersPageFull7}{\hidepaste}
+\tab{5}\spadcommand{map(factor,r)\free{r }}
+\indentrel{3}\begin{verbatim}
+        139 401
+   (7)  ÄÄÄÄÄÄÄ
+         3 2
+        2 3 5 7
+                        Type: Fraction Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty7}
+\begin{paste}{ugIntroNumbersPageEmpty7}{ugIntroNumbersPagePatch7}
+\pastebutton{ugIntroNumbersPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{map(factor,r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch8}
+\begin{paste}{ugIntroNumbersPageFull8}{ugIntroNumbersPageEmpty8}
+\pastebutton{ugIntroNumbersPageFull8}{\hidepaste}
+\tab{5}\spadcommand{11@SingleInteger}
+\indentrel{3}\begin{verbatim}
+   (8)  11
+                                    Type: SingleInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty8}
+\begin{paste}{ugIntroNumbersPageEmpty8}{ugIntroNumbersPagePatch8}
+\pastebutton{ugIntroNumbersPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{11@SingleInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch9}
+\begin{paste}{ugIntroNumbersPageFull9}{ugIntroNumbersPageEmpty9}
+\pastebutton{ugIntroNumbersPageFull9}{\hidepaste}
+\tab{5}\spadcommand{123.21@DoubleFloat}
+\indentrel{3}\begin{verbatim}
+   (9)  123.21000000000001
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty9}
+\begin{paste}{ugIntroNumbersPageEmpty9}{ugIntroNumbersPagePatch9}
+\pastebutton{ugIntroNumbersPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{123.21@DoubleFloat}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch10}
+\begin{paste}{ugIntroNumbersPageFull10}{ugIntroNumbersPageEmpty10}
+\pastebutton{ugIntroNumbersPageFull10}{\hidepaste}
+\tab{5}\spadcommand{r :: Float\free{r }}
+\indentrel{3}\begin{verbatim}
+   (10)  22.1186507936 50793651
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty10}
+\begin{paste}{ugIntroNumbersPageEmpty10}{ugIntroNumbersPagePatch10}
+\pastebutton{ugIntroNumbersPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{r :: Float\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch11}
+\begin{paste}{ugIntroNumbersPageFull11}{ugIntroNumbersPageEmpty11}
+\pastebutton{ugIntroNumbersPageFull11}{\hidepaste}
+\tab{5}\spadcommand{digits(22)\bound{fewerdigits }}
+\indentrel{3}\begin{verbatim}
+   (11)  20
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty11}
+\begin{paste}{ugIntroNumbersPageEmpty11}{ugIntroNumbersPagePatch11}
+\pastebutton{ugIntroNumbersPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{digits(22)\bound{fewerdigits }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch12}
+\begin{paste}{ugIntroNumbersPageFull12}{ugIntroNumbersPageEmpty12}
+\pastebutton{ugIntroNumbersPageFull12}{\hidepaste}
+\tab{5}\spadcommand{exp(\%pi * sqrt 163.0)\free{fewerdigits }}
+\indentrel{3}\begin{verbatim}
+   (12)  26253741 2640768744.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty12}
+\begin{paste}{ugIntroNumbersPageEmpty12}{ugIntroNumbersPagePatch12}
+\pastebutton{ugIntroNumbersPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{exp(\%pi * sqrt 163.0)\free{fewerdigits }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch13}
+\begin{paste}{ugIntroNumbersPageFull13}{ugIntroNumbersPageEmpty13}
+\pastebutton{ugIntroNumbersPageFull13}{\hidepaste}
+\tab{5}\spadcommand{digits(40); exp(\%pi * sqrt 163.0)\free{moredigits }}
+\indentrel{3}\begin{verbatim}
+   (13)  26253741 2640768743.9999999999 9925007259 76
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty13}
+\begin{paste}{ugIntroNumbersPageEmpty13}{ugIntroNumbersPagePatch13}
+\pastebutton{ugIntroNumbersPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{digits(40); exp(\%pi * sqrt 163.0)\free{moredigits }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch14}
+\begin{paste}{ugIntroNumbersPageFull14}{ugIntroNumbersPageEmpty14}
+\pastebutton{ugIntroNumbersPageFull14}{\hidepaste}
+\tab{5}\spadcommand{(2/3 + \%i)**3\bound{gaussint }}
+\indentrel{3}\begin{verbatim}
+           46   1
+   (14)  - ÄÄ + Ä %i
+           27   3
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty14}
+\begin{paste}{ugIntroNumbersPageEmpty14}{ugIntroNumbersPagePatch14}
+\pastebutton{ugIntroNumbersPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{(2/3 + \%i)**3\bound{gaussint }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch15}
+\begin{paste}{ugIntroNumbersPageFull15}{ugIntroNumbersPageEmpty15}
+\pastebutton{ugIntroNumbersPageFull15}{\hidepaste}
+\tab{5}\spadcommand{conjugate \%\free{gaussint }}
+\indentrel{3}\begin{verbatim}
+           46   1
+   (15)  - ÄÄ - Ä %i
+           27   3
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty15}
+\begin{paste}{ugIntroNumbersPageEmpty15}{ugIntroNumbersPagePatch15}
+\pastebutton{ugIntroNumbersPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{conjugate \%\free{gaussint }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch16}
+\begin{paste}{ugIntroNumbersPageFull16}{ugIntroNumbersPageEmpty16}
+\pastebutton{ugIntroNumbersPageFull16}{\hidepaste}
+\tab{5}\spadcommand{factor(89 - 23 * \%i)}
+\indentrel{3}\begin{verbatim}
+                           2         2
+   (16)  - (1 + %i)(2 + %i) (3 + 2%i)
+                         Type: Factored Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty16}
+\begin{paste}{ugIntroNumbersPageEmpty16}{ugIntroNumbersPagePatch16}
+\pastebutton{ugIntroNumbersPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{factor(89 - 23 * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch17}
+\begin{paste}{ugIntroNumbersPageFull17}{ugIntroNumbersPageEmpty17}
+\pastebutton{ugIntroNumbersPageFull17}{\hidepaste}
+\tab{5}\spadcommand{exp(\%pi/4.0 * \%i)}
+\indentrel{3}\begin{verbatim}
+   (17)
+     0.7071067811 8654752440 0844362104 8490392849
+   + 
+     0.7071067811 8654752440 0844362104 8490392848 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty17}
+\begin{paste}{ugIntroNumbersPageEmpty17}{ugIntroNumbersPagePatch17}
+\pastebutton{ugIntroNumbersPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{exp(\%pi/4.0 * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch18}
+\begin{paste}{ugIntroNumbersPageFull18}{ugIntroNumbersPageEmpty18}
+\pastebutton{ugIntroNumbersPageFull18}{\hidepaste}
+\tab{5}\spadcommand{decimal(1/352)}
+\indentrel{3}\begin{verbatim}
+                __
+   (18)  0.0028409
+                                 Type: DecimalExpansion
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty18}
+\begin{paste}{ugIntroNumbersPageEmpty18}{ugIntroNumbersPagePatch18}
+\pastebutton{ugIntroNumbersPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{decimal(1/352)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch19}
+\begin{paste}{ugIntroNumbersPageFull19}{ugIntroNumbersPageEmpty19}
+\pastebutton{ugIntroNumbersPageFull19}{\hidepaste}
+\tab{5}\spadcommand{continuedFraction(6543/210)}
+\indentrel{3}\begin{verbatim}
+                1 ³     1 ³     1 ³     1 ³
+   (19)  31 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
+              ³ 6     ³ 2     ³ 1     ³ 3
+                        Type: ContinuedFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty19}
+\begin{paste}{ugIntroNumbersPageEmpty19}{ugIntroNumbersPagePatch19}
+\pastebutton{ugIntroNumbersPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{continuedFraction(6543/210)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch20}
+\begin{paste}{ugIntroNumbersPageFull20}{ugIntroNumbersPageEmpty20}
+\pastebutton{ugIntroNumbersPageFull20}{\hidepaste}
+\tab{5}\spadcommand{partialFraction(1,factorial(10))\bound{partfrac }}
+\indentrel{3}\begin{verbatim}
+         159   23   12   1
+   (20)  ÄÄÄ - ÄÄ - ÄÄ + Ä
+           8    4    2   7
+          2    3    5
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty20}
+\begin{paste}{ugIntroNumbersPageEmpty20}{ugIntroNumbersPagePatch20}
+\pastebutton{ugIntroNumbersPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{partialFraction(1,factorial(10))\bound{partfrac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch21}
+\begin{paste}{ugIntroNumbersPageFull21}{ugIntroNumbersPageEmpty21}
+\pastebutton{ugIntroNumbersPageFull21}{\hidepaste}
+\tab{5}\spadcommand{padicFraction(\%)\free{partfrac }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   1    1    1    1    1    1    2    1    2   2    2   1
+   Ä + ÄÄ + ÄÄ + ÄÄ + ÄÄ + ÄÄ - ÄÄ - ÄÄ - ÄÄ - Ä - ÄÄ + Ä
+   2    4    5    6    7    8    2    3    4   5    2   7
+       2    2    2    2    2    3    3    3        5
+                          Type: PartialFraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty21}
+\begin{paste}{ugIntroNumbersPageEmpty21}{ugIntroNumbersPagePatch21}
+\pastebutton{ugIntroNumbersPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{padicFraction(\%)\free{partfrac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch22}
+\begin{paste}{ugIntroNumbersPageFull22}{ugIntroNumbersPageEmpty22}
+\pastebutton{ugIntroNumbersPageFull22}{\hidepaste}
+\tab{5}\spadcommand{radix(4/7, 8)\bound{rad }}
+\indentrel{3}\begin{verbatim}
+           _
+   (22)  0.4
+                                 Type: RadixExpansion 8
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty22}
+\begin{paste}{ugIntroNumbersPageEmpty22}{ugIntroNumbersPagePatch22}
+\pastebutton{ugIntroNumbersPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{radix(4/7, 8)\bound{rad }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch23}
+\begin{paste}{ugIntroNumbersPageFull23}{ugIntroNumbersPageEmpty23}
+\pastebutton{ugIntroNumbersPageFull23}{\hidepaste}
+\tab{5}\spadcommand{\% + 2/3*\%i\free{rad }}
+\indentrel{3}\begin{verbatim}
+         4   2
+   (23)  Ä + Ä %i
+         7   3
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty23}
+\begin{paste}{ugIntroNumbersPageEmpty23}{ugIntroNumbersPagePatch23}
+\pastebutton{ugIntroNumbersPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{\% + 2/3*\%i\free{rad }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch24}
+\begin{paste}{ugIntroNumbersPageFull24}{ugIntroNumbersPageEmpty24}
+\pastebutton{ugIntroNumbersPageFull24}{\hidepaste}
+\tab{5}\spadcommand{(5 + sqrt 63 + sqrt 847)**(1/3)}
+\indentrel{3}\begin{verbatim}
+          ÚÄÄÄÄÄÄÄÄÄÄ¿
+         3³   ÚÄ¿
+   (24)  \³14\³7  + 5
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty24}
+\begin{paste}{ugIntroNumbersPageEmpty24}{ugIntroNumbersPagePatch24}
+\pastebutton{ugIntroNumbersPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{(5 + sqrt 63 + sqrt 847)**(1/3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch25}
+\begin{paste}{ugIntroNumbersPageFull25}{ugIntroNumbersPageEmpty25}
+\pastebutton{ugIntroNumbersPageFull25}{\hidepaste}
+\tab{5}\spadcommand{x : PrimeField 7 := 5\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (25)  5
+                                     Type: PrimeField 7
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty25}
+\begin{paste}{ugIntroNumbersPageEmpty25}{ugIntroNumbersPagePatch25}
+\pastebutton{ugIntroNumbersPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{x : PrimeField 7 := 5\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch26}
+\begin{paste}{ugIntroNumbersPageFull26}{ugIntroNumbersPageEmpty26}
+\pastebutton{ugIntroNumbersPageFull26}{\hidepaste}
+\tab{5}\spadcommand{x**3\free{x }}
+\indentrel{3}\begin{verbatim}
+   (26)  6
+                                     Type: PrimeField 7
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty26}
+\begin{paste}{ugIntroNumbersPageEmpty26}{ugIntroNumbersPagePatch26}
+\pastebutton{ugIntroNumbersPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{x**3\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch27}
+\begin{paste}{ugIntroNumbersPageFull27}{ugIntroNumbersPageEmpty27}
+\pastebutton{ugIntroNumbersPageFull27}{\hidepaste}
+\tab{5}\spadcommand{1/x\free{x }}
+\indentrel{3}\begin{verbatim}
+   (27)  3
+                                     Type: PrimeField 7
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty27}
+\begin{paste}{ugIntroNumbersPageEmpty27}{ugIntroNumbersPagePatch27}
+\pastebutton{ugIntroNumbersPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{1/x\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch28}
+\begin{paste}{ugIntroNumbersPageFull28}{ugIntroNumbersPageEmpty28}
+\pastebutton{ugIntroNumbersPageFull28}{\hidepaste}
+\tab{5}\spadcommand{y : IntegerMod 6 := 5\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (28)  5
+                                     Type: IntegerMod 6
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty28}
+\begin{paste}{ugIntroNumbersPageEmpty28}{ugIntroNumbersPagePatch28}
+\pastebutton{ugIntroNumbersPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{y : IntegerMod 6 := 5\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch29}
+\begin{paste}{ugIntroNumbersPageFull29}{ugIntroNumbersPageEmpty29}
+\pastebutton{ugIntroNumbersPageFull29}{\hidepaste}
+\tab{5}\spadcommand{y**3\free{y }}
+\indentrel{3}\begin{verbatim}
+   (29)  5
+                                     Type: IntegerMod 6
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty29}
+\begin{paste}{ugIntroNumbersPageEmpty29}{ugIntroNumbersPagePatch29}
+\pastebutton{ugIntroNumbersPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{y**3\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch30}
+\begin{paste}{ugIntroNumbersPageFull30}{ugIntroNumbersPageEmpty30}
+\pastebutton{ugIntroNumbersPageFull30}{\hidepaste}
+\tab{5}\spadcommand{1/y\free{y }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty30}
+\begin{paste}{ugIntroNumbersPageEmpty30}{ugIntroNumbersPagePatch30}
+\pastebutton{ugIntroNumbersPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{1/y\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch31}
+\begin{paste}{ugIntroNumbersPageFull31}{ugIntroNumbersPageEmpty31}
+\pastebutton{ugIntroNumbersPageFull31}{\hidepaste}
+\tab{5}\spadcommand{a := rootOf(a**5 + a**3 + a**2 + 3,a)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (30)  a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty31}
+\begin{paste}{ugIntroNumbersPageEmpty31}{ugIntroNumbersPagePatch31}
+\pastebutton{ugIntroNumbersPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{a := rootOf(a**5 + a**3 + a**2 + 3,a)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch32}
+\begin{paste}{ugIntroNumbersPageFull32}{ugIntroNumbersPageEmpty32}
+\pastebutton{ugIntroNumbersPageFull32}{\hidepaste}
+\tab{5}\spadcommand{(a + 1)**10\free{a }}
+\indentrel{3}\begin{verbatim}
+              4       3       2
+   (31)  - 85a  - 264a  - 378a  - 458a - 287
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty32}
+\begin{paste}{ugIntroNumbersPageEmpty32}{ugIntroNumbersPagePatch32}
+\pastebutton{ugIntroNumbersPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{(a + 1)**10\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch33}
+\begin{paste}{ugIntroNumbersPageFull33}{ugIntroNumbersPageEmpty33}
+\pastebutton{ugIntroNumbersPageFull33}{\hidepaste}
+\tab{5}\spadcommand{b := rootOf(b**4 + a,b)\bound{b }\free{a }}
+\indentrel{3}\begin{verbatim}
+   (32)  b
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty33}
+\begin{paste}{ugIntroNumbersPageEmpty33}{ugIntroNumbersPagePatch33}
+\pastebutton{ugIntroNumbersPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{b := rootOf(b**4 + a,b)\bound{b }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch34}
+\begin{paste}{ugIntroNumbersPageFull34}{ugIntroNumbersPageEmpty34}
+\pastebutton{ugIntroNumbersPageFull34}{\hidepaste}
+\tab{5}\spadcommand{2/(b - 1)\free{b }\bound{check }}
+\indentrel{3}\begin{verbatim}
+           2
+   (33)  ÄÄÄÄÄ
+         b - 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty34}
+\begin{paste}{ugIntroNumbersPageEmpty34}{ugIntroNumbersPagePatch34}
+\pastebutton{ugIntroNumbersPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{2/(b - 1)\free{b }\bound{check }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch35}
+\begin{paste}{ugIntroNumbersPageFull35}{ugIntroNumbersPageEmpty35}
+\pastebutton{ugIntroNumbersPageFull35}{\hidepaste}
+\tab{5}\spadcommand{ratDenom(\%)\free{check }\bound{check1 }}
+\indentrel{3}\begin{verbatim}
+   (34)
+       4    3     2          3     4    3     2          2
+     (a  - a  + 2a  - a + 1)b  + (a  - a  + 2a  - a + 1)b
+   + 
+       4    3     2              4    3     2
+     (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty35}
+\begin{paste}{ugIntroNumbersPageEmpty35}{ugIntroNumbersPagePatch35}
+\pastebutton{ugIntroNumbersPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{ratDenom(\%)\free{check }\bound{check1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch36}
+\begin{paste}{ugIntroNumbersPageFull36}{ugIntroNumbersPageEmpty36}
+\pastebutton{ugIntroNumbersPageFull36}{\hidepaste}
+\tab{5}\spadcommand{2/\%+1\free{check1 }\bound{check2 }}
+\indentrel{3}\begin{verbatim}
+   (35)
+         4    3     2          3
+       (a  - a  + 2a  - a + 1)b
+     + 
+         4    3     2          2
+       (a  - a  + 2a  - a + 1)b
+     + 
+         4    3     2              4    3     2
+       (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 3
+  /
+         4    3     2          3
+       (a  - a  + 2a  - a + 1)b
+     + 
+         4    3     2          2
+       (a  - a  + 2a  - a + 1)b
+     + 
+         4    3     2              4    3     2
+       (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty36}
+\begin{paste}{ugIntroNumbersPageEmpty36}{ugIntroNumbersPagePatch36}
+\pastebutton{ugIntroNumbersPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{2/\%+1\free{check1 }\bound{check2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch37}
+\begin{paste}{ugIntroNumbersPageFull37}{ugIntroNumbersPageEmpty37}
+\pastebutton{ugIntroNumbersPageFull37}{\hidepaste}
+\tab{5}\spadcommand{ratDenom(\%)\free{check2 }}
+\indentrel{3}\begin{verbatim}
+   (36)  b
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty37}
+\begin{paste}{ugIntroNumbersPageEmpty37}{ugIntroNumbersPagePatch37}
+\pastebutton{ugIntroNumbersPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{ratDenom(\%)\free{check2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPagePatch38}
+\begin{paste}{ugIntroNumbersPageFull38}{ugIntroNumbersPageEmpty38}
+\pastebutton{ugIntroNumbersPageFull38}{\hidepaste}
+\tab{5}\spadcommand{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
+\indentrel{3}\begin{verbatim}
+   (37)  - 8i + 16j - 8k
+                               Type: Quaternion Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroNumbersPageEmpty38}
+\begin{paste}{ugIntroNumbersPageEmpty38}{ugIntroNumbersPagePatch38}
+\pastebutton{ugIntroNumbersPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroCollectPage}{ug01.ht}{Data Structures}
 \pageto{notitle}{ListXmpPage}
@@ -24659,6 +68593,442 @@ to obtaining good performance.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroCollectPagePatch1}
+\begin{paste}{ugIntroCollectPageFull1}{ugIntroCollectPageEmpty1}
+\pastebutton{ugIntroCollectPageFull1}{\hidepaste}
+\tab{5}\spadcommand{u := [1,-7,11]\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,- 7,11]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty1}
+\begin{paste}{ugIntroCollectPageEmpty1}{ugIntroCollectPagePatch1}
+\pastebutton{ugIntroCollectPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u := [1,-7,11]\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch2}
+\begin{paste}{ugIntroCollectPageFull2}{ugIntroCollectPageEmpty2}
+\pastebutton{ugIntroCollectPageFull2}{\hidepaste}
+\tab{5}\spadcommand{first rest rest u\free{u }}
+\indentrel{3}\begin{verbatim}
+   (2)  11
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty2}
+\begin{paste}{ugIntroCollectPageEmpty2}{ugIntroCollectPagePatch2}
+\pastebutton{ugIntroCollectPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{first rest rest u\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch3}
+\begin{paste}{ugIntroCollectPageFull3}{ugIntroCollectPageEmpty3}
+\pastebutton{ugIntroCollectPageFull3}{\hidepaste}
+\tab{5}\spadcommand{concat!(u,[9,1,3,-4]); u\free{u }\bound{u1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,- 7,11,9,1,3,- 4]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty3}
+\begin{paste}{ugIntroCollectPageEmpty3}{ugIntroCollectPagePatch3}
+\pastebutton{ugIntroCollectPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{concat!(u,[9,1,3,-4]); u\free{u }\bound{u1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch4}
+\begin{paste}{ugIntroCollectPageFull4}{ugIntroCollectPageEmpty4}
+\pastebutton{ugIntroCollectPageFull4}{\hidepaste}
+\tab{5}\spadcommand{lastnode := rest(u,3)\free{u1 }\bound{u2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [9,1,3,- 4]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty4}
+\begin{paste}{ugIntroCollectPageEmpty4}{ugIntroCollectPagePatch4}
+\pastebutton{ugIntroCollectPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{lastnode := rest(u,3)\free{u1 }\bound{u2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch5}
+\begin{paste}{ugIntroCollectPageFull5}{ugIntroCollectPageEmpty5}
+\pastebutton{ugIntroCollectPageFull5}{\hidepaste}
+\tab{5}\spadcommand{setrest!(lastnode,rest(u,2)); u\free{u2 }}
+\indentrel{3}\begin{verbatim}
+               ____
+   (5)  [1,- 7,11,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty5}
+\begin{paste}{ugIntroCollectPageEmpty5}{ugIntroCollectPagePatch5}
+\pastebutton{ugIntroCollectPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{setrest!(lastnode,rest(u,2)); u\free{u2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch6}
+\begin{paste}{ugIntroCollectPageFull6}{ugIntroCollectPageEmpty6}
+\pastebutton{ugIntroCollectPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[factor(i) for i in 2.. by 2]\bound{stream1 }}
+\indentrel{3}\begin{verbatim}
+            2      3      2       4    2  2
+   (6)  [2,2 ,2 3,2 ,2 5,2 3,2 7,2 ,2 3 ,2 5,...]
+                          Type: Stream Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty6}
+\begin{paste}{ugIntroCollectPageEmpty6}{ugIntroCollectPagePatch6}
+\pastebutton{ugIntroCollectPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[factor(i) for i in 2.. by 2]\bound{stream1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch7}
+\begin{paste}{ugIntroCollectPageFull7}{ugIntroCollectPageEmpty7}
+\pastebutton{ugIntroCollectPageFull7}{\hidepaste}
+\tab{5}\spadcommand{\%.36\free{stream1 }}
+\indentrel{3}\begin{verbatim}
+         3 2
+   (7)  2 3
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty7}
+\begin{paste}{ugIntroCollectPageEmpty7}{ugIntroCollectPagePatch7}
+\pastebutton{ugIntroCollectPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{\%.36\free{stream1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch8}
+\begin{paste}{ugIntroCollectPageFull8}{ugIntroCollectPageEmpty8}
+\pastebutton{ugIntroCollectPageFull8}{\hidepaste}
+\tab{5}\spadcommand{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a }}
+\indentrel{3}\begin{verbatim}
+                 3
+   (8)  [1,- 7,3,Ä]
+                 2
+             Type: OneDimensionalArray Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty8}
+\begin{paste}{ugIntroCollectPageEmpty8}{ugIntroCollectPagePatch8}
+\pastebutton{ugIntroCollectPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch9}
+\begin{paste}{ugIntroCollectPageFull9}{ugIntroCollectPageEmpty9}
+\pastebutton{ugIntroCollectPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a.3 := 11; a\bound{a1 }\free{a }}
+\indentrel{3}\begin{verbatim}
+                  3
+   (9)  [1,- 7,11,Ä]
+                  2
+             Type: OneDimensionalArray Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty9}
+\begin{paste}{ugIntroCollectPageEmpty9}{ugIntroCollectPagePatch9}
+\pastebutton{ugIntroCollectPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a.3 := 11; a\bound{a1 }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch10}
+\begin{paste}{ugIntroCollectPageFull10}{ugIntroCollectPageEmpty10}
+\pastebutton{ugIntroCollectPageFull10}{\hidepaste}
+\tab{5}\spadcommand{concat!(a,oneDimensionalArray [1,-2])\free{a1 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty10}
+\begin{paste}{ugIntroCollectPageEmpty10}{ugIntroCollectPagePatch10}
+\pastebutton{ugIntroCollectPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{concat!(a,oneDimensionalArray [1,-2])\free{a1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch11}
+\begin{paste}{ugIntroCollectPageFull11}{ugIntroCollectPageEmpty11}
+\pastebutton{ugIntroCollectPageFull11}{\hidepaste}
+\tab{5}\spadcommand{bits(32,true)}
+\indentrel{3}\begin{verbatim}
+   (10)  "11111111111111111111111111111111"
+                                             Type: Bits
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty11}
+\begin{paste}{ugIntroCollectPageEmpty11}{ugIntroCollectPagePatch11}
+\pastebutton{ugIntroCollectPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{bits(32,true)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch12}
+\begin{paste}{ugIntroCollectPageFull12}{ugIntroCollectPageEmpty12}
+\pastebutton{ugIntroCollectPageFull12}{\hidepaste}
+\tab{5}\spadcommand{f := flexibleArray [2, 7, -5]\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (11)  [2,7,- 5]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty12}
+\begin{paste}{ugIntroCollectPageEmpty12}{ugIntroCollectPagePatch12}
+\pastebutton{ugIntroCollectPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{f := flexibleArray [2, 7, -5]\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch13}
+\begin{paste}{ugIntroCollectPageFull13}{ugIntroCollectPageEmpty13}
+\pastebutton{ugIntroCollectPageFull13}{\hidepaste}
+\tab{5}\spadcommand{insert!(flexibleArray [11, -3],f,2)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (12)  [2,11,- 3,7,- 5]
+                            Type: FlexibleArray Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty13}
+\begin{paste}{ugIntroCollectPageEmpty13}{ugIntroCollectPagePatch13}
+\pastebutton{ugIntroCollectPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{insert!(flexibleArray [11, -3],f,2)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch14}
+\begin{paste}{ugIntroCollectPageFull14}{ugIntroCollectPageEmpty14}
+\pastebutton{ugIntroCollectPageFull14}{\hidepaste}
+\tab{5}\spadcommand{h := heap [-4,7,11,3,4,-7]\bound{h }}
+\indentrel{3}\begin{verbatim}
+   (13)  [11,4,7,- 4,3,- 7]
+                                     Type: Heap Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty14}
+\begin{paste}{ugIntroCollectPageEmpty14}{ugIntroCollectPagePatch14}
+\pastebutton{ugIntroCollectPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{h := heap [-4,7,11,3,4,-7]\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch15}
+\begin{paste}{ugIntroCollectPageFull15}{ugIntroCollectPageEmpty15}
+\pastebutton{ugIntroCollectPageFull15}{\hidepaste}
+\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\free{h }}
+\indentrel{3}\begin{verbatim}
+   (14)  [11,7,4,3,- 4,- 7]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty15}
+\begin{paste}{ugIntroCollectPageEmpty15}{ugIntroCollectPagePatch15}
+\pastebutton{ugIntroCollectPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch16}
+\begin{paste}{ugIntroCollectPageFull16}{ugIntroCollectPageEmpty16}
+\pastebutton{ugIntroCollectPageFull16}{\hidepaste}
+\tab{5}\spadcommand{binarySearchTree [5,3,2,9,4,7,11]}
+\indentrel{3}\begin{verbatim}
+   (15)  [[2,3,4],5,[7,9,11]]
+                 Type: BinarySearchTree PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty16}
+\begin{paste}{ugIntroCollectPageEmpty16}{ugIntroCollectPagePatch16}
+\pastebutton{ugIntroCollectPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{binarySearchTree [5,3,2,9,4,7,11]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch17}
+\begin{paste}{ugIntroCollectPageFull17}{ugIntroCollectPageEmpty17}
+\pastebutton{ugIntroCollectPageFull17}{\hidepaste}
+\tab{5}\spadcommand{modTree(8,[2,3,5,7])}
+\indentrel{3}\begin{verbatim}
+   (16)  [0,2,3,1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty17}
+\begin{paste}{ugIntroCollectPageEmpty17}{ugIntroCollectPagePatch17}
+\pastebutton{ugIntroCollectPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{modTree(8,[2,3,5,7])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch18}
+\begin{paste}{ugIntroCollectPageFull18}{ugIntroCollectPageEmpty18}
+\pastebutton{ugIntroCollectPageFull18}{\hidepaste}
+\tab{5}\spadcommand{fs := set[1/3,4/5,-1/3,4/5]\bound{fs }}
+\indentrel{3}\begin{verbatim}
+            1 1 4
+   (17)  {- Ä,Ä,Ä}
+            3 3 5
+                             Type: Set Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty18}
+\begin{paste}{ugIntroCollectPageEmpty18}{ugIntroCollectPagePatch18}
+\pastebutton{ugIntroCollectPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{fs := set[1/3,4/5,-1/3,4/5]\bound{fs }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch19}
+\begin{paste}{ugIntroCollectPageFull19}{ugIntroCollectPageEmpty19}
+\pastebutton{ugIntroCollectPageFull19}{\hidepaste}
+\tab{5}\spadcommand{multiset [x rem 5 for x in primes(2,1000)]}
+\indentrel{3}\begin{verbatim}
+   (18)  {0,42: 3,40: 1,38: 4,47: 2}
+                                 Type: Multiset Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty19}
+\begin{paste}{ugIntroCollectPageEmpty19}{ugIntroCollectPagePatch19}
+\pastebutton{ugIntroCollectPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{multiset [x rem 5 for x in primes(2,1000)]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch20}
+\begin{paste}{ugIntroCollectPageFull20}{ugIntroCollectPageEmpty20}
+\pastebutton{ugIntroCollectPageFull20}{\hidepaste}
+\tab{5}\spadcommand{t : Table(Integer,Integer) := empty()\bound{t }}
+\indentrel{3}\begin{verbatim}
+   (19)  table()
+                           Type: Table(Integer,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty20}
+\begin{paste}{ugIntroCollectPageEmpty20}{ugIntroCollectPagePatch20}
+\pastebutton{ugIntroCollectPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{t : Table(Integer,Integer) := empty()\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch21}
+\begin{paste}{ugIntroCollectPageFull21}{ugIntroCollectPageEmpty21}
+\pastebutton{ugIntroCollectPageFull21}{\hidepaste}
+\tab{5}\spadcommand{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty21}
+\begin{paste}{ugIntroCollectPageEmpty21}{ugIntroCollectPagePatch21}
+\pastebutton{ugIntroCollectPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch22}
+\begin{paste}{ugIntroCollectPageFull22}{ugIntroCollectPageEmpty22}
+\pastebutton{ugIntroCollectPageFull22}{\hidepaste}
+\tab{5}\spadcommand{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t }}
+\indentrel{3}\begin{verbatim}
+   (21)  table(2= 47,4= 38,1= 40,3= 42,0= 1)
+                           Type: Table(Integer,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty22}
+\begin{paste}{ugIntroCollectPageEmpty22}{ugIntroCollectPagePatch22}
+\pastebutton{ugIntroCollectPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch23}
+\begin{paste}{ugIntroCollectPageFull23}{ugIntroCollectPageEmpty23}
+\pastebutton{ugIntroCollectPageFull23}{\hidepaste}
+\tab{5}\spadcommand{daniel : Record(age : Integer, salary : Float)\bound{danieldec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty23}
+\begin{paste}{ugIntroCollectPageEmpty23}{ugIntroCollectPagePatch23}
+\pastebutton{ugIntroCollectPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{daniel : Record(age : Integer, salary : Float)\bound{danieldec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch24}
+\begin{paste}{ugIntroCollectPageFull24}{ugIntroCollectPageEmpty24}
+\pastebutton{ugIntroCollectPageFull24}{\hidepaste}
+\tab{5}\spadcommand{daniel := [28, 32005.12]\free{danieldec }\bound{daniel }}
+\indentrel{3}\begin{verbatim}
+   (23)  [age= 28,salary= 32005.12]
+               Type: Record(age: Integer,salary: Float)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty24}
+\begin{paste}{ugIntroCollectPageEmpty24}{ugIntroCollectPagePatch24}
+\pastebutton{ugIntroCollectPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{daniel := [28, 32005.12]\free{danieldec }\bound{daniel }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch25}
+\begin{paste}{ugIntroCollectPageFull25}{ugIntroCollectPageEmpty25}
+\pastebutton{ugIntroCollectPageFull25}{\hidepaste}
+\tab{5}\spadcommand{daniel.salary := 35000; daniel\free{daniel }}
+\indentrel{3}\begin{verbatim}
+   (24)  [age= 28,salary= 35000.0]
+               Type: Record(age: Integer,salary: Float)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty25}
+\begin{paste}{ugIntroCollectPageEmpty25}{ugIntroCollectPagePatch25}
+\pastebutton{ugIntroCollectPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{daniel.salary := 35000; daniel\free{daniel }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch26}
+\begin{paste}{ugIntroCollectPageFull26}{ugIntroCollectPageEmpty26}
+\pastebutton{ugIntroCollectPageFull26}{\hidepaste}
+\tab{5}\spadcommand{dog: Union(licenseNumber: Integer, name: String)\bound{xint }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty26}
+\begin{paste}{ugIntroCollectPageEmpty26}{ugIntroCollectPagePatch26}
+\pastebutton{ugIntroCollectPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{dog: Union(licenseNumber: Integer, name: String)\bound{xint }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPagePatch27}
+\begin{paste}{ugIntroCollectPageFull27}{ugIntroCollectPageEmpty27}
+\pastebutton{ugIntroCollectPageFull27}{\hidepaste}
+\tab{5}\spadcommand{dog := "Whisper"\free{xint }}
+\indentrel{3}\begin{verbatim}
+   (26)  "Whisper"
+                          Type: Union(name: String,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCollectPageEmpty27}
+\begin{paste}{ugIntroCollectPageEmpty27}{ugIntroCollectPagePatch27}
+\pastebutton{ugIntroCollectPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{dog := "Whisper"\free{xint }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroTwoDimPage}{ug01.ht}{Expanding to Higher Dimensions}
 \pageto{notitle}{TwoDimensionalArrayXmpPage}
@@ -24753,6 +69123,149 @@ You can perform operations such as
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroTwoDimPagePatch1}
+\begin{paste}{ugIntroTwoDimPageFull1}{ugIntroTwoDimPageEmpty1}
+\pastebutton{ugIntroTwoDimPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m := matrix([[1,2], [3,4]])\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+   (1)  ³    ³
+        À3  4Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty1}
+\begin{paste}{ugIntroTwoDimPageEmpty1}{ugIntroTwoDimPagePatch1}
+\pastebutton{ugIntroTwoDimPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m := matrix([[1,2], [3,4]])\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch2}
+\begin{paste}{ugIntroTwoDimPageFull2}{ugIntroTwoDimPageEmpty2}
+\pastebutton{ugIntroTwoDimPageFull2}{\hidepaste}
+\tab{5}\spadcommand{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4])\bound{hilb }}
+\indentrel{3}\begin{verbatim}
+        Ú    1        1        1        1  ¿
+        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
+        ³  x - 2    x - 3    x - 4    x - 5³
+        ³                                  ³
+        ³    1        1        1        1  ³
+        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
+        ³  x - 3    x - 4    x - 5    x - 6³
+   (2)  ³                                  ³
+        ³    1        1        1        1  ³
+        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
+        ³  x - 4    x - 5    x - 6    x - 7³
+        ³                                  ³
+        ³    1        1        1        1  ³
+        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
+        À  x - 5    x - 6    x - 7    x - 8Ù
+               Type: Matrix Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty2}
+\begin{paste}{ugIntroTwoDimPageEmpty2}{ugIntroTwoDimPagePatch2}
+\pastebutton{ugIntroTwoDimPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4])\bound{hilb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch3}
+\begin{paste}{ugIntroTwoDimPageFull3}{ugIntroTwoDimPageEmpty3}
+\pastebutton{ugIntroTwoDimPageFull3}{\hidepaste}
+\tab{5}\spadcommand{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]]\bound{vm }}
+\indentrel{3}\begin{verbatim}
+        Ú1   1   1 ¿
+        ³          ³
+   (3)  ³x   y   z ³
+        ³          ³
+        ³ 2   2   2³
+        Àx   y   z Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty3}
+\begin{paste}{ugIntroTwoDimPageEmpty3}{ugIntroTwoDimPagePatch3}
+\pastebutton{ugIntroTwoDimPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]]\bound{vm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch4}
+\begin{paste}{ugIntroTwoDimPageFull4}{ugIntroTwoDimPageEmpty4}
+\pastebutton{ugIntroTwoDimPageFull4}{\hidepaste}
+\tab{5}\spadcommand{vm(3,3)\free{vm }}
+\indentrel{3}\begin{verbatim}
+         2
+   (4)  z
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty4}
+\begin{paste}{ugIntroTwoDimPageEmpty4}{ugIntroTwoDimPagePatch4}
+\pastebutton{ugIntroTwoDimPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{vm(3,3)\free{vm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch5}
+\begin{paste}{ugIntroTwoDimPageFull5}{ugIntroTwoDimPageEmpty5}
+\pastebutton{ugIntroTwoDimPageFull5}{\hidepaste}
+\tab{5}\spadcommand{column(vm,2)\free{vm }}
+\indentrel{3}\begin{verbatim}
+              2
+   (5)  [1,y,y ]
+                        Type: Vector Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty5}
+\begin{paste}{ugIntroTwoDimPageEmpty5}{ugIntroTwoDimPagePatch5}
+\pastebutton{ugIntroTwoDimPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{column(vm,2)\free{vm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch6}
+\begin{paste}{ugIntroTwoDimPageFull6}{ugIntroTwoDimPageEmpty6}
+\pastebutton{ugIntroTwoDimPageFull6}{\hidepaste}
+\tab{5}\spadcommand{vm * vm\free{vm }}
+\indentrel{3}\begin{verbatim}
+   (6)
+   Ú    2                2              2          ¿
+   ³   x  + x + 1       y  + y + 1     z  + z + 1  ³
+   ³                                               ³
+   ³  2                 2     2        3           ³
+   ³ x z + x y + x     y z + y  + x   z  + y z + x ³
+   ³                                               ³
+   ³ 2 2      2    2   2 2    3    2   4    2     2³
+   Àx z  + x y  + x   y z  + y  + x   z  + y z + x Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty6}
+\begin{paste}{ugIntroTwoDimPageEmpty6}{ugIntroTwoDimPagePatch6}
+\pastebutton{ugIntroTwoDimPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{vm * vm\free{vm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPagePatch7}
+\begin{paste}{ugIntroTwoDimPageFull7}{ugIntroTwoDimPageEmpty7}
+\pastebutton{ugIntroTwoDimPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factor determinant vm\free{vm }\bound{d }}
+\indentrel{3}\begin{verbatim}
+   (7)  (y - x)(z - y)(z - x)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroTwoDimPageEmpty7}
+\begin{paste}{ugIntroTwoDimPageEmpty7}{ugIntroTwoDimPagePatch7}
+\pastebutton{ugIntroTwoDimPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factor determinant vm\free{vm }\bound{d }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroYouPage}{ug01.ht}{Writing Your Own Functions}
 \pageto{notitle}{ugUserPage}
@@ -24957,6 +69470,408 @@ The rule
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroYouPagePatch1}
+\begin{paste}{ugIntroYouPageFull1}{ugIntroYouPageEmpty1}
+\pastebutton{ugIntroYouPageFull1}{\hidepaste}
+\tab{5}\spadcommand{fact(0) == 1\bound{fact }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty1}
+\begin{paste}{ugIntroYouPageEmpty1}{ugIntroYouPagePatch1}
+\pastebutton{ugIntroYouPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{fact(0) == 1\bound{fact }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch2}
+\begin{paste}{ugIntroYouPageFull2}{ugIntroYouPageEmpty2}
+\pastebutton{ugIntroYouPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fact(n) == n*fact(n-1)\bound{facta }\free{fact }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty2}
+\begin{paste}{ugIntroYouPageEmpty2}{ugIntroYouPagePatch2}
+\pastebutton{ugIntroYouPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fact(n) == n*fact(n-1)\bound{facta }\free{fact }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch3}
+\begin{paste}{ugIntroYouPageFull3}{ugIntroYouPageEmpty3}
+\pastebutton{ugIntroYouPageFull3}{\hidepaste}
+\tab{5}\spadcommand{fact(50)\free{facta }}
+\indentrel{3}\begin{verbatim}
+   (3)
+  304140932017133780436126081660647688443776415689605120_
+   00000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty3}
+\begin{paste}{ugIntroYouPageEmpty3}{ugIntroYouPagePatch3}
+\pastebutton{ugIntroYouPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{fact(50)\free{facta }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch4}
+\begin{paste}{ugIntroYouPageFull4}{ugIntroYouPageEmpty4}
+\pastebutton{ugIntroYouPageFull4}{\hidepaste}
+\tab{5}\spadcommand{fac(n) == if n < 3 then n else n * fac(n - 1)\bound{fac }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty4}
+\begin{paste}{ugIntroYouPageEmpty4}{ugIntroYouPagePatch4}
+\pastebutton{ugIntroYouPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{fac(n) == if n < 3 then n else n * fac(n - 1)\bound{fac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch5}
+\begin{paste}{ugIntroYouPageFull5}{ugIntroYouPageEmpty5}
+\pastebutton{ugIntroYouPageFull5}{\hidepaste}
+\tab{5}\spadcommand{fac(50)\free{fac }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  304140932017133780436126081660647688443776415689605120_
+   00000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty5}
+\begin{paste}{ugIntroYouPageEmpty5}{ugIntroYouPagePatch5}
+\pastebutton{ugIntroYouPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{fac(50)\free{fac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch6}
+\begin{paste}{ugIntroYouPageFull6}{ugIntroYouPageEmpty6}
+\pastebutton{ugIntroYouPageFull6}{\hidepaste}
+\tab{5}\spadcommand{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)\bound{fa }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty6}
+\begin{paste}{ugIntroYouPageEmpty6}{ugIntroYouPagePatch6}
+\pastebutton{ugIntroYouPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)\bound{fa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch7}
+\begin{paste}{ugIntroYouPageFull7}{ugIntroYouPageEmpty7}
+\pastebutton{ugIntroYouPageFull7}{\hidepaste}
+\tab{5}\spadcommand{fa(50)\free{fa }}
+\indentrel{3}\begin{verbatim}
+   (7)
+  304140932017133780436126081660647688443776415689605120_
+   00000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty7}
+\begin{paste}{ugIntroYouPageEmpty7}{ugIntroYouPagePatch7}
+\pastebutton{ugIntroYouPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{fa(50)\free{fa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch8}
+\begin{paste}{ugIntroYouPageFull8}{ugIntroYouPageEmpty8}
+\pastebutton{ugIntroYouPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f(n) == reduce(*,[i for i in 2..n])\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty8}
+\begin{paste}{ugIntroYouPageEmpty8}{ugIntroYouPagePatch8}
+\pastebutton{ugIntroYouPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f(n) == reduce(*,[i for i in 2..n])\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch9}
+\begin{paste}{ugIntroYouPageFull9}{ugIntroYouPageEmpty9}
+\pastebutton{ugIntroYouPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f(50)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (9)
+  304140932017133780436126081660647688443776415689605120_
+   00000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty9}
+\begin{paste}{ugIntroYouPageEmpty9}{ugIntroYouPagePatch9}
+\pastebutton{ugIntroYouPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f(50)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch10}
+\begin{paste}{ugIntroYouPageFull10}{ugIntroYouPageEmpty10}
+\pastebutton{ugIntroYouPageFull10}{\hidepaste}
+\tab{5}\spadcommand{factorial(50)}
+\indentrel{3}\begin{verbatim}
+   (10)
+  304140932017133780436126081660647688443776415689605120_
+   00000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty10}
+\begin{paste}{ugIntroYouPageEmpty10}{ugIntroYouPagePatch10}
+\pastebutton{ugIntroYouPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{factorial(50)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch11}
+\begin{paste}{ugIntroYouPageFull11}{ugIntroYouPageEmpty11}
+\pastebutton{ugIntroYouPageFull11}{\hidepaste}
+\tab{5}\spadcommand{permMat(n, i, j) ==
+  m := diagonalMatrix
+    [(if i = k or j = k then 0 else 1)
+      for k in 1..n]
+  m(i,j) := 1
+  m(j,i) := 1
+  m
+\bound{permMat }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty11}
+\begin{paste}{ugIntroYouPageEmpty11}{ugIntroYouPagePatch11}
+\pastebutton{ugIntroYouPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{permMat(n, i, j) ==
+  m := diagonalMatrix
+    [(if i = k or j = k then 0 else 1)
+      for k in 1..n]
+  m(i,j) := 1
+  m(j,i) := 1
+  m
+\bound{permMat }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch12}
+\begin{paste}{ugIntroYouPageFull12}{ugIntroYouPageEmpty12}
+\pastebutton{ugIntroYouPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p := permMat(4,2,3)\free{permMat }\bound{p }}
+\indentrel{3}\begin{verbatim}
+         Ú1  0  0  0¿
+         ³          ³
+         ³0  0  1  0³
+   (12)  ³          ³
+         ³0  1  0  0³
+         ³          ³
+         À0  0  0  1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty12}
+\begin{paste}{ugIntroYouPageEmpty12}{ugIntroYouPagePatch12}
+\pastebutton{ugIntroYouPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p := permMat(4,2,3)\free{permMat }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch13}
+\begin{paste}{ugIntroYouPageFull13}{ugIntroYouPageEmpty13}
+\pastebutton{ugIntroYouPageFull13}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m }}
+\indentrel{3}\begin{verbatim}
+         Ú1   2   3   4 ¿
+         ³              ³
+         ³5   6   7   8 ³
+   (13)  ³              ³
+         ³9   10  11  12³
+         ³              ³
+         À13  14  15  16Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty13}
+\begin{paste}{ugIntroYouPageEmpty13}{ugIntroYouPagePatch13}
+\pastebutton{ugIntroYouPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch14}
+\begin{paste}{ugIntroYouPageFull14}{ugIntroYouPageEmpty14}
+\pastebutton{ugIntroYouPageFull14}{\hidepaste}
+\tab{5}\spadcommand{permMat(4,2,3) * m\free{p m }}
+\indentrel{3}\begin{verbatim}
+         Ú1   2   3   4 ¿
+         ³              ³
+         ³9   10  11  12³
+   (14)  ³              ³
+         ³5   6   7   8 ³
+         ³              ³
+         À13  14  15  16Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty14}
+\begin{paste}{ugIntroYouPageEmpty14}{ugIntroYouPagePatch14}
+\pastebutton{ugIntroYouPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{permMat(4,2,3) * m\free{p m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch15}
+\begin{paste}{ugIntroYouPageFull15}{ugIntroYouPageEmpty15}
+\pastebutton{ugIntroYouPageFull15}{\hidepaste}
+\tab{5}\spadcommand{t : (Float -> Float, Float) -> Float\bound{tdecl }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty15}
+\begin{paste}{ugIntroYouPageEmpty15}{ugIntroYouPagePatch15}
+\pastebutton{ugIntroYouPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{t : (Float -> Float, Float) -> Float\bound{tdecl }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch16}
+\begin{paste}{ugIntroYouPageFull16}{ugIntroYouPageEmpty16}
+\pastebutton{ugIntroYouPageFull16}{\hidepaste}
+\tab{5}\spadcommand{t(fun, x) == fun(x)**2 + sin(x)**2\free{tdecl }\bound{t }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty16}
+\begin{paste}{ugIntroYouPageEmpty16}{ugIntroYouPagePatch16}
+\pastebutton{ugIntroYouPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{t(fun, x) == fun(x)**2 + sin(x)**2\free{tdecl }\bound{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch17}
+\begin{paste}{ugIntroYouPageFull17}{ugIntroYouPageEmpty17}
+\pastebutton{ugIntroYouPageFull17}{\hidepaste}
+\tab{5}\spadcommand{t(cos, 5.2058)\free{t }}
+\indentrel{3}\begin{verbatim}
+   (17)  1.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty17}
+\begin{paste}{ugIntroYouPageEmpty17}{ugIntroYouPagePatch17}
+\pastebutton{ugIntroYouPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{t(cos, 5.2058)\free{t }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch18}
+\begin{paste}{ugIntroYouPageFull18}{ugIntroYouPageEmpty18}
+\pastebutton{ugIntroYouPageFull18}{\hidepaste}
+\tab{5}\spadcommand{cosinv(y) == cos(1/y)\bound{cosinv }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty18}
+\begin{paste}{ugIntroYouPageEmpty18}{ugIntroYouPagePatch18}
+\pastebutton{ugIntroYouPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{cosinv(y) == cos(1/y)\bound{cosinv }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch19}
+\begin{paste}{ugIntroYouPageFull19}{ugIntroYouPageEmpty19}
+\pastebutton{ugIntroYouPageFull19}{\hidepaste}
+\tab{5}\spadcommand{t(cosinv, 5.2058)\free{t }\free{cosinv }}
+\indentrel{3}\begin{verbatim}
+   (19)  1.7392237241 800516493
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty19}
+\begin{paste}{ugIntroYouPageEmpty19}{ugIntroYouPagePatch19}
+\pastebutton{ugIntroYouPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{t(cosinv, 5.2058)\free{t }\free{cosinv }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch20}
+\begin{paste}{ugIntroYouPageFull20}{ugIntroYouPageEmpty20}
+\pastebutton{ugIntroYouPageFull20}{\hidepaste}
+\tab{5}\spadcommand{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))\bound{g }}
+\indentrel{3}\begin{verbatim}
+             ÚÄ¿ ÚÄ¿        ÚÄÄÄ¿
+   (20)  %BD\³a \³b  == %BD\³a b
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty20}
+\begin{paste}{ugIntroYouPageEmpty20}{ugIntroYouPagePatch20}
+\pastebutton{ugIntroYouPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch21}
+\begin{paste}{ugIntroYouPageFull21}{ugIntroYouPageEmpty21}
+\pastebutton{ugIntroYouPageFull21}{\hidepaste}
+\tab{5}\spadcommand{a := (sqrt(x) + sqrt(y) + sqrt(z))**4\bound{sxy }}
+\indentrel{3}\begin{verbatim}
+   (21)
+                      ÚÄ¿                   ÚÄ¿  ÚÄ¿
+     ((4z + 4y + 12x)\³y  + (4z + 12y + 4x)\³x )\³z
+   + 
+                     ÚÄ¿ ÚÄ¿    2                 2
+     (12z + 4y + 4x)\³x \³y  + z  + (6y + 6x)z + y  + 6x y
+   + 
+      2
+     x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty21}
+\begin{paste}{ugIntroYouPageEmpty21}{ugIntroYouPagePatch21}
+\pastebutton{ugIntroYouPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{a := (sqrt(x) + sqrt(y) + sqrt(z))**4\bound{sxy }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPagePatch22}
+\begin{paste}{ugIntroYouPageFull22}{ugIntroYouPageEmpty22}
+\pastebutton{ugIntroYouPageFull22}{\hidepaste}
+\tab{5}\spadcommand{groupSqrt a\free{sxy }\free{g }}
+\indentrel{3}\begin{verbatim}
+   (22)
+                     ÚÄÄÄ¿                   ÚÄÄÄ¿
+     (4z + 4y + 12x)\³y z  + (4z + 12y + 4x)\³x z
+   + 
+                     ÚÄÄÄ¿    2                 2
+     (12z + 4y + 4x)\³x y  + z  + (6y + 6x)z + y  + 6x y
+   + 
+      2
+     x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroYouPageEmpty22}
+\begin{paste}{ugIntroYouPageEmpty22}{ugIntroYouPagePatch22}
+\pastebutton{ugIntroYouPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{groupSqrt a\free{sxy }\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroVariablesPage}{ug01.ht}{Polynomials}
 <<ug01.ht>>=
@@ -25039,6 +69954,108 @@ wanted and the term ordering is critical for controlling the computation.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroVariablesPagePatch1}
+\begin{paste}{ugIntroVariablesPageFull1}{ugIntroVariablesPageEmpty1}
+\pastebutton{ugIntroVariablesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(x**2 - x*y**3 +3*y)**2}
+\indentrel{3}\begin{verbatim}
+         2 6       4     3 3     2     2     4
+   (1)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty1}
+\begin{paste}{ugIntroVariablesPageEmpty1}{ugIntroVariablesPagePatch1}
+\pastebutton{ugIntroVariablesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(x**2 - x*y**3 +3*y)**2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPagePatch2}
+\begin{paste}{ugIntroVariablesPageFull2}{ugIntroVariablesPageEmpty2}
+\pastebutton{ugIntroVariablesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
+\indentrel{3}\begin{verbatim}
+           3      2
+   (2)  18x  + 60x  - 46x + 8
+                  Type: UnivariatePolynomial(x,Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty2}
+\begin{paste}{ugIntroVariablesPageEmpty2}{ugIntroVariablesPagePatch2}
+\pastebutton{ugIntroVariablesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPagePatch3}
+\begin{paste}{ugIntroVariablesPageFull3}{ugIntroVariablesPageEmpty3}
+\pastebutton{ugIntroVariablesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2\bound{m }}
+\indentrel{3}\begin{verbatim}
+         4     3 3     6       2     4      2
+   (3)  x  - 2y x  + (y  + 6y)x  - 6y x + 9y
+            Type: MultivariatePolynomial([x,y],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty3}
+\begin{paste}{ugIntroVariablesPageEmpty3}{ugIntroVariablesPagePatch3}
+\pastebutton{ugIntroVariablesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPagePatch4}
+\begin{paste}{ugIntroVariablesPageFull4}{ugIntroVariablesPageEmpty4}
+\pastebutton{ugIntroVariablesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+         2 6       4     3 3     2     2     4
+   (4)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
+            Type: MultivariatePolynomial([y,x],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty4}
+\begin{paste}{ugIntroVariablesPageEmpty4}{ugIntroVariablesPagePatch4}
+\pastebutton{ugIntroVariablesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPagePatch5}
+\begin{paste}{ugIntroVariablesPageFull5}{ugIntroVariablesPageEmpty5}
+\pastebutton{ugIntroVariablesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{m :: DMP([y,x],INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+         6 2     4      3 3     2       2    4
+   (5)  y x  - 6y x - 2y x  + 9y  + 6y x  + x
+ Type: DistributedMultivariatePolynomial([y,x],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty5}
+\begin{paste}{ugIntroVariablesPageEmpty5}{ugIntroVariablesPagePatch5}
+\pastebutton{ugIntroVariablesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{m :: DMP([y,x],INT)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPagePatch6}
+\begin{paste}{ugIntroVariablesPageFull6}{ugIntroVariablesPageEmpty6}
+\pastebutton{ugIntroVariablesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{m :: HDMP([y,x],INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+         6 2     3 3     4     4       2     2
+   (6)  y x  - 2y x  - 6y x + x  + 6y x  + 9y
+Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroVariablesPageEmpty6}
+\begin{paste}{ugIntroVariablesPageEmpty6}{ugIntroVariablesPagePatch6}
+\pastebutton{ugIntroVariablesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m :: HDMP([y,x],INT)\free{m }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroCalcLimitsPage}{ug01.ht}{Limits}
 \pageto{notitle}{ugProblemLimitsPage}
@@ -25106,6 +70123,125 @@ returned by the function.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroCalcLimitsPagePatch1}
+\begin{paste}{ugIntroCalcLimitsPageFull1}{ugIntroCalcLimitsPageEmpty1}
+\pastebutton{ugIntroCalcLimitsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{g := csc(a*x) / csch(b*x)\bound{g }}
+\indentrel{3}\begin{verbatim}
+         csc(a x)
+   (1)  ÄÄÄÄÄÄÄÄÄ
+        csch(b x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty1}
+\begin{paste}{ugIntroCalcLimitsPageEmpty1}{ugIntroCalcLimitsPagePatch1}
+\pastebutton{ugIntroCalcLimitsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{g := csc(a*x) / csch(b*x)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch2}
+\begin{paste}{ugIntroCalcLimitsPageFull2}{ugIntroCalcLimitsPageEmpty2}
+\pastebutton{ugIntroCalcLimitsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(g,x=0)\free{g }}
+\indentrel{3}\begin{verbatim}
+        b
+   (2)  Ä
+        a
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty2}
+\begin{paste}{ugIntroCalcLimitsPageEmpty2}{ugIntroCalcLimitsPagePatch2}
+\pastebutton{ugIntroCalcLimitsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(g,x=0)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch3}
+\begin{paste}{ugIntroCalcLimitsPageFull3}{ugIntroCalcLimitsPageEmpty3}
+\pastebutton{ugIntroCalcLimitsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{h := (1 + k/x)**x\bound{h }}
+\indentrel{3}\begin{verbatim}
+         x + k x
+   (3)  (ÄÄÄÄÄ)
+           x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty3}
+\begin{paste}{ugIntroCalcLimitsPageEmpty3}{ugIntroCalcLimitsPagePatch3}
+\pastebutton{ugIntroCalcLimitsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{h := (1 + k/x)**x\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch4}
+\begin{paste}{ugIntroCalcLimitsPageFull4}{ugIntroCalcLimitsPageEmpty4}
+\pastebutton{ugIntroCalcLimitsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{limit(h,x=\%plusInfinity)\free{h }}
+\indentrel{3}\begin{verbatim}
+          k
+   (4)  %e
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty4}
+\begin{paste}{ugIntroCalcLimitsPageEmpty4}{ugIntroCalcLimitsPagePatch4}
+\pastebutton{ugIntroCalcLimitsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{limit(h,x=\%plusInfinity)\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch5}
+\begin{paste}{ugIntroCalcLimitsPageFull5}{ugIntroCalcLimitsPageEmpty5}
+\pastebutton{ugIntroCalcLimitsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\indentrel{3}\begin{verbatim}
+   (5)  [leftHandLimit= - 1,rightHandLimit= 1]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty5}
+\begin{paste}{ugIntroCalcLimitsPageEmpty5}{ugIntroCalcLimitsPagePatch5}
+\pastebutton{ugIntroCalcLimitsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch6}
+\begin{paste}{ugIntroCalcLimitsPageFull6}{ugIntroCalcLimitsPageEmpty6}
+\pastebutton{ugIntroCalcLimitsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{limit(exp(-1/x**2),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (6)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty6}
+\begin{paste}{ugIntroCalcLimitsPageEmpty6}{ugIntroCalcLimitsPagePatch6}
+\pastebutton{ugIntroCalcLimitsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{limit(exp(-1/x**2),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPagePatch7}
+\begin{paste}{ugIntroCalcLimitsPageFull7}{ugIntroCalcLimitsPageEmpty7}
+\pastebutton{ugIntroCalcLimitsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(exp(-1/x**2),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (7)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcLimitsPageEmpty7}
+\begin{paste}{ugIntroCalcLimitsPageEmpty7}{ugIntroCalcLimitsPagePatch7}
+\pastebutton{ugIntroCalcLimitsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{complexLimit(exp(-1/x**2),x = 0)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroSeriesPage}{ug01.ht}{Series}
 \pageto{notitle}{ugProblemSeriesPage}
@@ -25197,6 +70333,250 @@ As you see, you get a sequence of partial sums.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroSeriesPagePatch1}
+\begin{paste}{ugIntroSeriesPageFull1}{ugIntroSeriesPageEmpty1}
+\pastebutton{ugIntroSeriesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)
+            3        5        7          9
+           a   3    a   5    a    7     a     9
+     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+            6      120      5040      362880
+   + 
+           11
+          a      11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty1}
+\begin{paste}{ugIntroSeriesPageEmpty1}{ugIntroSeriesPagePatch1}
+\pastebutton{ugIntroSeriesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch2}
+\begin{paste}{ugIntroSeriesPageFull2}{ugIntroSeriesPageEmpty2}
+\pastebutton{ugIntroSeriesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{series(sin(a*x),x = \%pi/4)}
+\indentrel{3}\begin{verbatim}
+   (2)
+         a %pi          a %pi      %pi
+     sin(ÄÄÄÄÄ) + a cos(ÄÄÄÄÄ)(x - ÄÄÄ)
+           4              4         4
+   + 
+        2    a %pi                3    a %pi
+       a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
+               4         %pi 2           4         %pi 3
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
+             2            4            6            4
+   + 
+      4    a %pi                5    a %pi
+     a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
+             4         %pi 4           4         %pi 5
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
+          24            4           120           4
+   + 
+        6    a %pi                7    a %pi
+       a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
+               4         %pi 6           4         %pi 7
+     - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
+            720           4          5040           4
+   + 
+      8    a %pi                9    a %pi
+     a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
+             4         %pi 8           4         %pi 9
+     ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
+         40320          4         362880          4
+   + 
+        10    a %pi
+       a  sin(ÄÄÄÄÄ)
+                4         %pi 10          %pi 11
+     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)   + O((x - ÄÄÄ)  )
+          3628800          4               4
+Type: UnivariatePuiseuxSeries(Expression Integer,x,pi/4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty2}
+\begin{paste}{ugIntroSeriesPageEmpty2}{ugIntroSeriesPagePatch2}
+\pastebutton{ugIntroSeriesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{series(sin(a*x),x = \%pi/4)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch3}
+\begin{paste}{ugIntroSeriesPageFull3}{ugIntroSeriesPageEmpty3}
+\pastebutton{ugIntroSeriesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
+\indentrel{3}\begin{verbatim}
+         4      10
+         Ä      ÄÄ
+         3   1   3      5
+   (3)  x  - Ä x   + O(x )
+             6
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty3}
+\begin{paste}{ugIntroSeriesPageEmpty3}{ugIntroSeriesPagePatch3}
+\pastebutton{ugIntroSeriesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch4}
+\begin{paste}{ugIntroSeriesPageFull4}{ugIntroSeriesPageEmpty4}
+\pastebutton{ugIntroSeriesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (4)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty4}
+\begin{paste}{ugIntroSeriesPageEmpty4}{ugIntroSeriesPagePatch4}
+\pastebutton{ugIntroSeriesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch5}
+\begin{paste}{ugIntroSeriesPageFull5}{ugIntroSeriesPageEmpty5}
+\pastebutton{ugIntroSeriesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                2     3     4     5     6     7     8
+     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
+   + 
+        9      10      11
+     10x  + 11x   + O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty5}
+\begin{paste}{ugIntroSeriesPageEmpty5}{ugIntroSeriesPagePatch5}
+\pastebutton{ugIntroSeriesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f ** 2\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch6}
+\begin{paste}{ugIntroSeriesPageFull6}{ugIntroSeriesPageEmpty6}
+\pastebutton{ugIntroSeriesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty6}
+\begin{paste}{ugIntroSeriesPageEmpty6}{ugIntroSeriesPagePatch6}
+\pastebutton{ugIntroSeriesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch7}
+\begin{paste}{ugIntroSeriesPageFull7}{ugIntroSeriesPageEmpty7}
+\pastebutton{ugIntroSeriesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (7)
+         1  2   1  3   1  4   1  5   1  6   1  7   1  8
+     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
+         2      3      4      5      6      7      8
+   + 
+     1  9    1  10    1  11      12
+     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
+     9      10       11
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty7}
+\begin{paste}{ugIntroSeriesPageEmpty7}{ugIntroSeriesPagePatch7}
+\pastebutton{ugIntroSeriesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch8}
+\begin{paste}{ugIntroSeriesPageFull8}{ugIntroSeriesPageEmpty8}
+\pastebutton{ugIntroSeriesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (8)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty8}
+\begin{paste}{ugIntroSeriesPageEmpty8}{ugIntroSeriesPagePatch8}
+\pastebutton{ugIntroSeriesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{exp(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch9}
+\begin{paste}{ugIntroSeriesPageFull9}{ugIntroSeriesPageEmpty9}
+\pastebutton{ugIntroSeriesPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+             1  2   1  3    1  4    1   5    1   6
+     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
+   5040      40320      362880      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty9}
+\begin{paste}{ugIntroSeriesPageEmpty9}{ugIntroSeriesPagePatch9}
+\pastebutton{ugIntroSeriesPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPagePatch10}
+\begin{paste}{ugIntroSeriesPageFull10}{ugIntroSeriesPageEmpty10}
+\pastebutton{ugIntroSeriesPageFull10}{\hidepaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+   (10)
+   [1.0, 2.0, 2.5, 2.6666666666 666666667,
+    2.7083333333 333333333, 2.7166666666 666666667,
+    2.7180555555 555555556, 2.7182539682 53968254,
+    2.7182787698 412698413, 2.7182815255 731922399, ...]
+                          Type: Stream Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSeriesPageEmpty10}
+\begin{paste}{ugIntroSeriesPageEmpty10}{ugIntroSeriesPagePatch10}
+\pastebutton{ugIntroSeriesPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroCalcDerivPage}{ug01.ht}{Derivatives}
 <<ug01.ht>>=
@@ -25294,6 +70674,258 @@ then differentiating.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroCalcDerivPagePatch1}
+\begin{paste}{ugIntroCalcDerivPageFull1}{ugIntroCalcDerivPageEmpty1}
+\pastebutton{ugIntroCalcDerivPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := exp exp x\bound{f }}
+\indentrel{3}\begin{verbatim}
+            x
+          %e
+   (1)  %e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty1}
+\begin{paste}{ugIntroCalcDerivPageEmpty1}{ugIntroCalcDerivPagePatch1}
+\pastebutton{ugIntroCalcDerivPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := exp exp x\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch2}
+\begin{paste}{ugIntroCalcDerivPageFull2}{ugIntroCalcDerivPageEmpty2}
+\pastebutton{ugIntroCalcDerivPageFull2}{\hidepaste}
+\tab{5}\spadcommand{D(f, x)\free{f }}
+\indentrel{3}\begin{verbatim}
+               x
+          x  %e
+   (2)  %e %e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty2}
+\begin{paste}{ugIntroCalcDerivPageEmpty2}{ugIntroCalcDerivPagePatch2}
+\pastebutton{ugIntroCalcDerivPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{D(f, x)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch3}
+\begin{paste}{ugIntroCalcDerivPageFull3}{ugIntroCalcDerivPageEmpty3}
+\pastebutton{ugIntroCalcDerivPageFull3}{\hidepaste}
+\tab{5}\spadcommand{D(f, x, 4)\free{f }}
+\indentrel{3}\begin{verbatim}
+                                              x
+            x 4       x 3       x 2     x   %e
+   (3)  ((%e )  + 6(%e )  + 7(%e )  + %e )%e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty3}
+\begin{paste}{ugIntroCalcDerivPageEmpty3}{ugIntroCalcDerivPagePatch3}
+\pastebutton{ugIntroCalcDerivPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{D(f, x, 4)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch4}
+\begin{paste}{ugIntroCalcDerivPageFull4}{ugIntroCalcDerivPageEmpty4}
+\pastebutton{ugIntroCalcDerivPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g := sin(x**2 + y)\bound{g }}
+\indentrel{3}\begin{verbatim}
+                 2
+   (4)  sin(y + x )
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty4}
+\begin{paste}{ugIntroCalcDerivPageEmpty4}{ugIntroCalcDerivPagePatch4}
+\pastebutton{ugIntroCalcDerivPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g := sin(x**2 + y)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch5}
+\begin{paste}{ugIntroCalcDerivPageFull5}{ugIntroCalcDerivPageEmpty5}
+\pastebutton{ugIntroCalcDerivPageFull5}{\hidepaste}
+\tab{5}\spadcommand{D(g, y)\free{g }}
+\indentrel{3}\begin{verbatim}
+                 2
+   (5)  cos(y + x )
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty5}
+\begin{paste}{ugIntroCalcDerivPageEmpty5}{ugIntroCalcDerivPagePatch5}
+\pastebutton{ugIntroCalcDerivPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{D(g, y)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch6}
+\begin{paste}{ugIntroCalcDerivPageFull6}{ugIntroCalcDerivPageEmpty6}
+\pastebutton{ugIntroCalcDerivPageFull6}{\hidepaste}
+\tab{5}\spadcommand{D(g, [y, y, x, x])\free{g }}
+\indentrel{3}\begin{verbatim}
+          2         2              2
+   (6)  4x sin(y + x ) - 2cos(y + x )
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty6}
+\begin{paste}{ugIntroCalcDerivPageEmpty6}{ugIntroCalcDerivPagePatch6}
+\pastebutton{ugIntroCalcDerivPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{D(g, [y, y, x, x])\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch7}
+\begin{paste}{ugIntroCalcDerivPageFull7}{ugIntroCalcDerivPageEmpty7}
+\pastebutton{ugIntroCalcDerivPageFull7}{\hidepaste}
+\tab{5}\spadcommand{D(F,x)}
+\indentrel{3}\begin{verbatim}
+   (7)  0
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty7}
+\begin{paste}{ugIntroCalcDerivPageEmpty7}{ugIntroCalcDerivPagePatch7}
+\pastebutton{ugIntroCalcDerivPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{D(F,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch8}
+\begin{paste}{ugIntroCalcDerivPageFull8}{ugIntroCalcDerivPageEmpty8}
+\pastebutton{ugIntroCalcDerivPageFull8}{\hidepaste}
+\tab{5}\spadcommand{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y }}
+\indentrel{3}\begin{verbatim}
+   (8)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty8}
+\begin{paste}{ugIntroCalcDerivPageEmpty8}{ugIntroCalcDerivPagePatch8}
+\pastebutton{ugIntroCalcDerivPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch9}
+\begin{paste}{ugIntroCalcDerivPageFull9}{ugIntroCalcDerivPageEmpty9}
+\pastebutton{ugIntroCalcDerivPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a := F(x z, y z, z**2) + x y(z+1)\bound{a }\free{F }\free{x }\free{y }}
+\indentrel{3}\begin{verbatim}
+                                   2
+   (9)  x(y(z + 1)) + F(x(z),y(z),z )
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty9}
+\begin{paste}{ugIntroCalcDerivPageEmpty9}{ugIntroCalcDerivPagePatch9}
+\pastebutton{ugIntroCalcDerivPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a := F(x z, y z, z**2) + x y(z+1)\bound{a }\free{F }\free{x }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch10}
+\begin{paste}{ugIntroCalcDerivPageFull10}{ugIntroCalcDerivPageEmpty10}
+\pastebutton{ugIntroCalcDerivPageFull10}{\hidepaste}
+\tab{5}\spadcommand{dadz := D(a, z)\bound{da }\free{a }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                      2     ,                  2
+     2zF  (x(z),y(z),z ) + y (z)F  (x(z),y(z),z )
+        ,3                       ,2
+   + 
+      ,                  2     ,           ,
+     x (z)F  (x(z),y(z),z ) + x (y(z + 1))y (z + 1)
+           ,1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty10}
+\begin{paste}{ugIntroCalcDerivPageEmpty10}{ugIntroCalcDerivPagePatch10}
+\pastebutton{ugIntroCalcDerivPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{dadz := D(a, z)\bound{da }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch11}
+\begin{paste}{ugIntroCalcDerivPageFull11}{ugIntroCalcDerivPageEmpty11}
+\pastebutton{ugIntroCalcDerivPageFull11}{\hidepaste}
+\tab{5}\spadcommand{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da }}
+\indentrel{3}\begin{verbatim}
+   (11)
+          2            z             2
+       (2z  + 2z)F  (%e ,log(z + 1),z )
+                  ,3
+     + 
+             z             2
+       F  (%e ,log(z + 1),z )
+        ,2
+     + 
+                z      z             2
+       (z + 1)%e F  (%e ,log(z + 1),z ) + z + 1
+                  ,1
+  /
+     z + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty11}
+\begin{paste}{ugIntroCalcDerivPageEmpty11}{ugIntroCalcDerivPagePatch11}
+\pastebutton{ugIntroCalcDerivPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch12}
+\begin{paste}{ugIntroCalcDerivPageFull12}{ugIntroCalcDerivPageEmpty12}
+\pastebutton{ugIntroCalcDerivPageFull12}{\hidepaste}
+\tab{5}\spadcommand{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{a }\bound{eva }}
+\indentrel{3}\begin{verbatim}
+             z             2
+   (12)  F(%e ,log(z + 1),z ) + z + 2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty12}
+\begin{paste}{ugIntroCalcDerivPageEmpty12}{ugIntroCalcDerivPagePatch12}
+\pastebutton{ugIntroCalcDerivPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{a }\bound{eva }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPagePatch13}
+\begin{paste}{ugIntroCalcDerivPageFull13}{ugIntroCalcDerivPageEmpty13}
+\pastebutton{ugIntroCalcDerivPageFull13}{\hidepaste}
+\tab{5}\spadcommand{D(\%, z)\free{eva }}
+\indentrel{3}\begin{verbatim}
+   (13)
+          2            z             2
+       (2z  + 2z)F  (%e ,log(z + 1),z )
+                  ,3
+     + 
+             z             2
+       F  (%e ,log(z + 1),z )
+        ,2
+     + 
+                z      z             2
+       (z + 1)%e F  (%e ,log(z + 1),z ) + z + 1
+                  ,1
+  /
+     z + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroCalcDerivPageEmpty13}
+\begin{paste}{ugIntroCalcDerivPageEmpty13}{ugIntroCalcDerivPagePatch13}
+\pastebutton{ugIntroCalcDerivPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{D(\%, z)\free{eva }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroIntegratePage}{ug01.ht}{Integration}
 \pageto{notitle}{ugProblemIntegrationPage}
@@ -25436,6 +71068,235 @@ in Section 8.8\ignore{ugProblemIntegration}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroIntegratePagePatch1}
+\begin{paste}{ugIntroIntegratePageFull1}{ugIntroIntegratePageEmpty1}
+\pastebutton{ugIntroIntegratePageFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\indentrel{3}\begin{verbatim}
+              3     2
+        atan(x  + 3x  + 3x + 1)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   3
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty1}
+\begin{paste}{ugIntroIntegratePageEmpty1}{ugIntroIntegratePagePatch1}
+\pastebutton{ugIntroIntegratePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch2}
+\begin{paste}{ugIntroIntegratePageFull2}{ugIntroIntegratePageEmpty2}
+\pastebutton{ugIntroIntegratePageFull2}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+               2      ÚÄÄÄ¿
+             (x  - a)\³- a  + 2a x         ÚÄ¿
+         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
+                      2             atan(ÄÄÄÄÄ)
+                     x  + a                a
+   (2)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
+                     ÚÄÄÄ¿               ÚÄ¿
+                   2\³- a               \³a
+               Type: Union(List Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty2}
+\begin{paste}{ugIntroIntegratePageEmpty2}{ugIntroIntegratePagePatch2}
+\pastebutton{ugIntroIntegratePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch3}
+\begin{paste}{ugIntroIntegratePageFull3}{ugIntroIntegratePageEmpty3}
+\pastebutton{ugIntroIntegratePageFull3}{\hidepaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\indentrel{3}\begin{verbatim}
+              ÚÄÄÄ¿              ÚÄÄÄ¿
+            x\³- a  + a        x\³- a  - a
+        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄ¿              ÚÄÄÄ¿
+               \³- a              \³- a
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                        ÚÄÄÄ¿
+                      2\³- a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty3}
+\begin{paste}{ugIntroIntegratePageEmpty3}{ugIntroIntegratePagePatch3}
+\pastebutton{ugIntroIntegratePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch4}
+\begin{paste}{ugIntroIntegratePageFull4}{ugIntroIntegratePageEmpty4}
+\pastebutton{ugIntroIntegratePageFull4}{\hidepaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\indentrel{3}\begin{verbatim}
+   (4)
+        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
+   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
+   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                              4
+                          440b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty4}
+\begin{paste}{ugIntroIntegratePageEmpty4}{ugIntroIntegratePagePatch4}
+\pastebutton{ugIntroIntegratePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch5}
+\begin{paste}{ugIntroIntegratePageFull5}{ugIntroIntegratePageEmpty5}
+\pastebutton{ugIntroIntegratePageFull5}{\hidepaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\indentrel{3}\begin{verbatim}
+   (5)
+       -
+              2 2 ÚÄ¿
+            2b x \³3
+         *
+                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+            log(\³a \³b x + a   + \³a   \³b x + a + a)
+     + 
+         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
+       4b x \³3 log(\³a   \³b x + a - a)
+     + 
+                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
+          2 2     2\³3 \³a   \³b x + a + a\³3
+       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                               3a
+     + 
+                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
+       (12b x - 9a)\³3 \³a \³b x + a
+  /
+        2 2 ÚÄ¿3ÚÄ¿
+     18a x \³3 \³a
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty5}
+\begin{paste}{ugIntroIntegratePageEmpty5}{ugIntroIntegratePagePatch5}
+\pastebutton{ugIntroIntegratePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch6}
+\begin{paste}{ugIntroIntegratePageFull6}{ugIntroIntegratePageEmpty6}
+\pastebutton{ugIntroIntegratePageFull6}{\hidepaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\indentrel{3}\begin{verbatim}
+           x      ÚÄÄÄÄÄÄÄÄ¿
+         Ú¿  log(\³b + %S a  + 1)
+   (6)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%S
+        ÀÙ            %S
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty6}
+\begin{paste}{ugIntroIntegratePageEmpty6}{ugIntroIntegratePagePatch6}
+\pastebutton{ugIntroIntegratePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch7}
+\begin{paste}{ugIntroIntegratePageFull7}{ugIntroIntegratePageEmpty7}
+\pastebutton{ugIntroIntegratePageFull7}{\hidepaste}
+\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
+\indentrel{3}\begin{verbatim}
+   (7)
+                          ÚÄÄÄÄÄ¿
+                 - 2cosh(\³x + b  + 1) - 2x
+     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
+          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
+   + 
+         ÚÄÄÄÄÄ¿
+     - 2\³x + b
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty7}
+\begin{paste}{ugIntroIntegratePageEmpty7}{ugIntroIntegratePagePatch7}
+\pastebutton{ugIntroIntegratePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch8}
+\begin{paste}{ugIntroIntegratePageFull8}{ugIntroIntegratePageEmpty8}
+\pastebutton{ugIntroIntegratePageFull8}{\hidepaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\indentrel{3}\begin{verbatim}
+   (8)
+                 atan(x) 2             atan(x) 2
+       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
+                    3                     3
+     + 
+               atan(x)
+       18x tan(ÄÄÄÄÄÄÄ)
+                  3
+  /
+     18
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty8}
+\begin{paste}{ugIntroIntegratePageEmpty8}{ugIntroIntegratePagePatch8}
+\pastebutton{ugIntroIntegratePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch9}
+\begin{paste}{ugIntroIntegratePageFull9}{ugIntroIntegratePageEmpty9}
+\pastebutton{ugIntroIntegratePageFull9}{\hidepaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
+\indentrel{3}\begin{verbatim}
+            ÚÄÄÄÄÄÄÄÄÄÄ¿
+          2\³log(x) + x
+   (9)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+            log(x) + x
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty9}
+\begin{paste}{ugIntroIntegratePageEmpty9}{ugIntroIntegratePagePatch9}
+\pastebutton{ugIntroIntegratePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePagePatch10}
+\begin{paste}{ugIntroIntegratePageFull10}{ugIntroIntegratePageEmpty10}
+\pastebutton{ugIntroIntegratePageFull10}{\hidepaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\indentrel{3}\begin{verbatim}
+                      ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
+         (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
+                               erf(x) + 1
+   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                         8erf(x) - 8
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroIntegratePageEmpty10}
+\begin{paste}{ugIntroIntegratePageEmpty10}{ugIntroIntegratePagePatch10}
+\pastebutton{ugIntroIntegratePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroDiffEqnsPage}{ug01.ht}{Differential Equations}
 <<ug01.ht>>=
@@ -25537,6 +71398,259 @@ order \axiom{[x, y]}, the answer is a list of two series in the order
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroDiffEqnsPagePatch1}
+\begin{paste}{ugIntroDiffEqnsPageFull1}{ugIntroDiffEqnsPageEmpty1}
+\pastebutton{ugIntroDiffEqnsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (1)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty1}
+\begin{paste}{ugIntroDiffEqnsPageEmpty1}{ugIntroDiffEqnsPagePatch1}
+\pastebutton{ugIntroDiffEqnsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch2}
+\begin{paste}{ugIntroDiffEqnsPageFull2}{ugIntroDiffEqnsPageEmpty2}
+\pastebutton{ugIntroDiffEqnsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{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\bound{e3 }\free{y }}
+\indentrel{3}\begin{verbatim}
+         3 ,,,       2 ,,         ,               4
+   (2)  x y   (x) + x y  (x) - 2xy (x) + 2y(x)= 2x
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty2}
+\begin{paste}{ugIntroDiffEqnsPageEmpty2}{ugIntroDiffEqnsPagePatch2}
+\pastebutton{ugIntroDiffEqnsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{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\bound{e3 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch3}
+\begin{paste}{ugIntroDiffEqnsPageFull3}{ugIntroDiffEqnsPageEmpty3}
+\pastebutton{ugIntroDiffEqnsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (3)
+                 5      3      2
+                x  - 10x  + 20x  + 4
+   [particular= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+                         15x
+              3     2      3      3     2
+            2x  - 3x  + 1 x  - 1 x  - 3x  - 1
+    basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]]
+                  x          x         x
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty3}
+\begin{paste}{ugIntroDiffEqnsPageEmpty3}{ugIntroDiffEqnsPagePatch3}
+\pastebutton{ugIntroDiffEqnsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch4}
+\begin{paste}{ugIntroDiffEqnsPageFull4}{ugIntroDiffEqnsPageEmpty4}
+\pastebutton{ugIntroDiffEqnsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
+\indentrel{3}\begin{verbatim}
+          2      ,,         ,
+   (4)  (x  + 1)y  (x) + 3xy (x) + y(x)= 0
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty4}
+\begin{paste}{ugIntroDiffEqnsPageEmpty4}{ugIntroDiffEqnsPagePatch4}
+\pastebutton{ugIntroDiffEqnsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch5}
+\begin{paste}{ugIntroDiffEqnsPageFull5}{ugIntroDiffEqnsPageEmpty5}
+\pastebutton{ugIntroDiffEqnsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                                         ÚÄÄÄÄÄÄ¿
+                                         ³ 2
+                              1     log(\³x  + 1  - x)
+   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
+                           ÚÄÄÄÄÄÄ¿       ÚÄÄÄÄÄÄ¿
+                           ³ 2            ³ 2
+                          \³x  + 1       \³x  + 1
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty5}
+\begin{paste}{ugIntroDiffEqnsPageEmpty5}{ugIntroDiffEqnsPagePatch5}
+\pastebutton{ugIntroDiffEqnsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch6}
+\begin{paste}{ugIntroDiffEqnsPageFull6}{ugIntroDiffEqnsPageEmpty6}
+\pastebutton{ugIntroDiffEqnsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq }\free{y }}
+\indentrel{3}\begin{verbatim}
+          3 ,,        2 ,
+   (6)  2x y  (x) + 3x y (x) - 2y(x)
+
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty6}
+\begin{paste}{ugIntroDiffEqnsPageEmpty6}{ugIntroDiffEqnsPagePatch6}
+\pastebutton{ugIntroDiffEqnsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch7}
+\begin{paste}{ugIntroDiffEqnsPageFull7}{ugIntroDiffEqnsPageEmpty7}
+\pastebutton{ugIntroDiffEqnsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{solve(eq,y,x).basis\free{eq }}
+\indentrel{3}\begin{verbatim}
+               2      2
+           - ÄÄÄÄ   ÄÄÄÄ
+              ÚÄ¿    ÚÄ¿
+             \³x    \³x
+   (7)  [%e      ,%e    ]
+                          Type: List Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty7}
+\begin{paste}{ugIntroDiffEqnsPageEmpty7}{ugIntroDiffEqnsPagePatch7}
+\pastebutton{ugIntroDiffEqnsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{solve(eq,y,x).basis\free{eq }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch8}
+\begin{paste}{ugIntroDiffEqnsPageFull8}{ugIntroDiffEqnsPageEmpty8}
+\pastebutton{ugIntroDiffEqnsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
+\indentrel{3}\begin{verbatim}
+         ,            y(x)
+   (8)  y (x)= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               y(x)log(y(x)) + x
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty8}
+\begin{paste}{ugIntroDiffEqnsPageEmpty8}{ugIntroDiffEqnsPagePatch8}
+\pastebutton{ugIntroDiffEqnsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch9}
+\begin{paste}{ugIntroDiffEqnsPageFull9}{ugIntroDiffEqnsPageEmpty9}
+\pastebutton{ugIntroDiffEqnsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
+\indentrel{3}\begin{verbatim}
+                     2
+        y(x)log(y(x))  - 2x
+   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               2y(x)
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty9}
+\begin{paste}{ugIntroDiffEqnsPageEmpty9}{ugIntroDiffEqnsPagePatch9}
+\pastebutton{ugIntroDiffEqnsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch10}
+\begin{paste}{ugIntroDiffEqnsPageFull10}{ugIntroDiffEqnsPageEmpty10}
+\pastebutton{ugIntroDiffEqnsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{x := operator 'x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (10)  x
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty10}
+\begin{paste}{ugIntroDiffEqnsPageEmpty10}{ugIntroDiffEqnsPagePatch10}
+\pastebutton{ugIntroDiffEqnsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{x := operator 'x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch11}
+\begin{paste}{ugIntroDiffEqnsPageFull11}{ugIntroDiffEqnsPageEmpty11}
+\pastebutton{ugIntroDiffEqnsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
+\indentrel{3}\begin{verbatim}
+          ,         2
+   (11)  x (t)= x(t)  + 1
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty11}
+\begin{paste}{ugIntroDiffEqnsPageEmpty11}{ugIntroDiffEqnsPagePatch11}
+\pastebutton{ugIntroDiffEqnsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch12}
+\begin{paste}{ugIntroDiffEqnsPageFull12}{ugIntroDiffEqnsPageEmpty12}
+\pastebutton{ugIntroDiffEqnsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
+\indentrel{3}\begin{verbatim}
+          ,
+   (12)  y (t)= x(t)y(t)
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty12}
+\begin{paste}{ugIntroDiffEqnsPageEmpty12}{ugIntroDiffEqnsPagePatch12}
+\pastebutton{ugIntroDiffEqnsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPagePatch13}
+\begin{paste}{ugIntroDiffEqnsPageFull13}{ugIntroDiffEqnsPageEmpty13}
+\pastebutton{ugIntroDiffEqnsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }}
+\indentrel{3}\begin{verbatim}
+   (13)
+        1  3    2  5    17  7    62   9      11
+   [t + Ä t  + ÄÄ t  + ÄÄÄ t  + ÄÄÄÄ t  + O(t  ),
+        3      15      315      2835
+
+           1  2    5  4    61  6    277  8    50521   10
+       1 + Ä t  + ÄÄ t  + ÄÄÄ t  + ÄÄÄÄ t  + ÄÄÄÄÄÄÄ t
+           2      24      720      8064      3628800
+     + 
+          11
+       O(t  )
+     ]
+Type: List UnivariateTaylorSeries(Expression Integer,t,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroDiffEqnsPageEmpty13}
+\begin{paste}{ugIntroDiffEqnsPageEmpty13}{ugIntroDiffEqnsPagePatch13}
+\pastebutton{ugIntroDiffEqnsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroSolutionPage}{ug01.ht}{Solution of Equations}
 <<ug01.ht>>=
@@ -25603,6 +71717,143 @@ reducing the solution to triangular form.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntroSolutionPagePatch1}
+\begin{paste}{ugIntroSolutionPageFull1}{ugIntroSolutionPageEmpty1}
+\pastebutton{ugIntroSolutionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty1}
+\begin{paste}{ugIntroSolutionPageEmpty1}{ugIntroSolutionPagePatch1}
+\pastebutton{ugIntroSolutionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPagePatch2}
+\begin{paste}{ugIntroSolutionPageFull2}{ugIntroSolutionPageEmpty2}
+\pastebutton{ugIntroSolutionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{solve(S(19),1/10**20)\free{S1 }}
+\indentrel{3}\begin{verbatim}
+   (2)
+               2451682632253093442511
+   [[y= 5,x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ],
+                295147905179352825856
+             2451682632253093442511
+    [y= 5,x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
+              295147905179352825856
+   Type: List List Equation Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty2}
+\begin{paste}{ugIntroSolutionPageEmpty2}{ugIntroSolutionPagePatch2}
+\pastebutton{ugIntroSolutionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{solve(S(19),1/10**20)\free{S1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPagePatch3}
+\begin{paste}{ugIntroSolutionPageFull3}{ugIntroSolutionPageEmpty3}
+\pastebutton{ugIntroSolutionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{complexSolve(S(19),10.e-20)\free{S1 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [
+     [y= 5.0,
+      x= 8.3066238629 1807485256 1669055295 290320373]
+     ,
+
+     [y= 5.0,
+      x= - 8.3066238629 1807485256 1669055295 290320373]
+     ,
+    [y= - 3.0 %i,x= 1.0], [y= 3.0 %i,x= 1.0]]
+      Type: List List Equation Polynomial Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty3}
+\begin{paste}{ugIntroSolutionPageEmpty3}{ugIntroSolutionPagePatch3}
+\pastebutton{ugIntroSolutionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{complexSolve(S(19),10.e-20)\free{S1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPagePatch4}
+\begin{paste}{ugIntroSolutionPageFull4}{ugIntroSolutionPageEmpty4}
+\pastebutton{ugIntroSolutionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{radicalSolve(S(a),[x,y])\free{S1 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+           ÚÄÄÄÄÄÄ¿             ÚÄÄÄÄÄÄ¿
+   [[x= - \³a + 50 ,y= 5], [x= \³a + 50 ,y= 5],
+              ÚÄÄÄÄÄÄÄ¿               ÚÄÄÄÄÄÄÄ¿
+              ³- a + 1                ³- a + 1
+    [x= 1,y=  ³ÄÄÄÄÄÄÄ ], [x= 1,y= -  ³ÄÄÄÄÄÄÄ ]]
+             \³   2                  \³   2
+            Type: List List Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty4}
+\begin{paste}{ugIntroSolutionPageEmpty4}{ugIntroSolutionPagePatch4}
+\pastebutton{ugIntroSolutionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{radicalSolve(S(a),[x,y])\free{S1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPagePatch5}
+\begin{paste}{ugIntroSolutionPageFull5}{ugIntroSolutionPageEmpty5}
+\pastebutton{ugIntroSolutionPageFull5}{\hidepaste}
+\tab{5}\spadcommand{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e }}
+\indentrel{3}\begin{verbatim}
+                  2  2           4  2
+   (5)  [z - y + x ,x z - b y + x ,y z - b x - a]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty5}
+\begin{paste}{ugIntroSolutionPageEmpty5}{ugIntroSolutionPagePatch5}
+\pastebutton{ugIntroSolutionPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPagePatch6}
+\begin{paste}{ugIntroSolutionPageFull6}{ugIntroSolutionPageEmpty6}
+\pastebutton{ugIntroSolutionPageFull6}{\hidepaste}
+\tab{5}\spadcommand{solve(eqns,[x,y,z])\free{e }}
+\indentrel{3}\begin{verbatim}
+   (6)
+                       2
+          a           a
+   [[x= - Ä,y= 0,z= - ÄÄ],
+          b            2
+                      b
+
+          3       2    2
+         z  + 2b z  + b z - a
+     [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ, y= z + b,
+                   b
+
+          6       5     2 4      3       3     4         2
+         z  + 4b z  + 6b z  + (4b  - 2a)z  + (b  - 4a b)z
+       + 
+               2     3    2
+         - 2a b z - b  + a
+         =
+         0
+       ]
+     ]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSolutionPageEmpty6}
+\begin{paste}{ugIntroSolutionPageEmpty6}{ugIntroSolutionPagePatch6}
+\pastebutton{ugIntroSolutionPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{solve(eqns,[x,y,z])\free{e }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntroSysCmmandsPage}{ug01.ht}{System Commands}
 \pageto{notitle}{ugSysCmdPage}
@@ -25735,7 +71986,161 @@ and return to the operating system.
 \endscroll
 \autobuttons
 \end{page}
-%
+
+\begin{patch}{ugIntroSysCmmandsPagePatch1}
+\begin{paste}{ugIntroSysCmmandsPageFull1}{ugIntroSysCmmandsPageEmpty1}
+\pastebutton{ugIntroSysCmmandsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)what operations integrate}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty1}
+\begin{paste}{ugIntroSysCmmandsPageEmpty1}{ugIntroSysCmmandsPagePatch1}
+\pastebutton{ugIntroSysCmmandsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)what operations integrate}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch2}
+\begin{paste}{ugIntroSysCmmandsPageFull2}{ugIntroSysCmmandsPageEmpty2}
+\pastebutton{ugIntroSysCmmandsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f(0) == 1; g(0) == 1\bound{u1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty2}
+\begin{paste}{ugIntroSysCmmandsPageEmpty2}{ugIntroSysCmmandsPagePatch2}
+\pastebutton{ugIntroSysCmmandsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f(0) == 1; g(0) == 1\bound{u1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch3}
+\begin{paste}{ugIntroSysCmmandsPageFull3}{ugIntroSysCmmandsPageEmpty3}
+\pastebutton{ugIntroSysCmmandsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2 }\free{u1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty3}
+\begin{paste}{ugIntroSysCmmandsPageEmpty3}{ugIntroSysCmmandsPagePatch3}
+\pastebutton{ugIntroSysCmmandsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2 }\free{u1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch4}
+\begin{paste}{ugIntroSysCmmandsPageFull4}{ugIntroSysCmmandsPageEmpty4}
+\pastebutton{ugIntroSysCmmandsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3 }\free{u2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty4}
+\begin{paste}{ugIntroSysCmmandsPageEmpty4}{ugIntroSysCmmandsPagePatch4}
+\pastebutton{ugIntroSysCmmandsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3 }\free{u2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch5}
+\begin{paste}{ugIntroSysCmmandsPageFull5}{ugIntroSysCmmandsPageEmpty5}
+\pastebutton{ugIntroSysCmmandsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f(3)\bound{u4 }\free{u3 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+      3        1    2      1  2   1       1  2     1  3
+   - x  + (e + Ä d)x  + (- Ä e  - Ä d e - Ä d )x + Ä e
+               3           4      6       9        8
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty5}
+\begin{paste}{ugIntroSysCmmandsPageEmpty5}{ugIntroSysCmmandsPagePatch5}
+\pastebutton{ugIntroSysCmmandsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f(3)\bound{u4 }\free{u3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch6}
+\begin{paste}{ugIntroSysCmmandsPageFull6}{ugIntroSysCmmandsPageEmpty6}
+\pastebutton{ugIntroSysCmmandsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{)undo 2\bound{u5 }\free{u4 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty6}
+\begin{paste}{ugIntroSysCmmandsPageEmpty6}{ugIntroSysCmmandsPagePatch6}
+\pastebutton{ugIntroSysCmmandsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{)undo 2\bound{u5 }\free{u4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch7}
+\begin{paste}{ugIntroSysCmmandsPageFull7}{ugIntroSysCmmandsPageEmpty7}
+\pastebutton{ugIntroSysCmmandsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6 }\free{u5 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty7}
+\begin{paste}{ugIntroSysCmmandsPageEmpty7}{ugIntroSysCmmandsPagePatch7}
+\pastebutton{ugIntroSysCmmandsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6 }\free{u5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch8}
+\begin{paste}{ugIntroSysCmmandsPageFull8}{ugIntroSysCmmandsPageEmpty8}
+\pastebutton{ugIntroSysCmmandsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{)undo )redo\bound{u7 }\free{u6 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty8}
+\begin{paste}{ugIntroSysCmmandsPageEmpty8}{ugIntroSysCmmandsPagePatch8}
+\pastebutton{ugIntroSysCmmandsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{)undo )redo\bound{u7 }\free{u6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch9}
+\begin{paste}{ugIntroSysCmmandsPageFull9}{ugIntroSysCmmandsPageEmpty9}
+\pastebutton{ugIntroSysCmmandsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{)undo 4\bound{u8 }\free{u7 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty9}
+\begin{paste}{ugIntroSysCmmandsPageEmpty9}{ugIntroSysCmmandsPagePatch9}
+\pastebutton{ugIntroSysCmmandsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{)undo 4\bound{u8 }\free{u7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPagePatch10}
+\begin{paste}{ugIntroSysCmmandsPageFull10}{ugIntroSysCmmandsPageEmpty10}
+\pastebutton{ugIntroSysCmmandsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{f(3)\bound{u9 }\free{u8 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+      3        1    2      1  2   1       1  2     1  3
+   - x  + (e + Ä d)x  + (- Ä e  - Ä d e - Ä d )x + Ä e
+               3           4      6       9        8
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntroSysCmmandsPageEmpty10}
+\begin{paste}{ugIntroSysCmmandsPageEmpty10}{ugIntroSysCmmandsPagePatch10}
+\pastebutton{ugIntroSysCmmandsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{f(3)\bound{u9 }\free{u8 }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 2 (ug02.ht)}
 \pagehead{ugTypesPage}{ug02.ht}{Using Types and Modes}
@@ -25882,6 +72287,86 @@ and 17,'' and so on.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesBasicPagePatch1}
+\begin{paste}{ugTypesBasicPageFull1}{ugTypesBasicPageEmpty1}
+\pastebutton{ugTypesBasicPageFull1}{\hidepaste}
+\tab{5}\spadcommand{-3}
+\indentrel{3}\begin{verbatim}
+   (1)  - 3
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPageEmpty1}
+\begin{paste}{ugTypesBasicPageEmpty1}{ugTypesBasicPagePatch1}
+\pastebutton{ugTypesBasicPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{-3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPagePatch2}
+\begin{paste}{ugTypesBasicPageFull2}{ugTypesBasicPageEmpty2}
+\pastebutton{ugTypesBasicPageFull2}{\hidepaste}
+\tab{5}\spadcommand{-3/1}
+\indentrel{3}\begin{verbatim}
+   (2)  - 3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPageEmpty2}
+\begin{paste}{ugTypesBasicPageEmpty2}{ugTypesBasicPagePatch2}
+\pastebutton{ugTypesBasicPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{-3/1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPagePatch3}
+\begin{paste}{ugTypesBasicPageFull3}{ugTypesBasicPageEmpty3}
+\pastebutton{ugTypesBasicPageFull3}{\hidepaste}
+\tab{5}\spadcommand{x + 3 - x\bound{three }}
+\indentrel{3}\begin{verbatim}
+   (3)  3
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPageEmpty3}
+\begin{paste}{ugTypesBasicPageEmpty3}{ugTypesBasicPagePatch3}
+\pastebutton{ugTypesBasicPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x + 3 - x\bound{three }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPagePatch4}
+\begin{paste}{ugTypesBasicPageFull4}{ugTypesBasicPageEmpty4}
+\pastebutton{ugTypesBasicPageFull4}{\hidepaste}
+\tab{5}\spadcommand{factorial(\%)\free{three }}
+\indentrel{3}\begin{verbatim}
+   (4)  6
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPageEmpty4}
+\begin{paste}{ugTypesBasicPageEmpty4}{ugTypesBasicPagePatch4}
+\pastebutton{ugTypesBasicPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factorial(\%)\free{three }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPagePatch5}
+\begin{paste}{ugTypesBasicPageFull5}{ugTypesBasicPageEmpty5}
+\pastebutton{ugTypesBasicPageFull5}{\hidepaste}
+\tab{5}\spadcommand{3}
+\indentrel{3}\begin{verbatim}
+   (5)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicPageEmpty5}
+\begin{paste}{ugTypesBasicPageEmpty5}{ugTypesBasicPagePatch5}
+\pastebutton{ugTypesBasicPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{3}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesBasicDomainConsPage}{ug02.ht}{Domain Constructors}
 \pagepic{ps/v71ugtypesbasicdomainconspage.eps}{ugTypesBasicDomainConsPage}
@@ -26187,6 +72672,195 @@ their functions and how to write your own functions.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesBasicDomainConsPagePatch1}
+\begin{paste}{ugTypesBasicDomainConsPageFull1}{ugTypesBasicDomainConsPageEmpty1}
+\pastebutton{ugTypesBasicDomainConsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{factorial(7)}
+\indentrel{3}\begin{verbatim}
+   (1)  5040
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty1}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty1}{ugTypesBasicDomainConsPagePatch1}
+\pastebutton{ugTypesBasicDomainConsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{factorial(7)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch2}
+\begin{paste}{ugTypesBasicDomainConsPageFull2}{ugTypesBasicDomainConsPageEmpty2}
+\pastebutton{ugTypesBasicDomainConsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{Polynomial(Integer)}
+\indentrel{3}\begin{verbatim}
+   (2)  Polynomial Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty2}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty2}{ugTypesBasicDomainConsPagePatch2}
+\pastebutton{ugTypesBasicDomainConsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{Polynomial(Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch3}
+\begin{paste}{ugTypesBasicDomainConsPageFull3}{ugTypesBasicDomainConsPageEmpty3}
+\pastebutton{ugTypesBasicDomainConsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
+\indentrel{3}\begin{verbatim}
+   (3)
+   List List Matrix Polynomial Complex Fraction Integer
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty3}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty3}{ugTypesBasicDomainConsPagePatch3}
+\pastebutton{ugTypesBasicDomainConsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch4}
+\begin{paste}{ugTypesBasicDomainConsPageFull4}{ugTypesBasicDomainConsPageEmpty4}
+\pastebutton{ugTypesBasicDomainConsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{Polynomial(String)}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty4}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty4}{ugTypesBasicDomainConsPagePatch4}
+\pastebutton{ugTypesBasicDomainConsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{Polynomial(String)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch5}
+\begin{paste}{ugTypesBasicDomainConsPageFull5}{ugTypesBasicDomainConsPageEmpty5}
+\pastebutton{ugTypesBasicDomainConsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{Polynomial(Integer) has Ring}
+\indentrel{3}\begin{verbatim}
+   (4)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty5}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty5}{ugTypesBasicDomainConsPagePatch5}
+\pastebutton{ugTypesBasicDomainConsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{Polynomial(Integer) has Ring}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch6}
+\begin{paste}{ugTypesBasicDomainConsPageFull6}{ugTypesBasicDomainConsPageEmpty6}
+\pastebutton{ugTypesBasicDomainConsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{List(Integer) has Ring}
+\indentrel{3}\begin{verbatim}
+   (5)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty6}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty6}{ugTypesBasicDomainConsPagePatch6}
+\pastebutton{ugTypesBasicDomainConsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{List(Integer) has Ring}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch7}
+\begin{paste}{ugTypesBasicDomainConsPageFull7}{ugTypesBasicDomainConsPageEmpty7}
+\pastebutton{ugTypesBasicDomainConsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{Matrix(Integer) has Ring}
+\indentrel{3}\begin{verbatim}
+   (6)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty7}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty7}{ugTypesBasicDomainConsPagePatch7}
+\pastebutton{ugTypesBasicDomainConsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{Matrix(Integer) has Ring}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch8}
+\begin{paste}{ugTypesBasicDomainConsPageFull8}{ugTypesBasicDomainConsPageEmpty8}
+\pastebutton{ugTypesBasicDomainConsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{Polynomial(Matrix(Integer))}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty8}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty8}{ugTypesBasicDomainConsPagePatch8}
+\pastebutton{ugTypesBasicDomainConsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{Polynomial(Matrix(Integer))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch9}
+\begin{paste}{ugTypesBasicDomainConsPageFull9}{ugTypesBasicDomainConsPageEmpty9}
+\pastebutton{ugTypesBasicDomainConsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{Polynomial(SquareMatrix(7,Complex(Integer)))}
+\indentrel{3}\begin{verbatim}
+   (7)  Polynomial SquareMatrix(7,Complex Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty9}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty9}{ugTypesBasicDomainConsPagePatch9}
+\pastebutton{ugTypesBasicDomainConsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{Polynomial(SquareMatrix(7,Complex(Integer)))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch10}
+\begin{paste}{ugTypesBasicDomainConsPageFull10}{ugTypesBasicDomainConsPageEmpty10}
+\pastebutton{ugTypesBasicDomainConsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{Complex(Integer) has Field}
+\indentrel{3}\begin{verbatim}
+   (8)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty10}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty10}{ugTypesBasicDomainConsPagePatch10}
+\pastebutton{ugTypesBasicDomainConsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{Complex(Integer) has Field}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch11}
+\begin{paste}{ugTypesBasicDomainConsPageFull11}{ugTypesBasicDomainConsPageEmpty11}
+\pastebutton{ugTypesBasicDomainConsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{Fraction(Complex(Integer)) has Field}
+\indentrel{3}\begin{verbatim}
+   (9)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty11}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty11}{ugTypesBasicDomainConsPagePatch11}
+\pastebutton{ugTypesBasicDomainConsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{Fraction(Complex(Integer)) has Field}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPagePatch12}
+\begin{paste}{ugTypesBasicDomainConsPageFull12}{ugTypesBasicDomainConsPageEmpty12}
+\pastebutton{ugTypesBasicDomainConsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{Complex(Fraction(Integer)) has Field}
+\indentrel{3}\begin{verbatim}
+   (10)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesBasicDomainConsPageEmpty12}
+\begin{paste}{ugTypesBasicDomainConsPageEmpty12}{ugTypesBasicDomainConsPagePatch12}
+\pastebutton{ugTypesBasicDomainConsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{Complex(Fraction(Integer)) has Field}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesWritingPage}{ug02.ht}{Writing Types and Modes}
 \pageto{notitle}{ugTypesBasicPage}
@@ -26257,6 +72931,85 @@ in Section 2.9\ignore{ugTypesPkgCall}).
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesWritingPagePatch1}
+\begin{paste}{ugTypesWritingPageFull1}{ugTypesWritingPageEmpty1}
+\pastebutton{ugTypesWritingPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a : PositiveInteger}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPageEmpty1}
+\begin{paste}{ugTypesWritingPageEmpty1}{ugTypesWritingPagePatch1}
+\pastebutton{ugTypesWritingPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a : PositiveInteger}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPagePatch2}
+\begin{paste}{ugTypesWritingPageFull2}{ugTypesWritingPageEmpty2}
+\pastebutton{ugTypesWritingPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f : Integer -> String}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPageEmpty2}
+\begin{paste}{ugTypesWritingPageEmpty2}{ugTypesWritingPagePatch2}
+\pastebutton{ugTypesWritingPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f : Integer -> String}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPagePatch3}
+\begin{paste}{ugTypesWritingPageFull3}{ugTypesWritingPageEmpty3}
+\pastebutton{ugTypesWritingPageFull3}{\hidepaste}
+\tab{5}\spadcommand{factor(2 :: Complex(Integer))}
+\indentrel{3}\begin{verbatim}
+                     2
+   (3)  - %i (1 + %i)
+                         Type: Factored Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPageEmpty3}
+\begin{paste}{ugTypesWritingPageEmpty3}{ugTypesWritingPagePatch3}
+\pastebutton{ugTypesWritingPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{factor(2 :: Complex(Integer))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPagePatch4}
+\begin{paste}{ugTypesWritingPageFull4}{ugTypesWritingPageEmpty4}
+\pastebutton{ugTypesWritingPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(2 = 3)$Integer}
+\indentrel{3}\begin{verbatim}
+   (4)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPageEmpty4}
+\begin{paste}{ugTypesWritingPageEmpty4}{ugTypesWritingPagePatch4}
+\pastebutton{ugTypesWritingPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(2 = 3)$Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPagePatch5}
+\begin{paste}{ugTypesWritingPageFull5}{ugTypesWritingPageEmpty5}
+\pastebutton{ugTypesWritingPageFull5}{\hidepaste}
+\tab{5}\spadcommand{(2 = 3)@Boolean}
+\indentrel{3}\begin{verbatim}
+   (5)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingPageEmpty5}
+\begin{paste}{ugTypesWritingPageEmpty5}{ugTypesWritingPagePatch5}
+\pastebutton{ugTypesWritingPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(2 = 3)@Boolean}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesWritingZeroPage}{ug02.ht}{Types with No Arguments}
 <<ug02.ht>>=
@@ -26358,6 +73111,104 @@ then the parentheses can usually be omitted.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesWritingOnePagePatch1}
+\begin{paste}{ugTypesWritingOnePageFull1}{ugTypesWritingOnePageEmpty1}
+\pastebutton{ugTypesWritingOnePageFull1}{\hidepaste}
+\tab{5}\spadcommand{e : PrimeField(2 + 3)}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty1}
+\begin{paste}{ugTypesWritingOnePageEmpty1}{ugTypesWritingOnePagePatch1}
+\pastebutton{ugTypesWritingOnePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{e : PrimeField(2 + 3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePagePatch2}
+\begin{paste}{ugTypesWritingOnePageFull2}{ugTypesWritingOnePageEmpty2}
+\pastebutton{ugTypesWritingOnePageFull2}{\hidepaste}
+\tab{5}\spadcommand{content(2)$Polynomial(Integer)}
+\indentrel{3}\begin{verbatim}
+   (2)  2
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty2}
+\begin{paste}{ugTypesWritingOnePageEmpty2}{ugTypesWritingOnePagePatch2}
+\pastebutton{ugTypesWritingOnePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{content(2)$Polynomial(Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePagePatch3}
+\begin{paste}{ugTypesWritingOnePageFull3}{ugTypesWritingOnePageEmpty3}
+\pastebutton{ugTypesWritingOnePageFull3}{\hidepaste}
+\tab{5}\spadcommand{content(2)$(Polynomial Complex Fraction Integer)}
+\indentrel{3}\begin{verbatim}
+   (3)  2
+                         Type: Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty3}
+\begin{paste}{ugTypesWritingOnePageEmpty3}{ugTypesWritingOnePagePatch3}
+\pastebutton{ugTypesWritingOnePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{content(2)$(Polynomial Complex Fraction Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePagePatch4}
+\begin{paste}{ugTypesWritingOnePageFull4}{ugTypesWritingOnePageEmpty4}
+\pastebutton{ugTypesWritingOnePageFull4}{\hidepaste}
+\tab{5}\spadcommand{(2/3)@Fraction(Polynomial(Integer))}
+\indentrel{3}\begin{verbatim}
+        2
+   (4)  Ä
+        3
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty4}
+\begin{paste}{ugTypesWritingOnePageEmpty4}{ugTypesWritingOnePagePatch4}
+\pastebutton{ugTypesWritingOnePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(2/3)@Fraction(Polynomial(Integer))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePagePatch5}
+\begin{paste}{ugTypesWritingOnePageFull5}{ugTypesWritingOnePageEmpty5}
+\pastebutton{ugTypesWritingOnePageFull5}{\hidepaste}
+\tab{5}\spadcommand{(2/3)@Fraction(Polynomial Integer)}
+\indentrel{3}\begin{verbatim}
+        2
+   (5)  Ä
+        3
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty5}
+\begin{paste}{ugTypesWritingOnePageEmpty5}{ugTypesWritingOnePagePatch5}
+\pastebutton{ugTypesWritingOnePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(2/3)@Fraction(Polynomial Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePagePatch6}
+\begin{paste}{ugTypesWritingOnePageFull6}{ugTypesWritingOnePageEmpty6}
+\pastebutton{ugTypesWritingOnePageFull6}{\hidepaste}
+\tab{5}\spadcommand{(d,f,g) : Complex Polynomial Integer}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingOnePageEmpty6}
+\begin{paste}{ugTypesWritingOnePageEmpty6}{ugTypesWritingOnePagePatch6}
+\pastebutton{ugTypesWritingOnePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{(d,f,g) : Complex Polynomial Integer}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesWritingMorePage}{ug02.ht}
 {Types with More Than One Argument}
@@ -26510,6 +73361,48 @@ Issue this to see all packages whose names contain the string ``ode''.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesWritingAbbrPagePatch1}
+\begin{paste}{ugTypesWritingAbbrPageFull1}{ugTypesWritingAbbrPageEmpty1}
+\pastebutton{ugTypesWritingAbbrPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)abb q Integer}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingAbbrPageEmpty1}
+\begin{paste}{ugTypesWritingAbbrPageEmpty1}{ugTypesWritingAbbrPagePatch1}
+\pastebutton{ugTypesWritingAbbrPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)abb q Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingAbbrPagePatch2}
+\begin{paste}{ugTypesWritingAbbrPageFull2}{ugTypesWritingAbbrPageEmpty2}
+\pastebutton{ugTypesWritingAbbrPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)abb q DMP}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingAbbrPageEmpty2}
+\begin{paste}{ugTypesWritingAbbrPageEmpty2}{ugTypesWritingAbbrPagePatch2}
+\pastebutton{ugTypesWritingAbbrPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)abb q DMP}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingAbbrPagePatch3}
+\begin{paste}{ugTypesWritingAbbrPageFull3}{ugTypesWritingAbbrPageEmpty3}
+\pastebutton{ugTypesWritingAbbrPageFull3}{\hidepaste}
+\tab{5}\spadcommand{)what packages ode}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesWritingAbbrPageEmpty3}
+\begin{paste}{ugTypesWritingAbbrPageEmpty3}{ugTypesWritingAbbrPagePatch3}
+\pastebutton{ugTypesWritingAbbrPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{)what packages ode}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesDeclarePage}{ug02.ht}{Declarations}
 \pageto{notitle}{ugLangAssignPage}
@@ -26625,6 +73518,221 @@ information.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesDeclarePagePatch1}
+\begin{paste}{ugTypesDeclarePageFull1}{ugTypesDeclarePageEmpty1}
+\pastebutton{ugTypesDeclarePageFull1}{\hidepaste}
+\tab{5}\spadcommand{a : Integer\bound{a }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty1}
+\begin{paste}{ugTypesDeclarePageEmpty1}{ugTypesDeclarePagePatch1}
+\pastebutton{ugTypesDeclarePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a : Integer\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch2}
+\begin{paste}{ugTypesDeclarePageFull2}{ugTypesDeclarePageEmpty2}
+\pastebutton{ugTypesDeclarePageFull2}{\hidepaste}
+\tab{5}\spadcommand{(b,c) : Integer\bound{b c }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty2}
+\begin{paste}{ugTypesDeclarePageEmpty2}{ugTypesDeclarePagePatch2}
+\pastebutton{ugTypesDeclarePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(b,c) : Integer\bound{b c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch3}
+\begin{paste}{ugTypesDeclarePageFull3}{ugTypesDeclarePageEmpty3}
+\pastebutton{ugTypesDeclarePageFull3}{\hidepaste}
+\tab{5}\spadcommand{a := 45\free{a }}
+\indentrel{3}\begin{verbatim}
+   (3)  45
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty3}
+\begin{paste}{ugTypesDeclarePageEmpty3}{ugTypesDeclarePagePatch3}
+\pastebutton{ugTypesDeclarePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a := 45\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch4}
+\begin{paste}{ugTypesDeclarePageFull4}{ugTypesDeclarePageEmpty4}
+\pastebutton{ugTypesDeclarePageFull4}{\hidepaste}
+\tab{5}\spadcommand{b := 4/5\free{b }}
+\indentrel{3}\begin{verbatim}
+   4
+   Ä
+   5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty4}
+\begin{paste}{ugTypesDeclarePageEmpty4}{ugTypesDeclarePagePatch4}
+\pastebutton{ugTypesDeclarePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b := 4/5\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch5}
+\begin{paste}{ugTypesDeclarePageFull5}{ugTypesDeclarePageEmpty5}
+\pastebutton{ugTypesDeclarePageFull5}{\hidepaste}
+\tab{5}\spadcommand{n : Complex ?\bound{n }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty5}
+\begin{paste}{ugTypesDeclarePageEmpty5}{ugTypesDeclarePagePatch5}
+\pastebutton{ugTypesDeclarePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{n : Complex ?\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch6}
+\begin{paste}{ugTypesDeclarePageFull6}{ugTypesDeclarePageEmpty6}
+\pastebutton{ugTypesDeclarePageFull6}{\hidepaste}
+\tab{5}\spadcommand{(p,q,r) : Matrix Polynomial ?\bound{p q r }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty6}
+\begin{paste}{ugTypesDeclarePageEmpty6}{ugTypesDeclarePagePatch6}
+\pastebutton{ugTypesDeclarePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{(p,q,r) : Matrix Polynomial ?\bound{p q r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch7}
+\begin{paste}{ugTypesDeclarePageFull7}{ugTypesDeclarePageEmpty7}
+\pastebutton{ugTypesDeclarePageFull7}{\hidepaste}
+\tab{5}\spadcommand{n := -36 + 9 * \%i\free{n }}
+\indentrel{3}\begin{verbatim}
+   (6)  - 36 + 9%i
+                                  Type: Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty7}
+\begin{paste}{ugTypesDeclarePageEmpty7}{ugTypesDeclarePagePatch7}
+\pastebutton{ugTypesDeclarePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{n := -36 + 9 * \%i\free{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch8}
+\begin{paste}{ugTypesDeclarePageFull8}{ugTypesDeclarePageEmpty8}
+\pastebutton{ugTypesDeclarePageFull8}{\hidepaste}
+\tab{5}\spadcommand{n := complex(4/(x + y),y/x)\free{n }}
+\indentrel{3}\begin{verbatim}
+          4     y
+   (7)  ÄÄÄÄÄ + Ä %i
+        y + x   x
+              Type: Complex Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty8}
+\begin{paste}{ugTypesDeclarePageEmpty8}{ugTypesDeclarePagePatch8}
+\pastebutton{ugTypesDeclarePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{n := complex(4/(x + y),y/x)\free{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch9}
+\begin{paste}{ugTypesDeclarePageFull9}{ugTypesDeclarePageEmpty9}
+\pastebutton{ugTypesDeclarePageFull9}{\hidepaste}
+\tab{5}\spadcommand{p := [[1,2],[3,4],[5,6]]\free{p }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+        ³    ³
+   (8)  ³3  4³
+        ³    ³
+        À5  6Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty9}
+\begin{paste}{ugTypesDeclarePageEmpty9}{ugTypesDeclarePagePatch9}
+\pastebutton{ugTypesDeclarePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p := [[1,2],[3,4],[5,6]]\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch10}
+\begin{paste}{ugTypesDeclarePageFull10}{ugTypesDeclarePageEmpty10}
+\pastebutton{ugTypesDeclarePageFull10}{\hidepaste}
+\tab{5}\spadcommand{q := [[x - 2/3]]\free{q }}
+\indentrel{3}\begin{verbatim}
+        Ú    2¿
+   (9)  ³x - Ä³
+        À    3Ù
+               Type: Matrix Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty10}
+\begin{paste}{ugTypesDeclarePageEmpty10}{ugTypesDeclarePagePatch10}
+\pastebutton{ugTypesDeclarePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{q := [[x - 2/3]]\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch11}
+\begin{paste}{ugTypesDeclarePageFull11}{ugTypesDeclarePageEmpty11}
+\pastebutton{ugTypesDeclarePageFull11}{\hidepaste}
+\tab{5}\spadcommand{r := [[1-\%i*x,7*y+4*\%i]]\free{r }}
+\indentrel{3}\begin{verbatim}
+   (10)  [- %i x + 1  7y + 4%i]
+                Type: Matrix Polynomial Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty11}
+\begin{paste}{ugTypesDeclarePageEmpty11}{ugTypesDeclarePagePatch11}
+\pastebutton{ugTypesDeclarePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{r := [[1-\%i*x,7*y+4*\%i]]\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch12}
+\begin{paste}{ugTypesDeclarePageFull12}{ugTypesDeclarePageEmpty12}
+\pastebutton{ugTypesDeclarePageFull12}{\hidepaste}
+\tab{5}\spadcommand{f : COMPLEX POLY ? := (x + y*\%i)**2}
+\indentrel{3}\begin{verbatim}
+            2    2
+   (11)  - y  + x  + 2x y %i
+                       Type: Complex Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty12}
+\begin{paste}{ugTypesDeclarePageEmpty12}{ugTypesDeclarePagePatch12}
+\pastebutton{ugTypesDeclarePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{f : COMPLEX POLY ? := (x + y*\%i)**2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePagePatch13}
+\begin{paste}{ugTypesDeclarePageFull13}{ugTypesDeclarePageEmpty13}
+\pastebutton{ugTypesDeclarePageFull13}{\hidepaste}
+\tab{5}\spadcommand{g : POLY COMPLEX ? := (x + y*\%i)**2}
+\indentrel{3}\begin{verbatim}
+            2              2
+   (12)  - y  + 2%i x y + x
+                       Type: Polynomial Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesDeclarePageEmpty13}
+\begin{paste}{ugTypesDeclarePageEmpty13}{ugTypesDeclarePagePatch13}
+\pastebutton{ugTypesDeclarePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{g : POLY COMPLEX ? := (x + y*\%i)**2}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesRecordsPage}{ug02.ht}{Records}
 <<ug02.ht>>=
@@ -26774,6 +73882,292 @@ Look at \axiom{r} to make sure it was modified.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesRecordsPagePatch1}
+\begin{paste}{ugTypesRecordsPageFull1}{ugTypesRecordsPageEmpty1}
+\pastebutton{ugTypesRecordsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{u := divide(5,2)\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (1)  [quotient= 2,remainder= 1]
+     Type: Record(quotient: Integer,remainder: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty1}
+\begin{paste}{ugTypesRecordsPageEmpty1}{ugTypesRecordsPagePatch1}
+\pastebutton{ugTypesRecordsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u := divide(5,2)\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch2}
+\begin{paste}{ugTypesRecordsPageFull2}{ugTypesRecordsPageEmpty2}
+\pastebutton{ugTypesRecordsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{u.quotient\free{u }}
+\indentrel{3}\begin{verbatim}
+   (2)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty2}
+\begin{paste}{ugTypesRecordsPageEmpty2}{ugTypesRecordsPagePatch2}
+\pastebutton{ugTypesRecordsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{u.quotient\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch3}
+\begin{paste}{ugTypesRecordsPageFull3}{ugTypesRecordsPageEmpty3}
+\pastebutton{ugTypesRecordsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{u.remainder\free{u }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty3}
+\begin{paste}{ugTypesRecordsPageEmpty3}{ugTypesRecordsPagePatch3}
+\pastebutton{ugTypesRecordsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{u.remainder\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch4}
+\begin{paste}{ugTypesRecordsPageFull4}{ugTypesRecordsPageEmpty4}
+\pastebutton{ugTypesRecordsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{u.quotient := 8978\free{u }\bound{u1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  8978
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty4}
+\begin{paste}{ugTypesRecordsPageEmpty4}{ugTypesRecordsPagePatch4}
+\pastebutton{ugTypesRecordsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{u.quotient := 8978\free{u }\bound{u1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch5}
+\begin{paste}{ugTypesRecordsPageFull5}{ugTypesRecordsPageEmpty5}
+\pastebutton{ugTypesRecordsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{u\free{u }\free{u1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [quotient= 8978,remainder= 1]
+     Type: Record(quotient: Integer,remainder: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty5}
+\begin{paste}{ugTypesRecordsPageEmpty5}{ugTypesRecordsPagePatch5}
+\pastebutton{ugTypesRecordsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{u\free{u }\free{u1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch6}
+\begin{paste}{ugTypesRecordsPageFull6}{ugTypesRecordsPageEmpty6}
+\pastebutton{ugTypesRecordsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{s := 'quotient\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (6)  quotient
+                                Type: Variable quotient
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty6}
+\begin{paste}{ugTypesRecordsPageEmpty6}{ugTypesRecordsPagePatch6}
+\pastebutton{ugTypesRecordsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{s := 'quotient\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch7}
+\begin{paste}{ugTypesRecordsPageFull7}{ugTypesRecordsPageEmpty7}
+\pastebutton{ugTypesRecordsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{divide(5,2).s\free{s }}
+\indentrel{3}\begin{verbatim}
+   (7)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty7}
+\begin{paste}{ugTypesRecordsPageEmpty7}{ugTypesRecordsPagePatch7}
+\pastebutton{ugTypesRecordsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{divide(5,2).s\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch8}
+\begin{paste}{ugTypesRecordsPageFull8}{ugTypesRecordsPageEmpty8}
+\pastebutton{ugTypesRecordsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{bd : Record(name : String, birthdayMonth : Integer)\bound{bddec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty8}
+\begin{paste}{ugTypesRecordsPageEmpty8}{ugTypesRecordsPagePatch8}
+\pastebutton{ugTypesRecordsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{bd : Record(name : String, birthdayMonth : Integer)\bound{bddec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch9}
+\begin{paste}{ugTypesRecordsPageFull9}{ugTypesRecordsPageEmpty9}
+\pastebutton{ugTypesRecordsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{bd := ["Judith", 3]\free{bddec }\bound{bd }}
+\indentrel{3}\begin{verbatim}
+   (9)  [name= "Judith",birthdayMonth= 3]
+      Type: Record(name: String,birthdayMonth: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty9}
+\begin{paste}{ugTypesRecordsPageEmpty9}{ugTypesRecordsPagePatch9}
+\pastebutton{ugTypesRecordsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{bd := ["Judith", 3]\free{bddec }\bound{bd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch10}
+\begin{paste}{ugTypesRecordsPageFull10}{ugTypesRecordsPageEmpty10}
+\pastebutton{ugTypesRecordsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{bd.name := "Katie"\free{bd }}
+\indentrel{3}\begin{verbatim}
+   (10)  "Katie"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty10}
+\begin{paste}{ugTypesRecordsPageEmpty10}{ugTypesRecordsPagePatch10}
+\pastebutton{ugTypesRecordsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{bd.name := "Katie"\free{bd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch11}
+\begin{paste}{ugTypesRecordsPageFull11}{ugTypesRecordsPageEmpty11}
+\pastebutton{ugTypesRecordsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{r : Record(a : Record(b: Integer, c: Integer), b: Integer)\bound{rdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty11}
+\begin{paste}{ugTypesRecordsPageEmpty11}{ugTypesRecordsPagePatch11}
+\pastebutton{ugTypesRecordsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{r : Record(a : Record(b: Integer, c: Integer), b: Integer)\bound{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch12}
+\begin{paste}{ugTypesRecordsPageFull12}{ugTypesRecordsPageEmpty12}
+\pastebutton{ugTypesRecordsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{r := [[1,2],3]\bound{r }\free{rdec }}
+\indentrel{3}\begin{verbatim}
+   (12)  [a= [b= 1,c= 2],b= 3]
+Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty12}
+\begin{paste}{ugTypesRecordsPageEmpty12}{ugTypesRecordsPagePatch12}
+\pastebutton{ugTypesRecordsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{r := [[1,2],3]\bound{r }\free{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch13}
+\begin{paste}{ugTypesRecordsPageFull13}{ugTypesRecordsPageEmpty13}
+\pastebutton{ugTypesRecordsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{r.a.b\free{r }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty13}
+\begin{paste}{ugTypesRecordsPageEmpty13}{ugTypesRecordsPagePatch13}
+\pastebutton{ugTypesRecordsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{r.a.b\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch14}
+\begin{paste}{ugTypesRecordsPageFull14}{ugTypesRecordsPageEmpty14}
+\pastebutton{ugTypesRecordsPageFull14}{\hidepaste}
+\tab{5}\spadcommand{r.b\free{r }}
+\indentrel{3}\begin{verbatim}
+   (14)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty14}
+\begin{paste}{ugTypesRecordsPageEmpty14}{ugTypesRecordsPagePatch14}
+\pastebutton{ugTypesRecordsPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{r.b\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch15}
+\begin{paste}{ugTypesRecordsPageFull15}{ugTypesRecordsPageEmpty15}
+\pastebutton{ugTypesRecordsPageFull15}{\hidepaste}
+\tab{5}\spadcommand{r(a)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (15)  [b= 1,c= 2]
+                    Type: Record(b: Integer,c: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty15}
+\begin{paste}{ugTypesRecordsPageEmpty15}{ugTypesRecordsPagePatch15}
+\pastebutton{ugTypesRecordsPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{r(a)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch16}
+\begin{paste}{ugTypesRecordsPageFull16}{ugTypesRecordsPageEmpty16}
+\pastebutton{ugTypesRecordsPageFull16}{\hidepaste}
+\tab{5}\spadcommand{r b\free{r }}
+\indentrel{3}\begin{verbatim}
+   (16)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty16}
+\begin{paste}{ugTypesRecordsPageEmpty16}{ugTypesRecordsPagePatch16}
+\pastebutton{ugTypesRecordsPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{r b\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch17}
+\begin{paste}{ugTypesRecordsPageFull17}{ugTypesRecordsPageEmpty17}
+\pastebutton{ugTypesRecordsPageFull17}{\hidepaste}
+\tab{5}\spadcommand{r(b) := 10\free{r }\bound{r1 }}
+\indentrel{3}\begin{verbatim}
+   (17)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty17}
+\begin{paste}{ugTypesRecordsPageEmpty17}{ugTypesRecordsPagePatch17}
+\pastebutton{ugTypesRecordsPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{r(b) := 10\free{r }\bound{r1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPagePatch18}
+\begin{paste}{ugTypesRecordsPageFull18}{ugTypesRecordsPageEmpty18}
+\pastebutton{ugTypesRecordsPageFull18}{\hidepaste}
+\tab{5}\spadcommand{r\free{r1 }}
+\indentrel{3}\begin{verbatim}
+   (18)  [a= [b= 1,c= 2],b= 10]
+Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesRecordsPageEmpty18}
+\begin{paste}{ugTypesRecordsPageEmpty18}{ugTypesRecordsPagePatch18}
+\pastebutton{ugTypesRecordsPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{r\free{r1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesUnionsPage}{ug02.ht}{Unions}
 \pageto{notitle}{ugTypesUnionsWOSelPage}
@@ -26951,6 +74345,225 @@ Here the retraction fails.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesUnionsWOSelPagePatch1}
+\begin{paste}{ugTypesUnionsWOSelPageFull1}{ugTypesUnionsWOSelPageEmpty1}
+\pastebutton{ugTypesUnionsWOSelPageFull1}{\hidepaste}
+\tab{5}\spadcommand{sayBranch(x : Union(Integer,String,Float)) : Void  ==
+  output
+    x case Integer => "Integer branch"
+    x case String  => "String branch"
+    "Float branch"
+\bound{sayBranch }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty1}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty1}{ugTypesUnionsWOSelPagePatch1}
+\pastebutton{ugTypesUnionsWOSelPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{sayBranch(x : Union(Integer,String,Float)) : Void  ==
+  output
+    x case Integer => "Integer branch"
+    x case String  => "String branch"
+    "Float branch"
+\bound{sayBranch }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch2}
+\begin{paste}{ugTypesUnionsWOSelPageFull2}{ugTypesUnionsWOSelPageEmpty2}
+\pastebutton{ugTypesUnionsWOSelPageFull2}{\hidepaste}
+\tab{5}\spadcommand{sayBranch 1\free{sayBranch }}
+\indentrel{3}\begin{verbatim}
+   Integer branch
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty2}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty2}{ugTypesUnionsWOSelPagePatch2}
+\pastebutton{ugTypesUnionsWOSelPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sayBranch 1\free{sayBranch }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch3}
+\begin{paste}{ugTypesUnionsWOSelPageFull3}{ugTypesUnionsWOSelPageEmpty3}
+\pastebutton{ugTypesUnionsWOSelPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sayBranch "hello"\free{sayBranch }}
+\indentrel{3}\begin{verbatim}
+   String branch
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty3}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty3}{ugTypesUnionsWOSelPagePatch3}
+\pastebutton{ugTypesUnionsWOSelPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sayBranch "hello"\free{sayBranch }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch4}
+\begin{paste}{ugTypesUnionsWOSelPageFull4}{ugTypesUnionsWOSelPageEmpty4}
+\pastebutton{ugTypesUnionsWOSelPageFull4}{\hidepaste}
+\tab{5}\spadcommand{sayBranch 2.718281828\free{sayBranch }}
+\indentrel{3}\begin{verbatim}
+   Float branch
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty4}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty4}{ugTypesUnionsWOSelPagePatch4}
+\pastebutton{ugTypesUnionsWOSelPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sayBranch 2.718281828\free{sayBranch }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch5}
+\begin{paste}{ugTypesUnionsWOSelPageFull5}{ugTypesUnionsWOSelPageEmpty5}
+\pastebutton{ugTypesUnionsWOSelPageFull5}{\hidepaste}
+\tab{5}\spadcommand{78 :: Union(Integer,String)}
+\indentrel{3}\begin{verbatim}
+   (5)  78
+                               Type: Union(Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty5}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty5}{ugTypesUnionsWOSelPagePatch5}
+\pastebutton{ugTypesUnionsWOSelPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{78 :: Union(Integer,String)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch6}
+\begin{paste}{ugTypesUnionsWOSelPageFull6}{ugTypesUnionsWOSelPageEmpty6}
+\pastebutton{ugTypesUnionsWOSelPageFull6}{\hidepaste}
+\tab{5}\spadcommand{s := "string" :: Union(Integer,String)\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (6)  "string"
+                                Type: Union(String,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty6}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty6}{ugTypesUnionsWOSelPagePatch6}
+\pastebutton{ugTypesUnionsWOSelPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{s := "string" :: Union(Integer,String)\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch7}
+\begin{paste}{ugTypesUnionsWOSelPageFull7}{ugTypesUnionsWOSelPageEmpty7}
+\pastebutton{ugTypesUnionsWOSelPageFull7}{\hidepaste}
+\tab{5}\spadcommand{typeOf s}
+\indentrel{3}\begin{verbatim}
+   (7)  Union(Integer,String)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty7}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty7}{ugTypesUnionsWOSelPagePatch7}
+\pastebutton{ugTypesUnionsWOSelPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{typeOf s}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch8}
+\begin{paste}{ugTypesUnionsWOSelPageFull8}{ugTypesUnionsWOSelPageEmpty8}
+\pastebutton{ugTypesUnionsWOSelPageFull8}{\hidepaste}
+\tab{5}\spadcommand{three := exquo(6,2)\bound{three }}
+\indentrel{3}\begin{verbatim}
+   (8)  3
+                               Type: Union(Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty8}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty8}{ugTypesUnionsWOSelPagePatch8}
+\pastebutton{ugTypesUnionsWOSelPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{three := exquo(6,2)\bound{three }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch9}
+\begin{paste}{ugTypesUnionsWOSelPageFull9}{ugTypesUnionsWOSelPageEmpty9}
+\pastebutton{ugTypesUnionsWOSelPageFull9}{\hidepaste}
+\tab{5}\spadcommand{exquo(5,2)}
+\indentrel{3}\begin{verbatim}
+   (9)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty9}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty9}{ugTypesUnionsWOSelPagePatch9}
+\pastebutton{ugTypesUnionsWOSelPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{exquo(5,2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch10}
+\begin{paste}{ugTypesUnionsWOSelPageFull10}{ugTypesUnionsWOSelPageEmpty10}
+\pastebutton{ugTypesUnionsWOSelPageFull10}{\hidepaste}
+\tab{5}\spadcommand{r: FRAC INT := 3\bound{r }\bound{rdec }}
+\indentrel{3}\begin{verbatim}
+   (10)  3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty10}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty10}{ugTypesUnionsWOSelPagePatch10}
+\pastebutton{ugTypesUnionsWOSelPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{r: FRAC INT := 3\bound{r }\bound{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch11}
+\begin{paste}{ugTypesUnionsWOSelPageFull11}{ugTypesUnionsWOSelPageEmpty11}
+\pastebutton{ugTypesUnionsWOSelPageFull11}{\hidepaste}
+\tab{5}\spadcommand{retractIfCan(r)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (11)  3
+                               Type: Union(Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty11}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty11}{ugTypesUnionsWOSelPagePatch11}
+\pastebutton{ugTypesUnionsWOSelPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{retractIfCan(r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch12}
+\begin{paste}{ugTypesUnionsWOSelPageFull12}{ugTypesUnionsWOSelPageEmpty12}
+\pastebutton{ugTypesUnionsWOSelPageFull12}{\hidepaste}
+\tab{5}\spadcommand{r := 3/2\bound{r1 }\free{rdec }}
+\indentrel{3}\begin{verbatim}
+         3
+   (12)  Ä
+         2
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty12}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty12}{ugTypesUnionsWOSelPagePatch12}
+\pastebutton{ugTypesUnionsWOSelPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{r := 3/2\bound{r1 }\free{rdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPagePatch13}
+\begin{paste}{ugTypesUnionsWOSelPageFull13}{ugTypesUnionsWOSelPageEmpty13}
+\pastebutton{ugTypesUnionsWOSelPageFull13}{\hidepaste}
+\tab{5}\spadcommand{retractIfCan(r)\free{r1 }}
+\indentrel{3}\begin{verbatim}
+   (13)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWOSelPageEmpty13}
+\begin{paste}{ugTypesUnionsWOSelPageEmpty13}{ugTypesUnionsWOSelPagePatch13}
+\pastebutton{ugTypesUnionsWOSelPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{retractIfCan(r)\free{r1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesUnionsWSelPage}{ug02.ht}{Unions With Selectors}
 \pageto{notitle}{ugTypesRecordsPage}
@@ -27033,6 +74646,85 @@ To access the element in a particular branch, use the selector.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesUnionsWSelPagePatch1}
+\begin{paste}{ugTypesUnionsWSelPageFull1}{ugTypesUnionsWSelPageEmpty1}
+\pastebutton{ugTypesUnionsWSelPageFull1}{\hidepaste}
+\tab{5}\spadcommand{u : Union(i : Integer, s : String)\bound{undec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPageEmpty1}
+\begin{paste}{ugTypesUnionsWSelPageEmpty1}{ugTypesUnionsWSelPagePatch1}
+\pastebutton{ugTypesUnionsWSelPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u : Union(i : Integer, s : String)\bound{undec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPagePatch2}
+\begin{paste}{ugTypesUnionsWSelPageFull2}{ugTypesUnionsWSelPageEmpty2}
+\pastebutton{ugTypesUnionsWSelPageFull2}{\hidepaste}
+\tab{5}\spadcommand{u := "good morning"\bound{u }\free{undec }}
+\indentrel{3}\begin{verbatim}
+   (2)  "good morning"
+                             Type: Union(s: String,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPageEmpty2}
+\begin{paste}{ugTypesUnionsWSelPageEmpty2}{ugTypesUnionsWSelPagePatch2}
+\pastebutton{ugTypesUnionsWSelPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{u := "good morning"\bound{u }\free{undec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPagePatch3}
+\begin{paste}{ugTypesUnionsWSelPageFull3}{ugTypesUnionsWSelPageEmpty3}
+\pastebutton{ugTypesUnionsWSelPageFull3}{\hidepaste}
+\tab{5}\spadcommand{u case i\free{u }}
+\indentrel{3}\begin{verbatim}
+   (3)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPageEmpty3}
+\begin{paste}{ugTypesUnionsWSelPageEmpty3}{ugTypesUnionsWSelPagePatch3}
+\pastebutton{ugTypesUnionsWSelPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{u case i\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPagePatch4}
+\begin{paste}{ugTypesUnionsWSelPageFull4}{ugTypesUnionsWSelPageEmpty4}
+\pastebutton{ugTypesUnionsWSelPageFull4}{\hidepaste}
+\tab{5}\spadcommand{u case s\free{u }}
+\indentrel{3}\begin{verbatim}
+   (4)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPageEmpty4}
+\begin{paste}{ugTypesUnionsWSelPageEmpty4}{ugTypesUnionsWSelPagePatch4}
+\pastebutton{ugTypesUnionsWSelPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{u case s\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPagePatch5}
+\begin{paste}{ugTypesUnionsWSelPageFull5}{ugTypesUnionsWSelPageEmpty5}
+\pastebutton{ugTypesUnionsWSelPageFull5}{\hidepaste}
+\tab{5}\spadcommand{u.s\free{u }}
+\indentrel{3}\begin{verbatim}
+   (5)  "good morning"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesUnionsWSelPageEmpty5}
+\begin{paste}{ugTypesUnionsWSelPageEmpty5}{ugTypesUnionsWSelPagePatch5}
+\pastebutton{ugTypesUnionsWSelPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{u.s\free{u }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesAnyNonePage}{ug02.ht}{The ``Any'' Domain}
 <<ug02.ht>>=
@@ -27096,6 +74788,87 @@ object of type \axiomType{Any} internally looks like
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesAnyNonePagePatch1}
+\begin{paste}{ugTypesAnyNonePageFull1}{ugTypesAnyNonePageEmpty1}
+\pastebutton{ugTypesAnyNonePageFull1}{\hidepaste}
+\tab{5}\spadcommand{u: Any\bound{uany }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePageEmpty1}
+\begin{paste}{ugTypesAnyNonePageEmpty1}{ugTypesAnyNonePagePatch1}
+\pastebutton{ugTypesAnyNonePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u: Any\bound{uany }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePagePatch2}
+\begin{paste}{ugTypesAnyNonePageFull2}{ugTypesAnyNonePageEmpty2}
+\pastebutton{ugTypesAnyNonePageFull2}{\hidepaste}
+\tab{5}\spadcommand{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany }\bound{u }}
+\indentrel{3}\begin{verbatim}
+               3  2
+   (2)  [1,7.2,Ä,x ,"wally"]
+               2
+                                         Type: List Any
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePageEmpty2}
+\begin{paste}{ugTypesAnyNonePageEmpty2}{ugTypesAnyNonePagePatch2}
+\pastebutton{ugTypesAnyNonePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany }\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePagePatch3}
+\begin{paste}{ugTypesAnyNonePageFull3}{ugTypesAnyNonePageEmpty3}
+\pastebutton{ugTypesAnyNonePageFull3}{\hidepaste}
+\tab{5}\spadcommand{u.1\free{u }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePageEmpty3}
+\begin{paste}{ugTypesAnyNonePageEmpty3}{ugTypesAnyNonePagePatch3}
+\pastebutton{ugTypesAnyNonePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{u.1\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePagePatch4}
+\begin{paste}{ugTypesAnyNonePageFull4}{ugTypesAnyNonePageEmpty4}
+\pastebutton{ugTypesAnyNonePageFull4}{\hidepaste}
+\tab{5}\spadcommand{u.3\free{u }}
+\indentrel{3}\begin{verbatim}
+        3
+   (4)  Ä
+        2
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePageEmpty4}
+\begin{paste}{ugTypesAnyNonePageEmpty4}{ugTypesAnyNonePagePatch4}
+\pastebutton{ugTypesAnyNonePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{u.3\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePagePatch5}
+\begin{paste}{ugTypesAnyNonePageFull5}{ugTypesAnyNonePageEmpty5}
+\pastebutton{ugTypesAnyNonePageFull5}{\hidepaste}
+\tab{5}\spadcommand{v : Matrix(Any)}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesAnyNonePageEmpty5}
+\begin{paste}{ugTypesAnyNonePageEmpty5}{ugTypesAnyNonePagePatch5}
+\pastebutton{ugTypesAnyNonePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{v : Matrix(Any)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesConvertPage}{ug02.ht}{Conversion}
 \pagepic{ps/v71ugtypesconvertpage.eps}{ugTypesConvertPage}
@@ -27233,6 +75006,272 @@ of the matrices to be fractions.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesConvertPagePatch1}
+\begin{paste}{ugTypesConvertPageFull1}{ugTypesConvertPageEmpty1}
+\pastebutton{ugTypesConvertPageFull1}{\hidepaste}
+\tab{5}\spadcommand{3}
+\indentrel{3}\begin{verbatim}
+   (1)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty1}
+\begin{paste}{ugTypesConvertPageEmpty1}{ugTypesConvertPagePatch1}
+\pastebutton{ugTypesConvertPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch2}
+\begin{paste}{ugTypesConvertPageFull2}{ugTypesConvertPageEmpty2}
+\pastebutton{ugTypesConvertPageFull2}{\hidepaste}
+\tab{5}\spadcommand{3 :: Fraction Integer}
+\indentrel{3}\begin{verbatim}
+   (2)  3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty2}
+\begin{paste}{ugTypesConvertPageEmpty2}{ugTypesConvertPagePatch2}
+\pastebutton{ugTypesConvertPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{3 :: Fraction Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch3}
+\begin{paste}{ugTypesConvertPageFull3}{ugTypesConvertPageEmpty3}
+\pastebutton{ugTypesConvertPageFull3}{\hidepaste}
+\tab{5}\spadcommand{m : SquareMatrix(2,POLY COMPLEX FRAC INT)\bound{mdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty3}
+\begin{paste}{ugTypesConvertPageEmpty3}{ugTypesConvertPagePatch3}
+\pastebutton{ugTypesConvertPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{m : SquareMatrix(2,POLY COMPLEX FRAC INT)\bound{mdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch4}
+\begin{paste}{ugTypesConvertPageFull4}{ugTypesConvertPageEmpty4}
+\pastebutton{ugTypesConvertPageFull4}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]]\bound{m }\free{mdec }}
+\indentrel{3}\begin{verbatim}
+        Ú     3         2    1 ¿
+        ³ x - Ä %i     y z + Ä ³
+        ³     4              2 ³
+   (4)  ³                      ³
+        ³3     4           9   ³
+        ³Ä %i y  - x  12 - Ä %i³
+        À7                 5   Ù
+Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty4}
+\begin{paste}{ugTypesConvertPageEmpty4}{ugTypesConvertPagePatch4}
+\pastebutton{ugTypesConvertPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]]\bound{m }\free{mdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch5}
+\begin{paste}{ugTypesConvertPageFull5}{ugTypesConvertPageEmpty5}
+\pastebutton{ugTypesConvertPageFull5}{\hidepaste}
+\tab{5}\spadcommand{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)\free{m }\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú     3%i     2    1 ¿
+        ³ x - ÄÄÄ    y z + Ä ³
+        ³      4           2 ³
+   (5)  ³                    ³
+        ³3%i  4      60 - 9%i³
+        ³ÄÄÄ y  - x  ÄÄÄÄÄÄÄÄ³
+        À 7              5   Ù
+Type: SquareMatrix(2,Polynomial Fraction Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty5}
+\begin{paste}{ugTypesConvertPageEmpty5}{ugTypesConvertPagePatch5}
+\pastebutton{ugTypesConvertPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)\free{m }\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch6}
+\begin{paste}{ugTypesConvertPageFull6}{ugTypesConvertPageEmpty6}
+\pastebutton{ugTypesConvertPageFull6}{\hidepaste}
+\tab{5}\spadcommand{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)\free{m1 }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú               2     ¿
+        ³ 4x - 3%i    2y z + 1³
+        ³ ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
+        ³     4           2   ³
+   (6)  ³                     ³
+        ³     4               ³
+        ³3%i y  - 7x  60 - 9%i³
+        ³ÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
+        À     7           5   Ù
+Type: SquareMatrix(2,Fraction Polynomial Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty6}
+\begin{paste}{ugTypesConvertPageEmpty6}{ugTypesConvertPagePatch6}
+\pastebutton{ugTypesConvertPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)\free{m1 }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch7}
+\begin{paste}{ugTypesConvertPageFull7}{ugTypesConvertPageEmpty7}
+\pastebutton{ugTypesConvertPageFull7}{\hidepaste}
+\tab{5}\spadcommand{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m2 }\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+        Ú                2     ¿
+        ³  4x - 3%i    2y z + 1³
+        ³  ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
+        ³      4           2   ³
+   (7)  ³                      ³
+        ³         4            ³
+        ³- 7x + 3y %i  60 - 9%i³
+        ³ÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
+        À      7           5   Ù
+Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty7}
+\begin{paste}{ugTypesConvertPageEmpty7}{ugTypesConvertPagePatch7}
+\pastebutton{ugTypesConvertPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m2 }\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch8}
+\begin{paste}{ugTypesConvertPageFull8}{ugTypesConvertPageEmpty8}
+\pastebutton{ugTypesConvertPageFull8}{\hidepaste}
+\tab{5}\spadcommand{m :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+        Ú                2     ¿
+        ³  4x - 3%i    2y z + 1³
+        ³  ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
+        ³      4           2   ³
+   (8)  ³                      ³
+        ³         4            ³
+        ³- 7x + 3y %i  60 - 9%i³
+        ³ÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
+        À      7           5   Ù
+Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty8}
+\begin{paste}{ugTypesConvertPageEmpty8}{ugTypesConvertPagePatch8}
+\pastebutton{ugTypesConvertPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{m :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch9}
+\begin{paste}{ugTypesConvertPageFull9}{ugTypesConvertPageEmpty9}
+\pastebutton{ugTypesConvertPageFull9}{\hidepaste}
+\tab{5}\spadcommand{m\free{m }}
+\indentrel{3}\begin{verbatim}
+        Ú     3         2    1 ¿
+        ³ x - Ä %i     y z + Ä ³
+        ³     4              2 ³
+   (9)  ³                      ³
+        ³3     4           9   ³
+        ³Ä %i y  - x  12 - Ä %i³
+        À7                 5   Ù
+Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty9}
+\begin{paste}{ugTypesConvertPageEmpty9}{ugTypesConvertPagePatch9}
+\pastebutton{ugTypesConvertPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{m\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch10}
+\begin{paste}{ugTypesConvertPageFull10}{ugTypesConvertPageEmpty10}
+\pastebutton{ugTypesConvertPageFull10}{\hidepaste}
+\tab{5}\spadcommand{m :: POLY SquareMatrix(2,COMPLEX FRAC INT)\free{m }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                 Ú 0    0¿
+     Ú0  1¿ 2    ³       ³ 4   Ú 1   0¿
+     ³    ³y z + ³3      ³y  + ³      ³x
+     À0  0Ù      ³Ä %i  0³     À- 1  0Ù
+                 À7      Ù
+   + 
+     Ú  3         1    ¿
+     ³- Ä %i      Ä    ³
+     ³  4         2    ³
+     ³                 ³
+     ³             9   ³
+     ³  0     12 - Ä %i³
+     À             5   Ù
+Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty10}
+\begin{paste}{ugTypesConvertPageEmpty10}{ugTypesConvertPagePatch10}
+\pastebutton{ugTypesConvertPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m :: POLY SquareMatrix(2,COMPLEX FRAC INT)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch11}
+\begin{paste}{ugTypesConvertPageFull11}{ugTypesConvertPageEmpty11}
+\pastebutton{ugTypesConvertPageFull11}{\hidepaste}
+\tab{5}\spadcommand{m :: POLY ?\free{m }}
+\indentrel{3}\begin{verbatim}
+   (11)
+                 Ú 0    0¿
+     Ú0  1¿ 2    ³       ³ 4   Ú 1   0¿
+     ³    ³y z + ³3      ³y  + ³      ³x
+     À0  0Ù      ³Ä %i  0³     À- 1  0Ù
+                 À7      Ù
+   + 
+     Ú  3         1    ¿
+     ³- Ä %i      Ä    ³
+     ³  4         2    ³
+     ³                 ³
+     ³             9   ³
+     ³  0     12 - Ä %i³
+     À             5   Ù
+Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty11}
+\begin{paste}{ugTypesConvertPageEmpty11}{ugTypesConvertPagePatch11}
+\pastebutton{ugTypesConvertPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{m :: POLY ?\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPagePatch12}
+\begin{paste}{ugTypesConvertPageFull12}{ugTypesConvertPageEmpty12}
+\pastebutton{ugTypesConvertPageFull12}{\hidepaste}
+\tab{5}\spadcommand{m :: POLY SquareMatrix(2,FRAC ?)\free{m }}
+\indentrel{3}\begin{verbatim}
+   (12)
+                                        Ú  3%i     1    ¿
+               Ú 0   0¿                 ³- ÄÄÄ     Ä    ³
+   Ú0  1¿ 2    ³      ³ 4   Ú 1   0¿    ³   4      2    ³
+   ³    ³y z + ³3%i   ³y  + ³      ³x + ³               ³
+   À0  0Ù      ³ÄÄÄ  0³     À- 1  0Ù    ³       60 - 9%i³
+               À 7    Ù                 ³  0    ÄÄÄÄÄÄÄÄ³
+                                        À           5   Ù
+Type: Polynomial SquareMatrix(2,Fraction Complex Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesConvertPageEmpty12}
+\begin{paste}{ugTypesConvertPageEmpty12}{ugTypesConvertPagePatch12}
+\pastebutton{ugTypesConvertPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{m :: POLY SquareMatrix(2,FRAC ?)\free{m }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesSubdomainsPage}{ug02.ht}{Subdomains Again}
 <<ug02.ht>>=
@@ -27375,6 +75414,216 @@ Axiom trusts you that the value is of the specified type.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesSubdomainsPagePatch1}
+\begin{paste}{ugTypesSubdomainsPageFull1}{ugTypesSubdomainsPageEmpty1}
+\pastebutton{ugTypesSubdomainsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{5}
+\indentrel{3}\begin{verbatim}
+   (1)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty1}
+\begin{paste}{ugTypesSubdomainsPageEmpty1}{ugTypesSubdomainsPagePatch1}
+\pastebutton{ugTypesSubdomainsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{5}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch2}
+\begin{paste}{ugTypesSubdomainsPageFull2}{ugTypesSubdomainsPageEmpty2}
+\pastebutton{ugTypesSubdomainsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{0}
+\indentrel{3}\begin{verbatim}
+   (2)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty2}
+\begin{paste}{ugTypesSubdomainsPageEmpty2}{ugTypesSubdomainsPagePatch2}
+\pastebutton{ugTypesSubdomainsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{0}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch3}
+\begin{paste}{ugTypesSubdomainsPageFull3}{ugTypesSubdomainsPageEmpty3}
+\pastebutton{ugTypesSubdomainsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{-5}
+\indentrel{3}\begin{verbatim}
+   (3)  - 5
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty3}
+\begin{paste}{ugTypesSubdomainsPageEmpty3}{ugTypesSubdomainsPagePatch3}
+\pastebutton{ugTypesSubdomainsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{-5}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch4}
+\begin{paste}{ugTypesSubdomainsPageFull4}{ugTypesSubdomainsPageEmpty4}
+\pastebutton{ugTypesSubdomainsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(-2) - (-3)}
+\indentrel{3}\begin{verbatim}
+   (4)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty4}
+\begin{paste}{ugTypesSubdomainsPageEmpty4}{ugTypesSubdomainsPagePatch4}
+\pastebutton{ugTypesSubdomainsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(-2) - (-3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch5}
+\begin{paste}{ugTypesSubdomainsPageFull5}{ugTypesSubdomainsPageEmpty5}
+\pastebutton{ugTypesSubdomainsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{0 :: Integer}
+\indentrel{3}\begin{verbatim}
+   (5)  0
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty5}
+\begin{paste}{ugTypesSubdomainsPageEmpty5}{ugTypesSubdomainsPagePatch5}
+\pastebutton{ugTypesSubdomainsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{0 :: Integer}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch6}
+\begin{paste}{ugTypesSubdomainsPageFull6}{ugTypesSubdomainsPageEmpty6}
+\pastebutton{ugTypesSubdomainsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x : NonNegativeInteger := 5}
+\indentrel{3}\begin{verbatim}
+   (6)  5
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty6}
+\begin{paste}{ugTypesSubdomainsPageEmpty6}{ugTypesSubdomainsPagePatch6}
+\pastebutton{ugTypesSubdomainsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x : NonNegativeInteger := 5}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch7}
+\begin{paste}{ugTypesSubdomainsPageFull7}{ugTypesSubdomainsPageEmpty7}
+\pastebutton{ugTypesSubdomainsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{2 ** 2}
+\indentrel{3}\begin{verbatim}
+   (7)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty7}
+\begin{paste}{ugTypesSubdomainsPageEmpty7}{ugTypesSubdomainsPagePatch7}
+\pastebutton{ugTypesSubdomainsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{2 ** 2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch8}
+\begin{paste}{ugTypesSubdomainsPageFull8}{ugTypesSubdomainsPageEmpty8}
+\pastebutton{ugTypesSubdomainsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{2 ** (-2)}
+\indentrel{3}\begin{verbatim}
+        1
+   (8)  Ä
+        4
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty8}
+\begin{paste}{ugTypesSubdomainsPageEmpty8}{ugTypesSubdomainsPagePatch8}
+\pastebutton{ugTypesSubdomainsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{2 ** (-2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch9}
+\begin{paste}{ugTypesSubdomainsPageFull9}{ugTypesSubdomainsPageEmpty9}
+\pastebutton{ugTypesSubdomainsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{[10**i for i in 2..5]}
+\indentrel{3}\begin{verbatim}
+   (9)  [100,1000,10000,100000]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty9}
+\begin{paste}{ugTypesSubdomainsPageEmpty9}{ugTypesSubdomainsPagePatch9}
+\pastebutton{ugTypesSubdomainsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{[10**i for i in 2..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch10}
+\begin{paste}{ugTypesSubdomainsPageFull10}{ugTypesSubdomainsPageEmpty10}
+\pastebutton{ugTypesSubdomainsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{[10**(i-1) for i in 2..5]}
+\indentrel{3}\begin{verbatim}
+   (10)  [10,100,1000,10000]
+                            Type: List Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty10}
+\begin{paste}{ugTypesSubdomainsPageEmpty10}{ugTypesSubdomainsPagePatch10}
+\pastebutton{ugTypesSubdomainsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{[10**(i-1) for i in 2..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch11}
+\begin{paste}{ugTypesSubdomainsPageFull11}{ugTypesSubdomainsPageEmpty11}
+\pastebutton{ugTypesSubdomainsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[10**((i-1) :: PI) for i in 2..5]}
+\indentrel{3}\begin{verbatim}
+   (11)  [10,100,1000,10000]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty11}
+\begin{paste}{ugTypesSubdomainsPageEmpty11}{ugTypesSubdomainsPagePatch11}
+\pastebutton{ugTypesSubdomainsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[10**((i-1) :: PI) for i in 2..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch12}
+\begin{paste}{ugTypesSubdomainsPageFull12}{ugTypesSubdomainsPageEmpty12}
+\pastebutton{ugTypesSubdomainsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{[10**((i-1) pretend PI) for i in 2..5]}
+\indentrel{3}\begin{verbatim}
+   (12)  [10,100,1000,10000]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty12}
+\begin{paste}{ugTypesSubdomainsPageEmpty12}{ugTypesSubdomainsPagePatch12}
+\pastebutton{ugTypesSubdomainsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{[10**((i-1) pretend PI) for i in 2..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPagePatch13}
+\begin{paste}{ugTypesSubdomainsPageFull13}{ugTypesSubdomainsPageEmpty13}
+\pastebutton{ugTypesSubdomainsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{(2/3) pretend Complex Integer}
+\indentrel{3}\begin{verbatim}
+   (13)  2 + 3%i
+                                  Type: Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesSubdomainsPageEmpty13}
+\begin{paste}{ugTypesSubdomainsPageEmpty13}{ugTypesSubdomainsPagePatch13}
+\pastebutton{ugTypesSubdomainsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{(2/3) pretend Complex Integer}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesPkgCallPage}{ug02.ht}{Package Calling and Target Types}
 \pageto{notitle}{ugTypesDeclarePage}
@@ -27577,6 +75826,254 @@ We can just say this.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesPkgCallPagePatch1}
+\begin{paste}{ugTypesPkgCallPageFull1}{ugTypesPkgCallPageEmpty1}
+\pastebutton{ugTypesPkgCallPageFull1}{\hidepaste}
+\tab{5}\spadcommand{2/3}
+\indentrel{3}\begin{verbatim}
+        2
+   (1)  Ä
+        3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty1}
+\begin{paste}{ugTypesPkgCallPageEmpty1}{ugTypesPkgCallPagePatch1}
+\pastebutton{ugTypesPkgCallPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{2/3}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch2}
+\begin{paste}{ugTypesPkgCallPageFull2}{ugTypesPkgCallPageEmpty2}
+\pastebutton{ugTypesPkgCallPageFull2}{\hidepaste}
+\tab{5}\spadcommand{(2/3)$Float}
+\indentrel{3}\begin{verbatim}
+   (2)  0.6666666666 6666666667
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty2}
+\begin{paste}{ugTypesPkgCallPageEmpty2}{ugTypesPkgCallPagePatch2}
+\pastebutton{ugTypesPkgCallPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(2/3)$Float}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch3}
+\begin{paste}{ugTypesPkgCallPageFull3}{ugTypesPkgCallPageEmpty3}
+\pastebutton{ugTypesPkgCallPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(2/3)$Fraction(Complex Integer)}
+\indentrel{3}\begin{verbatim}
+        2
+   (3)  Ä
+        3
+                         Type: Fraction Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty3}
+\begin{paste}{ugTypesPkgCallPageEmpty3}{ugTypesPkgCallPagePatch3}
+\pastebutton{ugTypesPkgCallPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(2/3)$Fraction(Complex Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch4}
+\begin{paste}{ugTypesPkgCallPageFull4}{ugTypesPkgCallPageEmpty4}
+\pastebutton{ugTypesPkgCallPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(2/3)@Float}
+\indentrel{3}\begin{verbatim}
+   (4)  0.6666666666 6666666667
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty4}
+\begin{paste}{ugTypesPkgCallPageEmpty4}{ugTypesPkgCallPagePatch4}
+\pastebutton{ugTypesPkgCallPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(2/3)@Float}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch5}
+\begin{paste}{ugTypesPkgCallPageFull5}{ugTypesPkgCallPageEmpty5}
+\pastebutton{ugTypesPkgCallPageFull5}{\hidepaste}
+\tab{5}\spadcommand{(2 + 3)@String}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty5}
+\begin{paste}{ugTypesPkgCallPageEmpty5}{ugTypesPkgCallPagePatch5}
+\pastebutton{ugTypesPkgCallPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(2 + 3)@String}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch6}
+\begin{paste}{ugTypesPkgCallPageFull6}{ugTypesPkgCallPageEmpty6}
+\pastebutton{ugTypesPkgCallPageFull6}{\hidepaste}
+\tab{5}\spadcommand{(2 + 3)$String}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty6}
+\begin{paste}{ugTypesPkgCallPageEmpty6}{ugTypesPkgCallPagePatch6}
+\pastebutton{ugTypesPkgCallPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{(2 + 3)$String}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch7}
+\begin{paste}{ugTypesPkgCallPageFull7}{ugTypesPkgCallPageEmpty7}
+\pastebutton{ugTypesPkgCallPageFull7}{\hidepaste}
+\tab{5}\spadcommand{((x + y * \%i)**2)@(Complex Polynomial Integer)}
+\indentrel{3}\begin{verbatim}
+           2    2
+   (5)  - y  + x  + 2x y %i
+                       Type: Complex Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty7}
+\begin{paste}{ugTypesPkgCallPageEmpty7}{ugTypesPkgCallPagePatch7}
+\pastebutton{ugTypesPkgCallPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{((x + y * \%i)**2)@(Complex Polynomial Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch8}
+\begin{paste}{ugTypesPkgCallPageFull8}{ugTypesPkgCallPageEmpty8}
+\pastebutton{ugTypesPkgCallPageFull8}{\hidepaste}
+\tab{5}\spadcommand{((x + y * \%i)**2)@(Polynomial Complex Integer)}
+\indentrel{3}\begin{verbatim}
+           2              2
+   (6)  - y  + 2%i x y + x
+                       Type: Polynomial Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty8}
+\begin{paste}{ugTypesPkgCallPageEmpty8}{ugTypesPkgCallPagePatch8}
+\pastebutton{ugTypesPkgCallPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{((x + y * \%i)**2)@(Polynomial Complex Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch9}
+\begin{paste}{ugTypesPkgCallPageFull9}{ugTypesPkgCallPageEmpty9}
+\pastebutton{ugTypesPkgCallPageFull9}{\hidepaste}
+\tab{5}\spadcommand{(x + y * \%i)**2\bound{prevC }}
+\indentrel{3}\begin{verbatim}
+           2              2
+   (7)  - y  + 2%i x y + x
+                       Type: Polynomial Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty9}
+\begin{paste}{ugTypesPkgCallPageEmpty9}{ugTypesPkgCallPagePatch9}
+\pastebutton{ugTypesPkgCallPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{(x + y * \%i)**2\bound{prevC }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch10}
+\begin{paste}{ugTypesPkgCallPageFull10}{ugTypesPkgCallPageEmpty10}
+\pastebutton{ugTypesPkgCallPageFull10}{\hidepaste}
+\tab{5}\spadcommand{\% :: Complex ?\free{prevC }}
+\indentrel{3}\begin{verbatim}
+           2    2
+   (8)  - y  + x  + 2x y %i
+                       Type: Complex Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty10}
+\begin{paste}{ugTypesPkgCallPageEmpty10}{ugTypesPkgCallPagePatch10}
+\pastebutton{ugTypesPkgCallPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{\% :: Complex ?\free{prevC }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch11}
+\begin{paste}{ugTypesPkgCallPageFull11}{ugTypesPkgCallPageEmpty11}
+\pastebutton{ugTypesPkgCallPageFull11}{\hidepaste}
+\tab{5}\spadcommand{h := matrix [[8,6],[-4,9]]\bound{h }}
+\indentrel{3}\begin{verbatim}
+        Ú 8   6¿
+   (9)  ³      ³
+        À- 4  9Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty11}
+\begin{paste}{ugTypesPkgCallPageEmpty11}{ugTypesPkgCallPagePatch11}
+\pastebutton{ugTypesPkgCallPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{h := matrix [[8,6],[-4,9]]\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch12}
+\begin{paste}{ugTypesPkgCallPageFull12}{ugTypesPkgCallPageEmpty12}
+\pastebutton{ugTypesPkgCallPageFull12}{\hidepaste}
+\tab{5}\spadcommand{map(inv$Fraction(Integer),h)\free{h }}
+\indentrel{3}\begin{verbatim}
+         Ú 1   1¿
+         ³ Ä   Ä³
+         ³ 8   6³
+   (10)  ³      ³
+         ³  1  1³
+         ³- Ä  Ä³
+         À  4  9Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty12}
+\begin{paste}{ugTypesPkgCallPageEmpty12}{ugTypesPkgCallPagePatch12}
+\pastebutton{ugTypesPkgCallPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{map(inv$Fraction(Integer),h)\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch13}
+\begin{paste}{ugTypesPkgCallPageFull13}{ugTypesPkgCallPageEmpty13}
+\pastebutton{ugTypesPkgCallPageFull13}{\hidepaste}
+\tab{5}\spadcommand{map(inv$FRAC(INT),h)\free{h }\bound{h1 }}
+\indentrel{3}\begin{verbatim}
+         Ú 1   1¿
+         ³ Ä   Ä³
+         ³ 8   6³
+   (11)  ³      ³
+         ³  1  1³
+         ³- Ä  Ä³
+         À  4  9Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty13}
+\begin{paste}{ugTypesPkgCallPageEmpty13}{ugTypesPkgCallPagePatch13}
+\pastebutton{ugTypesPkgCallPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{map(inv$FRAC(INT),h)\free{h }\bound{h1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPagePatch14}
+\begin{paste}{ugTypesPkgCallPageFull14}{ugTypesPkgCallPageEmpty14}
+\pastebutton{ugTypesPkgCallPageFull14}{\hidepaste}
+\tab{5}\spadcommand{map(inv,h)\free{h }}
+\indentrel{3}\begin{verbatim}
+         Ú 1   1¿
+         ³ Ä   Ä³
+         ³ 8   6³
+   (12)  ³      ³
+         ³  1  1³
+         ³- Ä  Ä³
+         À  4  9Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesPkgCallPageEmpty14}
+\begin{paste}{ugTypesPkgCallPageEmpty14}{ugTypesPkgCallPagePatch14}
+\pastebutton{ugTypesPkgCallPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{map(inv,h)\free{h }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesResolvePage}{ug02.ht}{Resolving Types}
 <<ug02.ht>>=
@@ -27652,6 +76149,84 @@ little help to analyze quickly and perform your computations.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesResolvePagePatch1}
+\begin{paste}{ugTypesResolvePageFull1}{ugTypesResolvePageEmpty1}
+\pastebutton{ugTypesResolvePageFull1}{\hidepaste}
+\tab{5}\spadcommand{x}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+                                       Type: Variable x
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePageEmpty1}
+\begin{paste}{ugTypesResolvePageEmpty1}{ugTypesResolvePagePatch1}
+\pastebutton{ugTypesResolvePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePagePatch2}
+\begin{paste}{ugTypesResolvePageFull2}{ugTypesResolvePageEmpty2}
+\pastebutton{ugTypesResolvePageFull2}{\hidepaste}
+\tab{5}\spadcommand{1}
+\indentrel{3}\begin{verbatim}
+   (2)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePageEmpty2}
+\begin{paste}{ugTypesResolvePageEmpty2}{ugTypesResolvePagePatch2}
+\pastebutton{ugTypesResolvePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePagePatch3}
+\begin{paste}{ugTypesResolvePageFull3}{ugTypesResolvePageEmpty3}
+\pastebutton{ugTypesResolvePageFull3}{\hidepaste}
+\tab{5}\spadcommand{x + 1}
+\indentrel{3}\begin{verbatim}
+   (3)  x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePageEmpty3}
+\begin{paste}{ugTypesResolvePageEmpty3}{ugTypesResolvePagePatch3}
+\pastebutton{ugTypesResolvePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x + 1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePagePatch4}
+\begin{paste}{ugTypesResolvePageFull4}{ugTypesResolvePageEmpty4}
+\pastebutton{ugTypesResolvePageFull4}{\hidepaste}
+\tab{5}\spadcommand{["string",3.14159]}
+\indentrel{3}\begin{verbatim}
+   (4)  ["string",3.14159]
+                                         Type: List Any
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePageEmpty4}
+\begin{paste}{ugTypesResolvePageEmpty4}{ugTypesResolvePagePatch4}
+\pastebutton{ugTypesResolvePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{["string",3.14159]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePagePatch5}
+\begin{paste}{ugTypesResolvePageFull5}{ugTypesResolvePageEmpty5}
+\pastebutton{ugTypesResolvePageFull5}{\hidepaste}
+\tab{5}\spadcommand{"string" + 3.14159}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesResolvePageEmpty5}
+\begin{paste}{ugTypesResolvePageEmpty5}{ugTypesResolvePagePatch5}
+\pastebutton{ugTypesResolvePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{"string" + 3.14159}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugTypesExposePage}{ug02.ht}{Exposing Domains and Packages}
 \pageto{notitle}{ugTypesPkgCallPage}
@@ -27793,6 +76368,66 @@ add or drop constructors from view.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugTypesExposePagePatch1}
+\begin{paste}{ugTypesExposePageFull1}{ugTypesExposePageEmpty1}
+\pastebutton{ugTypesExposePageFull1}{\hidepaste}
+\tab{5}\spadcommand{x + x}
+\indentrel{3}\begin{verbatim}
+   (1)  2x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePageEmpty1}
+\begin{paste}{ugTypesExposePageEmpty1}{ugTypesExposePagePatch1}
+\pastebutton{ugTypesExposePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x + x}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePagePatch2}
+\begin{paste}{ugTypesExposePageFull2}{ugTypesExposePageEmpty2}
+\pastebutton{ugTypesExposePageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{setexposeadd }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePageEmpty2}
+\begin{paste}{ugTypesExposePageEmpty2}{ugTypesExposePagePatch2}
+\pastebutton{ugTypesExposePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{setexposeadd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePagePatch3}
+\begin{paste}{ugTypesExposePageFull3}{ugTypesExposePageEmpty3}
+\pastebutton{ugTypesExposePageFull3}{\hidepaste}
+\tab{5}\spadcommand{x + x\free{setexposeadd }}
+\indentrel{3}\begin{verbatim}
+   (2)  x + x
+                                       Type: OutputForm
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePageEmpty3}
+\begin{paste}{ugTypesExposePageEmpty3}{ugTypesExposePagePatch3}
+\pastebutton{ugTypesExposePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{x + x\free{setexposeadd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePagePatch4}
+\begin{paste}{ugTypesExposePageFull4}{ugTypesExposePageEmpty4}
+\pastebutton{ugTypesExposePageFull4}{\hidepaste}
+\tab{5}\spadcommand{)set expose drop constructor OutputForm\bound{setexposedrop }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugTypesExposePageEmpty4}
+\begin{paste}{ugTypesExposePageEmpty4}{ugTypesExposePagePatch4}
+\pastebutton{ugTypesExposePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)set expose drop constructor OutputForm\bound{setexposedrop }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugAvailSnoopPage}{ug02.ht}{Commands for Snooping}
 \pageto{notitle}{ugBrowsePage}
@@ -27871,6 +76506,104 @@ for more information on function types.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugAvailSnoopPagePatch1}
+\begin{paste}{ugAvailSnoopPageFull1}{ugAvailSnoopPageEmpty1}
+\pastebutton{ugAvailSnoopPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)what operation complex}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty1}
+\begin{paste}{ugAvailSnoopPageEmpty1}{ugAvailSnoopPagePatch1}
+\pastebutton{ugAvailSnoopPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)what operation complex}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch2}
+\begin{paste}{ugAvailSnoopPageFull2}{ugAvailSnoopPageEmpty2}
+\pastebutton{ugAvailSnoopPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)what domain matrix}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty2}
+\begin{paste}{ugAvailSnoopPageEmpty2}{ugAvailSnoopPagePatch2}
+\pastebutton{ugAvailSnoopPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)what domain matrix}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch3}
+\begin{paste}{ugAvailSnoopPageFull3}{ugAvailSnoopPageEmpty3}
+\pastebutton{ugAvailSnoopPageFull3}{\hidepaste}
+\tab{5}\spadcommand{)what package gauss}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty3}
+\begin{paste}{ugAvailSnoopPageEmpty3}{ugAvailSnoopPagePatch3}
+\pastebutton{ugAvailSnoopPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{)what package gauss}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch4}
+\begin{paste}{ugAvailSnoopPageFull4}{ugAvailSnoopPageEmpty4}
+\pastebutton{ugAvailSnoopPageFull4}{\hidepaste}
+\tab{5}\spadcommand{)show Any}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty4}
+\begin{paste}{ugAvailSnoopPageEmpty4}{ugAvailSnoopPagePatch4}
+\pastebutton{ugAvailSnoopPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)show Any}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch5}
+\begin{paste}{ugAvailSnoopPageFull5}{ugAvailSnoopPageEmpty5}
+\pastebutton{ugAvailSnoopPageFull5}{\hidepaste}
+\tab{5}\spadcommand{)display operation complex}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty5}
+\begin{paste}{ugAvailSnoopPageEmpty5}{ugAvailSnoopPagePatch5}
+\pastebutton{ugAvailSnoopPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)display operation complex}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch6}
+\begin{paste}{ugAvailSnoopPageFull6}{ugAvailSnoopPageEmpty6}
+\pastebutton{ugAvailSnoopPageFull6}{\hidepaste}
+\tab{5}\spadcommand{)abbreviation query COMPCAT}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty6}
+\begin{paste}{ugAvailSnoopPageEmpty6}{ugAvailSnoopPagePatch6}
+\pastebutton{ugAvailSnoopPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{)abbreviation query COMPCAT}
+\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPagePatch7}
+\begin{paste}{ugAvailSnoopPageFull7}{ugAvailSnoopPageEmpty7}
+\pastebutton{ugAvailSnoopPageFull7}{\hidepaste}
+\tab{5}\spadcommand{)abbreviation query COMRING}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugAvailSnoopPageEmpty7}
+\begin{paste}{ugAvailSnoopPageEmpty7}{ugAvailSnoopPagePatch7}
+\pastebutton{ugAvailSnoopPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{)abbreviation query COMRING}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 3 (ug03.ht)}
 \pagehead{ugHyperPage}{ug03.ht}{Using Hyperdoc}
@@ -28301,6 +77034,40 @@ or issue the Axiom system command \spadsys{)close.}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugHyperExamplePagePatch1}
+\begin{paste}{ugHyperExamplePageFull1}{ugHyperExamplePageEmpty1}
+\pastebutton{ugHyperExamplePageFull1}{\hidepaste}
+\tab{5}\spadcommand{a:= x**2 + 1\bound{a }}
+\indentrel{3}\begin{verbatim}
+         2
+   (1)  x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugHyperExamplePageEmpty1}
+\begin{paste}{ugHyperExamplePageEmpty1}{ugHyperExamplePagePatch1}
+\pastebutton{ugHyperExamplePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a:= x**2 + 1\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugHyperExamplePagePatch2}
+\begin{paste}{ugHyperExamplePageFull2}{ugHyperExamplePageEmpty2}
+\pastebutton{ugHyperExamplePageFull2}{\hidepaste}
+\tab{5}\spadcommand{(a - 2)**2\free{a }}
+\indentrel{3}\begin{verbatim}
+         4     2
+   (2)  x  - 2x  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugHyperExamplePageEmpty2}
+\begin{paste}{ugHyperExamplePageEmpty2}{ugHyperExamplePagePatch2}
+\pastebutton{ugHyperExamplePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(a - 2)**2\free{a }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugHyperResourcesPage}{ug03.ht}{X Window Resources for Hyperdoc}
 <<ug03.ht>>=
@@ -28615,6 +77382,76 @@ change the FORTRAN line length from its default value of \spad{72}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugInOutOutPagePatch1}
+\begin{paste}{ugInOutOutPageFull1}{ugInOutOutPageEmpty1}
+\pastebutton{ugInOutOutPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set output fortran linalg}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPageEmpty1}
+\begin{paste}{ugInOutOutPageEmpty1}{ugInOutOutPagePatch1}
+\pastebutton{ugInOutOutPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set output fortran linalg}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPagePatch2}
+\begin{paste}{ugInOutOutPageFull2}{ugInOutOutPageEmpty2}
+\pastebutton{ugInOutOutPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set output fortran on}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPageEmpty2}
+\begin{paste}{ugInOutOutPageEmpty2}{ugInOutOutPagePatch2}
+\pastebutton{ugInOutOutPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set output fortran on}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPagePatch3}
+\begin{paste}{ugInOutOutPageFull3}{ugInOutOutPageEmpty3}
+\pastebutton{ugInOutOutPageFull3}{\hidepaste}
+\tab{5}\spadcommand{)set output fortran console}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPageEmpty3}
+\begin{paste}{ugInOutOutPageEmpty3}{ugInOutOutPagePatch3}
+\pastebutton{ugInOutOutPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{)set output fortran console}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPagePatch4}
+\begin{paste}{ugInOutOutPageFull4}{ugInOutOutPageEmpty4}
+\pastebutton{ugInOutOutPageFull4}{\hidepaste}
+\tab{5}\spadcommand{)set output fortran off}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPageEmpty4}
+\begin{paste}{ugInOutOutPageEmpty4}{ugInOutOutPagePatch4}
+\pastebutton{ugInOutOutPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)set output fortran off}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPagePatch5}
+\begin{paste}{ugInOutOutPageFull5}{ugInOutOutPageEmpty5}
+\pastebutton{ugInOutOutPageFull5}{\hidepaste}
+\tab{5}\spadcommand{)system rm linalg.sfort}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutOutPageEmpty5}
+\begin{paste}{ugInOutOutPageEmpty5}{ugInOutOutPagePatch5}
+\pastebutton{ugInOutOutPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)system rm linalg.sfort}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugInOutAlgebraPage}{ug04.ht}
 {Monospace 2D Mathematical Format}
@@ -28672,6 +77509,82 @@ to get better looking output.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugInOutAlgebraPagePatch1}
+\begin{paste}{ugInOutAlgebraPageFull1}{ugInOutAlgebraPageEmpty1}
+\pastebutton{ugInOutAlgebraPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set output algebra on\bound{algon }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPageEmpty1}
+\begin{paste}{ugInOutAlgebraPageEmpty1}{ugInOutAlgebraPagePatch1}
+\pastebutton{ugInOutAlgebraPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set output algebra on\bound{algon }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPagePatch2}
+\begin{paste}{ugInOutAlgebraPageFull2}{ugInOutAlgebraPageEmpty2}
+\pastebutton{ugInOutAlgebraPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set output tex off\bound{texoff }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPageEmpty2}
+\begin{paste}{ugInOutAlgebraPageEmpty2}{ugInOutAlgebraPagePatch2}
+\pastebutton{ugInOutAlgebraPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set output tex off\bound{texoff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPagePatch3}
+\begin{paste}{ugInOutAlgebraPageFull3}{ugInOutAlgebraPageEmpty3}
+\pastebutton{ugInOutAlgebraPageFull3}{\hidepaste}
+\tab{5}\spadcommand{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]\free{algon texoff }}
+\indentrel{3}\begin{verbatim}
+        Ú     3           3     2¿
+        ³3%i y  + x  3%i y  + 2x ³
+   (1)  ³                        ³
+        ³     4           4     2³
+        À4%i y  + x  4%i y  + 2x Ù
+                Type: Matrix Polynomial Complex Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPageEmpty3}
+\begin{paste}{ugInOutAlgebraPageEmpty3}{ugInOutAlgebraPagePatch3}
+\pastebutton{ugInOutAlgebraPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]\free{algon texoff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPagePatch4}
+\begin{paste}{ugInOutAlgebraPageFull4}{ugInOutAlgebraPageEmpty4}
+\pastebutton{ugInOutAlgebraPageFull4}{\hidepaste}
+\tab{5}\spadcommand{)set output algebra off}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPageEmpty4}
+\begin{paste}{ugInOutAlgebraPageEmpty4}{ugInOutAlgebraPagePatch4}
+\pastebutton{ugInOutAlgebraPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)set output algebra off}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPagePatch5}
+\begin{paste}{ugInOutAlgebraPageFull5}{ugInOutAlgebraPageEmpty5}
+\pastebutton{ugInOutAlgebraPageFull5}{\hidepaste}
+\tab{5}\spadcommand{)set output tex on}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutAlgebraPageEmpty5}
+\begin{paste}{ugInOutAlgebraPageEmpty5}{ugInOutAlgebraPagePatch5}
+\pastebutton{ugInOutAlgebraPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)set output tex on}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugInOutTeXPage}{ug04.ht}{TeX Format}
 <<ug04.ht>>=
@@ -28730,6 +77643,20 @@ are all standard except for the following definitions:
 \autobuttons
 \end{page}
 
+\begin{patch}{ugInOutTeXPagePatch1}
+\begin{paste}{ugInOutTeXPageFull1}{ugInOutTeXPageEmpty1}
+\pastebutton{ugInOutTeXPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set output tex on\bound{texon }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutTeXPageEmpty1}
+\begin{paste}{ugInOutTeXPageEmpty1}{ugInOutTeXPagePatch1}
+\pastebutton{ugInOutTeXPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set output tex on\bound{texon }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugInOutScriptPage}{ug04.ht}{IBM Script Formula Format}
 <<ug04.ht>>=
@@ -28768,6 +77695,34 @@ To turn IBM Script Formula Format output formatting off, issue this.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugInOutScriptPagePatch1}
+\begin{paste}{ugInOutScriptPageFull1}{ugInOutScriptPageEmpty1}
+\pastebutton{ugInOutScriptPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set output script on}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutScriptPageEmpty1}
+\begin{paste}{ugInOutScriptPageEmpty1}{ugInOutScriptPagePatch1}
+\pastebutton{ugInOutScriptPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set output script on}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutScriptPagePatch2}
+\begin{paste}{ugInOutScriptPageFull2}{ugInOutScriptPageEmpty2}
+\pastebutton{ugInOutScriptPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set output script off}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutScriptPageEmpty2}
+\begin{paste}{ugInOutScriptPageEmpty2}{ugInOutScriptPagePatch2}
+\pastebutton{ugInOutScriptPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set output script off}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugInOutFortranPage}{ug04.ht}{FORTRAN Format}
 <<ug04.ht>>=
@@ -28914,6 +77869,312 @@ Look at the code generated for the matrix again.
 \endscroll
 \autobuttons
 \end{page}
+
+\begin{patch}{ugInOutFortranPagePatch1}
+\begin{paste}{ugInOutFortranPageFull1}{ugInOutFortranPageEmpty1}
+\pastebutton{ugInOutFortranPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set output fortran on\bound{forton }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty1}
+\begin{paste}{ugInOutFortranPageEmpty1}{ugInOutFortranPagePatch1}
+\pastebutton{ugInOutFortranPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set output fortran on\bound{forton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch2}
+\begin{paste}{ugInOutFortranPageFull2}{ugInOutFortranPageEmpty2}
+\pastebutton{ugInOutFortranPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)set fortran optlevel 0\bound{opt0 }\free{forton }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty2}
+\begin{paste}{ugInOutFortranPageEmpty2}{ugInOutFortranPagePatch2}
+\pastebutton{ugInOutFortranPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)set fortran optlevel 0\bound{opt0 }\free{forton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch3}
+\begin{paste}{ugInOutFortranPageFull3}{ugInOutFortranPageEmpty3}
+\pastebutton{ugInOutFortranPageFull3}{\hidepaste}
+\tab{5}\spadcommand{)set fortran fortlength 60}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty3}
+\begin{paste}{ugInOutFortranPageEmpty3}{ugInOutFortranPagePatch3}
+\pastebutton{ugInOutFortranPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{)set fortran fortlength 60}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch4}
+\begin{paste}{ugInOutFortranPageFull4}{ugInOutFortranPageEmpty4}
+\pastebutton{ugInOutFortranPageFull4}{\hidepaste}
+\tab{5}\spadcommand{(x+y)**3\free{opt0 }}
+\indentrel{3}\begin{verbatim}
+         3       2     2     3
+   (1)  y  + 3x y  + 3x y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty4}
+\begin{paste}{ugInOutFortranPageEmpty4}{ugInOutFortranPagePatch4}
+\pastebutton{ugInOutFortranPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{(x+y)**3\free{opt0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch5}
+\begin{paste}{ugInOutFortranPageFull5}{ugInOutFortranPageEmpty5}
+\pastebutton{ugInOutFortranPageFull5}{\hidepaste}
+\tab{5}\spadcommand{(x+y+z)**3\free{opt0 }}
+\indentrel{3}\begin{verbatim}
+   (2)
+      3             2      2            2      3       2
+     z  + (3y + 3x)z  + (3y  + 6x y + 3x )z + y  + 3x y
+   + 
+       2     3
+     3x y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty5}
+\begin{paste}{ugInOutFortranPageEmpty5}{ugInOutFortranPagePatch5}
+\pastebutton{ugInOutFortranPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(x+y+z)**3\free{opt0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch6}
+\begin{paste}{ugInOutFortranPageFull6}{ugInOutFortranPageEmpty6}
+\pastebutton{ugInOutFortranPageFull6}{\hidepaste}
+\tab{5}\spadcommand{sin(x)\free{opt1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  sin(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty6}
+\begin{paste}{ugInOutFortranPageEmpty6}{ugInOutFortranPagePatch6}
+\pastebutton{ugInOutFortranPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{sin(x)\free{opt1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch7}
+\begin{paste}{ugInOutFortranPageFull7}{ugInOutFortranPageEmpty7}
+\pastebutton{ugInOutFortranPageFull7}{\hidepaste}
+\tab{5}\spadcommand{)set fortran optlevel 1\bound{opt1 }\free{forton }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty7}
+\begin{paste}{ugInOutFortranPageEmpty7}{ugInOutFortranPagePatch7}
+\pastebutton{ugInOutFortranPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{)set fortran optlevel 1\bound{opt1 }\free{forton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch8}
+\begin{paste}{ugInOutFortranPageFull8}{ugInOutFortranPageEmpty8}
+\pastebutton{ugInOutFortranPageFull8}{\hidepaste}
+\tab{5}\spadcommand{(x+y+z)**3\free{opt1 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+      3             2      2            2      3       2
+     z  + (3y + 3x)z  + (3y  + 6x y + 3x )z + y  + 3x y
+   + 
+       2     3
+     3x y + x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty8}
+\begin{paste}{ugInOutFortranPageEmpty8}{ugInOutFortranPagePatch8}
+\pastebutton{ugInOutFortranPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{(x+y+z)**3\free{opt1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch9}
+\begin{paste}{ugInOutFortranPageFull9}{ugInOutFortranPageEmpty9}
+\pastebutton{ugInOutFortranPageFull9}{\hidepaste}
+\tab{5}\spadcommand{)set fortran precision double\free{opt1 }\bound{double1 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty9}
+\begin{paste}{ugInOutFortranPageEmpty9}{ugInOutFortranPagePatch9}
+\pastebutton{ugInOutFortranPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{)set fortran precision double\free{opt1 }\bound{double1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch10}
+\begin{paste}{ugInOutFortranPageFull10}{ugInOutFortranPageEmpty10}
+\pastebutton{ugInOutFortranPageFull10}{\hidepaste}
+\tab{5}\spadcommand{2.3 + 5.6*\%i\free{double1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  2.3 + 5.6 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty10}
+\begin{paste}{ugInOutFortranPageEmpty10}{ugInOutFortranPagePatch10}
+\pastebutton{ugInOutFortranPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{2.3 + 5.6*\%i\free{double1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch11}
+\begin{paste}{ugInOutFortranPageFull11}{ugInOutFortranPageEmpty11}
+\pastebutton{ugInOutFortranPageFull11}{\hidepaste}
+\tab{5}\spadcommand{sin \%e\free{double1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  sin(%e)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty11}
+\begin{paste}{ugInOutFortranPageEmpty11}{ugInOutFortranPagePatch11}
+\pastebutton{ugInOutFortranPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{sin \%e\free{double1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch12}
+\begin{paste}{ugInOutFortranPageFull12}{ugInOutFortranPageEmpty12}
+\pastebutton{ugInOutFortranPageFull12}{\hidepaste}
+\tab{5}\spadcommand{)set fortran precision single\free{opt1 }\bound{single1 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty12}
+\begin{paste}{ugInOutFortranPageEmpty12}{ugInOutFortranPagePatch12}
+\pastebutton{ugInOutFortranPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{)set fortran precision single\free{opt1 }\bound{single1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch13}
+\begin{paste}{ugInOutFortranPageFull13}{ugInOutFortranPageEmpty13}
+\pastebutton{ugInOutFortranPageFull13}{\hidepaste}
+\tab{5}\spadcommand{2.3 + 5.6*\%i\free{single1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  2.3 + 5.6 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty13}
+\begin{paste}{ugInOutFortranPageEmpty13}{ugInOutFortranPagePatch13}
+\pastebutton{ugInOutFortranPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{2.3 + 5.6*\%i\free{single1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch14}
+\begin{paste}{ugInOutFortranPageFull14}{ugInOutFortranPageEmpty14}
+\pastebutton{ugInOutFortranPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sin \%e\free{single1 }}
+\indentrel{3}\begin{verbatim}
+   (8)  sin(%e)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty14}
+\begin{paste}{ugInOutFortranPageEmpty14}{ugInOutFortranPagePatch14}
+\pastebutton{ugInOutFortranPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sin \%e\free{single1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch15}
+\begin{paste}{ugInOutFortranPageFull15}{ugInOutFortranPageEmpty15}
+\pastebutton{ugInOutFortranPageFull15}{\hidepaste}
+\tab{5}\spadcommand{[x+1,y+1,z+1]\free{opt1 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [x + 1,y + 1,z + 1]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty15}
+\begin{paste}{ugInOutFortranPageEmpty15}{ugInOutFortranPagePatch15}
+\pastebutton{ugInOutFortranPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{[x+1,y+1,z+1]\free{opt1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch16}
+\begin{paste}{ugInOutFortranPageFull16}{ugInOutFortranPageEmpty16}
+\pastebutton{ugInOutFortranPageFull16}{\hidepaste}
+\tab{5}\spadcommand{set[2,3,4,3,5]\free{opt1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  {2,3,4,5}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty16}
+\begin{paste}{ugInOutFortranPageEmpty16}{ugInOutFortranPagePatch16}
+\pastebutton{ugInOutFortranPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{set[2,3,4,3,5]\free{opt1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch17}
+\begin{paste}{ugInOutFortranPageFull17}{ugInOutFortranPageEmpty17}
+\pastebutton{ugInOutFortranPageFull17}{\hidepaste}
+\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{opt1 }}
+\indentrel{3}\begin{verbatim}
+         Ú2.3   9.7  ¿
+   (11)  ³           ³
+         À0.0  18.778Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty17}
+\begin{paste}{ugInOutFortranPageEmpty17}{ugInOutFortranPagePatch17}
+\pastebutton{ugInOutFortranPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{opt1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch18}
+\begin{paste}{ugInOutFortranPageFull18}{ugInOutFortranPageEmpty18}
+\pastebutton{ugInOutFortranPageFull18}{\hidepaste}
+\tab{5}\spadcommand{)set fortran startindex 1\free{opt1 }\bound{start1 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty18}
+\begin{paste}{ugInOutFortranPageEmpty18}{ugInOutFortranPagePatch18}
+\pastebutton{ugInOutFortranPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{)set fortran startindex 1\free{opt1 }\bound{start1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPagePatch19}
+\begin{paste}{ugInOutFortranPageFull19}{ugInOutFortranPageEmpty19}
+\pastebutton{ugInOutFortranPageFull19}{\hidepaste}
+\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{start1 }}
+\indentrel{3}\begin{verbatim}
+         Ú2.3   9.7  ¿
+   (12)  ³           ³
+         À0.0  18.778Ù
+                                     Type: Matrix Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugInOutFortranPageEmpty19}
+\begin{paste}{ugInOutFortranPageEmpty19}{ugInOutFortranPagePatch19}
+\pastebutton{ugInOutFortranPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{start1 }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 5 (ug05.ht)}
 \pagehead{ugLangPage}{ug05.ht}
@@ -29123,6 +78384,243 @@ user functions of no arguments.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangAssignPagePatch1}
+\begin{paste}{ugLangAssignPageFull1}{ugLangAssignPageEmpty1}
+\pastebutton{ugLangAssignPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a := 1\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (1)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty1}
+\begin{paste}{ugLangAssignPageEmpty1}{ugLangAssignPagePatch1}
+\pastebutton{ugLangAssignPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a := 1\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch2}
+\begin{paste}{ugLangAssignPageFull2}{ugLangAssignPageEmpty2}
+\pastebutton{ugLangAssignPageFull2}{\hidepaste}
+\tab{5}\spadcommand{b := a\free{a }\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (2)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty2}
+\begin{paste}{ugLangAssignPageEmpty2}{ugLangAssignPagePatch2}
+\pastebutton{ugLangAssignPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{b := a\free{a }\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch3}
+\begin{paste}{ugLangAssignPageFull3}{ugLangAssignPageEmpty3}
+\pastebutton{ugLangAssignPageFull3}{\hidepaste}
+\tab{5}\spadcommand{a := 2\bound{a2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty3}
+\begin{paste}{ugLangAssignPageEmpty3}{ugLangAssignPagePatch3}
+\pastebutton{ugLangAssignPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{a := 2\bound{a2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch4}
+\begin{paste}{ugLangAssignPageFull4}{ugLangAssignPageEmpty4}
+\pastebutton{ugLangAssignPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b\free{b }}
+\indentrel{3}\begin{verbatim}
+   (4)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty4}
+\begin{paste}{ugLangAssignPageEmpty4}{ugLangAssignPagePatch4}
+\pastebutton{ugLangAssignPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch5}
+\begin{paste}{ugLangAssignPageFull5}{ugLangAssignPageEmpty5}
+\pastebutton{ugLangAssignPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a == 1\bound{ad }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty5}
+\begin{paste}{ugLangAssignPageEmpty5}{ugLangAssignPagePatch5}
+\pastebutton{ugLangAssignPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a == 1\bound{ad }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch6}
+\begin{paste}{ugLangAssignPageFull6}{ugLangAssignPageEmpty6}
+\pastebutton{ugLangAssignPageFull6}{\hidepaste}
+\tab{5}\spadcommand{b == a\free{ad }\bound{bd }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty6}
+\begin{paste}{ugLangAssignPageEmpty6}{ugLangAssignPagePatch6}
+\pastebutton{ugLangAssignPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{b == a\free{ad }\bound{bd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch7}
+\begin{paste}{ugLangAssignPageFull7}{ugLangAssignPageEmpty7}
+\pastebutton{ugLangAssignPageFull7}{\hidepaste}
+\tab{5}\spadcommand{a\free{ad }}
+\indentrel{3}\begin{verbatim}
+   (7)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty7}
+\begin{paste}{ugLangAssignPageEmpty7}{ugLangAssignPagePatch7}
+\pastebutton{ugLangAssignPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{a\free{ad }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch8}
+\begin{paste}{ugLangAssignPageFull8}{ugLangAssignPageEmpty8}
+\pastebutton{ugLangAssignPageFull8}{\hidepaste}
+\tab{5}\spadcommand{b\free{bd }}
+\indentrel{3}\begin{verbatim}
+   (8)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty8}
+\begin{paste}{ugLangAssignPageEmpty8}{ugLangAssignPagePatch8}
+\pastebutton{ugLangAssignPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{b\free{bd }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch9}
+\begin{paste}{ugLangAssignPageFull9}{ugLangAssignPageEmpty9}
+\pastebutton{ugLangAssignPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a == 2\bound{ad2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty9}
+\begin{paste}{ugLangAssignPageEmpty9}{ugLangAssignPagePatch9}
+\pastebutton{ugLangAssignPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a == 2\bound{ad2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch10}
+\begin{paste}{ugLangAssignPageFull10}{ugLangAssignPageEmpty10}
+\pastebutton{ugLangAssignPageFull10}{\hidepaste}
+\tab{5}\spadcommand{a\free{ad2 }}
+\indentrel{3}\begin{verbatim}
+   (10)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty10}
+\begin{paste}{ugLangAssignPageEmpty10}{ugLangAssignPagePatch10}
+\pastebutton{ugLangAssignPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{a\free{ad2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch11}
+\begin{paste}{ugLangAssignPageFull11}{ugLangAssignPageEmpty11}
+\pastebutton{ugLangAssignPageFull11}{\hidepaste}
+\tab{5}\spadcommand{b\free{bd ad2 }}
+\indentrel{3}\begin{verbatim}
+   (11)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty11}
+\begin{paste}{ugLangAssignPageEmpty11}{ugLangAssignPagePatch11}
+\pastebutton{ugLangAssignPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{b\free{bd ad2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch12}
+\begin{paste}{ugLangAssignPageFull12}{ugLangAssignPageEmpty12}
+\pastebutton{ugLangAssignPageFull12}{\hidepaste}
+\tab{5}\spadcommand{(x,y) := (1,2)\bound{x }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (12)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty12}
+\begin{paste}{ugLangAssignPageEmpty12}{ugLangAssignPagePatch12}
+\pastebutton{ugLangAssignPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{(x,y) := (1,2)\bound{x }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch13}
+\begin{paste}{ugLangAssignPageFull13}{ugLangAssignPageEmpty13}
+\pastebutton{ugLangAssignPageFull13}{\hidepaste}
+\tab{5}\spadcommand{(x,y) := (y,x)\free{x y }\bound{swap }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty13}
+\begin{paste}{ugLangAssignPageEmpty13}{ugLangAssignPagePatch13}
+\pastebutton{ugLangAssignPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{(x,y) := (y,x)\free{x y }\bound{swap }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch14}
+\begin{paste}{ugLangAssignPageFull14}{ugLangAssignPageEmpty14}
+\pastebutton{ugLangAssignPageFull14}{\hidepaste}
+\tab{5}\spadcommand{x\free{swap }}
+\indentrel{3}\begin{verbatim}
+   (14)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty14}
+\begin{paste}{ugLangAssignPageEmpty14}{ugLangAssignPagePatch14}
+\pastebutton{ugLangAssignPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{x\free{swap }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPagePatch15}
+\begin{paste}{ugLangAssignPageFull15}{ugLangAssignPageEmpty15}
+\pastebutton{ugLangAssignPageFull15}{\hidepaste}
+\tab{5}\spadcommand{y\free{swap }}
+\indentrel{3}\begin{verbatim}
+   (15)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangAssignPageEmpty15}
+\begin{paste}{ugLangAssignPageEmpty15}{ugLangAssignPagePatch15}
+\pastebutton{ugLangAssignPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{y\free{swap }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangBlocksPage}{ug05.ht}{Blocks}
 \pageto{notitle}{ugLangIfPage}
@@ -29310,6 +78808,248 @@ a :=
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangBlocksPagePatch1}
+\begin{paste}{ugLangBlocksPageFull1}{ugLangBlocksPageEmpty1}
+\pastebutton{ugLangBlocksPageFull1}{\hidepaste}
+\tab{5}\spadcommand{a :=
+  i := gcd(234,672)
+  i := 3*i**5 - i + 1
+  1 / i
+}
+\indentrel{3}\begin{verbatim}
+          1
+   (1)  ÄÄÄÄÄ
+        23323
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty1}
+\begin{paste}{ugLangBlocksPageEmpty1}{ugLangBlocksPagePatch1}
+\pastebutton{ugLangBlocksPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a :=
+  i := gcd(234,672)
+  i := 3*i**5 - i + 1
+  1 / i
+}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch2}
+\begin{paste}{ugLangBlocksPageFull2}{ugLangBlocksPageEmpty2}
+\pastebutton{ugLangBlocksPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
+\indentrel{3}\begin{verbatim}
+          1
+   (2)  ÄÄÄÄÄ
+        23323
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty2}
+\begin{paste}{ugLangBlocksPageEmpty2}{ugLangBlocksPagePatch2}
+\pastebutton{ugLangBlocksPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch3}
+\begin{paste}{ugLangBlocksPageFull3}{ugLangBlocksPageEmpty3}
+\pastebutton{ugLangBlocksPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(a := 1; b := 2; c := 3; [a,b,c])\bound{a b c }}
+\indentrel{3}\begin{verbatim}
+   (3)  [1,2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty3}
+\begin{paste}{ugLangBlocksPageEmpty3}{ugLangBlocksPagePatch3}
+\pastebutton{ugLangBlocksPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(a := 1; b := 2; c := 3; [a,b,c])\bound{a b c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch4}
+\begin{paste}{ugLangBlocksPageFull4}{ugLangBlocksPageEmpty4}
+\pastebutton{ugLangBlocksPageFull4}{\hidepaste}
+\tab{5}\spadcommand{d :=
+   c := a**2 + b**2
+   sqrt(c * 1.3)
+\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (4)  2.5495097567 96392415
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty4}
+\begin{paste}{ugLangBlocksPageEmpty4}{ugLangBlocksPagePatch4}
+\pastebutton{ugLangBlocksPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{d :=
+   c := a**2 + b**2
+   sqrt(c * 1.3)
+\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch5}
+\begin{paste}{ugLangBlocksPageFull5}{ugLangBlocksPageEmpty5}
+\pastebutton{ugLangBlocksPageFull5}{\hidepaste}
+\tab{5}\spadcommand{h := 2.1 +
+   1.0
+   3.5
+\bound{h }}
+\indentrel{3}\begin{verbatim}
+   (5)  5.6
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty5}
+\begin{paste}{ugLangBlocksPageEmpty5}{ugLangBlocksPagePatch5}
+\pastebutton{ugLangBlocksPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{h := 2.1 +
+   1.0
+   3.5
+\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch6}
+\begin{paste}{ugLangBlocksPageFull6}{ugLangBlocksPageEmpty6}
+\pastebutton{ugLangBlocksPageFull6}{\hidepaste}
+\tab{5}\spadcommand{eval(x**2 - x*y**2,
+     z := \%pi/2.0 - exp(4.1)
+     x = z
+   )
+}
+\indentrel{3}\begin{verbatim}
+   (6)
+                           2
+   58.7694912705 67072878 y  + 3453.8531042012 59382
+                                 Type: Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty6}
+\begin{paste}{ugLangBlocksPageEmpty6}{ugLangBlocksPagePatch6}
+\pastebutton{ugLangBlocksPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{eval(x**2 - x*y**2,
+     z := \%pi/2.0 - exp(4.1)
+     x = z
+   )
+}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch7}
+\begin{paste}{ugLangBlocksPageFull7}{ugLangBlocksPageEmpty7}
+\pastebutton{ugLangBlocksPageFull7}{\hidepaste}
+\tab{5}\spadcommand{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))\free{h }}
+\indentrel{3}\begin{verbatim}
+   (7)  1.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty7}
+\begin{paste}{ugLangBlocksPageEmpty7}{ugLangBlocksPagePatch7}
+\pastebutton{ugLangBlocksPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch8}
+\begin{paste}{ugLangBlocksPageFull8}{ugLangBlocksPageEmpty8}
+\pastebutton{ugLangBlocksPageFull8}{\hidepaste}
+\tab{5}\spadcommand{if h > 3.1 then
+    1.0
+  else
+    z := cos(h)
+    max(z,0.5)
+\free{h }}
+\indentrel{3}\begin{verbatim}
+   (8)  1.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty8}
+\begin{paste}{ugLangBlocksPageEmpty8}{ugLangBlocksPagePatch8}
+\pastebutton{ugLangBlocksPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{if h > 3.1 then
+    1.0
+  else
+    z := cos(h)
+    max(z,0.5)
+\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch9}
+\begin{paste}{ugLangBlocksPageFull9}{ugLangBlocksPageEmpty9}
+\pastebutton{ugLangBlocksPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
+\indentrel{3}\begin{verbatim}
+   (9)  482630400
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty9}
+\begin{paste}{ugLangBlocksPageEmpty9}{ugLangBlocksPagePatch9}
+\pastebutton{ugLangBlocksPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch10}
+\begin{paste}{ugLangBlocksPageFull10}{ugLangBlocksPageEmpty10}
+\pastebutton{ugLangBlocksPageFull10}{\hidepaste}
+\tab{5}\spadcommand{a :=
+  b := factorial(12)
+  c :=
+    d := eulerPhi(22)
+    factorial(d)
+  b+c
+}
+\indentrel{3}\begin{verbatim}
+   (10)  482630400
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty10}
+\begin{paste}{ugLangBlocksPageEmpty10}{ugLangBlocksPagePatch10}
+\pastebutton{ugLangBlocksPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{a :=
+  b := factorial(12)
+  c :=
+    d := eulerPhi(22)
+    factorial(d)
+  b+c
+}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPagePatch11}
+\begin{paste}{ugLangBlocksPageFull11}{ugLangBlocksPageEmpty11}
+\pastebutton{ugLangBlocksPageFull11}{\hidepaste}
+\tab{5}\spadcommand{a :=
+  c := factorial 10
+  d := fibonacci 10
+  c + d = 3628855 => c
+  d
+}
+\indentrel{3}\begin{verbatim}
+   (11)  3628800
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangBlocksPageEmpty11}
+\begin{paste}{ugLangBlocksPageEmpty11}{ugLangBlocksPagePatch11}
+\pastebutton{ugLangBlocksPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{a :=
+  c := factorial 10
+  d := fibonacci 10
+  c + d = 3628855 => c
+  d
+}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangIfPage}{ug05.ht}{if-then-else}
 \pageto{notitle}{ugTypesResolvePage}
@@ -29443,6 +79183,22 @@ a :=
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangIfPagePatch1}
+\begin{paste}{ugLangIfPageFull1}{ugLangIfPageEmpty1}
+\pastebutton{ugLangIfPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x + 1 = y}
+\indentrel{3}\begin{verbatim}
+   (1)  x + 1= y
+                      Type: Equation Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangIfPageEmpty1}
+\begin{paste}{ugLangIfPageEmpty1}{ugLangIfPagePatch1}
+\pastebutton{ugLangIfPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x + 1 = y}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsPage}{ug05.ht}{Loops}
 \pageto{notitle}{ugLangLoopsCompIntPage}
@@ -29617,6 +79373,89 @@ for more information.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsReturnPagePatch1}
+\begin{paste}{ugLangLoopsReturnPageFull1}{ugLangLoopsReturnPageEmpty1}
+\pastebutton{ugLangLoopsReturnPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPageEmpty1}
+\begin{paste}{ugLangLoopsReturnPageEmpty1}{ugLangLoopsReturnPagePatch1}
+\pastebutton{ugLangLoopsReturnPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPagePatch2}
+\begin{paste}{ugLangLoopsReturnPageFull2}{ugLangLoopsReturnPageEmpty2}
+\pastebutton{ugLangLoopsReturnPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f()\free{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPageEmpty2}
+\begin{paste}{ugLangLoopsReturnPageEmpty2}{ugLangLoopsReturnPagePatch2}
+\pastebutton{ugLangLoopsReturnPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f()\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPagePatch3}
+\begin{paste}{ugLangLoopsReturnPageFull3}{ugLangLoopsReturnPageEmpty3}
+\pastebutton{ugLangLoopsReturnPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+  0
+\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPageEmpty3}
+\begin{paste}{ugLangLoopsReturnPageEmpty3}{ugLangLoopsReturnPagePatch3}
+\pastebutton{ugLangLoopsReturnPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then return i
+    i := i + 1
+  0
+\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPagePatch4}
+\begin{paste}{ugLangLoopsReturnPageFull4}{ugLangLoopsReturnPageEmpty4}
+\pastebutton{ugLangLoopsReturnPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f()\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  7
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsReturnPageEmpty4}
+\begin{paste}{ugLangLoopsReturnPageEmpty4}{ugLangLoopsReturnPagePatch4}
+\pastebutton{ugLangLoopsReturnPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f()\free{f1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsBreakPage}{ug05.ht}{break in Loops}
 \pageto{notitle}{ugLangLoopsReturnPage}
@@ -29684,6 +79523,92 @@ repeat
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsBreakPagePatch1}
+\begin{paste}{ugLangLoopsBreakPageFull1}{ugLangLoopsBreakPageEmpty1}
+\pastebutton{ugLangLoopsBreakPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then break
+    i := i + 1
+  i
+\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPageEmpty1}
+\begin{paste}{ugLangLoopsBreakPageEmpty1}{ugLangLoopsBreakPagePatch1}
+\pastebutton{ugLangLoopsBreakPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f() ==
+  i := 1
+  repeat
+    if factorial(i) > 1000 then break
+    i := i + 1
+  i
+\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPagePatch2}
+\begin{paste}{ugLangLoopsBreakPageFull2}{ugLangLoopsBreakPageEmpty2}
+\pastebutton{ugLangLoopsBreakPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f()\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  7
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPageEmpty2}
+\begin{paste}{ugLangLoopsBreakPageEmpty2}{ugLangLoopsBreakPagePatch2}
+\pastebutton{ugLangLoopsBreakPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f()\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPagePatch3}
+\begin{paste}{ugLangLoopsBreakPageFull3}{ugLangLoopsBreakPageEmpty3}
+\pastebutton{ugLangLoopsBreakPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(i,j) := (1, 1)\bound{i }\bound{j }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPageEmpty3}
+\begin{paste}{ugLangLoopsBreakPageEmpty3}{ugLangLoopsBreakPagePatch3}
+\pastebutton{ugLangLoopsBreakPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(i,j) := (1, 1)\bound{i }\bound{j }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPagePatch4}
+\begin{paste}{ugLangLoopsBreakPageFull4}{ugLangLoopsBreakPageEmpty4}
+\pastebutton{ugLangLoopsBreakPageFull4}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  repeat
+    if (i + j) > 10 then break
+    j := j + 1
+  if (i + j) > 10 then break
+  i := i + 1
+\free{i j }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakPageEmpty4}
+\begin{paste}{ugLangLoopsBreakPageEmpty4}{ugLangLoopsBreakPagePatch4}
+\pastebutton{ugLangLoopsBreakPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{repeat
+  repeat
+    if (i + j) > 10 then break
+    j := j + 1
+  if (i + j) > 10 then break
+  i := i + 1
+\free{i j }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsBreakVsPage}{ug05.ht}
 {break vs. {\tt =>} in Loop Bodies}
@@ -29852,6 +79777,262 @@ repeat
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsBreakMorePagePatch1}
+\begin{paste}{ugLangLoopsBreakMorePageFull1}{ugLangLoopsBreakMorePageEmpty1}
+\pastebutton{ugLangLoopsBreakMorePageFull1}{\hidepaste}
+\tab{5}\spadcommand{i := 0\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty1}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty1}{ugLangLoopsBreakMorePagePatch1}
+\pastebutton{ugLangLoopsBreakMorePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{i := 0\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch2}
+\begin{paste}{ugLangLoopsBreakMorePageFull2}{ugLangLoopsBreakMorePageEmpty2}
+\pastebutton{ugLangLoopsBreakMorePageFull2}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  if i**2 > 100 then break
+\free{i }\bound{i1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty2}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty2}{ugLangLoopsBreakMorePagePatch2}
+\pastebutton{ugLangLoopsBreakMorePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  if i**2 > 100 then break
+\free{i }\bound{i1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch3}
+\begin{paste}{ugLangLoopsBreakMorePageFull3}{ugLangLoopsBreakMorePageEmpty3}
+\pastebutton{ugLangLoopsBreakMorePageFull3}{\hidepaste}
+\tab{5}\spadcommand{i\free{i1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  11
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty3}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty3}{ugLangLoopsBreakMorePagePatch3}
+\pastebutton{ugLangLoopsBreakMorePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i\free{i1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch4}
+\begin{paste}{ugLangLoopsBreakMorePageFull4}{ugLangLoopsBreakMorePageEmpty4}
+\pastebutton{ugLangLoopsBreakMorePageFull4}{\hidepaste}
+\tab{5}\spadcommand{i := 0\bound{i2 }}
+\indentrel{3}\begin{verbatim}
+   (4)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty4}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty4}{ugLangLoopsBreakMorePagePatch4}
+\pastebutton{ugLangLoopsBreakMorePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{i := 0\bound{i2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch5}
+\begin{paste}{ugLangLoopsBreakMorePageFull5}{ugLangLoopsBreakMorePageEmpty5}
+\pastebutton{ugLangLoopsBreakMorePageFull5}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  i**2 > 100 => break
+\free{i2 }\bound{i3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty5}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty5}{ugLangLoopsBreakMorePagePatch5}
+\pastebutton{ugLangLoopsBreakMorePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  i**2 > 100 => break
+\free{i2 }\bound{i3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch6}
+\begin{paste}{ugLangLoopsBreakMorePageFull6}{ugLangLoopsBreakMorePageEmpty6}
+\pastebutton{ugLangLoopsBreakMorePageFull6}{\hidepaste}
+\tab{5}\spadcommand{i\free{i3 }}
+\indentrel{3}\begin{verbatim}
+   (6)  11
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty6}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty6}{ugLangLoopsBreakMorePagePatch6}
+\pastebutton{ugLangLoopsBreakMorePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{i\free{i3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch7}
+\begin{paste}{ugLangLoopsBreakMorePageFull7}{ugLangLoopsBreakMorePageEmpty7}
+\pastebutton{ugLangLoopsBreakMorePageFull7}{\hidepaste}
+\tab{5}\spadcommand{(n, i, f) := (100, 1, 1)\bound{n }\bound{i4 }\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (7)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty7}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty7}{ugLangLoopsBreakMorePagePatch7}
+\pastebutton{ugLangLoopsBreakMorePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{(n, i, f) := (100, 1, 1)\bound{n }\bound{i4 }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch8}
+\begin{paste}{ugLangLoopsBreakMorePageFull8}{ugLangLoopsBreakMorePageEmpty8}
+\pastebutton{ugLangLoopsBreakMorePageFull8}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  if i > n then break
+  f := f * i
+  i := i + 1
+\bound{f1 }\bound{i5 }\free{f i4 n }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty8}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty8}{ugLangLoopsBreakMorePagePatch8}
+\pastebutton{ugLangLoopsBreakMorePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{repeat
+  if i > n then break
+  f := f * i
+  i := i + 1
+\bound{f1 }\bound{i5 }\free{f i4 n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch9}
+\begin{paste}{ugLangLoopsBreakMorePageFull9}{ugLangLoopsBreakMorePageEmpty9}
+\pastebutton{ugLangLoopsBreakMorePageFull9}{\hidepaste}
+\tab{5}\spadcommand{f\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+  933262154439441526816992388562667004907159682643816214_
+   68592963895217599993229915608941463976156518286253697_
+   920827223758251185210916864000000000000000000000000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty9}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty9}{ugLangLoopsBreakMorePagePatch9}
+\pastebutton{ugLangLoopsBreakMorePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch10}
+\begin{paste}{ugLangLoopsBreakMorePageFull10}{ugLangLoopsBreakMorePageEmpty10}
+\pastebutton{ugLangLoopsBreakMorePageFull10}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+         Ú21   37   53   14 ¿
+         ³                  ³
+         ³8   - 24  22  - 16³
+   (10)  ³                  ³
+         ³2    10   15   14 ³
+         ³                  ³
+         À26   33   55  - 13Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty10}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty10}{ugLangLoopsBreakMorePagePatch10}
+\pastebutton{ugLangLoopsBreakMorePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch11}
+\begin{paste}{ugLangLoopsBreakMorePageFull11}{ugLangLoopsBreakMorePageEmpty11}
+\pastebutton{ugLangLoopsBreakMorePageFull11}{\hidepaste}
+\tab{5}\spadcommand{(r, c) := (1, 1)\bound{r }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (11)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty11}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty11}{ugLangLoopsBreakMorePagePatch11}
+\pastebutton{ugLangLoopsBreakMorePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{(r, c) := (1, 1)\bound{r }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch12}
+\begin{paste}{ugLangLoopsBreakMorePageFull12}{ugLangLoopsBreakMorePageEmpty12}
+\pastebutton{ugLangLoopsBreakMorePageFull12}{\hidepaste}
+\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
+\indentrel{3}\begin{verbatim}
+   (12)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty12}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty12}{ugLangLoopsBreakMorePagePatch12}
+\pastebutton{ugLangLoopsBreakMorePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePagePatch13}
+\begin{paste}{ugLangLoopsBreakMorePageFull13}{ugLangLoopsBreakMorePageEmpty13}
+\pastebutton{ugLangLoopsBreakMorePageFull13}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  if r > lastrow then break
+  c := 1
+  repeat
+    if c > lastcol then break
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\free{m2 r c lastrow lastcol }}
+\indentrel{3}\begin{verbatim}
+   [2,2,- 24]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsBreakMorePageEmpty13}
+\begin{paste}{ugLangLoopsBreakMorePageEmpty13}{ugLangLoopsBreakMorePagePatch13}
+\pastebutton{ugLangLoopsBreakMorePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{repeat
+  if r > lastrow then break
+  c := 1
+  repeat
+    if c > lastcol then break
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\free{m2 r c lastrow lastcol }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsIteratePage}{ug05.ht}{iterate in Loops}
 <<ug05.ht>>=
@@ -29882,6 +80063,49 @@ repeat
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsIteratePagePatch1}
+\begin{paste}{ugLangLoopsIteratePageFull1}{ugLangLoopsIteratePageEmpty1}
+\pastebutton{ugLangLoopsIteratePageFull1}{\hidepaste}
+\tab{5}\spadcommand{i := 0\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsIteratePageEmpty1}
+\begin{paste}{ugLangLoopsIteratePageEmpty1}{ugLangLoopsIteratePagePatch1}
+\pastebutton{ugLangLoopsIteratePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{i := 0\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsIteratePagePatch2}
+\begin{paste}{ugLangLoopsIteratePageFull2}{ugLangLoopsIteratePageEmpty2}
+\pastebutton{ugLangLoopsIteratePageFull2}{\hidepaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  if i > 5 then break
+  if odd?(i) then iterate
+  output(i)
+\free{i }}
+\indentrel{3}\begin{verbatim}
+   2
+   4
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsIteratePageEmpty2}
+\begin{paste}{ugLangLoopsIteratePageEmpty2}{ugLangLoopsIteratePagePatch2}
+\pastebutton{ugLangLoopsIteratePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{repeat
+  i := i + 1
+  if i > 5 then break
+  if odd?(i) then iterate
+  output(i)
+\free{i }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsWhilePage}{ug05.ht}{while Loops}
 <<ug05.ht>>=
@@ -30002,6 +80226,216 @@ while r <= lastrow repeat
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsWhilePagePatch1}
+\begin{paste}{ugLangLoopsWhilePageFull1}{ugLangLoopsWhilePageEmpty1}
+\pastebutton{ugLangLoopsWhilePageFull1}{\hidepaste}
+\tab{5}\spadcommand{i := 1\bound{i }}
+\indentrel{3}\begin{verbatim}
+   (1)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty1}
+\begin{paste}{ugLangLoopsWhilePageEmpty1}{ugLangLoopsWhilePagePatch1}
+\pastebutton{ugLangLoopsWhilePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{i := 1\bound{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch2}
+\begin{paste}{ugLangLoopsWhilePageFull2}{ugLangLoopsWhilePageEmpty2}
+\pastebutton{ugLangLoopsWhilePageFull2}{\hidepaste}
+\tab{5}\spadcommand{while i < 1 repeat
+  output "hello"
+  i := i + 1
+\free{i }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty2}
+\begin{paste}{ugLangLoopsWhilePageEmpty2}{ugLangLoopsWhilePagePatch2}
+\pastebutton{ugLangLoopsWhilePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{while i < 1 repeat
+  output "hello"
+  i := i + 1
+\free{i }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch3}
+\begin{paste}{ugLangLoopsWhilePageFull3}{ugLangLoopsWhilePageEmpty3}
+\pastebutton{ugLangLoopsWhilePageFull3}{\hidepaste}
+\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty3}
+\begin{paste}{ugLangLoopsWhilePageEmpty3}{ugLangLoopsWhilePagePatch3}
+\pastebutton{ugLangLoopsWhilePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch4}
+\begin{paste}{ugLangLoopsWhilePageFull4}{ugLangLoopsWhilePageEmpty4}
+\pastebutton{ugLangLoopsWhilePageFull4}{\hidepaste}
+\tab{5}\spadcommand{while x < 4 and y < 10 repeat
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\free{x y }}
+\indentrel{3}\begin{verbatim}
+   [1,1]
+   [2,3]
+   [3,5]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty4}
+\begin{paste}{ugLangLoopsWhilePageEmpty4}{ugLangLoopsWhilePagePatch4}
+\pastebutton{ugLangLoopsWhilePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{while x < 4 and y < 10 repeat
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch5}
+\begin{paste}{ugLangLoopsWhilePageFull5}{ugLangLoopsWhilePageEmpty5}
+\pastebutton{ugLangLoopsWhilePageFull5}{\hidepaste}
+\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x1 }\bound{y1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty5}
+\begin{paste}{ugLangLoopsWhilePageEmpty5}{ugLangLoopsWhilePagePatch5}
+\pastebutton{ugLangLoopsWhilePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x1 }\bound{y1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch6}
+\begin{paste}{ugLangLoopsWhilePageFull6}{ugLangLoopsWhilePageEmpty6}
+\pastebutton{ugLangLoopsWhilePageFull6}{\hidepaste}
+\tab{5}\spadcommand{while x < 4 while y < 10 repeat
+  if x + y > 7 then break
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\free{x1 y1 }}
+\indentrel{3}\begin{verbatim}
+   [1,1]
+   [2,3]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty6}
+\begin{paste}{ugLangLoopsWhilePageEmpty6}{ugLangLoopsWhilePagePatch6}
+\pastebutton{ugLangLoopsWhilePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{while x < 4 while y < 10 repeat
+  if x + y > 7 then break
+  output [x,y]
+  x := x + 1
+  y := y + 2
+\free{x1 y1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch7}
+\begin{paste}{ugLangLoopsWhilePageFull7}{ugLangLoopsWhilePageEmpty7}
+\pastebutton{ugLangLoopsWhilePageFull7}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú21   37   53   14 ¿
+        ³                  ³
+        ³8   - 24  22  - 16³
+   (7)  ³                  ³
+        ³2    10   15   14 ³
+        ³                  ³
+        À26   33   55  - 13Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty7}
+\begin{paste}{ugLangLoopsWhilePageEmpty7}{ugLangLoopsWhilePagePatch7}
+\pastebutton{ugLangLoopsWhilePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch8}
+\begin{paste}{ugLangLoopsWhilePageFull8}{ugLangLoopsWhilePageEmpty8}
+\pastebutton{ugLangLoopsWhilePageFull8}{\hidepaste}
+\tab{5}\spadcommand{r := 1\bound{r }}
+\indentrel{3}\begin{verbatim}
+   (8)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty8}
+\begin{paste}{ugLangLoopsWhilePageEmpty8}{ugLangLoopsWhilePagePatch8}
+\pastebutton{ugLangLoopsWhilePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{r := 1\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch9}
+\begin{paste}{ugLangLoopsWhilePageFull9}{ugLangLoopsWhilePageEmpty9}
+\pastebutton{ugLangLoopsWhilePageFull9}{\hidepaste}
+\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
+\indentrel{3}\begin{verbatim}
+   (9)  4
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty9}
+\begin{paste}{ugLangLoopsWhilePageEmpty9}{ugLangLoopsWhilePagePatch9}
+\pastebutton{ugLangLoopsWhilePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePagePatch10}
+\begin{paste}{ugLangLoopsWhilePageFull10}{ugLangLoopsWhilePageEmpty10}
+\pastebutton{ugLangLoopsWhilePageFull10}{\hidepaste}
+\tab{5}\spadcommand{while r <= lastrow repeat
+  c := 1  -- index of first column
+  while c <= lastcol repeat
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\free{m2 r lastrow lastcol }}
+\indentrel{3}\begin{verbatim}
+   [2,2,- 24]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsWhilePageEmpty10}
+\begin{paste}{ugLangLoopsWhilePageEmpty10}{ugLangLoopsWhilePagePatch10}
+\pastebutton{ugLangLoopsWhilePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{while r <= lastrow repeat
+  c := 1  -- index of first column
+  while c <= lastcol repeat
+    if elt(m,r,c) < 0 then
+      output [r, c, elt(m,r,c)]
+      r := lastrow
+      break     -- don't look any further
+    c := c + 1
+  r := r + 1
+\free{m2 r lastrow lastcol }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsForInPage}{ug05.ht}{for Loops}
 <<ug05.ht>>=
@@ -30119,6 +80553,119 @@ for more information about segments.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsForInNMPagePatch1}
+\begin{paste}{ugLangLoopsForInNMPageFull1}{ugLangLoopsForInNMPageEmpty1}
+\pastebutton{ugLangLoopsForInNMPageFull1}{\hidepaste}
+\tab{5}\spadcommand{for i in 10..12 repeat output(i**3)}
+\indentrel{3}\begin{verbatim}
+   1000
+   1331
+   1728
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty1}
+\begin{paste}{ugLangLoopsForInNMPageEmpty1}{ugLangLoopsForInNMPagePatch1}
+\pastebutton{ugLangLoopsForInNMPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{for i in 10..12 repeat output(i**3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPagePatch2}
+\begin{paste}{ugLangLoopsForInNMPageFull2}{ugLangLoopsForInNMPageEmpty2}
+\pastebutton{ugLangLoopsForInNMPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a := [1,2,3]\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty2}
+\begin{paste}{ugLangLoopsForInNMPageEmpty2}{ugLangLoopsForInNMPagePatch2}
+\pastebutton{ugLangLoopsForInNMPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a := [1,2,3]\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPagePatch3}
+\begin{paste}{ugLangLoopsForInNMPageFull3}{ugLangLoopsForInNMPageEmpty3}
+\pastebutton{ugLangLoopsForInNMPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..\#a repeat output(a.i)\free{a }}
+\indentrel{3}\begin{verbatim}
+   1
+   2
+   3
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty3}
+\begin{paste}{ugLangLoopsForInNMPageEmpty3}{ugLangLoopsForInNMPagePatch3}
+\pastebutton{ugLangLoopsForInNMPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for i in 1..\#a repeat output(a.i)\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPagePatch4}
+\begin{paste}{ugLangLoopsForInNMPageFull4}{ugLangLoopsForInNMPageEmpty4}
+\pastebutton{ugLangLoopsForInNMPageFull4}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[1,2],[4,3],[9,0]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2¿
+        ³    ³
+   (4)  ³4  3³
+        ³    ³
+        À9  0Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty4}
+\begin{paste}{ugLangLoopsForInNMPageEmpty4}{ugLangLoopsForInNMPagePatch4}
+\pastebutton{ugLangLoopsForInNMPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[1,2],[4,3],[9,0]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPagePatch5}
+\begin{paste}{ugLangLoopsForInNMPageFull5}{ugLangLoopsForInNMPageEmpty5}
+\pastebutton{ugLangLoopsForInNMPageFull5}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..nrows(m) repeat output row(m,i)\free{m }}
+\indentrel{3}\begin{verbatim}
+   [1,2]
+   [4,3]
+   [9,0]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty5}
+\begin{paste}{ugLangLoopsForInNMPageEmpty5}{ugLangLoopsForInNMPagePatch5}
+\pastebutton{ugLangLoopsForInNMPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{for i in 1..nrows(m) repeat output row(m,i)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPagePatch6}
+\begin{paste}{ugLangLoopsForInNMPageFull6}{ugLangLoopsForInNMPageEmpty6}
+\pastebutton{ugLangLoopsForInNMPageFull6}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..5 repeat
+  if odd?(i) then iterate
+  output(i)
+}
+\indentrel{3}\begin{verbatim}
+   2
+   4
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMPageEmpty6}
+\begin{paste}{ugLangLoopsForInNMPageEmpty6}{ugLangLoopsForInNMPagePatch6}
+\pastebutton{ugLangLoopsForInNMPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{for i in 1..5 repeat
+  if odd?(i) then iterate
+  output(i)
+}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsForInNMSPage}{ug05.ht}{for i in n..m by s repeat}
 <<ug05.ht>>=
@@ -30153,6 +80700,42 @@ Use this to display the numbers in reverse order.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsForInNMSPagePatch1}
+\begin{paste}{ugLangLoopsForInNMSPageFull1}{ugLangLoopsForInNMSPageEmpty1}
+\pastebutton{ugLangLoopsForInNMSPageFull1}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..5 by 2 repeat output(i)}
+\indentrel{3}\begin{verbatim}
+   1
+   3
+   5
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMSPageEmpty1}
+\begin{paste}{ugLangLoopsForInNMSPageEmpty1}{ugLangLoopsForInNMSPagePatch1}
+\pastebutton{ugLangLoopsForInNMSPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{for i in 1..5 by 2 repeat output(i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMSPagePatch2}
+\begin{paste}{ugLangLoopsForInNMSPageFull2}{ugLangLoopsForInNMSPageEmpty2}
+\pastebutton{ugLangLoopsForInNMSPageFull2}{\hidepaste}
+\tab{5}\spadcommand{for i in 5..1 by -2 repeat output(i)}
+\indentrel{3}\begin{verbatim}
+   5
+   3
+   1
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNMSPageEmpty2}
+\begin{paste}{ugLangLoopsForInNMSPageEmpty2}{ugLangLoopsForInNMSPagePatch2}
+\pastebutton{ugLangLoopsForInNMSPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{for i in 5..1 by -2 repeat output(i)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsForInNPage}{ug05.ht}{for i in n.. repeat}
 <<ug05.ht>>=
@@ -30179,6 +80762,23 @@ and less than the first prime greater than \axiom{15}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsForInNPagePatch1}
+\begin{paste}{ugLangLoopsForInNPageFull1}{ugLangLoopsForInNPageEmpty1}
+\pastebutton{ugLangLoopsForInNPageFull1}{\hidepaste}
+\tab{5}\spadcommand{for i in 15.. while not prime?(i) repeat output(i)}
+\indentrel{3}\begin{verbatim}
+   15
+   16
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInNPageEmpty1}
+\begin{paste}{ugLangLoopsForInNPageEmpty1}{ugLangLoopsForInNPagePatch1}
+\pastebutton{ugLangLoopsForInNPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{for i in 15.. while not prime?(i) repeat output(i)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsForInXLPage}{ug05.ht}{for x in l repeat}
 <<ug05.ht>>=
@@ -30235,6 +80835,58 @@ This displays each of the factors of \axiom{2400000}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsForInXLPagePatch1}
+\begin{paste}{ugLangLoopsForInXLPageFull1}{ugLangLoopsForInXLPageEmpty1}
+\pastebutton{ugLangLoopsForInXLPageFull1}{\hidepaste}
+\tab{5}\spadcommand{l := [0,-5,3]\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (1)  [0,- 5,3]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInXLPageEmpty1}
+\begin{paste}{ugLangLoopsForInXLPageEmpty1}{ugLangLoopsForInXLPagePatch1}
+\pastebutton{ugLangLoopsForInXLPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{l := [0,-5,3]\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInXLPagePatch2}
+\begin{paste}{ugLangLoopsForInXLPageFull2}{ugLangLoopsForInXLPageEmpty2}
+\pastebutton{ugLangLoopsForInXLPageFull2}{\hidepaste}
+\tab{5}\spadcommand{for x in l repeat output(x)\free{l }}
+\indentrel{3}\begin{verbatim}
+   0
+   - 5
+   3
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInXLPageEmpty2}
+\begin{paste}{ugLangLoopsForInXLPageEmpty2}{ugLangLoopsForInXLPagePatch2}
+\pastebutton{ugLangLoopsForInXLPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{for x in l repeat output(x)\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInXLPagePatch3}
+\begin{paste}{ugLangLoopsForInXLPageFull3}{ugLangLoopsForInXLPageEmpty3}
+\pastebutton{ugLangLoopsForInXLPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for f in factors(factor(2400000)) repeat output(f)}
+\indentrel{3}\begin{verbatim}
+   [factor= 2,exponent= 8]
+   [factor= 3,exponent= 1]
+   [factor= 5,exponent= 5]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInXLPageEmpty3}
+\begin{paste}{ugLangLoopsForInXLPageEmpty3}{ugLangLoopsForInXLPagePatch3}
+\pastebutton{ugLangLoopsForInXLPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for f in factors(factor(2400000)) repeat output(f)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsForInPredPage}{ug05.ht}{``Such that'' Predicates}
 <<ug05.ht>>=
@@ -30283,6 +80935,50 @@ for i in 1..50 repeat
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsForInPredPagePatch1}
+\begin{paste}{ugLangLoopsForInPredPageFull1}{ugLangLoopsForInPredPageEmpty1}
+\pastebutton{ugLangLoopsForInPredPageFull1}{\hidepaste}
+\tab{5}\spadcommand{for n in 0..4 | odd? n repeat output n}
+\indentrel{3}\begin{verbatim}
+   1
+   3
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInPredPageEmpty1}
+\begin{paste}{ugLangLoopsForInPredPageEmpty1}{ugLangLoopsForInPredPagePatch1}
+\pastebutton{ugLangLoopsForInPredPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{for n in 0..4 | odd? n repeat output n}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInPredPagePatch2}
+\begin{paste}{ugLangLoopsForInPredPageFull2}{ugLangLoopsForInPredPageEmpty2}
+\pastebutton{ugLangLoopsForInPredPageFull2}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..50 repeat
+  for j in 1..50 | factorial(i+j) < 25 repeat
+    output [i,j]
+}
+\indentrel{3}\begin{verbatim}
+   [1,1]
+   [1,2]
+   [1,3]
+   [2,1]
+   [2,2]
+   [3,1]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsForInPredPageEmpty2}
+\begin{paste}{ugLangLoopsForInPredPageEmpty2}{ugLangLoopsForInPredPagePatch2}
+\pastebutton{ugLangLoopsForInPredPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{for i in 1..50 repeat
+  for j in 1..50 | factorial(i+j) < 25 repeat
+    output [i,j]
+}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangLoopsParPage}{ug05.ht}{Parallel Iteration}
 \pageto{notitle}{ugLangLoopsForInPredPage}
@@ -30419,6 +81115,177 @@ or any \axiom{for} clause to the left.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangLoopsParPagePatch1}
+\begin{paste}{ugLangLoopsParPageFull1}{ugLangLoopsParPageEmpty1}
+\pastebutton{ugLangLoopsParPageFull1}{\hidepaste}
+\tab{5}\spadcommand{l := [1,3,5,7]\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,3,5,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty1}
+\begin{paste}{ugLangLoopsParPageEmpty1}{ugLangLoopsParPagePatch1}
+\pastebutton{ugLangLoopsParPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{l := [1,3,5,7]\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch2}
+\begin{paste}{ugLangLoopsParPageFull2}{ugLangLoopsParPageEmpty2}
+\pastebutton{ugLangLoopsParPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := [100,200]\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (2)  [100,200]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty2}
+\begin{paste}{ugLangLoopsParPageEmpty2}{ugLangLoopsParPagePatch2}
+\pastebutton{ugLangLoopsParPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := [100,200]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch3}
+\begin{paste}{ugLangLoopsParPageFull3}{ugLangLoopsParPageEmpty3}
+\pastebutton{ugLangLoopsParPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sum := 0\bound{sum }}
+\indentrel{3}\begin{verbatim}
+   (3)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty3}
+\begin{paste}{ugLangLoopsParPageEmpty3}{ugLangLoopsParPagePatch3}
+\pastebutton{ugLangLoopsParPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sum := 0\bound{sum }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch4}
+\begin{paste}{ugLangLoopsParPageFull4}{ugLangLoopsParPageEmpty4}
+\pastebutton{ugLangLoopsParPageFull4}{\hidepaste}
+\tab{5}\spadcommand{for x in l for y in m repeat
+    sum := sum + x*y
+\bound{doit }\free{sum l m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty4}
+\begin{paste}{ugLangLoopsParPageEmpty4}{ugLangLoopsParPagePatch4}
+\pastebutton{ugLangLoopsParPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{for x in l for y in m repeat
+    sum := sum + x*y
+\bound{doit }\free{sum l m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch5}
+\begin{paste}{ugLangLoopsParPageFull5}{ugLangLoopsParPageEmpty5}
+\pastebutton{ugLangLoopsParPageFull5}{\hidepaste}
+\tab{5}\spadcommand{sum\free{doit }}
+\indentrel{3}\begin{verbatim}
+   (5)  700
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty5}
+\begin{paste}{ugLangLoopsParPageEmpty5}{ugLangLoopsParPagePatch5}
+\pastebutton{ugLangLoopsParPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sum\free{doit }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch6}
+\begin{paste}{ugLangLoopsParPageFull6}{ugLangLoopsParPageEmpty6}
+\pastebutton{ugLangLoopsParPageFull6}{\hidepaste}
+\tab{5}\spadcommand{l := [2,3,5,7,11,13,17,19,23,29,31,37]\bound{l1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [2,3,5,7,11,13,17,19,23,29,31,37]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty6}
+\begin{paste}{ugLangLoopsParPageEmpty6}{ugLangLoopsParPagePatch6}
+\pastebutton{ugLangLoopsParPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{l := [2,3,5,7,11,13,17,19,23,29,31,37]\bound{l1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch7}
+\begin{paste}{ugLangLoopsParPageFull7}{ugLangLoopsParPageEmpty7}
+\pastebutton{ugLangLoopsParPageFull7}{\hidepaste}
+\tab{5}\spadcommand{sum := 0\bound{sum1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty7}
+\begin{paste}{ugLangLoopsParPageEmpty7}{ugLangLoopsParPagePatch7}
+\pastebutton{ugLangLoopsParPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{sum := 0\bound{sum1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch8}
+\begin{paste}{ugLangLoopsParPageFull8}{ugLangLoopsParPageEmpty8}
+\pastebutton{ugLangLoopsParPageFull8}{\hidepaste}
+\tab{5}\spadcommand{for i in 0.. for x in l repeat sum := i * x\bound{doit1 }\free{sum1 l1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty8}
+\begin{paste}{ugLangLoopsParPageEmpty8}{ugLangLoopsParPagePatch8}
+\pastebutton{ugLangLoopsParPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{for i in 0.. for x in l repeat sum := i * x\bound{doit1 }\free{sum1 l1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch9}
+\begin{paste}{ugLangLoopsParPageFull9}{ugLangLoopsParPageEmpty9}
+\pastebutton{ugLangLoopsParPageFull9}{\hidepaste}
+\tab{5}\spadcommand{sum\free{doit1 }}
+\indentrel{3}\begin{verbatim}
+   (9)  407
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty9}
+\begin{paste}{ugLangLoopsParPageEmpty9}{ugLangLoopsParPagePatch9}
+\pastebutton{ugLangLoopsParPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{sum\free{doit1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPagePatch10}
+\begin{paste}{ugLangLoopsParPageFull10}{ugLangLoopsParPageEmpty10}
+\pastebutton{ugLangLoopsParPageFull10}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..10
+    for j in 151..160 | odd? j
+      while i + j < 160 repeat
+        output [i,j]
+}
+\indentrel{3}\begin{verbatim}
+   [1,151]
+   [3,153]
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangLoopsParPageEmpty10}
+\begin{paste}{ugLangLoopsParPageEmpty10}{ugLangLoopsParPagePatch10}
+\pastebutton{ugLangLoopsParPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{for i in 1..10
+    for j in 151..160 | odd? j
+      while i + j < 160 repeat
+        output [i,j]
+}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangItsPage}{ug05.ht}{Creating Lists and Streams with Iterators}
 \pageto{notitle}{ugLangLoopsPage}
@@ -30547,6 +81414,221 @@ manipulating lists and streams, respectively.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangItsPagePatch1}
+\begin{paste}{ugLangItsPageFull1}{ugLangItsPageEmpty1}
+\pastebutton{ugLangItsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{list := [i for i in 1..10]\bound{list }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,2,3,4,5,6,7,8,9,10]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty1}
+\begin{paste}{ugLangItsPageEmpty1}{ugLangItsPagePatch1}
+\pastebutton{ugLangItsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{list := [i for i in 1..10]\bound{list }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch2}
+\begin{paste}{ugLangItsPageFull2}{ugLangItsPageEmpty2}
+\pastebutton{ugLangItsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{stream := [i for i in 1..]\bound{stream }}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3,4,5,6,7,8,9,10,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty2}
+\begin{paste}{ugLangItsPageEmpty2}{ugLangItsPagePatch2}
+\pastebutton{ugLangItsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{stream := [i for i in 1..]\bound{stream }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch3}
+\begin{paste}{ugLangItsPageFull3}{ugLangItsPageEmpty3}
+\pastebutton{ugLangItsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1..10 | prime? i]}
+\indentrel{3}\begin{verbatim}
+   (3)  [2,3,5,7]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty3}
+\begin{paste}{ugLangItsPageEmpty3}{ugLangItsPagePatch3}
+\pastebutton{ugLangItsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1..10 | prime? i]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch4}
+\begin{paste}{ugLangItsPageFull4}{ugLangItsPageEmpty4}
+\pastebutton{ugLangItsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1.. | prime? i]}
+\indentrel{3}\begin{verbatim}
+   (4)  [2,3,5,7,11,13,17,19,23,29,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty4}
+\begin{paste}{ugLangItsPageEmpty4}{ugLangItsPagePatch4}
+\pastebutton{ugLangItsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1.. | prime? i]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch5}
+\begin{paste}{ugLangItsPageFull5}{ugLangItsPageEmpty5}
+\pastebutton{ugLangItsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1..10 while i*i < 700]}
+\indentrel{3}\begin{verbatim}
+   (5)  [1,2,3,4,5,6,7,8,9,10]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty5}
+\begin{paste}{ugLangItsPageEmpty5}{ugLangItsPagePatch5}
+\pastebutton{ugLangItsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1..10 while i*i < 700]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch6}
+\begin{paste}{ugLangItsPageFull6}{ugLangItsPageEmpty6}
+\pastebutton{ugLangItsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[i for i in 1.. while i*i < 700]}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,2,3,4,5,6,7,8,9,10,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty6}
+\begin{paste}{ugLangItsPageEmpty6}{ugLangItsPagePatch6}
+\pastebutton{ugLangItsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[i for i in 1.. while i*i < 700]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch7}
+\begin{paste}{ugLangItsPageFull7}{ugLangItsPageEmpty7}
+\pastebutton{ugLangItsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{matrix [[x**i+j for i in 1..3] for j in 10..12]}
+\indentrel{3}\begin{verbatim}
+        Ú         2        3     ¿
+        ³x + 10  x  + 10  x  + 10³
+        ³                        ³
+   (7)  ³         2        3     ³
+        ³x + 11  x  + 11  x  + 11³
+        ³                        ³
+        ³         2        3     ³
+        Àx + 12  x  + 12  x  + 12Ù
+                        Type: Matrix Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty7}
+\begin{paste}{ugLangItsPageEmpty7}{ugLangItsPagePatch7}
+\pastebutton{ugLangItsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{matrix [[x**i+j for i in 1..3] for j in 10..12]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch8}
+\begin{paste}{ugLangItsPageFull8}{ugLangItsPageEmpty8}
+\pastebutton{ugLangItsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{[[i/j for i in j+1..] for j in 1..]}
+\indentrel{3}\begin{verbatim}
+   (8)
+   [[2,3,4,5,6,7,8,9,10,11,...],
+     3   5   7   9   11
+    [Ä,2,Ä,3,Ä,4,Ä,5,ÄÄ,6,...],
+     2   2   2   2    2
+     4 5   7 8   10 11   13
+    [Ä,Ä,2,Ä,Ä,3,ÄÄ,ÄÄ,4,ÄÄ,...],
+     3 3   3 3    3  3    3
+     5 3 7   9 5 11   13 7
+    [Ä,Ä,Ä,2,Ä,Ä,ÄÄ,3,ÄÄ,Ä,...],
+     4 2 4   4 2  4    4 2
+     6 7 8 9   11 12 13 14
+    [Ä,Ä,Ä,Ä,2,ÄÄ,ÄÄ,ÄÄ,ÄÄ,3,...],
+     5 5 5 5    5  5  5  5
+     7 4 3 5 11   13 7 5 8
+    [Ä,Ä,Ä,Ä,ÄÄ,2,ÄÄ,Ä,Ä,Ä,...],
+     6 3 2 3  6    6 3 2 3
+     8 9 10 11 12 13   15 16 17
+    [Ä,Ä,ÄÄ,ÄÄ,ÄÄ,ÄÄ,2,ÄÄ,ÄÄ,ÄÄ,...],
+     7 7  7  7  7  7    7  7  7
+     9 5 11 3 13 7 15   17 9
+    [Ä,Ä,ÄÄ,Ä,ÄÄ,Ä,ÄÄ,2,ÄÄ,Ä,...],
+     8 4  8 2  8 4  8    8 4
+     10 11 4 13 14 5 16 17   19
+    [ÄÄ,ÄÄ,Ä,ÄÄ,ÄÄ,Ä,ÄÄ,ÄÄ,2,ÄÄ,...],
+      9  9 3  9  9 3  9  9    9
+     11 6 13 7 3 8 17 9 19
+    [ÄÄ,Ä,ÄÄ,Ä,Ä,Ä,ÄÄ,Ä,ÄÄ,2,...], ...]
+     10 5 10 5 2 5 10 5 10
+                   Type: Stream Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty8}
+\begin{paste}{ugLangItsPageEmpty8}{ugLangItsPagePatch8}
+\pastebutton{ugLangItsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{[[i/j for i in j+1..] for j in 1..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch9}
+\begin{paste}{ugLangItsPageFull9}{ugLangItsPageEmpty9}
+\pastebutton{ugLangItsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{[i/j for i in 3.. by 10 for j in 2..]}
+\indentrel{3}\begin{verbatim}
+         3 13 23 33 43 53 63 73 83 93
+   (9)  [Ä,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,...]
+         2  3  4  5  6  7  8  9 10 11
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty9}
+\begin{paste}{ugLangItsPageEmpty9}{ugLangItsPagePatch9}
+\pastebutton{ugLangItsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{[i/j for i in 3.. by 10 for j in 2..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch10}
+\begin{paste}{ugLangItsPageFull10}{ugLangItsPageEmpty10}
+\pastebutton{ugLangItsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{[i**j for i in 1..7 for j in 2.. ]}
+\indentrel{3}\begin{verbatim}
+   (10)  [1,8,81,1024,15625,279936,5764801]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty10}
+\begin{paste}{ugLangItsPageEmpty10}{ugLangItsPagePatch10}
+\pastebutton{ugLangItsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{[i**j for i in 1..7 for j in 2.. ]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPagePatch11}
+\begin{paste}{ugLangItsPageFull11}{ugLangItsPageEmpty11}
+\pastebutton{ugLangItsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
+\indentrel{3}\begin{verbatim}
+   (11)
+   [[[11,17],[13,17]], [[11,19],[13,19]],
+    [[11,21],[13,21]], [[11,22],[13,22]]]
+                   Type: List List List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangItsPageEmpty11}
+\begin{paste}{ugLangItsPageEmpty11}{ugLangItsPagePatch11}
+\pastebutton{ugLangItsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugLangStreamsPrimesPage}{ug05.ht}{An Example: Streams of Primes}
 <<ug05.ht>>=
@@ -30703,6 +81785,187 @@ it left off.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugLangStreamsPrimesPagePatch1}
+\begin{paste}{ugLangStreamsPrimesPageFull1}{ugLangStreamsPrimesPageEmpty1}
+\pastebutton{ugLangStreamsPrimesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{primes : Stream Integer := [i for i in 2.. | prime? i]}
+\indentrel{3}\begin{verbatim}
+   (1)  [2,3,5,7,11,13,17,19,23,29,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty1}
+\begin{paste}{ugLangStreamsPrimesPageEmpty1}{ugLangStreamsPrimesPagePatch1}
+\pastebutton{ugLangStreamsPrimesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{primes : Stream Integer := [i for i in 2.. | prime? i]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch2}
+\begin{paste}{ugLangStreamsPrimesPageFull2}{ugLangStreamsPrimesPageEmpty2}
+\pastebutton{ugLangStreamsPrimesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{primes := generate(nextPrime,2)}
+\indentrel{3}\begin{verbatim}
+   (2)  [2,3,5,7,11,13,17,19,23,29,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty2}
+\begin{paste}{ugLangStreamsPrimesPageEmpty2}{ugLangStreamsPrimesPagePatch2}
+\pastebutton{ugLangStreamsPrimesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{primes := generate(nextPrime,2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch3}
+\begin{paste}{ugLangStreamsPrimesPageFull3}{ugLangStreamsPrimesPageEmpty3}
+\pastebutton{ugLangStreamsPrimesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{smallPrimes := [p for p in primes | p > 1000]\bound{smallPrimes }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty3}
+\begin{paste}{ugLangStreamsPrimesPageEmpty3}{ugLangStreamsPrimesPagePatch3}
+\pastebutton{ugLangStreamsPrimesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{smallPrimes := [p for p in primes | p > 1000]\bound{smallPrimes }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch4}
+\begin{paste}{ugLangStreamsPrimesPageFull4}{ugLangStreamsPrimesPageEmpty4}
+\pastebutton{ugLangStreamsPrimesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{[p for p in smallPrimes for i in 1..11]\free{smallPrimes }}
+\indentrel{3}\begin{verbatim}
+   (4)
+   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty4}
+\begin{paste}{ugLangStreamsPrimesPageEmpty4}{ugLangStreamsPrimesPagePatch4}
+\pastebutton{ugLangStreamsPrimesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{[p for p in smallPrimes for i in 1..11]\free{smallPrimes }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch5}
+\begin{paste}{ugLangStreamsPrimesPageFull5}{ugLangStreamsPrimesPageEmpty5}
+\pastebutton{ugLangStreamsPrimesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{[p for p in smallPrimes while p < 1200]\free{smallPrimes }}
+\indentrel{3}\begin{verbatim}
+   (5)
+   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty5}
+\begin{paste}{ugLangStreamsPrimesPageEmpty5}{ugLangStreamsPrimesPagePatch5}
+\pastebutton{ugLangStreamsPrimesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{[p for p in smallPrimes while p < 1200]\free{smallPrimes }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch6}
+\begin{paste}{ugLangStreamsPrimesPageFull6}{ugLangStreamsPrimesPageEmpty6}
+\pastebutton{ugLangStreamsPrimesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{complete \%}
+\indentrel{3}\begin{verbatim}
+   (6)
+   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty6}
+\begin{paste}{ugLangStreamsPrimesPageEmpty6}{ugLangStreamsPrimesPagePatch6}
+\pastebutton{ugLangStreamsPrimesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{complete \%}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch7}
+\begin{paste}{ugLangStreamsPrimesPageFull7}{ugLangStreamsPrimesPageEmpty7}
+\pastebutton{ugLangStreamsPrimesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [[3,5], [5,7], [11,13], [17,19], [29,31], [41,43],
+    [59,61], [71,73], [101,103], [107,109], ...]
+                              Type: Stream List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty7}
+\begin{paste}{ugLangStreamsPrimesPageEmpty7}{ugLangStreamsPrimesPagePatch7}
+\pastebutton{ugLangStreamsPrimesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch8}
+\begin{paste}{ugLangStreamsPrimesPageFull8}{ugLangStreamsPrimesPageEmpty8}
+\pastebutton{ugLangStreamsPrimesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
+\indentrel{3}\begin{verbatim}
+   (8)  [3,5,11,17,29,41,59,71,101,107,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty8}
+\begin{paste}{ugLangStreamsPrimesPageEmpty8}{ugLangStreamsPrimesPagePatch8}
+\pastebutton{ugLangStreamsPrimesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch9}
+\begin{paste}{ugLangStreamsPrimesPageFull9}{ugLangStreamsPrimesPageEmpty9}
+\pastebutton{ugLangStreamsPrimesPageFull9}{\hidepaste}
+\tab{5}\spadcommand{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
+\indentrel{3}\begin{verbatim}
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty9}
+\begin{paste}{ugLangStreamsPrimesPageEmpty9}{ugLangStreamsPrimesPagePatch9}
+\pastebutton{ugLangStreamsPrimesPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch10}
+\begin{paste}{ugLangStreamsPrimesPageFull10}{ugLangStreamsPrimesPageEmpty10}
+\pastebutton{ugLangStreamsPrimesPageFull10}{\hidepaste}
+\tab{5}\spadcommand{firstTriplets.1}
+\indentrel{3}\begin{verbatim}
+   (10)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty10}
+\begin{paste}{ugLangStreamsPrimesPageEmpty10}{ugLangStreamsPrimesPagePatch10}
+\pastebutton{ugLangStreamsPrimesPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{firstTriplets.1}
+\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPagePatch11}
+\begin{paste}{ugLangStreamsPrimesPageFull11}{ugLangStreamsPrimesPageEmpty11}
+\pastebutton{ugLangStreamsPrimesPageFull11}{\hidepaste}
+\tab{5}\spadcommand{primes.2045}
+\indentrel{3}\begin{verbatim}
+   (11)  17837
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugLangStreamsPrimesPageEmpty11}
+\begin{paste}{ugLangStreamsPrimesPageEmpty11}{ugLangStreamsPrimesPagePatch11}
+\pastebutton{ugLangStreamsPrimesPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{primes.2045}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 6 (ug06.ht)}
 \pagehead{ugUserPage}{ug06.ht}{User-Defined Functions, Macros and Rules}
@@ -30840,6 +82103,38 @@ macros are extensions to the Axiom expression parser.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserFunMacPagePatch1}
+\begin{paste}{ugUserFunMacPageFull1}{ugUserFunMacPageEmpty1}
+\pastebutton{ugUserFunMacPageFull1}{\hidepaste}
+\tab{5}\spadcommand{abs(-8)}
+\indentrel{3}\begin{verbatim}
+   (1)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFunMacPageEmpty1}
+\begin{paste}{ugUserFunMacPageEmpty1}{ugUserFunMacPagePatch1}
+\pastebutton{ugUserFunMacPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{abs(-8)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFunMacPagePatch2}
+\begin{paste}{ugUserFunMacPageFull2}{ugUserFunMacPageEmpty2}
+\pastebutton{ugUserFunMacPageFull2}{\hidepaste}
+\tab{5}\spadcommand{(x +-> if x < 0 then -x else x)(-8)}
+\indentrel{3}\begin{verbatim}
+   (2)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFunMacPageEmpty2}
+\begin{paste}{ugUserFunMacPageEmpty2}{ugUserFunMacPagePatch2}
+\pastebutton{ugUserFunMacPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(x +-> if x < 0 then -x else x)(-8)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserMacrosPage}{ug06.ht}{Macros}
 <<ug06.ht>>=
@@ -30964,6 +82259,277 @@ use the library operation \axiomFun{fibonacci}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserMacrosPagePatch1}
+\begin{paste}{ugUserMacrosPageFull1}{ugUserMacrosPageEmpty1}
+\pastebutton{ugUserMacrosPageFull1}{\hidepaste}
+\tab{5}\spadcommand{macro df == D\bound{df }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty1}
+\begin{paste}{ugUserMacrosPageEmpty1}{ugUserMacrosPagePatch1}
+\pastebutton{ugUserMacrosPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{macro df == D\bound{df }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch2}
+\begin{paste}{ugUserMacrosPageFull2}{ugUserMacrosPageEmpty2}
+\pastebutton{ugUserMacrosPageFull2}{\hidepaste}
+\tab{5}\spadcommand{df(x**2 + x + 1,x)\free{df }}
+\indentrel{3}\begin{verbatim}
+   (2)  2x + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty2}
+\begin{paste}{ugUserMacrosPageEmpty2}{ugUserMacrosPagePatch2}
+\pastebutton{ugUserMacrosPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{df(x**2 + x + 1,x)\free{df }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch3}
+\begin{paste}{ugUserMacrosPageFull3}{ugUserMacrosPageEmpty3}
+\pastebutton{ugUserMacrosPageFull3}{\hidepaste}
+\tab{5}\spadcommand{macro ff(x) == x**2 + 1\bound{ff }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty3}
+\begin{paste}{ugUserMacrosPageEmpty3}{ugUserMacrosPagePatch3}
+\pastebutton{ugUserMacrosPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{macro ff(x) == x**2 + 1\bound{ff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch4}
+\begin{paste}{ugUserMacrosPageFull4}{ugUserMacrosPageEmpty4}
+\pastebutton{ugUserMacrosPageFull4}{\hidepaste}
+\tab{5}\spadcommand{ff z\free{ff }}
+\indentrel{3}\begin{verbatim}
+         2
+   (4)  z  + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty4}
+\begin{paste}{ugUserMacrosPageEmpty4}{ugUserMacrosPagePatch4}
+\pastebutton{ugUserMacrosPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{ff z\free{ff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch5}
+\begin{paste}{ugUserMacrosPageFull5}{ugUserMacrosPageEmpty5}
+\pastebutton{ugUserMacrosPageFull5}{\hidepaste}
+\tab{5}\spadcommand{macro gg(x) == ff(2*x - 2/3)\bound{gg }\free{ff }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty5}
+\begin{paste}{ugUserMacrosPageEmpty5}{ugUserMacrosPagePatch5}
+\pastebutton{ugUserMacrosPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{macro gg(x) == ff(2*x - 2/3)\bound{gg }\free{ff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch6}
+\begin{paste}{ugUserMacrosPageFull6}{ugUserMacrosPageEmpty6}
+\pastebutton{ugUserMacrosPageFull6}{\hidepaste}
+\tab{5}\spadcommand{gg(1/w)\free{gg }}
+\indentrel{3}\begin{verbatim}
+           2
+        13w  - 24w + 36
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                2
+              9w
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty6}
+\begin{paste}{ugUserMacrosPageEmpty6}{ugUserMacrosPagePatch6}
+\pastebutton{ugUserMacrosPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{gg(1/w)\free{gg }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch7}
+\begin{paste}{ugUserMacrosPageFull7}{ugUserMacrosPageEmpty7}
+\pastebutton{ugUserMacrosPageFull7}{\hidepaste}
+\tab{5}\spadcommand{macro ff(x) == gg(-x)\free{gg }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty7}
+\begin{paste}{ugUserMacrosPageEmpty7}{ugUserMacrosPagePatch7}
+\pastebutton{ugUserMacrosPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{macro ff(x) == gg(-x)\free{gg }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch8}
+\begin{paste}{ugUserMacrosPageFull8}{ugUserMacrosPageEmpty8}
+\pastebutton{ugUserMacrosPageFull8}{\hidepaste}
+\tab{5}\spadcommand{macro next == (past := present; present := future; future := past + present)\bound{next }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty8}
+\begin{paste}{ugUserMacrosPageEmpty8}{ugUserMacrosPagePatch8}
+\pastebutton{ugUserMacrosPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{macro next == (past := present; present := future; future := past + present)\bound{next }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch9}
+\begin{paste}{ugUserMacrosPageFull9}{ugUserMacrosPageEmpty9}
+\pastebutton{ugUserMacrosPageFull9}{\hidepaste}
+\tab{5}\spadcommand{present : Integer := 0\bound{present }}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty9}
+\begin{paste}{ugUserMacrosPageEmpty9}{ugUserMacrosPagePatch9}
+\pastebutton{ugUserMacrosPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{present : Integer := 0\bound{present }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch10}
+\begin{paste}{ugUserMacrosPageFull10}{ugUserMacrosPageEmpty10}
+\pastebutton{ugUserMacrosPageFull10}{\hidepaste}
+\tab{5}\spadcommand{future : Integer := 1\bound{future }}
+\indentrel{3}\begin{verbatim}
+   (10)  1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty10}
+\begin{paste}{ugUserMacrosPageEmpty10}{ugUserMacrosPagePatch10}
+\pastebutton{ugUserMacrosPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{future : Integer := 1\bound{future }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch11}
+\begin{paste}{ugUserMacrosPageFull11}{ugUserMacrosPageEmpty11}
+\pastebutton{ugUserMacrosPageFull11}{\hidepaste}
+\tab{5}\spadcommand{next\free{future }\free{present }}
+\indentrel{3}\begin{verbatim}
+   (11)  1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty11}
+\begin{paste}{ugUserMacrosPageEmpty11}{ugUserMacrosPagePatch11}
+\pastebutton{ugUserMacrosPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{next\free{future }\free{present }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch12}
+\begin{paste}{ugUserMacrosPageFull12}{ugUserMacrosPageEmpty12}
+\pastebutton{ugUserMacrosPageFull12}{\hidepaste}
+\tab{5}\spadcommand{next\free{future }\free{present }}
+\indentrel{3}\begin{verbatim}
+   (12)  2
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty12}
+\begin{paste}{ugUserMacrosPageEmpty12}{ugUserMacrosPagePatch12}
+\pastebutton{ugUserMacrosPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{next\free{future }\free{present }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch13}
+\begin{paste}{ugUserMacrosPageFull13}{ugUserMacrosPageEmpty13}
+\pastebutton{ugUserMacrosPageFull13}{\hidepaste}
+\tab{5}\spadcommand{[next for i in 1..]\free{future }\free{present }}
+\indentrel{3}\begin{verbatim}
+   (13)  [3,5,8,13,21,34,55,89,144,233,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty13}
+\begin{paste}{ugUserMacrosPageEmpty13}{ugUserMacrosPagePatch13}
+\pastebutton{ugUserMacrosPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{[next for i in 1..]\free{future }\free{present }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch14}
+\begin{paste}{ugUserMacrosPageFull14}{ugUserMacrosPageEmpty14}
+\pastebutton{ugUserMacrosPageFull14}{\hidepaste}
+\tab{5}\spadcommand{macro fibStream ==
+  present : Integer := 1
+  future : Integer := 1
+  [next for i in 1..] where
+    macro next ==
+      past := present
+      present := future
+      future := past + present
+\bound{fibstr }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty14}
+\begin{paste}{ugUserMacrosPageEmpty14}{ugUserMacrosPagePatch14}
+\pastebutton{ugUserMacrosPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{macro fibStream ==
+  present : Integer := 1
+  future : Integer := 1
+  [next for i in 1..] where
+    macro next ==
+      past := present
+      present := future
+      future := past + present
+\bound{fibstr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch15}
+\begin{paste}{ugUserMacrosPageFull15}{ugUserMacrosPageEmpty15}
+\pastebutton{ugUserMacrosPageFull15}{\hidepaste}
+\tab{5}\spadcommand{concat([0,1],fibStream)\free{fibstr }}
+\indentrel{3}\begin{verbatim}
+   (15)  [0,1,2,3,5,8,13,21,34,55,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty15}
+\begin{paste}{ugUserMacrosPageEmpty15}{ugUserMacrosPagePatch15}
+\pastebutton{ugUserMacrosPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{concat([0,1],fibStream)\free{fibstr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPagePatch16}
+\begin{paste}{ugUserMacrosPageFull16}{ugUserMacrosPageEmpty16}
+\pastebutton{ugUserMacrosPageFull16}{\hidepaste}
+\tab{5}\spadcommand{[fibonacci i for i in 1..]}
+\indentrel{3}\begin{verbatim}
+   (16)  [1,1,2,3,5,8,13,21,34,55,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMacrosPageEmpty16}
+\begin{paste}{ugUserMacrosPageEmpty16}{ugUserMacrosPagePatch16}
+\pastebutton{ugUserMacrosPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[fibonacci i for i in 1..]}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserIntroPage}{ug06.ht}{Introduction to Functions}
 \pageto{notitle}{ugTypesPkgCallPage}
@@ -31061,6 +82627,55 @@ but with different functions.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserIntroPagePatch1}
+\begin{paste}{ugUserIntroPageFull1}{ugUserIntroPageEmpty1}
+\pastebutton{ugUserIntroPageFull1}{\hidepaste}
+\tab{5}\spadcommand{factor(12)}
+\indentrel{3}\begin{verbatim}
+         2
+   (1)  2 3
+                                 Type: Factored Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserIntroPageEmpty1}
+\begin{paste}{ugUserIntroPageEmpty1}{ugUserIntroPagePatch1}
+\pastebutton{ugUserIntroPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{factor(12)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserIntroPagePatch2}
+\begin{paste}{ugUserIntroPageFull2}{ugUserIntroPageEmpty2}
+\pastebutton{ugUserIntroPageFull2}{\hidepaste}
+\tab{5}\spadcommand{3 + 4}
+\indentrel{3}\begin{verbatim}
+   (2)  7
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserIntroPageEmpty2}
+\begin{paste}{ugUserIntroPageEmpty2}{ugUserIntroPagePatch2}
+\pastebutton{ugUserIntroPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{3 + 4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserIntroPagePatch3}
+\begin{paste}{ugUserIntroPageFull3}{ugUserIntroPageEmpty3}
+\pastebutton{ugUserIntroPageFull3}{\hidepaste}
+\tab{5}\spadcommand{1 + 2 + 7}
+\indentrel{3}\begin{verbatim}
+   (3)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserIntroPageEmpty3}
+\begin{paste}{ugUserIntroPageEmpty3}{ugUserIntroPagePatch3}
+\pastebutton{ugUserIntroPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{1 + 2 + 7}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserDeclarePage}{ug06.ht}{Declaring the Type of Functions}
 \pageto{notitle}{ugTypesDeclarePage}
@@ -31145,6 +82760,81 @@ in Section 2.3\ignore{ugTypesDeclare}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserDeclarePagePatch1}
+\begin{paste}{ugUserDeclarePageFull1}{ugUserDeclarePageEmpty1}
+\pastebutton{ugUserDeclarePageFull1}{\hidepaste}
+\tab{5}\spadcommand{g: (Integer,Float,Integer) -> String}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePageEmpty1}
+\begin{paste}{ugUserDeclarePageEmpty1}{ugUserDeclarePagePatch1}
+\pastebutton{ugUserDeclarePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{g: (Integer,Float,Integer) -> String}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePagePatch2}
+\begin{paste}{ugUserDeclarePageFull2}{ugUserDeclarePageEmpty2}
+\pastebutton{ugUserDeclarePageFull2}{\hidepaste}
+\tab{5}\spadcommand{g: (INT,FLOAT,INT) -> STRING}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePageEmpty2}
+\begin{paste}{ugUserDeclarePageEmpty2}{ugUserDeclarePagePatch2}
+\pastebutton{ugUserDeclarePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{g: (INT,FLOAT,INT) -> STRING}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePagePatch3}
+\begin{paste}{ugUserDeclarePageFull3}{ugUserDeclarePageEmpty3}
+\pastebutton{ugUserDeclarePageFull3}{\hidepaste}
+\tab{5}\spadcommand{h: () -> POLY INT}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePageEmpty3}
+\begin{paste}{ugUserDeclarePageEmpty3}{ugUserDeclarePagePatch3}
+\pastebutton{ugUserDeclarePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{h: () -> POLY INT}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePagePatch4}
+\begin{paste}{ugUserDeclarePageFull4}{ugUserDeclarePageEmpty4}
+\pastebutton{ugUserDeclarePageFull4}{\hidepaste}
+\tab{5}\spadcommand{h: () -> Polynomial INT}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePageEmpty4}
+\begin{paste}{ugUserDeclarePageEmpty4}{ugUserDeclarePagePatch4}
+\pastebutton{ugUserDeclarePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{h: () -> Polynomial INT}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePagePatch5}
+\begin{paste}{ugUserDeclarePageFull5}{ugUserDeclarePageEmpty5}
+\pastebutton{ugUserDeclarePageFull5}{\hidepaste}
+\tab{5}\spadcommand{h: () -> POLY Integer}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDeclarePageEmpty5}
+\begin{paste}{ugUserDeclarePageEmpty5}{ugUserDeclarePagePatch5}
+\pastebutton{ugUserDeclarePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{h: () -> POLY Integer}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserOnePage}{ug06.ht}{One-Line Functions}
 <<ug06.ht>>=
@@ -31213,6 +82903,165 @@ prime.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserOnePagePatch1}
+\begin{paste}{ugUserOnePageFull1}{ugUserOnePageEmpty1}
+\pastebutton{ugUserOnePageFull1}{\hidepaste}
+\tab{5}\spadcommand{fac n == if n < 3 then n else n * fac(n-1)\bound{fac }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty1}
+\begin{paste}{ugUserOnePageEmpty1}{ugUserOnePagePatch1}
+\pastebutton{ugUserOnePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{fac n == if n < 3 then n else n * fac(n-1)\bound{fac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch2}
+\begin{paste}{ugUserOnePageFull2}{ugUserOnePageEmpty2}
+\pastebutton{ugUserOnePageFull2}{\hidepaste}
+\tab{5}\spadcommand{fac 10\free{fac }}
+\indentrel{3}\begin{verbatim}
+   (2)  3628800
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty2}
+\begin{paste}{ugUserOnePageEmpty2}{ugUserOnePagePatch2}
+\pastebutton{ugUserOnePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fac 10\free{fac }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch3}
+\begin{paste}{ugUserOnePageFull3}{ugUserOnePageEmpty3}
+\pastebutton{ugUserOnePageFull3}{\hidepaste}
+\tab{5}\spadcommand{s n == reduce(+,[1/i for i in 1..n])\bound{s }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty3}
+\begin{paste}{ugUserOnePageEmpty3}{ugUserOnePagePatch3}
+\pastebutton{ugUserOnePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{s n == reduce(+,[1/i for i in 1..n])\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch4}
+\begin{paste}{ugUserOnePageFull4}{ugUserOnePageEmpty4}
+\pastebutton{ugUserOnePageFull4}{\hidepaste}
+\tab{5}\spadcommand{s 50\free{s }}
+\indentrel{3}\begin{verbatim}
+        13943237577224054960759
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+         3099044504245996706400
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty4}
+\begin{paste}{ugUserOnePageEmpty4}{ugUserOnePagePatch4}
+\pastebutton{ugUserOnePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{s 50\free{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch5}
+\begin{paste}{ugUserOnePageFull5}{ugUserOnePageEmpty5}
+\pastebutton{ugUserOnePageFull5}{\hidepaste}
+\tab{5}\spadcommand{mersenne i == 2**i - 1\bound{mersenne }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty5}
+\begin{paste}{ugUserOnePageEmpty5}{ugUserOnePagePatch5}
+\pastebutton{ugUserOnePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{mersenne i == 2**i - 1\bound{mersenne }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch6}
+\begin{paste}{ugUserOnePageFull6}{ugUserOnePageEmpty6}
+\pastebutton{ugUserOnePageFull6}{\hidepaste}
+\tab{5}\spadcommand{mersenne\free{mersenne }}
+\indentrel{3}\begin{verbatim}
+                       i
+   (6)  mersenne i == 2  - 1
+                          Type: FunctionCalled mersenne
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty6}
+\begin{paste}{ugUserOnePageEmpty6}{ugUserOnePagePatch6}
+\pastebutton{ugUserOnePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{mersenne\free{mersenne }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch7}
+\begin{paste}{ugUserOnePageFull7}{ugUserOnePageEmpty7}
+\pastebutton{ugUserOnePageFull7}{\hidepaste}
+\tab{5}\spadcommand{[mersenne i for i in 1..]\free{mersenne }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1,3,7,15,31,63,127,255,511,1023,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty7}
+\begin{paste}{ugUserOnePageEmpty7}{ugUserOnePagePatch7}
+\pastebutton{ugUserOnePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{[mersenne i for i in 1..]\free{mersenne }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch8}
+\begin{paste}{ugUserOnePageFull8}{ugUserOnePageEmpty8}
+\pastebutton{ugUserOnePageFull8}{\hidepaste}
+\tab{5}\spadcommand{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]\bound{mersenneIndex }\free{mersenne }}
+\indentrel{3}\begin{verbatim}
+   (8)  [2,3,5,7,13,17,19,31,61,89,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty8}
+\begin{paste}{ugUserOnePageEmpty8}{ugUserOnePagePatch8}
+\pastebutton{ugUserOnePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]\bound{mersenneIndex }\free{mersenne }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch9}
+\begin{paste}{ugUserOnePageFull9}{ugUserOnePageEmpty9}
+\pastebutton{ugUserOnePageFull9}{\hidepaste}
+\tab{5}\spadcommand{mersennePrime n == mersenne mersenneIndex(n)\free{mersenne mersenneIndex }\bound{mersennePrime }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty9}
+\begin{paste}{ugUserOnePageEmpty9}{ugUserOnePagePatch9}
+\pastebutton{ugUserOnePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{mersennePrime n == mersenne mersenneIndex(n)\free{mersenne mersenneIndex }\bound{mersennePrime }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePagePatch10}
+\begin{paste}{ugUserOnePageFull10}{ugUserOnePageEmpty10}
+\pastebutton{ugUserOnePageFull10}{\hidepaste}
+\tab{5}\spadcommand{mersennePrime 5\free{mersennePrime }}
+\indentrel{3}\begin{verbatim}
+   (10)  8191
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserOnePageEmpty10}
+\begin{paste}{ugUserOnePageEmpty10}{ugUserOnePagePatch10}
+\pastebutton{ugUserOnePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{mersennePrime 5\free{mersennePrime }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserDecUndecPage}{ug06.ht}{Declared vs. Undeclared Functions}
 \pageto{notitle}{ugCategoriesPage}
@@ -31279,6 +83128,133 @@ Axiom has a formal idea of categories for what ``makes sense.''
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserDecUndecPagePatch1}
+\begin{paste}{ugUserDecUndecPageFull1}{ugUserDecUndecPageEmpty1}
+\pastebutton{ugUserDecUndecPageFull1}{\hidepaste}
+\tab{5}\spadcommand{f(x: Integer): Integer == x + 1\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty1}
+\begin{paste}{ugUserDecUndecPageEmpty1}{ugUserDecUndecPagePatch1}
+\pastebutton{ugUserDecUndecPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f(x: Integer): Integer == x + 1\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch2}
+\begin{paste}{ugUserDecUndecPageFull2}{ugUserDecUndecPageEmpty2}
+\pastebutton{ugUserDecUndecPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f 9\free{f }}
+\indentrel{3}\begin{verbatim}
+   (2)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty2}
+\begin{paste}{ugUserDecUndecPageEmpty2}{ugUserDecUndecPagePatch2}
+\pastebutton{ugUserDecUndecPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f 9\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch3}
+\begin{paste}{ugUserDecUndecPageFull3}{ugUserDecUndecPageEmpty3}
+\pastebutton{ugUserDecUndecPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(-2.0)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  - 1
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty3}
+\begin{paste}{ugUserDecUndecPageEmpty3}{ugUserDecUndecPagePatch3}
+\pastebutton{ugUserDecUndecPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(-2.0)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch4}
+\begin{paste}{ugUserDecUndecPageFull4}{ugUserDecUndecPageEmpty4}
+\pastebutton{ugUserDecUndecPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f(2/3)\free{f }}
+\indentrel{3}\begin{verbatim}
+   2
+   Ä
+   3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty4}
+\begin{paste}{ugUserDecUndecPageEmpty4}{ugUserDecUndecPagePatch4}
+\pastebutton{ugUserDecUndecPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f(2/3)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch5}
+\begin{paste}{ugUserDecUndecPageFull5}{ugUserDecUndecPageEmpty5}
+\pastebutton{ugUserDecUndecPageFull5}{\hidepaste}
+\tab{5}\spadcommand{g x == x + 1\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty5}
+\begin{paste}{ugUserDecUndecPageEmpty5}{ugUserDecUndecPagePatch5}
+\pastebutton{ugUserDecUndecPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{g x == x + 1\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch6}
+\begin{paste}{ugUserDecUndecPageFull6}{ugUserDecUndecPageEmpty6}
+\pastebutton{ugUserDecUndecPageFull6}{\hidepaste}
+\tab{5}\spadcommand{g 9\free{g }}
+\indentrel{3}\begin{verbatim}
+   (5)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty6}
+\begin{paste}{ugUserDecUndecPageEmpty6}{ugUserDecUndecPagePatch6}
+\pastebutton{ugUserDecUndecPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{g 9\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch7}
+\begin{paste}{ugUserDecUndecPageFull7}{ugUserDecUndecPageEmpty7}
+\pastebutton{ugUserDecUndecPageFull7}{\hidepaste}
+\tab{5}\spadcommand{g(2/3)\free{g }}
+\indentrel{3}\begin{verbatim}
+        5
+   (6)  Ä
+        3
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty7}
+\begin{paste}{ugUserDecUndecPageEmpty7}{ugUserDecUndecPagePatch7}
+\pastebutton{ugUserDecUndecPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g(2/3)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPagePatch8}
+\begin{paste}{ugUserDecUndecPageFull8}{ugUserDecUndecPageEmpty8}
+\pastebutton{ugUserDecUndecPageFull8}{\hidepaste}
+\tab{5}\spadcommand{g("axiom")\free{g }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDecUndecPageEmpty8}
+\begin{paste}{ugUserDecUndecPageEmpty8}{ugUserDecUndecPagePatch8}
+\pastebutton{ugUserDecUndecPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g("axiom")\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserDecOpersPage}{ug06.ht}{Functions vs. Operations}
 \pageto{notitle}{MappingPackageOneXmpPage}
@@ -31392,6 +83368,84 @@ in the latter case.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserDelayPagePatch1}
+\begin{paste}{ugUserDelayPageFull1}{ugUserDelayPageEmpty1}
+\pastebutton{ugUserDelayPageFull1}{\hidepaste}
+\tab{5}\spadcommand{sin24() == sin(24.0)\bound{sin24 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPageEmpty1}
+\begin{paste}{ugUserDelayPageEmpty1}{ugUserDelayPagePatch1}
+\pastebutton{ugUserDelayPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{sin24() == sin(24.0)\bound{sin24 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPagePatch2}
+\begin{paste}{ugUserDelayPageFull2}{ugUserDelayPageEmpty2}
+\pastebutton{ugUserDelayPageFull2}{\hidepaste}
+\tab{5}\spadcommand{sin24()\free{sin24 }}
+\indentrel{3}\begin{verbatim}
+   (2)  - 0.9055783620 0662384514
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPageEmpty2}
+\begin{paste}{ugUserDelayPageEmpty2}{ugUserDelayPagePatch2}
+\pastebutton{ugUserDelayPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sin24()\free{sin24 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPagePatch3}
+\begin{paste}{ugUserDelayPageFull3}{ugUserDelayPageEmpty3}
+\pastebutton{ugUserDelayPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sin24\free{sin24 }}
+\indentrel{3}\begin{verbatim}
+   (3)  sin24 () == sin(24.0)
+                             Type: FunctionCalled sin24
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPageEmpty3}
+\begin{paste}{ugUserDelayPageEmpty3}{ugUserDelayPagePatch3}
+\pastebutton{ugUserDelayPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sin24\free{sin24 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPagePatch4}
+\begin{paste}{ugUserDelayPageFull4}{ugUserDelayPageEmpty4}
+\pastebutton{ugUserDelayPageFull4}{\hidepaste}
+\tab{5}\spadcommand{cos24 == cos(24.0)\bound{cos24 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPageEmpty4}
+\begin{paste}{ugUserDelayPageEmpty4}{ugUserDelayPagePatch4}
+\pastebutton{ugUserDelayPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{cos24 == cos(24.0)\bound{cos24 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPagePatch5}
+\begin{paste}{ugUserDelayPageFull5}{ugUserDelayPageEmpty5}
+\pastebutton{ugUserDelayPageFull5}{\hidepaste}
+\tab{5}\spadcommand{cos24\free{cos24 }}
+\indentrel{3}\begin{verbatim}
+   (5)  0.4241790073 3699697594
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDelayPageEmpty5}
+\begin{paste}{ugUserDelayPageEmpty5}{ugUserDelayPagePatch5}
+\pastebutton{ugUserDelayPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{cos24\free{cos24 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserUsePage}{ug06.ht}{How Axiom Determines What Function to Use}
 \pageto{notitle}{ugTypesPkgCallPage}
@@ -31495,6 +83549,129 @@ of type \axiomType{Polynomial (Fraction (Integer))}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserUsePagePatch1}
+\begin{paste}{ugUserUsePageFull1}{ugUserUsePageEmpty1}
+\pastebutton{ugUserUsePageFull1}{\hidepaste}
+\tab{5}\spadcommand{sin x == 1.0\bound{sin }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty1}
+\begin{paste}{ugUserUsePageEmpty1}{ugUserUsePagePatch1}
+\pastebutton{ugUserUsePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{sin x == 1.0\bound{sin }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch2}
+\begin{paste}{ugUserUsePageFull2}{ugUserUsePageEmpty2}
+\pastebutton{ugUserUsePageFull2}{\hidepaste}
+\tab{5}\spadcommand{sin 4.3\free{sin }}
+\indentrel{3}\begin{verbatim}
+   (2)  1.0
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty2}
+\begin{paste}{ugUserUsePageEmpty2}{ugUserUsePagePatch2}
+\pastebutton{ugUserUsePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sin 4.3\free{sin }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch3}
+\begin{paste}{ugUserUsePageFull3}{ugUserUsePageEmpty3}
+\pastebutton{ugUserUsePageFull3}{\hidepaste}
+\tab{5}\spadcommand{sin(4.3)$Float}
+\indentrel{3}\begin{verbatim}
+   (3)  - 0.9161659367 4945498404
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty3}
+\begin{paste}{ugUserUsePageEmpty3}{ugUserUsePagePatch3}
+\pastebutton{ugUserUsePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sin(4.3)$Float}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch4}
+\begin{paste}{ugUserUsePageFull4}{ugUserUsePageEmpty4}
+\pastebutton{ugUserUsePageFull4}{\hidepaste}
+\tab{5}\spadcommand{sin(34.6)$Float}
+\indentrel{3}\begin{verbatim}
+   (4)  - 0.0424680347 1695010154 3
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty4}
+\begin{paste}{ugUserUsePageEmpty4}{ugUserUsePagePatch4}
+\pastebutton{ugUserUsePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sin(34.6)$Float}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch5}
+\begin{paste}{ugUserUsePageFull5}{ugUserUsePageEmpty5}
+\pastebutton{ugUserUsePageFull5}{\hidepaste}
+\tab{5}\spadcommand{sin x == sin x\bound{sin1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty5}
+\begin{paste}{ugUserUsePageEmpty5}{ugUserUsePagePatch5}
+\pastebutton{ugUserUsePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sin x == sin x\bound{sin1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch6}
+\begin{paste}{ugUserUsePageFull6}{ugUserUsePageEmpty6}
+\pastebutton{ugUserUsePageFull6}{\hidepaste}
+\tab{5}\spadcommand{sin 4.3\free{sin1 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty6}
+\begin{paste}{ugUserUsePageEmpty6}{ugUserUsePagePatch6}
+\pastebutton{ugUserUsePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{sin 4.3\free{sin1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch7}
+\begin{paste}{ugUserUsePageFull7}{ugUserUsePageEmpty7}
+\pastebutton{ugUserUsePageFull7}{\hidepaste}
+\tab{5}\spadcommand{sin x == sin(x)$Float\bound{sin2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty7}
+\begin{paste}{ugUserUsePageEmpty7}{ugUserUsePagePatch7}
+\pastebutton{ugUserUsePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{sin x == sin(x)$Float\bound{sin2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePagePatch8}
+\begin{paste}{ugUserUsePageFull8}{ugUserUsePageEmpty8}
+\pastebutton{ugUserUsePageFull8}{\hidepaste}
+\tab{5}\spadcommand{sin 4.3\free{sin2 }}
+\indentrel{3}\begin{verbatim}
+   (7)  - 0.9161659367 4945498404
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserUsePageEmpty8}
+\begin{paste}{ugUserUsePageEmpty8}{ugUserUsePagePatch8}
+\pastebutton{ugUserUsePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{sin 4.3\free{sin2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserCompIntPage}{ug06.ht}{Compiling vs. Interpreting}
 \pageto{notitle}{ugTypesSubdomainsPage}
@@ -31583,6 +83760,67 @@ certainly true that you will get the best performance by issuing
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserCompIntPagePatch1}
+\begin{paste}{ugUserCompIntPageFull1}{ugUserCompIntPageEmpty1}
+\pastebutton{ugUserCompIntPageFull1}{\hidepaste}
+\tab{5}\spadcommand{varPolys(vars) ==
+  for var in vars repeat
+    output(1 :: UnivariatePolynomial(var,Integer))
+\bound{varPolys }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCompIntPageEmpty1}
+\begin{paste}{ugUserCompIntPageEmpty1}{ugUserCompIntPagePatch1}
+\pastebutton{ugUserCompIntPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{varPolys(vars) ==
+  for var in vars repeat
+    output(1 :: UnivariatePolynomial(var,Integer))
+\bound{varPolys }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCompIntPagePatch2}
+\begin{paste}{ugUserCompIntPageFull2}{ugUserCompIntPageEmpty2}
+\pastebutton{ugUserCompIntPageFull2}{\hidepaste}
+\tab{5}\spadcommand{varPolys ['x,'y,'z]\free{varPolys }}
+\indentrel{3}\begin{verbatim}
+   1
+   1
+   1
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCompIntPageEmpty2}
+\begin{paste}{ugUserCompIntPageEmpty2}{ugUserCompIntPagePatch2}
+\pastebutton{ugUserCompIntPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{varPolys ['x,'y,'z]\free{varPolys }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCompIntPagePatch3}
+\begin{paste}{ugUserCompIntPageFull3}{ugUserCompIntPageEmpty3}
+\pastebutton{ugUserCompIntPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for var in ['x,'y,'z] repeat
+  output(1 :: UnivariatePolynomial(var,Integer))
+}
+\indentrel{3}\begin{verbatim}
+   1
+   1
+   1
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCompIntPageEmpty3}
+\begin{paste}{ugUserCompIntPageEmpty3}{ugUserCompIntPagePatch3}
+\pastebutton{ugUserCompIntPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for var in ['x,'y,'z] repeat
+  output(1 :: UnivariatePolynomial(var,Integer))
+}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserPiecePage}{ug06.ht}{Piece-Wise Function Definitions}
 \pageto{notitle}{ugUserPieceBasicPage}
@@ -31719,6 +83957,239 @@ What is the Axiom's definition of \axiom{eleven}?
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserPieceBasicPagePatch1}
+\begin{paste}{ugUserPieceBasicPageFull1}{ugUserPieceBasicPageEmpty1}
+\pastebutton{ugUserPieceBasicPageFull1}{\hidepaste}
+\tab{5}\spadcommand{fact(0) == 1\bound{fact0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty1}
+\begin{paste}{ugUserPieceBasicPageEmpty1}{ugUserPieceBasicPagePatch1}
+\pastebutton{ugUserPieceBasicPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{fact(0) == 1\bound{fact0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch2}
+\begin{paste}{ugUserPieceBasicPageFull2}{ugUserPieceBasicPageEmpty2}
+\pastebutton{ugUserPieceBasicPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fact(n | n > 0) == n * fact(n - 1)\free{fact0 }\bound{factn }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty2}
+\begin{paste}{ugUserPieceBasicPageEmpty2}{ugUserPieceBasicPagePatch2}
+\pastebutton{ugUserPieceBasicPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fact(n | n > 0) == n * fact(n - 1)\free{fact0 }\bound{factn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch3}
+\begin{paste}{ugUserPieceBasicPageFull3}{ugUserPieceBasicPageEmpty3}
+\pastebutton{ugUserPieceBasicPageFull3}{\hidepaste}
+\tab{5}\spadcommand{fact(3)\free{factn }}
+\indentrel{3}\begin{verbatim}
+   (3)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty3}
+\begin{paste}{ugUserPieceBasicPageEmpty3}{ugUserPieceBasicPagePatch3}
+\pastebutton{ugUserPieceBasicPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{fact(3)\free{factn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch4}
+\begin{paste}{ugUserPieceBasicPageFull4}{ugUserPieceBasicPageEmpty4}
+\pastebutton{ugUserPieceBasicPageFull4}{\hidepaste}
+\tab{5}\spadcommand{fact(-3)\free{factn }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty4}
+\begin{paste}{ugUserPieceBasicPageEmpty4}{ugUserPieceBasicPagePatch4}
+\pastebutton{ugUserPieceBasicPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{fact(-3)\free{factn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch5}
+\begin{paste}{ugUserPieceBasicPageFull5}{ugUserPieceBasicPageEmpty5}
+\pastebutton{ugUserPieceBasicPageFull5}{\hidepaste}
+\tab{5}\spadcommand{facto(0) == 1\bound{facto0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty5}
+\begin{paste}{ugUserPieceBasicPageEmpty5}{ugUserPieceBasicPagePatch5}
+\pastebutton{ugUserPieceBasicPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{facto(0) == 1\bound{facto0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch6}
+\begin{paste}{ugUserPieceBasicPageFull6}{ugUserPieceBasicPageEmpty6}
+\pastebutton{ugUserPieceBasicPageFull6}{\hidepaste}
+\tab{5}\spadcommand{facto(n | n < 0) == error "arguments to facto must be non-negative"\free{facto0 }\bound{factop }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty6}
+\begin{paste}{ugUserPieceBasicPageEmpty6}{ugUserPieceBasicPagePatch6}
+\pastebutton{ugUserPieceBasicPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{facto(n | n < 0) == error "arguments to facto must be non-negative"\free{facto0 }\bound{factop }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch7}
+\begin{paste}{ugUserPieceBasicPageFull7}{ugUserPieceBasicPageEmpty7}
+\pastebutton{ugUserPieceBasicPageFull7}{\hidepaste}
+\tab{5}\spadcommand{facto(n) == n * facto(n - 1)\free{factop }\bound{facton }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty7}
+\begin{paste}{ugUserPieceBasicPageEmpty7}{ugUserPieceBasicPagePatch7}
+\pastebutton{ugUserPieceBasicPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{facto(n) == n * facto(n - 1)\free{factop }\bound{facton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch8}
+\begin{paste}{ugUserPieceBasicPageFull8}{ugUserPieceBasicPageEmpty8}
+\pastebutton{ugUserPieceBasicPageFull8}{\hidepaste}
+\tab{5}\spadcommand{facto(3)\free{facton }}
+\indentrel{3}\begin{verbatim}
+   (7)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty8}
+\begin{paste}{ugUserPieceBasicPageEmpty8}{ugUserPieceBasicPagePatch8}
+\pastebutton{ugUserPieceBasicPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{facto(3)\free{facton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch9}
+\begin{paste}{ugUserPieceBasicPageFull9}{ugUserPieceBasicPageEmpty9}
+\pastebutton{ugUserPieceBasicPageFull9}{\hidepaste}
+\tab{5}\spadcommand{facto(-7)\free{facton }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty9}
+\begin{paste}{ugUserPieceBasicPageEmpty9}{ugUserPieceBasicPagePatch9}
+\pastebutton{ugUserPieceBasicPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{facto(-7)\free{facton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch10}
+\begin{paste}{ugUserPieceBasicPageFull10}{ugUserPieceBasicPageEmpty10}
+\pastebutton{ugUserPieceBasicPageFull10}{\hidepaste}
+\tab{5}\spadcommand{)display value facto\free{facton }}
+\indentrel{3}\begin{verbatim}
+   Definition:
+     facto 0 == 1
+     facto (n | n < 0) ==
+       error(arguments to facto must be non-negative)
+     facto n == n facto(n - 1)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty10}
+\begin{paste}{ugUserPieceBasicPageEmpty10}{ugUserPieceBasicPagePatch10}
+\pastebutton{ugUserPieceBasicPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{)display value facto\free{facton }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch11}
+\begin{paste}{ugUserPieceBasicPageFull11}{ugUserPieceBasicPageEmpty11}
+\pastebutton{ugUserPieceBasicPageFull11}{\hidepaste}
+\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty11}
+\begin{paste}{ugUserPieceBasicPageEmpty11}{ugUserPieceBasicPagePatch11}
+\pastebutton{ugUserPieceBasicPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch12}
+\begin{paste}{ugUserPieceBasicPageFull12}{ugUserPieceBasicPageEmpty12}
+\pastebutton{ugUserPieceBasicPageFull12}{\hidepaste}
+\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty12}
+\begin{paste}{ugUserPieceBasicPageEmpty12}{ugUserPieceBasicPagePatch12}
+\pastebutton{ugUserPieceBasicPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch13}
+\begin{paste}{ugUserPieceBasicPageFull13}{ugUserPieceBasicPageEmpty13}
+\pastebutton{ugUserPieceBasicPageFull13}{\hidepaste}
+\tab{5}\spadcommand{elevens := [eleven(i) for i in 0..]\bound{ff2 }\free{ff1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [11,11,11,11,11,11,11,11,11,11,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty13}
+\begin{paste}{ugUserPieceBasicPageEmpty13}{ugUserPieceBasicPagePatch13}
+\pastebutton{ugUserPieceBasicPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{elevens := [eleven(i) for i in 0..]\bound{ff2 }\free{ff1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch14}
+\begin{paste}{ugUserPieceBasicPageFull14}{ugUserPieceBasicPageEmpty14}
+\pastebutton{ugUserPieceBasicPageFull14}{\hidepaste}
+\tab{5}\spadcommand{elevens 200\free{ff2 }}
+\indentrel{3}\begin{verbatim}
+   (11)  11
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty14}
+\begin{paste}{ugUserPieceBasicPageEmpty14}{ugUserPieceBasicPagePatch14}
+\pastebutton{ugUserPieceBasicPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{elevens 200\free{ff2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPagePatch15}
+\begin{paste}{ugUserPieceBasicPageFull15}{ugUserPieceBasicPageEmpty15}
+\pastebutton{ugUserPieceBasicPageFull15}{\hidepaste}
+\tab{5}\spadcommand{)display value eleven\free{ff2 }}
+\indentrel{3}\begin{verbatim}
+   Definition:
+     eleven (m | m < 1) == m + 11
+     eleven m == eleven(eleven(m - 12))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPieceBasicPageEmpty15}
+\begin{paste}{ugUserPieceBasicPageEmpty15}{ugUserPieceBasicPagePatch15}
+\pastebutton{ugUserPieceBasicPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{)display value eleven\free{ff2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserPiecePickingPage}{ug06.ht}{Picking Up the Pieces}
 \pageto{notitle}{ugUserPieceBasicPage}
@@ -31852,6 +84323,198 @@ Check it at \axiom{n= 100}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserPiecePickingPagePatch1}
+\begin{paste}{ugUserPiecePickingPageFull1}{ugUserPiecePickingPageEmpty1}
+\pastebutton{ugUserPiecePickingPageFull1}{\hidepaste}
+\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty1}
+\begin{paste}{ugUserPiecePickingPageEmpty1}{ugUserPiecePickingPagePatch1}
+\pastebutton{ugUserPiecePickingPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch2}
+\begin{paste}{ugUserPiecePickingPageFull2}{ugUserPiecePickingPageEmpty2}
+\pastebutton{ugUserPiecePickingPageFull2}{\hidepaste}
+\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty2}
+\begin{paste}{ugUserPiecePickingPageEmpty2}{ugUserPiecePickingPagePatch2}
+\pastebutton{ugUserPiecePickingPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch3}
+\begin{paste}{ugUserPiecePickingPageFull3}{ugUserPiecePickingPageEmpty3}
+\pastebutton{ugUserPiecePickingPageFull3}{\hidepaste}
+\tab{5}\spadcommand{minusEleven(n) ==
+  n >= 0 => n - 11
+  minusEleven (5 + minusEleven(n + 7))
+\bound{rf1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty3}
+\begin{paste}{ugUserPiecePickingPageEmpty3}{ugUserPiecePickingPagePatch3}
+\pastebutton{ugUserPiecePickingPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{minusEleven(n) ==
+  n >= 0 => n - 11
+  minusEleven (5 + minusEleven(n + 7))
+\bound{rf1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch4}
+\begin{paste}{ugUserPiecePickingPageFull4}{ugUserPiecePickingPageEmpty4}
+\pastebutton{ugUserPiecePickingPageFull4}{\hidepaste}
+\tab{5}\spadcommand{s(0) == 1\bound{rf2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty4}
+\begin{paste}{ugUserPiecePickingPageEmpty4}{ugUserPiecePickingPagePatch4}
+\pastebutton{ugUserPiecePickingPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{s(0) == 1\bound{rf2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch5}
+\begin{paste}{ugUserPiecePickingPageFull5}{ugUserPiecePickingPageEmpty5}
+\pastebutton{ugUserPiecePickingPageFull5}{\hidepaste}
+\tab{5}\spadcommand{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3 }\free{rf2 rf1 ff1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty5}
+\begin{paste}{ugUserPiecePickingPageEmpty5}{ugUserPiecePickingPagePatch5}
+\pastebutton{ugUserPiecePickingPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3 }\free{rf2 rf1 ff1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch6}
+\begin{paste}{ugUserPiecePickingPageFull6}{ugUserPiecePickingPageEmpty6}
+\pastebutton{ugUserPiecePickingPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[s(n) for n in 0..]\free{rf3 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1,1,1,1,1,1,1,1,1,1,...]
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty6}
+\begin{paste}{ugUserPiecePickingPageEmpty6}{ugUserPiecePickingPagePatch6}
+\pastebutton{ugUserPiecePickingPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[s(n) for n in 0..]\free{rf3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch7}
+\begin{paste}{ugUserPiecePickingPageFull7}{ugUserPiecePickingPageEmpty7}
+\pastebutton{ugUserPiecePickingPageFull7}{\hidepaste}
+\tab{5}\spadcommand{t(1) == s(0)\bound{t1 }\free{rf4 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty7}
+\begin{paste}{ugUserPiecePickingPageEmpty7}{ugUserPiecePickingPagePatch7}
+\pastebutton{ugUserPiecePickingPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{t(1) == s(0)\bound{t1 }\free{rf4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch8}
+\begin{paste}{ugUserPiecePickingPageFull8}{ugUserPiecePickingPageEmpty8}
+\pastebutton{ugUserPiecePickingPageFull8}{\hidepaste}
+\tab{5}\spadcommand{t(n | even?(n)) == s(n quo 2)\free{t1 }\bound{t2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty8}
+\begin{paste}{ugUserPiecePickingPageEmpty8}{ugUserPiecePickingPagePatch8}
+\pastebutton{ugUserPiecePickingPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{t(n | even?(n)) == s(n quo 2)\free{t1 }\bound{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch9}
+\begin{paste}{ugUserPiecePickingPageFull9}{ugUserPiecePickingPageEmpty9}
+\pastebutton{ugUserPiecePickingPageFull9}{\hidepaste}
+\tab{5}\spadcommand{t(p) == s(- p quo 2)\free{t2 }\bound{t3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty9}
+\begin{paste}{ugUserPiecePickingPageEmpty9}{ugUserPiecePickingPagePatch9}
+\pastebutton{ugUserPiecePickingPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{t(p) == s(- p quo 2)\free{t2 }\bound{t3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch10}
+\begin{paste}{ugUserPiecePickingPageFull10}{ugUserPiecePickingPageEmpty10}
+\pastebutton{ugUserPiecePickingPageFull10}{\hidepaste}
+\tab{5}\spadcommand{)display value t\free{t2 }}
+\indentrel{3}\begin{verbatim}
+   Definition:
+     t 1 == s(0)
+     t (p | even?(p)) == s(p quo 2)
+     t p == s(- p quo 2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty10}
+\begin{paste}{ugUserPiecePickingPageEmpty10}{ugUserPiecePickingPagePatch10}
+\pastebutton{ugUserPiecePickingPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{)display value t\free{t2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch11}
+\begin{paste}{ugUserPiecePickingPageFull11}{ugUserPiecePickingPageEmpty11}
+\pastebutton{ugUserPiecePickingPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[t(i) for i in 1..]\free{t3 }\bound{t4 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [1,1,1,1,1,1,1,1,1,1,...]
+                          Type: Stream Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty11}
+\begin{paste}{ugUserPiecePickingPageEmpty11}{ugUserPiecePickingPagePatch11}
+\pastebutton{ugUserPiecePickingPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[t(i) for i in 1..]\free{t3 }\bound{t4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPagePatch12}
+\begin{paste}{ugUserPiecePickingPageFull12}{ugUserPiecePickingPageEmpty12}
+\pastebutton{ugUserPiecePickingPageFull12}{\hidepaste}
+\tab{5}\spadcommand{t(100)\free{t4 }}
+\indentrel{3}\begin{verbatim}
+   (11)  1
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePickingPageEmpty12}
+\begin{paste}{ugUserPiecePickingPageEmpty12}{ugUserPiecePickingPagePatch12}
+\pastebutton{ugUserPiecePickingPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{t(100)\free{t4 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserPiecePredPage}{ug06.ht}{Predicates}
 \pageto{notitle}{ugUserPieceBasicPage}
@@ -31937,6 +84600,128 @@ Try it out.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserPiecePredPagePatch1}
+\begin{paste}{ugUserPiecePredPageFull1}{ugUserPiecePredPageEmpty1}
+\pastebutton{ugUserPiecePredPageFull1}{\hidepaste}
+\tab{5}\spadcommand{opposite 'right == 'left}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty1}
+\begin{paste}{ugUserPiecePredPageEmpty1}{ugUserPiecePredPagePatch1}
+\pastebutton{ugUserPiecePredPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{opposite 'right == 'left}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch2}
+\begin{paste}{ugUserPiecePredPageFull2}{ugUserPiecePredPageEmpty2}
+\pastebutton{ugUserPiecePredPageFull2}{\hidepaste}
+\tab{5}\spadcommand{opposite (x | x = 'left) == 'right}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty2}
+\begin{paste}{ugUserPiecePredPageEmpty2}{ugUserPiecePredPagePatch2}
+\pastebutton{ugUserPiecePredPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{opposite (x | x = 'left) == 'right}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch3}
+\begin{paste}{ugUserPiecePredPageFull3}{ugUserPiecePredPageEmpty3}
+\pastebutton{ugUserPiecePredPageFull3}{\hidepaste}
+\tab{5}\spadcommand{for x in ['right,'left,'inbetween] repeat output opposite x}
+\indentrel{3}\begin{verbatim}
+   left
+   right
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty3}
+\begin{paste}{ugUserPiecePredPageEmpty3}{ugUserPiecePredPagePatch3}
+\pastebutton{ugUserPiecePredPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{for x in ['right,'left,'inbetween] repeat output opposite x}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch4}
+\begin{paste}{ugUserPiecePredPageFull4}{ugUserPiecePredPageEmpty4}
+\pastebutton{ugUserPiecePredPageFull4}{\hidepaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty4}
+\begin{paste}{ugUserPiecePredPageEmpty4}{ugUserPiecePredPagePatch4}
+\pastebutton{ugUserPiecePredPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch5}
+\begin{paste}{ugUserPiecePredPageFull5}{ugUserPiecePredPageEmpty5}
+\pastebutton{ugUserPiecePredPageFull5}{\hidepaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty5}
+\begin{paste}{ugUserPiecePredPageEmpty5}{ugUserPiecePredPagePatch5}
+\pastebutton{ugUserPiecePredPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch6}
+\begin{paste}{ugUserPiecePredPageFull6}{ugUserPiecePredPageEmpty6}
+\pastebutton{ugUserPiecePredPageFull6}{\hidepaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true\bound{ifq1a }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty6}
+\begin{paste}{ugUserPiecePredPageEmpty6}{ugUserPiecePredPagePatch6}
+\pastebutton{ugUserPiecePredPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true\bound{ifq1a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch7}
+\begin{paste}{ugUserPiecePredPageFull7}{ugUserPiecePredPageEmpty7}
+\pastebutton{ugUserPiecePredPageFull7}{\hidepaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x,y) == false\bound{ifq1b }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty7}
+\begin{paste}{ugUserPiecePredPageEmpty7}{ugUserPiecePredPagePatch7}
+\pastebutton{ugUserPiecePredPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{inFirstHalfQuadrant(x,y) == false\bound{ifq1b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPagePatch8}
+\begin{paste}{ugUserPiecePredPageFull8}{ugUserPiecePredPageEmpty8}
+\pastebutton{ugUserPiecePredPageFull8}{\hidepaste}
+\tab{5}\spadcommand{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b }}
+\indentrel{3}\begin{verbatim}
+   (7)  [false,false,false,true,true]
+                                     Type: List Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPiecePredPageEmpty8}
+\begin{paste}{ugUserPiecePredPageEmpty8}{ugUserPiecePredPagePatch8}
+\pastebutton{ugUserPiecePredPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserCachePage}{ug06.ht}{Caching Previously Computed Results}
 \pageto{notitle}{ugUserFreeLocalPage}
@@ -32012,6 +84797,93 @@ for an example.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserCachePagePatch1}
+\begin{paste}{ugUserCachePageFull1}{ugUserCachePageEmpty1}
+\pastebutton{ugUserCachePageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set functions cache 3 f g\bound{cache }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty1}
+\begin{paste}{ugUserCachePageEmpty1}{ugUserCachePagePatch1}
+\pastebutton{ugUserCachePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set functions cache 3 f g\bound{cache }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePagePatch2}
+\begin{paste}{ugUserCachePageFull2}{ugUserCachePageEmpty2}
+\pastebutton{ugUserCachePageFull2}{\hidepaste}
+\tab{5}\spadcommand{f x == factorial(2**x)\bound{fdef }\free{cache }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty2}
+\begin{paste}{ugUserCachePageEmpty2}{ugUserCachePagePatch2}
+\pastebutton{ugUserCachePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f x == factorial(2**x)\bound{fdef }\free{cache }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePagePatch3}
+\begin{paste}{ugUserCachePageFull3}{ugUserCachePageEmpty3}
+\pastebutton{ugUserCachePageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(4)\free{}\free{cache }}
+\indentrel{3}\begin{verbatim}
+   (2)  20922789888000
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty3}
+\begin{paste}{ugUserCachePageEmpty3}{ugUserCachePagePatch3}
+\pastebutton{ugUserCachePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(4)\free{}\free{cache }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePagePatch4}
+\begin{paste}{ugUserCachePageFull4}{ugUserCachePageEmpty4}
+\pastebutton{ugUserCachePageFull4}{\hidepaste}
+\tab{5}\spadcommand{)set functions cache all}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty4}
+\begin{paste}{ugUserCachePageEmpty4}{ugUserCachePagePatch4}
+\pastebutton{ugUserCachePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{)set functions cache all}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePagePatch5}
+\begin{paste}{ugUserCachePageFull5}{ugUserCachePageEmpty5}
+\pastebutton{ugUserCachePageFull5}{\hidepaste}
+\tab{5}\spadcommand{)set functions cache 0}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty5}
+\begin{paste}{ugUserCachePageEmpty5}{ugUserCachePagePatch5}
+\pastebutton{ugUserCachePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)set functions cache 0}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePagePatch6}
+\begin{paste}{ugUserCachePageFull6}{ugUserCachePageEmpty6}
+\pastebutton{ugUserCachePageFull6}{\hidepaste}
+\tab{5}\spadcommand{)set functions cache 0 f g}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserCachePageEmpty6}
+\begin{paste}{ugUserCachePageEmpty6}{ugUserCachePagePatch6}
+\pastebutton{ugUserCachePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{)set functions cache 0 f g}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserRecurPage}{ug06.ht}{Recurrence Relations}
 \pageto{notitle}{ugUserFreeLocalPage}
@@ -32137,6 +85009,148 @@ Compute the Legendre polynomial of degree \axiom{6.}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserRecurPagePatch1}
+\begin{paste}{ugUserRecurPageFull1}{ugUserRecurPageEmpty1}
+\pastebutton{ugUserRecurPageFull1}{\hidepaste}
+\tab{5}\spadcommand{[fibonacci(i) for i in 0..]}
+\indentrel{3}\begin{verbatim}
+   (1)  [0,1,1,2,3,5,8,13,21,34,...]
+                                   Type: Stream Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty1}
+\begin{paste}{ugUserRecurPageEmpty1}{ugUserRecurPagePatch1}
+\pastebutton{ugUserRecurPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{[fibonacci(i) for i in 0..]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch2}
+\begin{paste}{ugUserRecurPageFull2}{ugUserRecurPageEmpty2}
+\pastebutton{ugUserRecurPageFull2}{\hidepaste}
+\tab{5}\spadcommand{fib(1) == 1\bound{fib0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty2}
+\begin{paste}{ugUserRecurPageEmpty2}{ugUserRecurPagePatch2}
+\pastebutton{ugUserRecurPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{fib(1) == 1\bound{fib0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch3}
+\begin{paste}{ugUserRecurPageFull3}{ugUserRecurPageEmpty3}
+\pastebutton{ugUserRecurPageFull3}{\hidepaste}
+\tab{5}\spadcommand{fib(2) == 1\bound{fib1 }\free{fib0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty3}
+\begin{paste}{ugUserRecurPageEmpty3}{ugUserRecurPagePatch3}
+\pastebutton{ugUserRecurPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{fib(2) == 1\bound{fib1 }\free{fib0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch4}
+\begin{paste}{ugUserRecurPageFull4}{ugUserRecurPageEmpty4}
+\pastebutton{ugUserRecurPageFull4}{\hidepaste}
+\tab{5}\spadcommand{fib(n) == fib(n-1) + fib(n-2)\bound{fibn }\free{fib1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty4}
+\begin{paste}{ugUserRecurPageEmpty4}{ugUserRecurPagePatch4}
+\pastebutton{ugUserRecurPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{fib(n) == fib(n-1) + fib(n-2)\bound{fibn }\free{fib1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch5}
+\begin{paste}{ugUserRecurPageFull5}{ugUserRecurPageEmpty5}
+\pastebutton{ugUserRecurPageFull5}{\hidepaste}
+\tab{5}\spadcommand{fib(500)\free{fibn }}
+\indentrel{3}\begin{verbatim}
+   (5)
+  139423224561697880139724382870407283950070256587697307_
+   264108962948325571622863290691557658876222521294125
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty5}
+\begin{paste}{ugUserRecurPageEmpty5}{ugUserRecurPagePatch5}
+\pastebutton{ugUserRecurPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{fib(500)\free{fibn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch6}
+\begin{paste}{ugUserRecurPageFull6}{ugUserRecurPageEmpty6}
+\pastebutton{ugUserRecurPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p(0) == 1\bound{p0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty6}
+\begin{paste}{ugUserRecurPageEmpty6}{ugUserRecurPagePatch6}
+\pastebutton{ugUserRecurPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p(0) == 1\bound{p0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch7}
+\begin{paste}{ugUserRecurPageFull7}{ugUserRecurPageEmpty7}
+\pastebutton{ugUserRecurPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p(1) == x\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty7}
+\begin{paste}{ugUserRecurPageEmpty7}{ugUserRecurPagePatch7}
+\pastebutton{ugUserRecurPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p(1) == x\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch8}
+\begin{paste}{ugUserRecurPageFull8}{ugUserRecurPageEmpty8}
+\pastebutton{ugUserRecurPageFull8}{\hidepaste}
+\tab{5}\spadcommand{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn }\free{p1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty8}
+\begin{paste}{ugUserRecurPageEmpty8}{ugUserRecurPagePatch8}
+\pastebutton{ugUserRecurPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn }\free{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPagePatch9}
+\begin{paste}{ugUserRecurPageFull9}{ugUserRecurPageEmpty9}
+\pastebutton{ugUserRecurPageFull9}{\hidepaste}
+\tab{5}\spadcommand{p(6)\free{pn }}
+\indentrel{3}\begin{verbatim}
+        231  6   315  4   105  2    5
+   (9)  ÄÄÄ x  - ÄÄÄ x  + ÄÄÄ x  - ÄÄ
+         16       16       16      16
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRecurPageEmpty9}
+\begin{paste}{ugUserRecurPageEmpty9}{ugUserRecurPagePatch9}
+\pastebutton{ugUserRecurPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p(6)\free{pn }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserMakePage}{ug06.ht}{Making Functions from Objects}
 \pageto{notitle}{MakeFunctionXmpPage}
@@ -32287,6 +85301,293 @@ InputForm}.  Thus you can use \axiomFun{function} for
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserMakePagePatch1}
+\begin{paste}{ugUserMakePageFull1}{ugUserMakePageEmpty1}
+\pastebutton{ugUserMakePageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := -x + y**2 - z**3\bound{p }}
+\indentrel{3}\begin{verbatim}
+           3    2
+   (1)  - z  + y  - x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty1}
+\begin{paste}{ugUserMakePageEmpty1}{ugUserMakePagePatch1}
+\pastebutton{ugUserMakePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := -x + y**2 - z**3\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch2}
+\begin{paste}{ugUserMakePageFull2}{ugUserMakePageEmpty2}
+\pastebutton{ugUserMakePageFull2}{\hidepaste}
+\tab{5}\spadcommand{function(p,'f0)\free{p }\bound{f0 }}
+\indentrel{3}\begin{verbatim}
+   (2)  f0
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty2}
+\begin{paste}{ugUserMakePageEmpty2}{ugUserMakePagePatch2}
+\pastebutton{ugUserMakePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{function(p,'f0)\free{p }\bound{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch3}
+\begin{paste}{ugUserMakePageFull3}{ugUserMakePageEmpty3}
+\pastebutton{ugUserMakePageFull3}{\hidepaste}
+\tab{5}\spadcommand{f0\free{f0 }}
+\indentrel{3}\begin{verbatim}
+                    3    2
+   (3)  f0 () == - z  + y  - x
+                                Type: FunctionCalled f0
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty3}
+\begin{paste}{ugUserMakePageEmpty3}{ugUserMakePagePatch3}
+\pastebutton{ugUserMakePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f0\free{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch4}
+\begin{paste}{ugUserMakePageFull4}{ugUserMakePageEmpty4}
+\pastebutton{ugUserMakePageFull4}{\hidepaste}
+\tab{5}\spadcommand{f0()\free{f0 }}
+\indentrel{3}\begin{verbatim}
+           3    2
+   (4)  - z  + y  - x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty4}
+\begin{paste}{ugUserMakePageEmpty4}{ugUserMakePagePatch4}
+\pastebutton{ugUserMakePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f0()\free{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch5}
+\begin{paste}{ugUserMakePageFull5}{ugUserMakePageEmpty5}
+\pastebutton{ugUserMakePageFull5}{\hidepaste}
+\tab{5}\spadcommand{function(p,'f1,'x)\free{p }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  f1
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty5}
+\begin{paste}{ugUserMakePageEmpty5}{ugUserMakePagePatch5}
+\pastebutton{ugUserMakePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{function(p,'f1,'x)\free{p }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch6}
+\begin{paste}{ugUserMakePageFull6}{ugUserMakePageEmpty6}
+\pastebutton{ugUserMakePageFull6}{\hidepaste}
+\tab{5}\spadcommand{f1\free{f1 }}
+\indentrel{3}\begin{verbatim}
+                   3    2
+   (6)  f1 x == - z  + y  - x
+                                Type: FunctionCalled f1
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty6}
+\begin{paste}{ugUserMakePageEmpty6}{ugUserMakePagePatch6}
+\pastebutton{ugUserMakePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{f1\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch7}
+\begin{paste}{ugUserMakePageFull7}{ugUserMakePageEmpty7}
+\pastebutton{ugUserMakePageFull7}{\hidepaste}
+\tab{5}\spadcommand{f1(3)\free{f1 }}
+\indentrel{3}\begin{verbatim}
+           3    2
+   (7)  - z  + y  - 3
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty7}
+\begin{paste}{ugUserMakePageEmpty7}{ugUserMakePagePatch7}
+\pastebutton{ugUserMakePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{f1(3)\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch8}
+\begin{paste}{ugUserMakePageFull8}{ugUserMakePageEmpty8}
+\pastebutton{ugUserMakePageFull8}{\hidepaste}
+\tab{5}\spadcommand{function(p,'f2,'x,'y)\free{p }\bound{f2 }}
+\indentrel{3}\begin{verbatim}
+   (8)  f2
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty8}
+\begin{paste}{ugUserMakePageEmpty8}{ugUserMakePagePatch8}
+\pastebutton{ugUserMakePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{function(p,'f2,'x,'y)\free{p }\bound{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch9}
+\begin{paste}{ugUserMakePageFull9}{ugUserMakePageEmpty9}
+\pastebutton{ugUserMakePageFull9}{\hidepaste}
+\tab{5}\spadcommand{f2\free{f2 }}
+\indentrel{3}\begin{verbatim}
+                       3    2
+   (9)  f2 (x,y) == - z  + y  - x
+                                Type: FunctionCalled f2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty9}
+\begin{paste}{ugUserMakePageEmpty9}{ugUserMakePagePatch9}
+\pastebutton{ugUserMakePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f2\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch10}
+\begin{paste}{ugUserMakePageFull10}{ugUserMakePageEmpty10}
+\pastebutton{ugUserMakePageFull10}{\hidepaste}
+\tab{5}\spadcommand{f2(3,0)\free{f2 }}
+\indentrel{3}\begin{verbatim}
+            3
+   (10)  - z  - 3
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty10}
+\begin{paste}{ugUserMakePageEmpty10}{ugUserMakePagePatch10}
+\pastebutton{ugUserMakePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{f2(3,0)\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch11}
+\begin{paste}{ugUserMakePageFull11}{ugUserMakePageEmpty11}
+\pastebutton{ugUserMakePageFull11}{\hidepaste}
+\tab{5}\spadcommand{function(p,'f3,['x,'y,'z])\free{p }\bound{f3 }}
+\indentrel{3}\begin{verbatim}
+   (11)  f3
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty11}
+\begin{paste}{ugUserMakePageEmpty11}{ugUserMakePagePatch11}
+\pastebutton{ugUserMakePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{function(p,'f3,['x,'y,'z])\free{p }\bound{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch12}
+\begin{paste}{ugUserMakePageFull12}{ugUserMakePageEmpty12}
+\pastebutton{ugUserMakePageFull12}{\hidepaste}
+\tab{5}\spadcommand{f3\free{f3 }}
+\indentrel{3}\begin{verbatim}
+                          3    2
+   (12)  f3 (x,y,z) == - z  + y  - x
+                                Type: FunctionCalled f3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty12}
+\begin{paste}{ugUserMakePageEmpty12}{ugUserMakePagePatch12}
+\pastebutton{ugUserMakePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{f3\free{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch13}
+\begin{paste}{ugUserMakePageFull13}{ugUserMakePageEmpty13}
+\pastebutton{ugUserMakePageFull13}{\hidepaste}
+\tab{5}\spadcommand{f3(3,0,-6)\free{f3 }}
+\indentrel{3}\begin{verbatim}
+   (13)  213
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty13}
+\begin{paste}{ugUserMakePageEmpty13}{ugUserMakePagePatch13}
+\pastebutton{ugUserMakePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{f3(3,0,-6)\free{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch14}
+\begin{paste}{ugUserMakePageFull14}{ugUserMakePageEmpty14}
+\pastebutton{ugUserMakePageFull14}{\hidepaste}
+\tab{5}\spadcommand{g: (Integer, Integer) -> Float\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty14}
+\begin{paste}{ugUserMakePageEmpty14}{ugUserMakePagePatch14}
+\pastebutton{ugUserMakePageEmpty14}{\showpaste}
+\tab{5}\spadcommand{g: (Integer, Integer) -> Float\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch15}
+\begin{paste}{ugUserMakePageFull15}{ugUserMakePageEmpty15}
+\pastebutton{ugUserMakePageFull15}{\hidepaste}
+\tab{5}\spadcommand{D(sin(x-y)/cos(x+y),x)\bound{prev }}
+\indentrel{3}\begin{verbatim}
+         - sin(y - x)sin(y + x) + cos(y - x)cos(y + x)
+   (15)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                                    2
+                          cos(y + x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty15}
+\begin{paste}{ugUserMakePageEmpty15}{ugUserMakePagePatch15}
+\pastebutton{ugUserMakePageEmpty15}{\showpaste}
+\tab{5}\spadcommand{D(sin(x-y)/cos(x+y),x)\bound{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch16}
+\begin{paste}{ugUserMakePageFull16}{ugUserMakePageEmpty16}
+\pastebutton{ugUserMakePageFull16}{\hidepaste}
+\tab{5}\spadcommand{function(\%,'g,'x,'y)\free{g }\free{prev }}
+\indentrel{3}\begin{verbatim}
+   (16)  g
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty16}
+\begin{paste}{ugUserMakePageEmpty16}{ugUserMakePagePatch16}
+\pastebutton{ugUserMakePageEmpty16}{\showpaste}
+\tab{5}\spadcommand{function(\%,'g,'x,'y)\free{g }\free{prev }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePagePatch17}
+\begin{paste}{ugUserMakePageFull17}{ugUserMakePageEmpty17}
+\pastebutton{ugUserMakePageFull17}{\hidepaste}
+\tab{5}\spadcommand{g\free{g }}
+\indentrel{3}\begin{verbatim}
+   (17)
+   g (x,y) ==
+     - sin(y - x)sin(y + x) + cos(y - x)cos(y + x)
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                                2
+                      cos(y + x)
+                                 Type: FunctionCalled g
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserMakePageEmpty17}
+\begin{paste}{ugUserMakePageEmpty17}{ugUserMakePagePatch17}
+\pastebutton{ugUserMakePageEmpty17}{\showpaste}
+\tab{5}\spadcommand{g\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserBlocksPage}{ug06.ht}{Functions Defined with Blocks}
 \pageto{notitle}{ugLangBlocksPage}
@@ -32443,6 +85744,284 @@ call.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserBlocksPagePatch1}
+\begin{paste}{ugUserBlocksPageFull1}{ugUserBlocksPageEmpty1}
+\pastebutton{ugUserBlocksPageFull1}{\hidepaste}
+\tab{5}\spadcommand{swap(m,i,j) ==
+  temp := m.i
+  m.i := m.j
+  m.j := temp
+\bound{swap }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty1}
+\begin{paste}{ugUserBlocksPageEmpty1}{ugUserBlocksPagePatch1}
+\pastebutton{ugUserBlocksPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{swap(m,i,j) ==
+  temp := m.i
+  m.i := m.j
+  m.j := temp
+\bound{swap }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch2}
+\begin{paste}{ugUserBlocksPageFull2}{ugUserBlocksPageEmpty2}
+\pastebutton{ugUserBlocksPageFull2}{\hidepaste}
+\tab{5}\spadcommand{k := [1,2,3,4,5]\bound{k }}
+\indentrel{3}\begin{verbatim}
+   (2)  [1,2,3,4,5]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty2}
+\begin{paste}{ugUserBlocksPageEmpty2}{ugUserBlocksPagePatch2}
+\pastebutton{ugUserBlocksPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{k := [1,2,3,4,5]\bound{k }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch3}
+\begin{paste}{ugUserBlocksPageFull3}{ugUserBlocksPageEmpty3}
+\pastebutton{ugUserBlocksPageFull3}{\hidepaste}
+\tab{5}\spadcommand{swap(k,2,4)\free{l swap }\bound{swapk }}
+\indentrel{3}\begin{verbatim}
+   (3)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty3}
+\begin{paste}{ugUserBlocksPageEmpty3}{ugUserBlocksPagePatch3}
+\pastebutton{ugUserBlocksPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{swap(k,2,4)\free{l swap }\bound{swapk }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch4}
+\begin{paste}{ugUserBlocksPageFull4}{ugUserBlocksPageEmpty4}
+\pastebutton{ugUserBlocksPageFull4}{\hidepaste}
+\tab{5}\spadcommand{k\free{swapk }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1,4,3,2,5]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty4}
+\begin{paste}{ugUserBlocksPageEmpty4}{ugUserBlocksPagePatch4}
+\pastebutton{ugUserBlocksPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{k\free{swapk }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch5}
+\begin{paste}{ugUserBlocksPageFull5}{ugUserBlocksPageEmpty5}
+\pastebutton{ugUserBlocksPageFull5}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort(m) ==
+  n := \#m
+  for i in 1..(n-1) repeat
+    for j in n..(i+1) by -1 repeat
+      if m.j < m.(j-1) then swap(m,j,j-1)
+  m
+\bound{bubbleSort }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty5}
+\begin{paste}{ugUserBlocksPageEmpty5}{ugUserBlocksPagePatch5}
+\pastebutton{ugUserBlocksPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{bubbleSort(m) ==
+  n := \#m
+  for i in 1..(n-1) repeat
+    for j in n..(i+1) by -1 repeat
+      if m.j < m.(j-1) then swap(m,j,j-1)
+  m
+\bound{bubbleSort }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch6}
+\begin{paste}{ugUserBlocksPageFull6}{ugUserBlocksPageEmpty6}
+\pastebutton{ugUserBlocksPageFull6}{\hidepaste}
+\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (6)  [8,4,- 3,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty6}
+\begin{paste}{ugUserBlocksPageEmpty6}{ugUserBlocksPagePatch6}
+\pastebutton{ugUserBlocksPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch7}
+\begin{paste}{ugUserBlocksPageFull7}{ugUserBlocksPageEmpty7}
+\pastebutton{ugUserBlocksPageFull7}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort(m)\free{m swap bubbleSort }\bound{sortm }}
+\indentrel{3}\begin{verbatim}
+   (7)  [- 3,4,8,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty7}
+\begin{paste}{ugUserBlocksPageEmpty7}{ugUserBlocksPagePatch7}
+\pastebutton{ugUserBlocksPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{bubbleSort(m)\free{m swap bubbleSort }\bound{sortm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch8}
+\begin{paste}{ugUserBlocksPageFull8}{ugUserBlocksPageEmpty8}
+\pastebutton{ugUserBlocksPageFull8}{\hidepaste}
+\tab{5}\spadcommand{m\free{sortm }}
+\indentrel{3}\begin{verbatim}
+   (8)  [- 3,4,8,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty8}
+\begin{paste}{ugUserBlocksPageEmpty8}{ugUserBlocksPagePatch8}
+\pastebutton{ugUserBlocksPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{m\free{sortm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch9}
+\begin{paste}{ugUserBlocksPageFull9}{ugUserBlocksPageEmpty9}
+\pastebutton{ugUserBlocksPageFull9}{\hidepaste}
+\tab{5}\spadcommand{insertionSort(m) ==
+  for i in 2..\#m repeat
+    j := i
+    while j > 1 and m.j < m.(j-1) repeat
+      swap(m,j,j-1)
+      j := j - 1
+  m
+\bound{insertionSort }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty9}
+\begin{paste}{ugUserBlocksPageEmpty9}{ugUserBlocksPagePatch9}
+\pastebutton{ugUserBlocksPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{insertionSort(m) ==
+  for i in 2..\#m repeat
+    j := i
+    while j > 1 and m.j < m.(j-1) repeat
+      swap(m,j,j-1)
+      j := j - 1
+  m
+\bound{insertionSort }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch10}
+\begin{paste}{ugUserBlocksPageFull10}{ugUserBlocksPageEmpty10}
+\pastebutton{ugUserBlocksPageFull10}{\hidepaste}
+\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [8,4,- 3,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty10}
+\begin{paste}{ugUserBlocksPageEmpty10}{ugUserBlocksPagePatch10}
+\pastebutton{ugUserBlocksPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch11}
+\begin{paste}{ugUserBlocksPageFull11}{ugUserBlocksPageEmpty11}
+\pastebutton{ugUserBlocksPageFull11}{\hidepaste}
+\tab{5}\spadcommand{insertionSort(m)\free{m1 swap insertionSort }\bound{sortm1 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [- 3,4,8,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty11}
+\begin{paste}{ugUserBlocksPageEmpty11}{ugUserBlocksPagePatch11}
+\pastebutton{ugUserBlocksPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{insertionSort(m)\free{m1 swap insertionSort }\bound{sortm1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch12}
+\begin{paste}{ugUserBlocksPageFull12}{ugUserBlocksPageEmpty12}
+\pastebutton{ugUserBlocksPageFull12}{\hidepaste}
+\tab{5}\spadcommand{m\free{sortm1 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [- 3,4,8,9]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty12}
+\begin{paste}{ugUserBlocksPageEmpty12}{ugUserBlocksPagePatch12}
+\pastebutton{ugUserBlocksPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{m\free{sortm1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch13}
+\begin{paste}{ugUserBlocksPageFull13}{ugUserBlocksPageEmpty13}
+\pastebutton{ugUserBlocksPageFull13}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort2(m: List Integer): List Integer ==
+  null m => m
+  l := m
+  while not null (r := l.rest) repeat
+     r := bubbleSort2 r
+     x := l.first
+     if x < r.first then
+       l.first := r.first
+       r.first := x
+     l.rest := r
+     l := l.rest
+  m
+\bound{bubbleSort2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty13}
+\begin{paste}{ugUserBlocksPageEmpty13}{ugUserBlocksPagePatch13}
+\pastebutton{ugUserBlocksPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{bubbleSort2(m: List Integer): List Integer ==
+  null m => m
+  l := m
+  while not null (r := l.rest) repeat
+     r := bubbleSort2 r
+     x := l.first
+     if x < r.first then
+       l.first := r.first
+       r.first := x
+     l.rest := r
+     l := l.rest
+  m
+\bound{bubbleSort2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPagePatch14}
+\begin{paste}{ugUserBlocksPageFull14}{ugUserBlocksPageEmpty14}
+\pastebutton{ugUserBlocksPageFull14}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort2 [3,7,2]\free{bubbleSort2 }}
+\indentrel{3}\begin{verbatim}
+   (14)  [7,3,2]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserBlocksPageEmpty14}
+\begin{paste}{ugUserBlocksPageEmpty14}{ugUserBlocksPagePatch14}
+\pastebutton{ugUserBlocksPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{bubbleSort2 [3,7,2]\free{bubbleSort2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserFreeLocalPage}{ug06.ht}{Free and Local Variables}
 \pageto{notitle}{ugUserCachePage}
@@ -32718,6 +86297,478 @@ to hold the previously computed values?
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserFreeLocalPagePatch1}
+\begin{paste}{ugUserFreeLocalPageFull1}{ugUserFreeLocalPageEmpty1}
+\pastebutton{ugUserFreeLocalPageFull1}{\hidepaste}
+\tab{5}\spadcommand{counter := 0\bound{counter }}
+\indentrel{3}\begin{verbatim}
+   (1)  0
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty1}
+\begin{paste}{ugUserFreeLocalPageEmpty1}{ugUserFreeLocalPagePatch1}
+\pastebutton{ugUserFreeLocalPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{counter := 0\bound{counter }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch2}
+\begin{paste}{ugUserFreeLocalPageFull2}{ugUserFreeLocalPageEmpty2}
+\pastebutton{ugUserFreeLocalPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f() ==
+  free counter
+  counter := counter + 1
+\free{counter }\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty2}
+\begin{paste}{ugUserFreeLocalPageEmpty2}{ugUserFreeLocalPagePatch2}
+\pastebutton{ugUserFreeLocalPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f() ==
+  free counter
+  counter := counter + 1
+\free{counter }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch3}
+\begin{paste}{ugUserFreeLocalPageFull3}{ugUserFreeLocalPageEmpty3}
+\pastebutton{ugUserFreeLocalPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f()\free{f }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty3}
+\begin{paste}{ugUserFreeLocalPageEmpty3}{ugUserFreeLocalPagePatch3}
+\pastebutton{ugUserFreeLocalPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f()\free{f }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch4}
+\begin{paste}{ugUserFreeLocalPageFull4}{ugUserFreeLocalPageEmpty4}
+\pastebutton{ugUserFreeLocalPageFull4}{\hidepaste}
+\tab{5}\spadcommand{counter\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  1
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty4}
+\begin{paste}{ugUserFreeLocalPageEmpty4}{ugUserFreeLocalPagePatch4}
+\pastebutton{ugUserFreeLocalPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{counter\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch5}
+\begin{paste}{ugUserFreeLocalPageFull5}{ugUserFreeLocalPageEmpty5}
+\pastebutton{ugUserFreeLocalPageFull5}{\hidepaste}
+\tab{5}\spadcommand{g() ==
+  local counter
+  counter := 7
+\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty5}
+\begin{paste}{ugUserFreeLocalPageEmpty5}{ugUserFreeLocalPagePatch5}
+\pastebutton{ugUserFreeLocalPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{g() ==
+  local counter
+  counter := 7
+\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch6}
+\begin{paste}{ugUserFreeLocalPageFull6}{ugUserFreeLocalPageEmpty6}
+\pastebutton{ugUserFreeLocalPageFull6}{\hidepaste}
+\tab{5}\spadcommand{g()\free{g }}
+\indentrel{3}\begin{verbatim}
+   (6)  7
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty6}
+\begin{paste}{ugUserFreeLocalPageEmpty6}{ugUserFreeLocalPagePatch6}
+\pastebutton{ugUserFreeLocalPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{g()\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch7}
+\begin{paste}{ugUserFreeLocalPageFull7}{ugUserFreeLocalPageEmpty7}
+\pastebutton{ugUserFreeLocalPageFull7}{\hidepaste}
+\tab{5}\spadcommand{counter\free{g f1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  1
+                               Type: NonNegativeInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty7}
+\begin{paste}{ugUserFreeLocalPageEmpty7}{ugUserFreeLocalPagePatch7}
+\pastebutton{ugUserFreeLocalPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{counter\free{g f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch8}
+\begin{paste}{ugUserFreeLocalPageFull8}{ugUserFreeLocalPageEmpty8}
+\pastebutton{ugUserFreeLocalPageFull8}{\hidepaste}
+\tab{5}\spadcommand{a := b := 1\bound{ab1 }}
+\indentrel{3}\begin{verbatim}
+   (8)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty8}
+\begin{paste}{ugUserFreeLocalPageEmpty8}{ugUserFreeLocalPagePatch8}
+\pastebutton{ugUserFreeLocalPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{a := b := 1\bound{ab1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch9}
+\begin{paste}{ugUserFreeLocalPageFull9}{ugUserFreeLocalPageEmpty9}
+\pastebutton{ugUserFreeLocalPageFull9}{\hidepaste}
+\tab{5}\spadcommand{h() ==
+  b := a + 1
+  a := b + a
+\bound{hh }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty9}
+\begin{paste}{ugUserFreeLocalPageEmpty9}{ugUserFreeLocalPagePatch9}
+\pastebutton{ugUserFreeLocalPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{h() ==
+  b := a + 1
+  a := b + a
+\bound{hh }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch10}
+\begin{paste}{ugUserFreeLocalPageFull10}{ugUserFreeLocalPageEmpty10}
+\pastebutton{ugUserFreeLocalPageFull10}{\hidepaste}
+\tab{5}\spadcommand{h()\free{ab1 hh }\bound{hhh }}
+\indentrel{3}\begin{verbatim}
+   (10)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty10}
+\begin{paste}{ugUserFreeLocalPageEmpty10}{ugUserFreeLocalPagePatch10}
+\pastebutton{ugUserFreeLocalPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{h()\free{ab1 hh }\bound{hhh }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch11}
+\begin{paste}{ugUserFreeLocalPageFull11}{ugUserFreeLocalPageEmpty11}
+\pastebutton{ugUserFreeLocalPageFull11}{\hidepaste}
+\tab{5}\spadcommand{[a, b]\free{hhh }}
+\indentrel{3}\begin{verbatim}
+   (11)  [3,1]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty11}
+\begin{paste}{ugUserFreeLocalPageEmpty11}{ugUserFreeLocalPagePatch11}
+\pastebutton{ugUserFreeLocalPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{[a, b]\free{hhh }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch12}
+\begin{paste}{ugUserFreeLocalPageFull12}{ugUserFreeLocalPageEmpty12}
+\pastebutton{ugUserFreeLocalPageFull12}{\hidepaste}
+\tab{5}\spadcommand{)set fun cache all p\bound{pcache }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty12}
+\begin{paste}{ugUserFreeLocalPageEmpty12}{ugUserFreeLocalPagePatch12}
+\pastebutton{ugUserFreeLocalPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{)set fun cache all p\bound{pcache }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch13}
+\begin{paste}{ugUserFreeLocalPageFull13}{ugUserFreeLocalPageEmpty13}
+\pastebutton{ugUserFreeLocalPageFull13}{\hidepaste}
+\tab{5}\spadcommand{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )\free{pcache }\bound{pdef }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty13}
+\begin{paste}{ugUserFreeLocalPageEmpty13}{ugUserFreeLocalPagePatch13}
+\pastebutton{ugUserFreeLocalPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )\free{pcache }\bound{pdef }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch14}
+\begin{paste}{ugUserFreeLocalPageFull14}{ugUserFreeLocalPageEmpty14}
+\pastebutton{ugUserFreeLocalPageFull14}{\hidepaste}
+\tab{5}\spadcommand{N := 1\bound{Nass }}
+\indentrel{3}\begin{verbatim}
+   (13)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty14}
+\begin{paste}{ugUserFreeLocalPageEmpty14}{ugUserFreeLocalPagePatch14}
+\pastebutton{ugUserFreeLocalPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{N := 1\bound{Nass }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch15}
+\begin{paste}{ugUserFreeLocalPageFull15}{ugUserFreeLocalPageEmpty15}
+\pastebutton{ugUserFreeLocalPageFull15}{\hidepaste}
+\tab{5}\spadcommand{p(0, x)\free{pdef Nass }\bound{pfirst }}
+\indentrel{3}\begin{verbatim}
+   (14)  x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty15}
+\begin{paste}{ugUserFreeLocalPageEmpty15}{ugUserFreeLocalPagePatch15}
+\pastebutton{ugUserFreeLocalPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{p(0, x)\free{pdef Nass }\bound{pfirst }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch16}
+\begin{paste}{ugUserFreeLocalPageFull16}{ugUserFreeLocalPageEmpty16}
+\pastebutton{ugUserFreeLocalPageFull16}{\hidepaste}
+\tab{5}\spadcommand{N := 2\bound{Nass2 }}
+\indentrel{3}\begin{verbatim}
+   (15)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty16}
+\begin{paste}{ugUserFreeLocalPageEmpty16}{ugUserFreeLocalPagePatch16}
+\pastebutton{ugUserFreeLocalPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{N := 2\bound{Nass2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch17}
+\begin{paste}{ugUserFreeLocalPageFull17}{ugUserFreeLocalPageEmpty17}
+\pastebutton{ugUserFreeLocalPageFull17}{\hidepaste}
+\tab{5}\spadcommand{p(0, x)\free{pfirst Nass2 }}
+\indentrel{3}\begin{verbatim}
+   (16)  x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty17}
+\begin{paste}{ugUserFreeLocalPageEmpty17}{ugUserFreeLocalPagePatch17}
+\pastebutton{ugUserFreeLocalPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{p(0, x)\free{pfirst Nass2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch18}
+\begin{paste}{ugUserFreeLocalPageFull18}{ugUserFreeLocalPageEmpty18}
+\pastebutton{ugUserFreeLocalPageFull18}{\hidepaste}
+\tab{5}\spadcommand{)set fun cache 0 p}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty18}
+\begin{paste}{ugUserFreeLocalPageEmpty18}{ugUserFreeLocalPagePatch18}
+\pastebutton{ugUserFreeLocalPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{)set fun cache 0 p}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch19}
+\begin{paste}{ugUserFreeLocalPageFull19}{ugUserFreeLocalPageEmpty19}
+\pastebutton{ugUserFreeLocalPageFull19}{\hidepaste}
+\tab{5}\spadcommand{r : Record(i : Integer) := [1]\free{r }}
+\indentrel{3}\begin{verbatim}
+   (17)  [i= 1]
+                               Type: Record(i: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty19}
+\begin{paste}{ugUserFreeLocalPageEmpty19}{ugUserFreeLocalPagePatch19}
+\pastebutton{ugUserFreeLocalPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{r : Record(i : Integer) := [1]\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch20}
+\begin{paste}{ugUserFreeLocalPageFull20}{ugUserFreeLocalPageEmpty20}
+\pastebutton{ugUserFreeLocalPageFull20}{\hidepaste}
+\tab{5}\spadcommand{resetRecord rr ==
+  rr.i := 2
+  rr := [10]
+\bound{resetRecord }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty20}
+\begin{paste}{ugUserFreeLocalPageEmpty20}{ugUserFreeLocalPagePatch20}
+\pastebutton{ugUserFreeLocalPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{resetRecord rr ==
+  rr.i := 2
+  rr := [10]
+\bound{resetRecord }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch21}
+\begin{paste}{ugUserFreeLocalPageFull21}{ugUserFreeLocalPageEmpty21}
+\pastebutton{ugUserFreeLocalPageFull21}{\hidepaste}
+\tab{5}\spadcommand{resetRecord r\free{r resetRecord }\bound{rr }}
+\indentrel{3}\begin{verbatim}
+   (19)  [i= 10]
+                               Type: Record(i: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty21}
+\begin{paste}{ugUserFreeLocalPageEmpty21}{ugUserFreeLocalPagePatch21}
+\pastebutton{ugUserFreeLocalPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{resetRecord r\free{r resetRecord }\bound{rr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch22}
+\begin{paste}{ugUserFreeLocalPageFull22}{ugUserFreeLocalPageEmpty22}
+\pastebutton{ugUserFreeLocalPageFull22}{\hidepaste}
+\tab{5}\spadcommand{r\free{rr }}
+\indentrel{3}\begin{verbatim}
+   (20)  [i= 2]
+                               Type: Record(i: Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty22}
+\begin{paste}{ugUserFreeLocalPageEmpty22}{ugUserFreeLocalPagePatch22}
+\pastebutton{ugUserFreeLocalPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{r\free{rr }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch23}
+\begin{paste}{ugUserFreeLocalPageFull23}{ugUserFreeLocalPageEmpty23}
+\pastebutton{ugUserFreeLocalPageFull23}{\hidepaste}
+\tab{5}\spadcommand{past := present := 1\bound{f0 }}
+\indentrel{3}\begin{verbatim}
+   (21)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty23}
+\begin{paste}{ugUserFreeLocalPageEmpty23}{ugUserFreeLocalPagePatch23}
+\pastebutton{ugUserFreeLocalPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{past := present := 1\bound{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch24}
+\begin{paste}{ugUserFreeLocalPageFull24}{ugUserFreeLocalPageEmpty24}
+\pastebutton{ugUserFreeLocalPageFull24}{\hidepaste}
+\tab{5}\spadcommand{index := 2\bound{f1 }\free{f0 }}
+\indentrel{3}\begin{verbatim}
+   (22)  2
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty24}
+\begin{paste}{ugUserFreeLocalPageEmpty24}{ugUserFreeLocalPagePatch24}
+\pastebutton{ugUserFreeLocalPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{index := 2\bound{f1 }\free{f0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch25}
+\begin{paste}{ugUserFreeLocalPageFull25}{ugUserFreeLocalPageEmpty25}
+\pastebutton{ugUserFreeLocalPageFull25}{\hidepaste}
+\tab{5}\spadcommand{fib(n) ==
+  free past, present, index
+  n < 3 => 1
+  n = index - 1 => past
+  if n < index-1 then
+    (past,present) := (1,1)
+    index := 2
+  while (index < n) repeat
+    (past,present) := (present, past+present)
+    index := index + 1
+  present
+\bound{f3 }\free{f2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty25}
+\begin{paste}{ugUserFreeLocalPageEmpty25}{ugUserFreeLocalPagePatch25}
+\pastebutton{ugUserFreeLocalPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{fib(n) ==
+  free past, present, index
+  n < 3 => 1
+  n = index - 1 => past
+  if n < index-1 then
+    (past,present) := (1,1)
+    index := 2
+  while (index < n) repeat
+    (past,present) := (present, past+present)
+    index := index + 1
+  present
+\bound{f3 }\free{f2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch26}
+\begin{paste}{ugUserFreeLocalPageFull26}{ugUserFreeLocalPageEmpty26}
+\pastebutton{ugUserFreeLocalPageFull26}{\hidepaste}
+\tab{5}\spadcommand{fibs := [fib(n) for n in 1..]\bound{fibs }\free{f3 }}
+\indentrel{3}\begin{verbatim}
+   (24)  [1,1,2,3,5,8,13,21,34,55,...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty26}
+\begin{paste}{ugUserFreeLocalPageEmpty26}{ugUserFreeLocalPagePatch26}
+\pastebutton{ugUserFreeLocalPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{fibs := [fib(n) for n in 1..]\bound{fibs }\free{f3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPagePatch27}
+\begin{paste}{ugUserFreeLocalPageFull27}{ugUserFreeLocalPageEmpty27}
+\pastebutton{ugUserFreeLocalPageFull27}{\hidepaste}
+\tab{5}\spadcommand{fibs 1000\free{fibs }}
+\indentrel{3}\begin{verbatim}
+   (25)
+  434665576869374564356885276750406258025646605173717804_
+   02481729089536555417949051890403879840079255169295922_
+   59308032263477520968962323987332247116164299644090653_
+   3187938298969649928516003704476137795166849228875
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserFreeLocalPageEmpty27}
+\begin{paste}{ugUserFreeLocalPageEmpty27}{ugUserFreeLocalPagePatch27}
+\pastebutton{ugUserFreeLocalPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{fibs 1000\free{fibs }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserAnonPage}{ug06.ht}{Anonymous Functions}
 \pageto{notitle}{ugUserAnonExampPage}
@@ -32832,6 +86883,169 @@ The one you use is a matter of taste.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserAnonExampPagePatch1}
+\begin{paste}{ugUserAnonExampPageFull1}{ugUserAnonExampPageEmpty1}
+\pastebutton{ugUserAnonExampPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x +-> if x < 0 then -x else x\bound{anon0 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+     x
+   +-> 
+     if x < 0
+       then - x
+       else x
+                                Type: AnonymousFunction
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty1}
+\begin{paste}{ugUserAnonExampPageEmpty1}{ugUserAnonExampPagePatch1}
+\pastebutton{ugUserAnonExampPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x +-> if x < 0 then -x else x\bound{anon0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch2}
+\begin{paste}{ugUserAnonExampPageFull2}{ugUserAnonExampPageEmpty2}
+\pastebutton{ugUserAnonExampPageFull2}{\hidepaste}
+\tab{5}\spadcommand{abs1 := \%\free{anon0 }\bound{abs1 }}
+\indentrel{3}\begin{verbatim}
+   (2)
+     x
+   +-> 
+     if x < 0
+       then - x
+       else x
+                                Type: AnonymousFunction
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty2}
+\begin{paste}{ugUserAnonExampPageEmpty2}{ugUserAnonExampPagePatch2}
+\pastebutton{ugUserAnonExampPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{abs1 := \%\free{anon0 }\bound{abs1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch3}
+\begin{paste}{ugUserAnonExampPageFull3}{ugUserAnonExampPageEmpty3}
+\pastebutton{ugUserAnonExampPageFull3}{\hidepaste}
+\tab{5}\spadcommand{(x,y) +-> abs1(x) > abs1(y)\bound{anon1 }\free{abs1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  (x,y) +-> abs1(y) < abs1(x)
+                                Type: AnonymousFunction
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty3}
+\begin{paste}{ugUserAnonExampPageEmpty3}{ugUserAnonExampPagePatch3}
+\pastebutton{ugUserAnonExampPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{(x,y) +-> abs1(x) > abs1(y)\bound{anon1 }\free{abs1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch4}
+\begin{paste}{ugUserAnonExampPageFull4}{ugUserAnonExampPageEmpty4}
+\pastebutton{ugUserAnonExampPageFull4}{\hidepaste}
+\tab{5}\spadcommand{sort(\%,[3,9,-4,10,-3,-1,-9,5])\free{anon1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [10,- 9,9,5,- 4,- 3,3,- 1]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty4}
+\begin{paste}{ugUserAnonExampPageEmpty4}{ugUserAnonExampPagePatch4}
+\pastebutton{ugUserAnonExampPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sort(\%,[3,9,-4,10,-3,-1,-9,5])\free{anon1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch5}
+\begin{paste}{ugUserAnonExampPageFull5}{ugUserAnonExampPageEmpty5}
+\pastebutton{ugUserAnonExampPageFull5}{\hidepaste}
+\tab{5}\spadcommand{ev := ( (i,j) +-> if even?(i+j) then 1 else -1)\bound{ev }}
+\indentrel{3}\begin{verbatim}
+   (5)
+     (i,j)
+   +-> 
+     if even?(i + j)
+       then 1
+       else - 1
+                                Type: AnonymousFunction
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty5}
+\begin{paste}{ugUserAnonExampPageEmpty5}{ugUserAnonExampPagePatch5}
+\pastebutton{ugUserAnonExampPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{ev := ( (i,j) +-> if even?(i+j) then 1 else -1)\bound{ev }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch6}
+\begin{paste}{ugUserAnonExampPageFull6}{ugUserAnonExampPageEmpty6}
+\pastebutton{ugUserAnonExampPageFull6}{\hidepaste}
+\tab{5}\spadcommand{matrix([[ev(row,col) for row in 1..4] for col in 1..4])\free{ev }}
+\indentrel{3}\begin{verbatim}
+        Ú 1   - 1   1   - 1¿
+        ³                  ³
+        ³- 1   1   - 1   1 ³
+   (6)  ³                  ³
+        ³ 1   - 1   1   - 1³
+        ³                  ³
+        À- 1   1   - 1   1 Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty6}
+\begin{paste}{ugUserAnonExampPageEmpty6}{ugUserAnonExampPagePatch6}
+\pastebutton{ugUserAnonExampPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{matrix([[ev(row,col) for row in 1..4] for col in 1..4])\free{ev }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch7}
+\begin{paste}{ugUserAnonExampPageFull7}{ugUserAnonExampPageEmpty7}
+\pastebutton{ugUserAnonExampPageFull7}{\hidepaste}
+\tab{5}\spadcommand{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
+\indentrel{3}\begin{verbatim}
+   (7)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty7}
+\begin{paste}{ugUserAnonExampPageEmpty7}{ugUserAnonExampPagePatch7}
+\pastebutton{ugUserAnonExampPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch8}
+\begin{paste}{ugUserAnonExampPageFull8}{ugUserAnonExampPageEmpty8}
+\pastebutton{ugUserAnonExampPageFull8}{\hidepaste}
+\tab{5}\spadcommand{g(x,y,z) == cos(x + sin(y + tan(z)))}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty8}
+\begin{paste}{ugUserAnonExampPageEmpty8}{ugUserAnonExampPagePatch8}
+\pastebutton{ugUserAnonExampPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g(x,y,z) == cos(x + sin(y + tan(z)))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPagePatch9}
+\begin{paste}{ugUserAnonExampPageFull9}{ugUserAnonExampPageEmpty9}
+\pastebutton{ugUserAnonExampPageFull9}{\hidepaste}
+\tab{5}\spadcommand{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonExampPageEmpty9}
+\begin{paste}{ugUserAnonExampPageEmpty9}{ugUserAnonExampPagePatch9}
+\pastebutton{ugUserAnonExampPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserAnonDeclarePage}{ug06.ht}{Declaring Anonymous Functions}
 <<ug06.ht>>=
@@ -32929,6 +87143,131 @@ anonymous function must be declared.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserAnonDeclarePagePatch1}
+\begin{paste}{ugUserAnonDeclarePageFull1}{ugUserAnonDeclarePageEmpty1}
+\pastebutton{ugUserAnonDeclarePageFull1}{\hidepaste}
+\tab{5}\spadcommand{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+\indentrel{3}\begin{verbatim}
+   (1)  theMap(NIL)
+          Type: ((Integer,Integer) -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty1}
+\begin{paste}{ugUserAnonDeclarePageEmpty1}{ugUserAnonDeclarePagePatch1}
+\pastebutton{ugUserAnonDeclarePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch2}
+\begin{paste}{ugUserAnonDeclarePageFull2}{ugUserAnonDeclarePageEmpty2}
+\pastebutton{ugUserAnonDeclarePageFull2}{\hidepaste}
+\tab{5}\spadcommand{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
+\indentrel{3}\begin{verbatim}
+   (2)  theMap(NIL)
+          Type: ((Integer,Integer) -> Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty2}
+\begin{paste}{ugUserAnonDeclarePageEmpty2}{ugUserAnonDeclarePagePatch2}
+\pastebutton{ugUserAnonDeclarePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch3}
+\begin{paste}{ugUserAnonDeclarePageFull3}{ugUserAnonDeclarePageEmpty3}
+\pastebutton{ugUserAnonDeclarePageFull3}{\hidepaste}
+\tab{5}\spadcommand{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty3}
+\begin{paste}{ugUserAnonDeclarePageEmpty3}{ugUserAnonDeclarePagePatch3}
+\pastebutton{ugUserAnonDeclarePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch4}
+\begin{paste}{ugUserAnonDeclarePageFull4}{ugUserAnonDeclarePageEmpty4}
+\pastebutton{ugUserAnonDeclarePageFull4}{\hidepaste}
+\tab{5}\spadcommand{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty4}
+\begin{paste}{ugUserAnonDeclarePageEmpty4}{ugUserAnonDeclarePagePatch4}
+\pastebutton{ugUserAnonDeclarePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch5}
+\begin{paste}{ugUserAnonDeclarePageFull5}{ugUserAnonDeclarePageEmpty5}
+\pastebutton{ugUserAnonDeclarePageFull5}{\hidepaste}
+\tab{5}\spadcommand{addx x == ((y: Integer): Integer +-> x + y)\bound{addx }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty5}
+\begin{paste}{ugUserAnonDeclarePageEmpty5}{ugUserAnonDeclarePagePatch5}
+\pastebutton{ugUserAnonDeclarePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{addx x == ((y: Integer): Integer +-> x + y)\bound{addx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch6}
+\begin{paste}{ugUserAnonDeclarePageFull6}{ugUserAnonDeclarePageEmpty6}
+\pastebutton{ugUserAnonDeclarePageFull6}{\hidepaste}
+\tab{5}\spadcommand{g := addx 10\free{addx }\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (6)  theMap(LAMBDA_f647nv_704,826)
+                             Type: (Integer -> Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty6}
+\begin{paste}{ugUserAnonDeclarePageEmpty6}{ugUserAnonDeclarePagePatch6}
+\pastebutton{ugUserAnonDeclarePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{g := addx 10\free{addx }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch7}
+\begin{paste}{ugUserAnonDeclarePageFull7}{ugUserAnonDeclarePageEmpty7}
+\pastebutton{ugUserAnonDeclarePageFull7}{\hidepaste}
+\tab{5}\spadcommand{g 3\free{g }}
+\indentrel{3}\begin{verbatim}
+   (7)  13
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty7}
+\begin{paste}{ugUserAnonDeclarePageEmpty7}{ugUserAnonDeclarePagePatch7}
+\pastebutton{ugUserAnonDeclarePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{g 3\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePagePatch8}
+\begin{paste}{ugUserAnonDeclarePageFull8}{ugUserAnonDeclarePageEmpty8}
+\pastebutton{ugUserAnonDeclarePageFull8}{\hidepaste}
+\tab{5}\spadcommand{g(-4)\free{g }}
+\indentrel{3}\begin{verbatim}
+   (8)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserAnonDeclarePageEmpty8}
+\begin{paste}{ugUserAnonDeclarePageEmpty8}{ugUserAnonDeclarePagePatch8}
+\pastebutton{ugUserAnonDeclarePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g(-4)\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserDatabasePage}{ug06.ht}{Example: A Database}
 <<ug06.ht>>=
@@ -33045,6 +87384,225 @@ Who are the great-grandparents?
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserDatabasePagePatch1}
+\begin{paste}{ugUserDatabasePageFull1}{ugUserDatabasePageEmpty1}
+\pastebutton{ugUserDatabasePageFull1}{\hidepaste}
+\tab{5}\spadcommand{children("albert") == ["albertJr","richard","diane"]\bound{d1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty1}
+\begin{paste}{ugUserDatabasePageEmpty1}{ugUserDatabasePagePatch1}
+\pastebutton{ugUserDatabasePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{children("albert") == ["albertJr","richard","diane"]\bound{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch2}
+\begin{paste}{ugUserDatabasePageFull2}{ugUserDatabasePageEmpty2}
+\pastebutton{ugUserDatabasePageFull2}{\hidepaste}
+\tab{5}\spadcommand{children("richard") == ["douglas","daniel","susan"]\free{d1 }\bound{d2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty2}
+\begin{paste}{ugUserDatabasePageEmpty2}{ugUserDatabasePagePatch2}
+\pastebutton{ugUserDatabasePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{children("richard") == ["douglas","daniel","susan"]\free{d1 }\bound{d2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch3}
+\begin{paste}{ugUserDatabasePageFull3}{ugUserDatabasePageEmpty3}
+\pastebutton{ugUserDatabasePageFull3}{\hidepaste}
+\tab{5}\spadcommand{children("douglas") == ["dougie","valerie"]\free{d2 }\bound{d3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty3}
+\begin{paste}{ugUserDatabasePageEmpty3}{ugUserDatabasePagePatch3}
+\pastebutton{ugUserDatabasePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{children("douglas") == ["dougie","valerie"]\free{d2 }\bound{d3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch4}
+\begin{paste}{ugUserDatabasePageFull4}{ugUserDatabasePageEmpty4}
+\pastebutton{ugUserDatabasePageFull4}{\hidepaste}
+\tab{5}\spadcommand{children(x) == []\free{d3 }\bound{d4 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty4}
+\begin{paste}{ugUserDatabasePageEmpty4}{ugUserDatabasePagePatch4}
+\pastebutton{ugUserDatabasePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{children(x) == []\free{d3 }\bound{d4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch5}
+\begin{paste}{ugUserDatabasePageFull5}{ugUserDatabasePageEmpty5}
+\pastebutton{ugUserDatabasePageFull5}{\hidepaste}
+\tab{5}\spadcommand{childOf(x,y) == member?(x,children(y))\bound{d9 }\free{d10 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty5}
+\begin{paste}{ugUserDatabasePageEmpty5}{ugUserDatabasePagePatch5}
+\pastebutton{ugUserDatabasePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{childOf(x,y) == member?(x,children(y))\bound{d9 }\free{d10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch6}
+\begin{paste}{ugUserDatabasePageFull6}{ugUserDatabasePageEmpty6}
+\pastebutton{ugUserDatabasePageFull6}{\hidepaste}
+\tab{5}\spadcommand{parentOf(x) ==
+  for y in people repeat
+    (if childOf(x,y) then return y)
+  "unknown"
+\bound{d8a }\free{d9 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty6}
+\begin{paste}{ugUserDatabasePageEmpty6}{ugUserDatabasePagePatch6}
+\pastebutton{ugUserDatabasePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{parentOf(x) ==
+  for y in people repeat
+    (if childOf(x,y) then return y)
+  "unknown"
+\bound{d8a }\free{d9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch7}
+\begin{paste}{ugUserDatabasePageFull7}{ugUserDatabasePageEmpty7}
+\pastebutton{ugUserDatabasePageFull7}{\hidepaste}
+\tab{5}\spadcommand{grandParentOf(x) == parentOf parentOf x\bound{d8 }\free{d8a }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty7}
+\begin{paste}{ugUserDatabasePageEmpty7}{ugUserDatabasePagePatch7}
+\pastebutton{ugUserDatabasePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{grandParentOf(x) == parentOf parentOf x\bound{d8 }\free{d8a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch8}
+\begin{paste}{ugUserDatabasePageFull8}{ugUserDatabasePageEmpty8}
+\pastebutton{ugUserDatabasePageFull8}{\hidepaste}
+\tab{5}\spadcommand{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7 }\bound{d8 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty8}
+\begin{paste}{ugUserDatabasePageEmpty8}{ugUserDatabasePagePatch8}
+\pastebutton{ugUserDatabasePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7 }\bound{d8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch9}
+\begin{paste}{ugUserDatabasePageFull9}{ugUserDatabasePageEmpty9}
+\pastebutton{ugUserDatabasePageFull9}{\hidepaste}
+\tab{5}\spadcommand{greatGrandParents == [x for x in people |
+  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
+\free{d6 }\bound{d7 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty9}
+\begin{paste}{ugUserDatabasePageEmpty9}{ugUserDatabasePagePatch9}
+\pastebutton{ugUserDatabasePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{greatGrandParents == [x for x in people |
+  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
+\free{d6 }\bound{d7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch10}
+\begin{paste}{ugUserDatabasePageFull10}{ugUserDatabasePageEmpty10}
+\pastebutton{ugUserDatabasePageFull10}{\hidepaste}
+\tab{5}\spadcommand{descendants(x) ==
+  kids := children(x)
+  null kids => [x]
+  concat(x,reduce(concat,[descendants(y)
+    for y in kids],[]))
+\free{d5 }\bound{d6 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty10}
+\begin{paste}{ugUserDatabasePageEmpty10}{ugUserDatabasePagePatch10}
+\pastebutton{ugUserDatabasePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{descendants(x) ==
+  kids := children(x)
+  null kids => [x]
+  concat(x,reduce(concat,[descendants(y)
+    for y in kids],[]))
+\free{d5 }\bound{d6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch11}
+\begin{paste}{ugUserDatabasePageFull11}{ugUserDatabasePageEmpty11}
+\pastebutton{ugUserDatabasePageFull11}{\hidepaste}
+\tab{5}\spadcommand{people == descendants "albert"\free{d4 }\bound{d5 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty11}
+\begin{paste}{ugUserDatabasePageEmpty11}{ugUserDatabasePagePatch11}
+\pastebutton{ugUserDatabasePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{people == descendants "albert"\free{d4 }\bound{d5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch12}
+\begin{paste}{ugUserDatabasePageFull12}{ugUserDatabasePageEmpty12}
+\pastebutton{ugUserDatabasePageFull12}{\hidepaste}
+\tab{5}\spadcommand{grandchildren "richard"\bound{d10 }\free{d11 }}
+\indentrel{3}\begin{verbatim}
+   (12)  ["dougie","valerie"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty12}
+\begin{paste}{ugUserDatabasePageEmpty12}{ugUserDatabasePagePatch12}
+\pastebutton{ugUserDatabasePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{grandchildren "richard"\bound{d10 }\free{d11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePagePatch13}
+\begin{paste}{ugUserDatabasePageFull13}{ugUserDatabasePageEmpty13}
+\pastebutton{ugUserDatabasePageFull13}{\hidepaste}
+\tab{5}\spadcommand{greatGrandParents\bound{d11 }\free{d12 }}
+\indentrel{3}\begin{verbatim}
+   (13)  ["albert"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserDatabasePageEmpty13}
+\begin{paste}{ugUserDatabasePageEmpty13}{ugUserDatabasePagePatch13}
+\pastebutton{ugUserDatabasePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{greatGrandParents\bound{d11 }\free{d12 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserTrianglePage}{ug06.ht}{Example: A Famous Triangle}
 \pageto{notitle}{ugTypesExposePage}
@@ -33148,6 +87706,172 @@ results later.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserTrianglePagePatch1}
+\begin{paste}{ugUserTrianglePageFull1}{ugUserTrianglePageEmpty1}
+\pastebutton{ugUserTrianglePageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{expose }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty1}
+\begin{paste}{ugUserTrianglePageEmpty1}{ugUserTrianglePagePatch1}
+\pastebutton{ugUserTrianglePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{expose }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch2}
+\begin{paste}{ugUserTrianglePageFull2}{ugUserTrianglePageEmpty2}
+\pastebutton{ugUserTrianglePageFull2}{\hidepaste}
+\tab{5}\spadcommand{pascal(1,i) == 1\bound{pas1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty2}
+\begin{paste}{ugUserTrianglePageEmpty2}{ugUserTrianglePagePatch2}
+\pastebutton{ugUserTrianglePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{pascal(1,i) == 1\bound{pas1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch3}
+\begin{paste}{ugUserTrianglePageFull3}{ugUserTrianglePageEmpty3}
+\pastebutton{ugUserTrianglePageFull3}{\hidepaste}
+\tab{5}\spadcommand{pascal(n,n) == 1\bound{pas2 }\free{pas1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty3}
+\begin{paste}{ugUserTrianglePageEmpty3}{ugUserTrianglePagePatch3}
+\pastebutton{ugUserTrianglePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{pascal(n,n) == 1\bound{pas2 }\free{pas1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch4}
+\begin{paste}{ugUserTrianglePageFull4}{ugUserTrianglePageEmpty4}
+\pastebutton{ugUserTrianglePageFull4}{\hidepaste}
+\tab{5}\spadcommand{pascal(i,j | 1 < i and i < j) ==
+   pascal(i-1,j-1)+pascal(i,j-1)
+\bound{pas3 }\free{pas1 pas2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty4}
+\begin{paste}{ugUserTrianglePageEmpty4}{ugUserTrianglePagePatch4}
+\pastebutton{ugUserTrianglePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{pascal(i,j | 1 < i and i < j) ==
+   pascal(i-1,j-1)+pascal(i,j-1)
+\bound{pas3 }\free{pas1 pas2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch5}
+\begin{paste}{ugUserTrianglePageFull5}{ugUserTrianglePageEmpty5}
+\pastebutton{ugUserTrianglePageFull5}{\hidepaste}
+\tab{5}\spadcommand{pascalRow(n) == [pascal(i,n) for i in 1..n]\bound{pascalRow }\free{pas3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty5}
+\begin{paste}{ugUserTrianglePageEmpty5}{ugUserTrianglePagePatch5}
+\pastebutton{ugUserTrianglePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{pascalRow(n) == [pascal(i,n) for i in 1..n]\bound{pascalRow }\free{pas3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch6}
+\begin{paste}{ugUserTrianglePageFull6}{ugUserTrianglePageEmpty6}
+\pastebutton{ugUserTrianglePageFull6}{\hidepaste}
+\tab{5}\spadcommand{displayRow(n) == output center blankSeparate pascalRow(n)\free{pascalRow }\bound{displayRow }\free{expose }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty6}
+\begin{paste}{ugUserTrianglePageEmpty6}{ugUserTrianglePagePatch6}
+\pastebutton{ugUserTrianglePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{displayRow(n) == output center blankSeparate pascalRow(n)\free{pascalRow }\bound{displayRow }\free{expose }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch7}
+\begin{paste}{ugUserTrianglePageFull7}{ugUserTrianglePageEmpty7}
+\pastebutton{ugUserTrianglePageFull7}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{displayRow }}
+\indentrel{3}\begin{verbatim}
+                                   1
+                                  1 1
+                                 1 2 1
+                                1 3 3 1
+                               1 4 6 4 1
+                             1 5 10 10 5 1
+                            1 6 15 20 15 6 1
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty7}
+\begin{paste}{ugUserTrianglePageEmpty7}{ugUserTrianglePagePatch7}
+\pastebutton{ugUserTrianglePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{displayRow }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch8}
+\begin{paste}{ugUserTrianglePageFull8}{ugUserTrianglePageEmpty8}
+\pastebutton{ugUserTrianglePageFull8}{\hidepaste}
+\tab{5}\spadcommand{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]\bound{pascalRow2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty8}
+\begin{paste}{ugUserTrianglePageEmpty8}{ugUserTrianglePagePatch8}
+\pastebutton{ugUserTrianglePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]\bound{pascalRow2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch9}
+\begin{paste}{ugUserTrianglePageFull9}{ugUserTrianglePageEmpty9}
+\pastebutton{ugUserTrianglePageFull9}{\hidepaste}
+\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{pascalRow2 }\free{displayRow }}
+\indentrel{3}\begin{verbatim}
+                                     1
+                                  1    1
+                                1    2    1
+                             1    3    3    1
+                           1    4    6    4    1
+                        1    5   10   10    5    1
+                      1    6   15   20   15    6    1
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty9}
+\begin{paste}{ugUserTrianglePageEmpty9}{ugUserTrianglePagePatch9}
+\pastebutton{ugUserTrianglePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{pascalRow2 }\free{displayRow }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePagePatch10}
+\begin{paste}{ugUserTrianglePageFull10}{ugUserTrianglePageEmpty10}
+\pastebutton{ugUserTrianglePageFull10}{\hidepaste}
+\tab{5}\spadcommand{)set expose drop constructor OutputForm}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserTrianglePageEmpty10}
+\begin{paste}{ugUserTrianglePageEmpty10}{ugUserTrianglePagePatch10}
+\pastebutton{ugUserTrianglePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{)set expose drop constructor OutputForm}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserPalPage}{ug06.ht}{Example: Testing for Palindromes}
 \pageto{notitle}{ugUserTrianglePage}
@@ -33230,6 +87954,162 @@ Well, let's test them all!
 \autobuttons
 \end{page}
 
+\begin{patch}{ugUserPalPagePatch1}
+\begin{paste}{ugUserPalPageFull1}{ugUserPalPageEmpty1}
+\pastebutton{ugUserPalPageFull1}{\hidepaste}
+\tab{5}\spadcommand{pal? s == palAux?(s,1,\#s)\bound{pal }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty1}
+\begin{paste}{ugUserPalPageEmpty1}{ugUserPalPagePatch1}
+\pastebutton{ugUserPalPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{pal? s == palAux?(s,1,\#s)\bound{pal }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch2}
+\begin{paste}{ugUserPalPageFull2}{ugUserPalPageEmpty2}
+\pastebutton{ugUserPalPageFull2}{\hidepaste}
+\tab{5}\spadcommand{palAux?(s,i,j) ==
+  j > i =>
+    (s.i = s.j) and palAux?(s,i+1,i-1)
+  true
+\bound{palAux }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty2}
+\begin{paste}{ugUserPalPageEmpty2}{ugUserPalPagePatch2}
+\pastebutton{ugUserPalPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{palAux?(s,i,j) ==
+  j > i =>
+    (s.i = s.j) and palAux?(s,i+1,i-1)
+  true
+\bound{palAux }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch3}
+\begin{paste}{ugUserPalPageFull3}{ugUserPalPageEmpty3}
+\pastebutton{ugUserPalPageFull3}{\hidepaste}
+\tab{5}\spadcommand{pal? "Oxford"\free{pal palAux }}
+\indentrel{3}\begin{verbatim}
+   (3)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty3}
+\begin{paste}{ugUserPalPageEmpty3}{ugUserPalPagePatch3}
+\pastebutton{ugUserPalPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{pal? "Oxford"\free{pal palAux }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch4}
+\begin{paste}{ugUserPalPageFull4}{ugUserPalPageEmpty4}
+\pastebutton{ugUserPalPageFull4}{\hidepaste}
+\tab{5}\spadcommand{pal? [4,a,x-1,0,x-1,a,4]\free{pal palAux }}
+\indentrel{3}\begin{verbatim}
+   (4)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty4}
+\begin{paste}{ugUserPalPageEmpty4}{ugUserPalPagePatch4}
+\pastebutton{ugUserPalPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{pal? [4,a,x-1,0,x-1,a,4]\free{pal palAux }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch5}
+\begin{paste}{ugUserPalPageFull5}{ugUserPalPageEmpty5}
+\pastebutton{ugUserPalPageFull5}{\hidepaste}
+\tab{5}\spadcommand{pal? [1,6,15,20,15,6,1]\free{pal palAux }}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty5}
+\begin{paste}{ugUserPalPageEmpty5}{ugUserPalPagePatch5}
+\pastebutton{ugUserPalPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{pal? [1,6,15,20,15,6,1]\free{pal palAux }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch6}
+\begin{paste}{ugUserPalPageFull6}{ugUserPalPageEmpty6}
+\pastebutton{ugUserPalPageFull6}{\hidepaste}
+\tab{5}\spadcommand{pal?(1441::String)\free{pal palAux }}
+\indentrel{3}\begin{verbatim}
+   (6)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty6}
+\begin{paste}{ugUserPalPageEmpty6}{ugUserPalPagePatch6}
+\pastebutton{ugUserPalPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{pal?(1441::String)\free{pal palAux }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch7}
+\begin{paste}{ugUserPalPageFull7}{ugUserPalPageEmpty7}
+\pastebutton{ugUserPalPageFull7}{\hidepaste}
+\tab{5}\spadcommand{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux }\bound{pal5 }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   [11, 111, 1111, 11111, 111111, 1111111, 11111111,
+    111111111, 1111111111, 11111111111, ...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty7}
+\begin{paste}{ugUserPalPageEmpty7}{ugUserPalPagePatch7}
+\pastebutton{ugUserPalPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux }\bound{pal5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch8}
+\begin{paste}{ugUserPalPageFull8}{ugUserPalPageEmpty8}
+\pastebutton{ugUserPalPageFull8}{\hidepaste}
+\tab{5}\spadcommand{squares := [x**2 for x in ones]\free{pal5 }\bound{pal6 }}
+\indentrel{3}\begin{verbatim}
+   (8)
+   [121, 12321, 1234321, 123454321, 12345654321,
+    1234567654321, 123456787654321, 12345678987654321,
+    1234567900987654321, 123456790120987654321, ...]
+                           Type: Stream PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty8}
+\begin{paste}{ugUserPalPageEmpty8}{ugUserPalPagePatch8}
+\pastebutton{ugUserPalPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{squares := [x**2 for x in ones]\free{pal5 }\bound{pal6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPagePatch9}
+\begin{paste}{ugUserPalPageFull9}{ugUserPalPageEmpty9}
+\pastebutton{ugUserPalPageFull9}{\hidepaste}
+\tab{5}\spadcommand{[pal?(x::String) for x in squares]\free{pal6 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [true,true,true,true,true,true,true,true,true,true,...]
+                                   Type: Stream Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserPalPageEmpty9}
+\begin{paste}{ugUserPalPageEmpty9}{ugUserPalPagePatch9}
+\pastebutton{ugUserPalPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{[pal?(x::String) for x in squares]\free{pal6 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugUserRulesPage}{ug06.ht}{Rules and Pattern Matching}
 <<ug06.ht>>=
@@ -33568,6 +88448,453 @@ or by building a new domain of objects for your application.
 \endscroll
 \autobuttons
 \end{page}
+
+\begin{patch}{ugUserRulesPagePatch1}
+\begin{paste}{ugUserRulesPageFull1}{ugUserRulesPageEmpty1}
+\pastebutton{ugUserRulesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{logrule := rule log(x) + log(y) == log(x * y)\bound{logrule }}
+\indentrel{3}\begin{verbatim}
+   (1)  log(y) + log(x) + %B == log(x y) + %B
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty1}
+\begin{paste}{ugUserRulesPageEmpty1}{ugUserRulesPagePatch1}
+\pastebutton{ugUserRulesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{logrule := rule log(x) + log(y) == log(x * y)\bound{logrule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch2}
+\begin{paste}{ugUserRulesPageFull2}{ugUserRulesPageEmpty2}
+\pastebutton{ugUserRulesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := log sin x + log x\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (2)  log(sin(x)) + log(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty2}
+\begin{paste}{ugUserRulesPageEmpty2}{ugUserRulesPagePatch2}
+\pastebutton{ugUserRulesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := log sin x + log x\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch3}
+\begin{paste}{ugUserRulesPageFull3}{ugUserRulesPageEmpty3}
+\pastebutton{ugUserRulesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{logrule f\free{f }\free{logrule }}
+\indentrel{3}\begin{verbatim}
+   (3)  log(x sin(x))
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty3}
+\begin{paste}{ugUserRulesPageEmpty3}{ugUserRulesPagePatch3}
+\pastebutton{ugUserRulesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{logrule f\free{f }\free{logrule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch4}
+\begin{paste}{ugUserRulesPageFull4}{ugUserRulesPageEmpty4}
+\pastebutton{ugUserRulesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{logrules := rule
+  log(x) + log(y) == log(x * y)
+  y * log x       == log(x ** y)
+\bound{logrules }}
+\indentrel{3}\begin{verbatim}
+   (4)
+   {log(y) + log(x) + %C == log(x y) + %C,
+                     y
+    y log(x) == log(x )}
+      Type: Ruleset(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty4}
+\begin{paste}{ugUserRulesPageEmpty4}{ugUserRulesPagePatch4}
+\pastebutton{ugUserRulesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{logrules := rule
+  log(x) + log(y) == log(x * y)
+  y * log x       == log(x ** y)
+\bound{logrules }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch5}
+\begin{paste}{ugUserRulesPageFull5}{ugUserRulesPageEmpty5}
+\pastebutton{ugUserRulesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f := a * log(sin x) - 2 * log x\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+   (5)  a log(sin(x)) - 2log(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty5}
+\begin{paste}{ugUserRulesPageEmpty5}{ugUserRulesPagePatch5}
+\pastebutton{ugUserRulesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f := a * log(sin x) - 2 * log x\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch6}
+\begin{paste}{ugUserRulesPageFull6}{ugUserRulesPageEmpty6}
+\pastebutton{ugUserRulesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{logrules f\free{f1 }\free{logrules }}
+\indentrel{3}\begin{verbatim}
+                  a
+            sin(x)
+   (6)  log(ÄÄÄÄÄÄÄ)
+                2
+               x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty6}
+\begin{paste}{ugUserRulesPageEmpty6}{ugUserRulesPagePatch6}
+\pastebutton{ugUserRulesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{logrules f\free{f1 }\free{logrules }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch7}
+\begin{paste}{ugUserRulesPageFull7}{ugUserRulesPageEmpty7}
+\pastebutton{ugUserRulesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{logrules2 := rule
+  log(x) + log(y)          == log(x * y)
+  (y | integer? y) * log x == log(x ** y)
+\bound{logrules2 }}
+\indentrel{3}\begin{verbatim}
+   (7)
+   {log(y) + log(x) + %E == log(x y) + %E,
+                     y
+    y log(x) == log(x )}
+      Type: Ruleset(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty7}
+\begin{paste}{ugUserRulesPageEmpty7}{ugUserRulesPagePatch7}
+\pastebutton{ugUserRulesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{logrules2 := rule
+  log(x) + log(y)          == log(x * y)
+  (y | integer? y) * log x == log(x ** y)
+\bound{logrules2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch8}
+\begin{paste}{ugUserRulesPageFull8}{ugUserRulesPageEmpty8}
+\pastebutton{ugUserRulesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{f\free{f1 }}
+\indentrel{3}\begin{verbatim}
+   (8)  a log(sin(x)) - 2log(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty8}
+\begin{paste}{ugUserRulesPageEmpty8}{ugUserRulesPagePatch8}
+\pastebutton{ugUserRulesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{f\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch9}
+\begin{paste}{ugUserRulesPageFull9}{ugUserRulesPageEmpty9}
+\pastebutton{ugUserRulesPageFull9}{\hidepaste}
+\tab{5}\spadcommand{logrules2 f\free{f1 }\free{logrules2 }}
+\indentrel{3}\begin{verbatim}
+                             1
+   (9)  a log(sin(x)) + log(ÄÄ)
+                             2
+                            x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty9}
+\begin{paste}{ugUserRulesPageEmpty9}{ugUserRulesPagePatch9}
+\pastebutton{ugUserRulesPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{logrules2 f\free{f1 }\free{logrules2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch10}
+\begin{paste}{ugUserRulesPageFull10}{ugUserRulesPageEmpty10}
+\pastebutton{ugUserRulesPageFull10}{\hidepaste}
+\tab{5}\spadcommand{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)\bound{evenRule }}
+\indentrel{3}\begin{verbatim}
+                                   n
+                                   Ä
+               n             2     2
+   (10)  cos(x)  == (- sin(x)  + 1)
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty10}
+\begin{paste}{ugUserRulesPageEmpty10}{ugUserRulesPagePatch10}
+\pastebutton{ugUserRulesPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)\bound{evenRule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch11}
+\begin{paste}{ugUserRulesPageFull11}{ugUserRulesPageEmpty11}
+\pastebutton{ugUserRulesPageFull11}{\hidepaste}
+\tab{5}\spadcommand{evenRule( cos(x)**2 )\free{evenRule }}
+\indentrel{3}\begin{verbatim}
+                 2
+   (11)  - sin(x)  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty11}
+\begin{paste}{ugUserRulesPageEmpty11}{ugUserRulesPagePatch11}
+\pastebutton{ugUserRulesPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{evenRule( cos(x)**2 )\free{evenRule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch12}
+\begin{paste}{ugUserRulesPageFull12}{ugUserRulesPageEmpty12}
+\pastebutton{ugUserRulesPageFull12}{\hidepaste}
+\tab{5}\spadcommand{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
+\bound{sinCosProducts }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty12}
+\begin{paste}{ugUserRulesPageEmpty12}{ugUserRulesPagePatch12}
+\pastebutton{ugUserRulesPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{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
+\bound{sinCosProducts }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch13}
+\begin{paste}{ugUserRulesPageFull13}{ugUserRulesPageEmpty13}
+\pastebutton{ugUserRulesPageFull13}{\hidepaste}
+\tab{5}\spadcommand{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)\bound{g }}
+\indentrel{3}\begin{verbatim}
+   (13)  sin(a)sin(b) + cos(2a)sin(2a) + cos(a)cos(b)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty13}
+\begin{paste}{ugUserRulesPageEmpty13}{ugUserRulesPagePatch13}
+\pastebutton{ugUserRulesPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch14}
+\begin{paste}{ugUserRulesPageFull14}{ugUserRulesPageEmpty14}
+\pastebutton{ugUserRulesPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sinCosProducts g\free{sinCosProducts g }}
+\indentrel{3}\begin{verbatim}
+         sin(4a) + 2cos(b - a)
+   (14)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty14}
+\begin{paste}{ugUserRulesPageEmpty14}{ugUserRulesPagePatch14}
+\pastebutton{ugUserRulesPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sinCosProducts g\free{sinCosProducts g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch15}
+\begin{paste}{ugUserRulesPageFull15}{ugUserRulesPageEmpty15}
+\pastebutton{ugUserRulesPageFull15}{\hidepaste}
+\tab{5}\spadcommand{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule }}
+\indentrel{3}\begin{verbatim}
+           b + a      a  b
+   (15)  %e      == %e %e
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty15}
+\begin{paste}{ugUserRulesPageEmpty15}{ugUserRulesPagePatch15}
+\pastebutton{ugUserRulesPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch16}
+\begin{paste}{ugUserRulesPageFull16}{ugUserRulesPageEmpty16}
+\pastebutton{ugUserRulesPageFull16}{\hidepaste}
+\tab{5}\spadcommand{exprule exp x\free{exprule }}
+\indentrel{3}\begin{verbatim}
+           x
+   (16)  %e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty16}
+\begin{paste}{ugUserRulesPageEmpty16}{ugUserRulesPagePatch16}
+\pastebutton{ugUserRulesPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{exprule exp x\free{exprule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch17}
+\begin{paste}{ugUserRulesPageFull17}{ugUserRulesPageEmpty17}
+\pastebutton{ugUserRulesPageFull17}{\hidepaste}
+\tab{5}\spadcommand{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x\bound{eirule }}
+\indentrel{3}\begin{verbatim}
+            x   %N
+          Ú¿  %e   + y                   y
+   (17)   ³   ÄÄÄÄÄÄÄÄ d%N  == 'integral(Ä,x) + 'Ei(x)
+         ÀÙ      %N                      x
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty17}
+\begin{paste}{ugUserRulesPageEmpty17}{ugUserRulesPagePatch17}
+\pastebutton{ugUserRulesPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x\bound{eirule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch18}
+\begin{paste}{ugUserRulesPageFull18}{ugUserRulesPageEmpty18}
+\pastebutton{ugUserRulesPageFull18}{\hidepaste}
+\tab{5}\spadcommand{eirule integral(exp u/u, u)\free{eirule }}
+\indentrel{3}\begin{verbatim}
+   (18)  Ei(u)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty18}
+\begin{paste}{ugUserRulesPageEmpty18}{ugUserRulesPagePatch18}
+\pastebutton{ugUserRulesPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{eirule integral(exp u/u, u)\free{eirule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch19}
+\begin{paste}{ugUserRulesPageFull19}{ugUserRulesPageEmpty19}
+\pastebutton{ugUserRulesPageFull19}{\hidepaste}
+\tab{5}\spadcommand{eirule integral(sin u + exp u/u, u)\free{eirule }}
+\indentrel{3}\begin{verbatim}
+            u
+          Ú¿
+   (19)   ³   sin(%N)d%N  + Ei(u)
+         ÀÙ
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty19}
+\begin{paste}{ugUserRulesPageEmpty19}{ugUserRulesPagePatch19}
+\pastebutton{ugUserRulesPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{eirule integral(sin u + exp u/u, u)\free{eirule }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch20}
+\begin{paste}{ugUserRulesPageFull20}{ugUserRulesPageEmpty20}
+\pastebutton{ugUserRulesPageFull20}{\hidepaste}
+\tab{5}\spadcommand{u := operator 'u\bound{u }}
+\indentrel{3}\begin{verbatim}
+   (20)  u
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty20}
+\begin{paste}{ugUserRulesPageEmpty20}{ugUserRulesPagePatch20}
+\pastebutton{ugUserRulesPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{u := operator 'u\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch21}
+\begin{paste}{ugUserRulesPageFull21}{ugUserRulesPageEmpty21}
+\pastebutton{ugUserRulesPageFull21}{\hidepaste}
+\tab{5}\spadcommand{v := operator 'v\bound{v }}
+\indentrel{3}\begin{verbatim}
+   (21)  v
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty21}
+\begin{paste}{ugUserRulesPageEmpty21}{ugUserRulesPagePatch21}
+\pastebutton{ugUserRulesPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{v := operator 'v\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch22}
+\begin{paste}{ugUserRulesPageFull22}{ugUserRulesPageEmpty22}
+\pastebutton{ugUserRulesPageFull22}{\hidepaste}
+\tab{5}\spadcommand{myRule := rule u(x + y) == u x + v y\free{u v }\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (22)  u(y + x) == 'v(y) + 'u(x)
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty22}
+\begin{paste}{ugUserRulesPageEmpty22}{ugUserRulesPagePatch22}
+\pastebutton{ugUserRulesPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{myRule := rule u(x + y) == u x + v y\free{u v }\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch23}
+\begin{paste}{ugUserRulesPageFull23}{ugUserRulesPageEmpty23}
+\pastebutton{ugUserRulesPageFull23}{\hidepaste}
+\tab{5}\spadcommand{myRule u(a + b + c + d)\free{m }}
+\indentrel{3}\begin{verbatim}
+   (23)  v(d + c + b) + u(a)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty23}
+\begin{paste}{ugUserRulesPageEmpty23}{ugUserRulesPagePatch23}
+\pastebutton{ugUserRulesPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{myRule u(a + b + c + d)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch24}
+\begin{paste}{ugUserRulesPageFull24}{ugUserRulesPageEmpty24}
+\pastebutton{ugUserRulesPageFull24}{\hidepaste}
+\tab{5}\spadcommand{myOtherRule := rule u(:x + y) == u x + v y\free{u v }\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+   (24)  u(y + x) == 'v(y) + 'u(x)
+  Type: RewriteRule(Integer,Integer,Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty24}
+\begin{paste}{ugUserRulesPageEmpty24}{ugUserRulesPagePatch24}
+\pastebutton{ugUserRulesPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{myOtherRule := rule u(:x + y) == u x + v y\free{u v }\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPagePatch25}
+\begin{paste}{ugUserRulesPageFull25}{ugUserRulesPageEmpty25}
+\pastebutton{ugUserRulesPageFull25}{\hidepaste}
+\tab{5}\spadcommand{myOtherRule u(a + b + c + d)\free{m2 }}
+\indentrel{3}\begin{verbatim}
+   (25)  v(c) + v(b) + v(a) + u(d)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugUserRulesPageEmpty25}
+\begin{paste}{ugUserRulesPageEmpty25}{ugUserRulesPagePatch25}
+\pastebutton{ugUserRulesPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{myOtherRule u(a + b + c + d)\free{m2 }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 7 (ug07.ht)}
 <<ug07.ht>>=
@@ -33751,6 +89078,60 @@ and the second is just the range with no independent variable.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDPlotPagePatch1}
+\begin{paste}{ugGraphTwoDPlotPageFull1}{ugGraphTwoDPlotPageEmpty1}
+\pastebutton{ugGraphTwoDPlotPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPageEmpty1}
+\begin{paste}{ugGraphTwoDPlotPageEmpty1}{ugGraphTwoDPlotPagePatch1}
+\pastebutton{ugGraphTwoDPlotPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPagePatch2}
+\begin{paste}{ugGraphTwoDPlotPageFull2}{ugGraphTwoDPlotPageEmpty2}
+\pastebutton{ugGraphTwoDPlotPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPageEmpty2}
+\begin{paste}{ugGraphTwoDPlotPageEmpty2}{ugGraphTwoDPlotPagePatch2}
+\pastebutton{ugGraphTwoDPlotPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPagePatch3}
+\begin{paste}{ugGraphTwoDPlotPageFull3}{ugGraphTwoDPlotPageEmpty3}
+\pastebutton{ugGraphTwoDPlotPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPageEmpty3}
+\begin{paste}{ugGraphTwoDPlotPageEmpty3}{ugGraphTwoDPlotPagePatch3}
+\pastebutton{ugGraphTwoDPlotPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPagePatch4}
+\begin{paste}{ugGraphTwoDPlotPageFull4}{ugGraphTwoDPlotPageEmpty4}
+\pastebutton{ugGraphTwoDPlotPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(f, 0..4)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlotPageEmpty4}
+\begin{paste}{ugGraphTwoDPlotPageEmpty4}{ugGraphTwoDPlotPagePatch4}
+\pastebutton{ugGraphTwoDPlotPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(f, 0..4)\free{f }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphTwoDParPage}{ug07.ht}
 {Plotting 2D Parametric Plane Curves}
@@ -33848,6 +89229,88 @@ the first function specified in \axiomFun{curve}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDParPagePatch1}
+\begin{paste}{ugGraphTwoDParPageFull1}{ugGraphTwoDParPageEmpty1}
+\pastebutton{ugGraphTwoDParPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty1}
+\begin{paste}{ugGraphTwoDParPageEmpty1}{ugGraphTwoDParPagePatch1}
+\pastebutton{ugGraphTwoDParPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPagePatch2}
+\begin{paste}{ugGraphTwoDParPageFull2}{ugGraphTwoDParPageEmpty2}
+\pastebutton{ugGraphTwoDParPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty2}
+\begin{paste}{ugGraphTwoDParPageEmpty2}{ugGraphTwoDParPagePatch2}
+\pastebutton{ugGraphTwoDParPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPagePatch3}
+\begin{paste}{ugGraphTwoDParPageFull3}{ugGraphTwoDParPageEmpty3}
+\pastebutton{ugGraphTwoDParPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f(t:DFLOAT):DFLOAT == sin(3*t/4)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty3}
+\begin{paste}{ugGraphTwoDParPageEmpty3}{ugGraphTwoDParPagePatch3}
+\pastebutton{ugGraphTwoDParPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f(t:DFLOAT):DFLOAT == sin(3*t/4)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPagePatch4}
+\begin{paste}{ugGraphTwoDParPageFull4}{ugGraphTwoDParPageEmpty4}
+\pastebutton{ugGraphTwoDParPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g(t:DFLOAT):DFLOAT == sin(t)\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty4}
+\begin{paste}{ugGraphTwoDParPageEmpty4}{ugGraphTwoDParPagePatch4}
+\pastebutton{ugGraphTwoDParPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g(t:DFLOAT):DFLOAT == sin(t)\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPagePatch5}
+\begin{paste}{ugGraphTwoDParPageFull5}{ugGraphTwoDParPageEmpty5}
+\pastebutton{ugGraphTwoDParPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(f,g),0..\%pi)\free{f g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty5}
+\begin{paste}{ugGraphTwoDParPageEmpty5}{ugGraphTwoDParPagePatch5}
+\pastebutton{ugGraphTwoDParPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(f,g),0..\%pi)\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPagePatch6}
+\begin{paste}{ugGraphTwoDParPageFull6}{ugGraphTwoDParPageEmpty6}
+\pastebutton{ugGraphTwoDParPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(f,g),-4*\%pi..4*\%pi)\free{f g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDParPageEmpty6}
+\begin{paste}{ugGraphTwoDParPageEmpty6}{ugGraphTwoDParPagePatch6}
+\pastebutton{ugGraphTwoDParPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(curve(f,g),-4*\%pi..4*\%pi)\free{f g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphTwoDPlanePage}{ug07.ht}{Plotting Plane Algebraic Curves}
 \pageto{notitle}{ugGraphTwoDOptionsPage}
@@ -33907,6 +89370,37 @@ The first argument is always expressed as an equation of the form
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDPlanePagePatch1}
+\begin{paste}{ugGraphTwoDPlanePageFull1}{ugGraphTwoDPlanePageEmpty1}
+\pastebutton{ugGraphTwoDPlanePageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1)\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (1)
+    4      2            2    4      3      2
+   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlanePageEmpty1}
+\begin{paste}{ugGraphTwoDPlanePageEmpty1}{ugGraphTwoDPlanePagePatch1}
+\pastebutton{ugGraphTwoDPlanePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1)\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlanePagePatch2}
+\begin{paste}{ugGraphTwoDPlanePageFull2}{ugGraphTwoDPlanePageEmpty2}
+\pastebutton{ugGraphTwoDPlanePageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7])\free{p }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplanepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplanepage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDPlanePageEmpty2}
+\begin{paste}{ugGraphTwoDPlanePageEmpty2}{ugGraphTwoDPlanePagePatch2}
+\pastebutton{ugGraphTwoDPlanePageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7])\free{p }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphTwoDOptionsPage}{ug07.ht}{Two-Dimensional Options}
 \pageto{notitle}{ugGraphColorPage}
@@ -34056,6 +89550,136 @@ Section 7.2.7\ignore{ugGraphCoord} \texht{.}{or
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDOptionsPagePatch1}
+\begin{paste}{ugGraphTwoDOptionsPageFull1}{ugGraphTwoDOptionsPageEmpty1}
+\pastebutton{ugGraphTwoDOptionsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty1}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty1}{ugGraphTwoDOptionsPagePatch1}
+\pastebutton{ugGraphTwoDOptionsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch2}
+\begin{paste}{ugGraphTwoDOptionsPageFull2}{ugGraphTwoDOptionsPageEmpty2}
+\pastebutton{ugGraphTwoDOptionsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty2}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty2}{ugGraphTwoDOptionsPagePatch2}
+\pastebutton{ugGraphTwoDOptionsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch3}
+\begin{paste}{ugGraphTwoDOptionsPageFull3}{ugGraphTwoDOptionsPageEmpty3}
+\pastebutton{ugGraphTwoDOptionsPageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty3}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty3}{ugGraphTwoDOptionsPagePatch3}
+\pastebutton{ugGraphTwoDOptionsPageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch4}
+\begin{paste}{ugGraphTwoDOptionsPageFull4}{ugGraphTwoDOptionsPageEmpty4}
+\pastebutton{ugGraphTwoDOptionsPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty4}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty4}{ugGraphTwoDOptionsPagePatch4}
+\pastebutton{ugGraphTwoDOptionsPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch5}
+\begin{paste}{ugGraphTwoDOptionsPageFull5}{ugGraphTwoDOptionsPageEmpty5}
+\pastebutton{ugGraphTwoDOptionsPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty5}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty5}{ugGraphTwoDOptionsPagePatch5}
+\pastebutton{ugGraphTwoDOptionsPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch6}
+\begin{paste}{ugGraphTwoDOptionsPageFull6}{ugGraphTwoDOptionsPageEmpty6}
+\pastebutton{ugGraphTwoDOptionsPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty6}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty6}{ugGraphTwoDOptionsPagePatch6}
+\pastebutton{ugGraphTwoDOptionsPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch7}
+\begin{paste}{ugGraphTwoDOptionsPageFull7}{ugGraphTwoDOptionsPageEmpty7}
+\pastebutton{ugGraphTwoDOptionsPageFull7}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage7}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty7}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty7}{ugGraphTwoDOptionsPagePatch7}
+\pastebutton{ugGraphTwoDOptionsPageEmpty7}{\showpaste}
+\tab{5}\spadgraph{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch8}
+\begin{paste}{ugGraphTwoDOptionsPageFull8}{ugGraphTwoDOptionsPageEmpty8}
+\pastebutton{ugGraphTwoDOptionsPageFull8}{\hidepaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage8.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage8}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty8}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty8}{ugGraphTwoDOptionsPagePatch8}
+\pastebutton{ugGraphTwoDOptionsPageEmpty8}{\showpaste}
+\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch9}
+\begin{paste}{ugGraphTwoDOptionsPageFull9}{ugGraphTwoDOptionsPageEmpty9}
+\pastebutton{ugGraphTwoDOptionsPageFull9}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage9.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage9}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty9}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty9}{ugGraphTwoDOptionsPagePatch9}
+\pastebutton{ugGraphTwoDOptionsPageEmpty9}{\showpaste}
+\tab{5}\spadgraph{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPagePatch10}
+\begin{paste}{ugGraphTwoDOptionsPageFull10}{ugGraphTwoDOptionsPageEmpty10}
+\pastebutton{ugGraphTwoDOptionsPageFull10}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDOptionsPageEmpty10}
+\begin{paste}{ugGraphTwoDOptionsPageEmpty10}{ugGraphTwoDOptionsPagePatch10}
+\pastebutton{ugGraphTwoDOptionsPageEmpty10}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphColorPage}{ug07.ht}{Color}
 <<ug07.ht>>=
@@ -34121,6 +89745,32 @@ Use the {\tt curveColor} option for curves.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphColorPagePatch1}
+\begin{paste}{ugGraphColorPageFull1}{ugGraphColorPageEmpty1}
+\pastebutton{ugGraphColorPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,pointColor == green())}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPageEmpty1}
+\begin{paste}{ugGraphColorPageEmpty1}{ugGraphColorPagePatch1}
+\pastebutton{ugGraphColorPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,pointColor == green())}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPagePatch2}
+\begin{paste}{ugGraphColorPageFull2}{ugGraphColorPageEmpty2}
+\pastebutton{ugGraphColorPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPageEmpty2}
+\begin{paste}{ugGraphColorPageEmpty2}{ugGraphColorPagePatch2}
+\pastebutton{ugGraphColorPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphColorPalettePage}{ug07.ht}{Palette}
 <<ug07.ht>>=
@@ -34164,6 +89814,83 @@ Palettes can be used in specifying colors in \twodim{} graphs.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphColorPalettePagePatch1}
+\begin{paste}{ugGraphColorPalettePageFull1}{ugGraphColorPalettePageEmpty1}
+\pastebutton{ugGraphColorPalettePageFull1}{\hidepaste}
+\tab{5}\spadcommand{shade red()}
+\indentrel{3}\begin{verbatim}
+   (1)  3
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePageEmpty1}
+\begin{paste}{ugGraphColorPalettePageEmpty1}{ugGraphColorPalettePagePatch1}
+\pastebutton{ugGraphColorPalettePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{shade red()}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePagePatch2}
+\begin{paste}{ugGraphColorPalettePageFull2}{ugGraphColorPalettePageEmpty2}
+\pastebutton{ugGraphColorPalettePageFull2}{\hidepaste}
+\tab{5}\spadcommand{myFavoriteColor := dark blue()\bound{mfc }}
+\indentrel{3}\begin{verbatim}
+   (2)  [Hue: 22  Weight: 1.0] from the Dark palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePageEmpty2}
+\begin{paste}{ugGraphColorPalettePageEmpty2}{ugGraphColorPalettePagePatch2}
+\pastebutton{ugGraphColorPalettePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{myFavoriteColor := dark blue()\bound{mfc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePagePatch3}
+\begin{paste}{ugGraphColorPalettePageFull3}{ugGraphColorPalettePageEmpty3}
+\pastebutton{ugGraphColorPalettePageFull3}{\hidepaste}
+\tab{5}\spadcommand{shade myFavoriteColor\free{mfc }}
+\indentrel{3}\begin{verbatim}
+   (3)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePageEmpty3}
+\begin{paste}{ugGraphColorPalettePageEmpty3}{ugGraphColorPalettePagePatch3}
+\pastebutton{ugGraphColorPalettePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{shade myFavoriteColor\free{mfc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePagePatch4}
+\begin{paste}{ugGraphColorPalettePageFull4}{ugGraphColorPalettePageEmpty4}
+\pastebutton{ugGraphColorPalettePageFull4}{\hidepaste}
+\tab{5}\spadcommand{hue myFavoriteColor\free{mfc }}
+\indentrel{3}\begin{verbatim}
+   (4)  Hue: 22  Weight: 1.0
+                                            Type: Color
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePageEmpty4}
+\begin{paste}{ugGraphColorPalettePageEmpty4}{ugGraphColorPalettePagePatch4}
+\pastebutton{ugGraphColorPalettePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{hue myFavoriteColor\free{mfc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePagePatch5}
+\begin{paste}{ugGraphColorPalettePageFull5}{ugGraphColorPalettePageEmpty5}
+\pastebutton{ugGraphColorPalettePageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == dark blue())}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpalettepage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpalettepage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphColorPalettePageEmpty5}
+\begin{paste}{ugGraphColorPalettePageEmpty5}{ugGraphColorPalettePagePatch5}
+\pastebutton{ugGraphColorPalettePageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == dark blue())}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphTwoDControlPage}{ug07.ht}{Two-Dimensional Control-Panel}
 <<ug07.ht>>=
@@ -34803,6 +90530,709 @@ the point data is in the file \axiom{"file.data"}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDbuildPagePatch1}
+\begin{paste}{ugGraphTwoDbuildPageFull1}{ugGraphTwoDbuildPageEmpty1}
+\pastebutton{ugGraphTwoDbuildPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p1 := point [1,1]$(Point DFLOAT)\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  [1.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty1}
+\begin{paste}{ugGraphTwoDbuildPageEmpty1}{ugGraphTwoDbuildPagePatch1}
+\pastebutton{ugGraphTwoDbuildPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p1 := point [1,1]$(Point DFLOAT)\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch2}
+\begin{paste}{ugGraphTwoDbuildPageFull2}{ugGraphTwoDbuildPageEmpty2}
+\pastebutton{ugGraphTwoDbuildPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p2 := point [0,1]$(Point DFLOAT)\bound{p2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty2}
+\begin{paste}{ugGraphTwoDbuildPageEmpty2}{ugGraphTwoDbuildPagePatch2}
+\pastebutton{ugGraphTwoDbuildPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p2 := point [0,1]$(Point DFLOAT)\bound{p2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch3}
+\begin{paste}{ugGraphTwoDbuildPageFull3}{ugGraphTwoDbuildPageEmpty3}
+\pastebutton{ugGraphTwoDbuildPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p3 := point [0,0]$(Point DFLOAT)\bound{p3 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [0.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty3}
+\begin{paste}{ugGraphTwoDbuildPageEmpty3}{ugGraphTwoDbuildPagePatch3}
+\pastebutton{ugGraphTwoDbuildPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p3 := point [0,0]$(Point DFLOAT)\bound{p3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch4}
+\begin{paste}{ugGraphTwoDbuildPageFull4}{ugGraphTwoDbuildPageEmpty4}
+\pastebutton{ugGraphTwoDbuildPageFull4}{\hidepaste}
+\tab{5}\spadcommand{p4 := point [1,0]$(Point DFLOAT)\bound{p4 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty4}
+\begin{paste}{ugGraphTwoDbuildPageEmpty4}{ugGraphTwoDbuildPagePatch4}
+\pastebutton{ugGraphTwoDbuildPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{p4 := point [1,0]$(Point DFLOAT)\bound{p4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch5}
+\begin{paste}{ugGraphTwoDbuildPageFull5}{ugGraphTwoDbuildPageEmpty5}
+\pastebutton{ugGraphTwoDbuildPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p5 := point [1,.5]$(Point DFLOAT)\bound{p5 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [1.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty5}
+\begin{paste}{ugGraphTwoDbuildPageEmpty5}{ugGraphTwoDbuildPagePatch5}
+\pastebutton{ugGraphTwoDbuildPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p5 := point [1,.5]$(Point DFLOAT)\bound{p5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch6}
+\begin{paste}{ugGraphTwoDbuildPageFull6}{ugGraphTwoDbuildPageEmpty6}
+\pastebutton{ugGraphTwoDbuildPageFull6}{\hidepaste}
+\tab{5}\spadcommand{p6 := point [.5,0]$(Point DFLOAT)\bound{p6 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [0.5,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty6}
+\begin{paste}{ugGraphTwoDbuildPageEmpty6}{ugGraphTwoDbuildPagePatch6}
+\pastebutton{ugGraphTwoDbuildPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{p6 := point [.5,0]$(Point DFLOAT)\bound{p6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch7}
+\begin{paste}{ugGraphTwoDbuildPageFull7}{ugGraphTwoDbuildPageEmpty7}
+\pastebutton{ugGraphTwoDbuildPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p7 := point [0,0.5]$(Point DFLOAT)\bound{p7 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [0.0,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty7}
+\begin{paste}{ugGraphTwoDbuildPageEmpty7}{ugGraphTwoDbuildPagePatch7}
+\pastebutton{ugGraphTwoDbuildPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p7 := point [0,0.5]$(Point DFLOAT)\bound{p7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch8}
+\begin{paste}{ugGraphTwoDbuildPageFull8}{ugGraphTwoDbuildPageEmpty8}
+\pastebutton{ugGraphTwoDbuildPageFull8}{\hidepaste}
+\tab{5}\spadcommand{p8 := point [.5,1]$(Point DFLOAT)\bound{p8 }}
+\indentrel{3}\begin{verbatim}
+   (8)  [0.5,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty8}
+\begin{paste}{ugGraphTwoDbuildPageEmpty8}{ugGraphTwoDbuildPagePatch8}
+\pastebutton{ugGraphTwoDbuildPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{p8 := point [.5,1]$(Point DFLOAT)\bound{p8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch9}
+\begin{paste}{ugGraphTwoDbuildPageFull9}{ugGraphTwoDbuildPageEmpty9}
+\pastebutton{ugGraphTwoDbuildPageFull9}{\hidepaste}
+\tab{5}\spadcommand{p9 := point [.25,.25]$(Point DFLOAT)\bound{p9 }}
+\indentrel{3}\begin{verbatim}
+   (9)  [0.25,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty9}
+\begin{paste}{ugGraphTwoDbuildPageEmpty9}{ugGraphTwoDbuildPagePatch9}
+\pastebutton{ugGraphTwoDbuildPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{p9 := point [.25,.25]$(Point DFLOAT)\bound{p9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch10}
+\begin{paste}{ugGraphTwoDbuildPageFull10}{ugGraphTwoDbuildPageEmpty10}
+\pastebutton{ugGraphTwoDbuildPageFull10}{\hidepaste}
+\tab{5}\spadcommand{p10 := point [.25,.75]$(Point DFLOAT)\bound{p10 }}
+\indentrel{3}\begin{verbatim}
+   (10)  [0.25,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty10}
+\begin{paste}{ugGraphTwoDbuildPageEmpty10}{ugGraphTwoDbuildPagePatch10}
+\pastebutton{ugGraphTwoDbuildPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{p10 := point [.25,.75]$(Point DFLOAT)\bound{p10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch11}
+\begin{paste}{ugGraphTwoDbuildPageFull11}{ugGraphTwoDbuildPageEmpty11}
+\pastebutton{ugGraphTwoDbuildPageFull11}{\hidepaste}
+\tab{5}\spadcommand{p11 := point [.75,.75]$(Point DFLOAT)\bound{p11 }}
+\indentrel{3}\begin{verbatim}
+   (11)  [0.75,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty11}
+\begin{paste}{ugGraphTwoDbuildPageEmpty11}{ugGraphTwoDbuildPagePatch11}
+\pastebutton{ugGraphTwoDbuildPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{p11 := point [.75,.75]$(Point DFLOAT)\bound{p11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch12}
+\begin{paste}{ugGraphTwoDbuildPageFull12}{ugGraphTwoDbuildPageEmpty12}
+\pastebutton{ugGraphTwoDbuildPageFull12}{\hidepaste}
+\tab{5}\spadcommand{p12 := point [.75,.25]$(Point DFLOAT)\bound{p12 }}
+\indentrel{3}\begin{verbatim}
+   (12)  [0.75,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty12}
+\begin{paste}{ugGraphTwoDbuildPageEmpty12}{ugGraphTwoDbuildPagePatch12}
+\pastebutton{ugGraphTwoDbuildPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{p12 := point [.75,.25]$(Point DFLOAT)\bound{p12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch13}
+\begin{paste}{ugGraphTwoDbuildPageFull13}{ugGraphTwoDbuildPageEmpty13}
+\pastebutton{ugGraphTwoDbuildPageFull13}{\hidepaste}
+\tab{5}\spadcommand{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]]\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }\bound{llp }}
+\indentrel{3}\begin{verbatim}
+   (13)
+   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
+    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
+    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
+    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
+    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
+    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
+                      Type: List List Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty13}
+\begin{paste}{ugGraphTwoDbuildPageEmpty13}{ugGraphTwoDbuildPagePatch13}
+\pastebutton{ugGraphTwoDbuildPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{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]]\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }\bound{llp }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch14}
+\begin{paste}{ugGraphTwoDbuildPageFull14}{ugGraphTwoDbuildPageEmpty14}
+\pastebutton{ugGraphTwoDbuildPageFull14}{\hidepaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\indentrel{3}\begin{verbatim}
+   (14)  6
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty14}
+\begin{paste}{ugGraphTwoDbuildPageEmpty14}{ugGraphTwoDbuildPagePatch14}
+\pastebutton{ugGraphTwoDbuildPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch15}
+\begin{paste}{ugGraphTwoDbuildPageFull15}{ugGraphTwoDbuildPageEmpty15}
+\pastebutton{ugGraphTwoDbuildPageFull15}{\hidepaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\indentrel{3}\begin{verbatim}
+   (15)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty15}
+\begin{paste}{ugGraphTwoDbuildPageEmpty15}{ugGraphTwoDbuildPagePatch15}
+\pastebutton{ugGraphTwoDbuildPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch16}
+\begin{paste}{ugGraphTwoDbuildPageFull16}{ugGraphTwoDbuildPageEmpty16}
+\pastebutton{ugGraphTwoDbuildPageFull16}{\hidepaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\indentrel{3}\begin{verbatim}
+   (16)  10
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty16}
+\begin{paste}{ugGraphTwoDbuildPageEmpty16}{ugGraphTwoDbuildPagePatch16}
+\pastebutton{ugGraphTwoDbuildPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch17}
+\begin{paste}{ugGraphTwoDbuildPageFull17}{ugGraphTwoDbuildPageEmpty17}
+\pastebutton{ugGraphTwoDbuildPageFull17}{\hidepaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\indentrel{3}\begin{verbatim}
+   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
+                             Type: List PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty17}
+\begin{paste}{ugGraphTwoDbuildPageEmpty17}{ugGraphTwoDbuildPagePatch17}
+\pastebutton{ugGraphTwoDbuildPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch18}
+\begin{paste}{ugGraphTwoDbuildPageFull18}{ugGraphTwoDbuildPageEmpty18}
+\pastebutton{ugGraphTwoDbuildPageFull18}{\hidepaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\indentrel{3}\begin{verbatim}
+   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty18}
+\begin{paste}{ugGraphTwoDbuildPageEmpty18}{ugGraphTwoDbuildPagePatch18}
+\pastebutton{ugGraphTwoDbuildPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch19}
+\begin{paste}{ugGraphTwoDbuildPageFull19}{ugGraphTwoDbuildPageEmpty19}
+\pastebutton{ugGraphTwoDbuildPageFull19}{\hidepaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\indentrel{3}\begin{verbatim}
+   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty19}
+\begin{paste}{ugGraphTwoDbuildPageEmpty19}{ugGraphTwoDbuildPagePatch19}
+\pastebutton{ugGraphTwoDbuildPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch20}
+\begin{paste}{ugGraphTwoDbuildPageFull20}{ugGraphTwoDbuildPageEmpty20}
+\pastebutton{ugGraphTwoDbuildPageFull20}{\hidepaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\indentrel{3}\begin{verbatim}
+   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
+                                          Type: Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty20}
+\begin{paste}{ugGraphTwoDbuildPageEmpty20}{ugGraphTwoDbuildPagePatch20}
+\pastebutton{ugGraphTwoDbuildPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch21}
+\begin{paste}{ugGraphTwoDbuildPageFull21}{ugGraphTwoDbuildPageEmpty21}
+\pastebutton{ugGraphTwoDbuildPageFull21}{\hidepaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\free{pc1 pc2 pc3 }\bound{lpc }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   [[Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Pastel palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty21}
+\begin{paste}{ugGraphTwoDbuildPageEmpty21}{ugGraphTwoDbuildPagePatch21}
+\pastebutton{ugGraphTwoDbuildPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\free{pc1 pc2 pc3 }\bound{lpc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch22}
+\begin{paste}{ugGraphTwoDbuildPageFull22}{ugGraphTwoDbuildPageEmpty22}
+\pastebutton{ugGraphTwoDbuildPageFull22}{\hidepaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [[Hue: 22  Weight: 1.0] from the Pastel palette,
+    [Hue: 11  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 1  Weight: 1.0] from the Bright palette,
+    [Hue: 14  Weight: 1.0] from the Light palette,
+    [Hue: 11  Weight: 1.0] from the Dim palette,
+    [Hue: 22  Weight: 1.0] from the Bright palette,
+    [Hue: 1  Weight: 1.0] from the Dark palette,
+    [Hue: 1  Weight: 1.0] from the Pastel palette,
+    [Hue: 22  Weight: 1.0] from the Light palette,
+    [Hue: 14  Weight: 1.0] from the Dim palette,
+    [Hue: 11  Weight: 1.0] from the Light palette]
+                                     Type: List Palette
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty22}
+\begin{paste}{ugGraphTwoDbuildPageEmpty22}{ugGraphTwoDbuildPagePatch22}
+\pastebutton{ugGraphTwoDbuildPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{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()]\bound{lc }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch23}
+\begin{paste}{ugGraphTwoDbuildPageFull23}{ugGraphTwoDbuildPageEmpty23}
+\pastebutton{ugGraphTwoDbuildPageFull23}{\hidepaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\indentrel{3}\begin{verbatim}
+   (23)  Graph with 12 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty23}
+\begin{paste}{ugGraphTwoDbuildPageEmpty23}{ugGraphTwoDbuildPagePatch23}
+\pastebutton{ugGraphTwoDbuildPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch24}
+\begin{paste}{ugGraphTwoDbuildPageFull24}{ugGraphTwoDbuildPageEmpty24}
+\pastebutton{ugGraphTwoDbuildPageFull24}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage24}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty24}
+\begin{paste}{ugGraphTwoDbuildPageEmpty24}{ugGraphTwoDbuildPagePatch24}
+\pastebutton{ugGraphTwoDbuildPageEmpty24}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch25}
+\begin{paste}{ugGraphTwoDbuildPageFull25}{ugGraphTwoDbuildPageEmpty25}
+\pastebutton{ugGraphTwoDbuildPageFull25}{\hidepaste}
+\tab{5}\spadcommand{)clear all\bound{clearAll }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty25}
+\begin{paste}{ugGraphTwoDbuildPageEmpty25}{ugGraphTwoDbuildPagePatch25}
+\pastebutton{ugGraphTwoDbuildPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{)clear all\bound{clearAll }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch26}
+\begin{paste}{ugGraphTwoDbuildPageFull26}{ugGraphTwoDbuildPageEmpty26}
+\pastebutton{ugGraphTwoDbuildPageFull26}{\hidepaste}
+\tab{5}\spadcommand{g := graphImage()$GRIMAGE\bound{Sg }\free{clearAll }}
+\indentrel{3}\begin{verbatim}
+   (1)  Graph with 0 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty26}
+\begin{paste}{ugGraphTwoDbuildPageEmpty26}{ugGraphTwoDbuildPagePatch26}
+\pastebutton{ugGraphTwoDbuildPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{g := graphImage()$GRIMAGE\bound{Sg }\free{clearAll }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch27}
+\begin{paste}{ugGraphTwoDbuildPageFull27}{ugGraphTwoDbuildPageEmpty27}
+\pastebutton{ugGraphTwoDbuildPageFull27}{\hidepaste}
+\tab{5}\spadcommand{p1 := point [0,0]$(Point DFLOAT)\bound{Sp1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [0.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty27}
+\begin{paste}{ugGraphTwoDbuildPageEmpty27}{ugGraphTwoDbuildPagePatch27}
+\pastebutton{ugGraphTwoDbuildPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{p1 := point [0,0]$(Point DFLOAT)\bound{Sp1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch28}
+\begin{paste}{ugGraphTwoDbuildPageFull28}{ugGraphTwoDbuildPageEmpty28}
+\pastebutton{ugGraphTwoDbuildPageFull28}{\hidepaste}
+\tab{5}\spadcommand{p2 := point [.25,.25]$(Point DFLOAT)\bound{Sp2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [0.25,0.25]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty28}
+\begin{paste}{ugGraphTwoDbuildPageEmpty28}{ugGraphTwoDbuildPagePatch28}
+\pastebutton{ugGraphTwoDbuildPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{p2 := point [.25,.25]$(Point DFLOAT)\bound{Sp2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch29}
+\begin{paste}{ugGraphTwoDbuildPageFull29}{ugGraphTwoDbuildPageEmpty29}
+\pastebutton{ugGraphTwoDbuildPageFull29}{\hidepaste}
+\tab{5}\spadcommand{p3 := point [.5,.5]$(Point DFLOAT)\bound{Sp3 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [0.5,0.5]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty29}
+\begin{paste}{ugGraphTwoDbuildPageEmpty29}{ugGraphTwoDbuildPagePatch29}
+\pastebutton{ugGraphTwoDbuildPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{p3 := point [.5,.5]$(Point DFLOAT)\bound{Sp3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch30}
+\begin{paste}{ugGraphTwoDbuildPageFull30}{ugGraphTwoDbuildPageEmpty30}
+\pastebutton{ugGraphTwoDbuildPageFull30}{\hidepaste}
+\tab{5}\spadcommand{p4 := point [.75,.75]$(Point DFLOAT)\bound{Sp4 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [0.75,0.75]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty30}
+\begin{paste}{ugGraphTwoDbuildPageEmpty30}{ugGraphTwoDbuildPagePatch30}
+\pastebutton{ugGraphTwoDbuildPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{p4 := point [.75,.75]$(Point DFLOAT)\bound{Sp4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch31}
+\begin{paste}{ugGraphTwoDbuildPageFull31}{ugGraphTwoDbuildPageEmpty31}
+\pastebutton{ugGraphTwoDbuildPageFull31}{\hidepaste}
+\tab{5}\spadcommand{p5 := point [1,1]$(Point DFLOAT)\bound{Sp5 }}
+\indentrel{3}\begin{verbatim}
+   (6)  [1.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty31}
+\begin{paste}{ugGraphTwoDbuildPageEmpty31}{ugGraphTwoDbuildPagePatch31}
+\pastebutton{ugGraphTwoDbuildPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{p5 := point [1,1]$(Point DFLOAT)\bound{Sp5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch32}
+\begin{paste}{ugGraphTwoDbuildPageFull32}{ugGraphTwoDbuildPageEmpty32}
+\pastebutton{ugGraphTwoDbuildPageFull32}{\hidepaste}
+\tab{5}\spadcommand{component(g,p1)$GRIMAGE\free{Sg Sp1 }\bound{gp1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty32}
+\begin{paste}{ugGraphTwoDbuildPageEmpty32}{ugGraphTwoDbuildPagePatch32}
+\pastebutton{ugGraphTwoDbuildPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{component(g,p1)$GRIMAGE\free{Sg Sp1 }\bound{gp1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch33}
+\begin{paste}{ugGraphTwoDbuildPageFull33}{ugGraphTwoDbuildPageEmpty33}
+\pastebutton{ugGraphTwoDbuildPageFull33}{\hidepaste}
+\tab{5}\spadcommand{component(g,p2)$GRIMAGE\free{Sg Sp2 }\bound{gp2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty33}
+\begin{paste}{ugGraphTwoDbuildPageEmpty33}{ugGraphTwoDbuildPagePatch33}
+\pastebutton{ugGraphTwoDbuildPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{component(g,p2)$GRIMAGE\free{Sg Sp2 }\bound{gp2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch34}
+\begin{paste}{ugGraphTwoDbuildPageFull34}{ugGraphTwoDbuildPageEmpty34}
+\pastebutton{ugGraphTwoDbuildPageFull34}{\hidepaste}
+\tab{5}\spadcommand{appendPoint(g,p3)$GRIMAGE\free{gp1 gp2 Sp3 }\bound{gp3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty34}
+\begin{paste}{ugGraphTwoDbuildPageEmpty34}{ugGraphTwoDbuildPagePatch34}
+\pastebutton{ugGraphTwoDbuildPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{appendPoint(g,p3)$GRIMAGE\free{gp1 gp2 Sp3 }\bound{gp3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch35}
+\begin{paste}{ugGraphTwoDbuildPageFull35}{ugGraphTwoDbuildPageEmpty35}
+\pastebutton{ugGraphTwoDbuildPageFull35}{\hidepaste}
+\tab{5}\spadcommand{appendPoint(g,p4)$GRIMAGE\free{gp3 Sp4 }\bound{gp4 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty35}
+\begin{paste}{ugGraphTwoDbuildPageEmpty35}{ugGraphTwoDbuildPagePatch35}
+\pastebutton{ugGraphTwoDbuildPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{appendPoint(g,p4)$GRIMAGE\free{gp3 Sp4 }\bound{gp4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch36}
+\begin{paste}{ugGraphTwoDbuildPageFull36}{ugGraphTwoDbuildPageEmpty36}
+\pastebutton{ugGraphTwoDbuildPageFull36}{\hidepaste}
+\tab{5}\spadcommand{appendPoint(g,p5)$GRIMAGE\free{gp4 Sp5 }\bound{gp5 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty36}
+\begin{paste}{ugGraphTwoDbuildPageEmpty36}{ugGraphTwoDbuildPagePatch36}
+\pastebutton{ugGraphTwoDbuildPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{appendPoint(g,p5)$GRIMAGE\free{gp4 Sp5 }\bound{gp5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch37}
+\begin{paste}{ugGraphTwoDbuildPageFull37}{ugGraphTwoDbuildPageEmpty37}
+\pastebutton{ugGraphTwoDbuildPageFull37}{\hidepaste}
+\tab{5}\spadcommand{g1 := makeGraphImage(g)$GRIMAGE\bound{Sg1 }\free{gp5 }}
+\indentrel{3}\begin{verbatim}
+   (12)  Graph with 2 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty37}
+\begin{paste}{ugGraphTwoDbuildPageEmpty37}{ugGraphTwoDbuildPagePatch37}
+\pastebutton{ugGraphTwoDbuildPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{g1 := makeGraphImage(g)$GRIMAGE\bound{Sg1 }\free{gp5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch38}
+\begin{paste}{ugGraphTwoDbuildPageFull38}{ugGraphTwoDbuildPageEmpty38}
+\pastebutton{ugGraphTwoDbuildPageFull38}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(g1,[title("Graph Points")])$VIEW2D\free{Sg1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage38.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage38}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty38}
+\begin{paste}{ugGraphTwoDbuildPageEmpty38}{ugGraphTwoDbuildPagePatch38}
+\pastebutton{ugGraphTwoDbuildPageEmpty38}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(g1,[title("Graph Points")])$VIEW2D\free{Sg1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch39}
+\begin{paste}{ugGraphTwoDbuildPageFull39}{ugGraphTwoDbuildPageEmpty39}
+\pastebutton{ugGraphTwoDbuildPageFull39}{\hidepaste}
+\tab{5}\spadcommand{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])$GRIMAGE\free{Sp1 Sp2 Sp3 Sp4 Sp5 }\bound{Sg2 }}
+\indentrel{3}\begin{verbatim}
+   (14)  Graph with 5 point lists
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty39}
+\begin{paste}{ugGraphTwoDbuildPageEmpty39}{ugGraphTwoDbuildPagePatch39}
+\pastebutton{ugGraphTwoDbuildPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])$GRIMAGE\free{Sp1 Sp2 Sp3 Sp4 Sp5 }\bound{Sg2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch40}
+\begin{paste}{ugGraphTwoDbuildPageFull40}{ugGraphTwoDbuildPageEmpty40}
+\pastebutton{ugGraphTwoDbuildPageFull40}{\hidepaste}
+\tab{5}\spadcommand{v := viewport2D()$VIEW2D\bound{Sv }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   Closed or Undefined TwoDimensionalViewport: "AXIOM2D"
+                           Type: TwoDimensionalViewport
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty40}
+\begin{paste}{ugGraphTwoDbuildPageEmpty40}{ugGraphTwoDbuildPagePatch40}
+\pastebutton{ugGraphTwoDbuildPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{v := viewport2D()$VIEW2D\bound{Sv }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch41}
+\begin{paste}{ugGraphTwoDbuildPageFull41}{ugGraphTwoDbuildPageEmpty41}
+\pastebutton{ugGraphTwoDbuildPageFull41}{\hidepaste}
+\tab{5}\spadcommand{options(v,[title("Just Points")])$VIEW2D\free{Sv }\bound{Svo }}
+\indentrel{3}\begin{verbatim}
+   (16)
+   Closed or Undefined TwoDimensionalViewport: "AXIOM2D"
+                           Type: TwoDimensionalViewport
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty41}
+\begin{paste}{ugGraphTwoDbuildPageEmpty41}{ugGraphTwoDbuildPagePatch41}
+\pastebutton{ugGraphTwoDbuildPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{options(v,[title("Just Points")])$VIEW2D\free{Sv }\bound{Svo }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch42}
+\begin{paste}{ugGraphTwoDbuildPageFull42}{ugGraphTwoDbuildPageEmpty42}
+\pastebutton{ugGraphTwoDbuildPageFull42}{\hidepaste}
+\tab{5}\spadcommand{putGraph(v,g2,1)$VIEW2D\free{Sg2 Svo }\bound{Svog2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty42}
+\begin{paste}{ugGraphTwoDbuildPageEmpty42}{ugGraphTwoDbuildPagePatch42}
+\pastebutton{ugGraphTwoDbuildPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{putGraph(v,g2,1)$VIEW2D\free{Sg2 Svo }\bound{Svog2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPagePatch43}
+\begin{paste}{ugGraphTwoDbuildPageFull43}{ugGraphTwoDbuildPageEmpty43}
+\pastebutton{ugGraphTwoDbuildPageFull43}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(v)$VIEW2D\free{Svog2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage43.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage43}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDbuildPageEmpty43}
+\begin{paste}{ugGraphTwoDbuildPageEmpty43}{ugGraphTwoDbuildPagePatch43}
+\pastebutton{ugGraphTwoDbuildPageEmpty43}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(v)$VIEW2D\free{Svog2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphTwoDappendPage}{ug07.ht}
 {Addendum: Appending a Graph to a Viewport Window Containing a Graph}
@@ -34856,6 +91286,82 @@ Display the new \axiomType{TwoDimensionalViewport} containing both graphs.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphTwoDappendPagePatch1}
+\begin{paste}{ugGraphTwoDappendPageFull1}{ugGraphTwoDappendPageEmpty1}
+\pastebutton{ugGraphTwoDappendPageFull1}{\hidepaste}
+\tab{5}\spadcommand{v1 := draw(sin(x),x=0..2*\%pi)\bound{v1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  TwoDimensionalViewport: "sin x"
+                           Type: TwoDimensionalViewport
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPageEmpty1}
+\begin{paste}{ugGraphTwoDappendPageEmpty1}{ugGraphTwoDappendPagePatch1}
+\pastebutton{ugGraphTwoDappendPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{v1 := draw(sin(x),x=0..2*\%pi)\bound{v1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPagePatch2}
+\begin{paste}{ugGraphTwoDappendPageFull2}{ugGraphTwoDappendPageEmpty2}
+\pastebutton{ugGraphTwoDappendPageFull2}{\hidepaste}
+\tab{5}\spadcommand{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red())\bound{v2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  TwoDimensionalViewport: "cos x"
+                           Type: TwoDimensionalViewport
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPageEmpty2}
+\begin{paste}{ugGraphTwoDappendPageEmpty2}{ugGraphTwoDappendPagePatch2}
+\pastebutton{ugGraphTwoDappendPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red())\bound{v2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPagePatch3}
+\begin{paste}{ugGraphTwoDappendPageFull3}{ugGraphTwoDappendPageEmpty3}
+\pastebutton{ugGraphTwoDappendPageFull3}{\hidepaste}
+\tab{5}\spadcommand{g1 := getGraph(v1,1)\bound{g1 }\free{v1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  Graph with 1 point list
+                                       Type: GraphImage
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPageEmpty3}
+\begin{paste}{ugGraphTwoDappendPageEmpty3}{ugGraphTwoDappendPagePatch3}
+\pastebutton{ugGraphTwoDappendPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{g1 := getGraph(v1,1)\bound{g1 }\free{v1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPagePatch4}
+\begin{paste}{ugGraphTwoDappendPageFull4}{ugGraphTwoDappendPageEmpty4}
+\pastebutton{ugGraphTwoDappendPageFull4}{\hidepaste}
+\tab{5}\spadcommand{putGraph(v2,g1,2)\bound{v22 }\free{g1 v2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPageEmpty4}
+\begin{paste}{ugGraphTwoDappendPageEmpty4}{ugGraphTwoDappendPagePatch4}
+\pastebutton{ugGraphTwoDappendPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{putGraph(v2,g1,2)\bound{v22 }\free{g1 v2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPagePatch5}
+\begin{paste}{ugGraphTwoDappendPageFull5}{ugGraphTwoDappendPageEmpty5}
+\pastebutton{ugGraphTwoDappendPageFull5}{\hidepaste}
+\tab{5}\spadgraph{makeViewport2D(v2)\free{v22 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodappendpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodappendpage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphTwoDappendPageEmpty5}
+\begin{paste}{ugGraphTwoDappendPageEmpty5}{ugGraphTwoDappendPagePatch5}
+\pastebutton{ugGraphTwoDappendPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{makeViewport2D(v2)\free{v22 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDPage}{ug07.ht}{Three-Dimensional Graphics}
 \pageto{notitle}{ugGraphThreeDPlotPage}
@@ -34989,6 +91495,47 @@ default title.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphThreeDPlotPagePatch1}
+\begin{paste}{ugGraphThreeDPlotPageFull1}{ugGraphThreeDPlotPageEmpty1}
+\pastebutton{ugGraphThreeDPlotPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedplotpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedplotpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDPlotPageEmpty1}
+\begin{paste}{ugGraphThreeDPlotPageEmpty1}{ugGraphThreeDPlotPagePatch1}
+\pastebutton{ugGraphThreeDPlotPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDPlotPagePatch2}
+\begin{paste}{ugGraphThreeDPlotPageFull2}{ugGraphThreeDPlotPageEmpty2}
+\pastebutton{ugGraphThreeDPlotPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f(x,y) == sin(x)*cos(y)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDPlotPageEmpty2}
+\begin{paste}{ugGraphThreeDPlotPageEmpty2}{ugGraphThreeDPlotPagePatch2}
+\pastebutton{ugGraphThreeDPlotPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f(x,y) == sin(x)*cos(y)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDPlotPagePatch3}
+\begin{paste}{ugGraphThreeDPlotPageFull3}{ugGraphThreeDPlotPageEmpty3}
+\pastebutton{ugGraphThreeDPlotPageFull3}{\hidepaste}
+\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedplotpage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedplotpage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDPlotPageEmpty3}
+\begin{paste}{ugGraphThreeDPlotPageEmpty3}{ugGraphThreeDPlotPagePatch3}
+\pastebutton{ugGraphThreeDPlotPageEmpty3}{\showpaste}
+\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDParmPage}{ug07.ht}
 {Plotting Three-Dimensional Parametric Space Curves}
@@ -35061,6 +91608,77 @@ Again, Axiom supplies a default title.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphThreeDParmPagePatch1}
+\begin{paste}{ugGraphThreeDParmPageFull1}{ugGraphThreeDParmPageEmpty1}
+\pastebutton{ugGraphThreeDParmPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparmpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparmpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPageEmpty1}
+\begin{paste}{ugGraphThreeDParmPageEmpty1}{ugGraphThreeDParmPagePatch1}
+\pastebutton{ugGraphThreeDParmPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPagePatch2}
+\begin{paste}{ugGraphThreeDParmPageFull2}{ugGraphThreeDParmPageEmpty2}
+\pastebutton{ugGraphThreeDParmPageFull2}{\hidepaste}
+\tab{5}\spadcommand{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5)\bound{i1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPageEmpty2}
+\begin{paste}{ugGraphThreeDParmPageEmpty2}{ugGraphThreeDParmPagePatch2}
+\pastebutton{ugGraphThreeDParmPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5)\bound{i1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPagePatch3}
+\begin{paste}{ugGraphThreeDParmPageFull3}{ugGraphThreeDParmPageEmpty3}
+\pastebutton{ugGraphThreeDParmPageFull3}{\hidepaste}
+\tab{5}\spadcommand{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5)\bound{i2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPageEmpty3}
+\begin{paste}{ugGraphThreeDParmPageEmpty3}{ugGraphThreeDParmPagePatch3}
+\pastebutton{ugGraphThreeDParmPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5)\bound{i2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPagePatch4}
+\begin{paste}{ugGraphThreeDParmPageFull4}{ugGraphThreeDParmPageEmpty4}
+\pastebutton{ugGraphThreeDParmPageFull4}{\hidepaste}
+\tab{5}\spadcommand{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5)\bound{i3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPageEmpty4}
+\begin{paste}{ugGraphThreeDParmPageEmpty4}{ugGraphThreeDParmPagePatch4}
+\pastebutton{ugGraphThreeDParmPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5)\bound{i3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPagePatch5}
+\begin{paste}{ugGraphThreeDParmPageFull5}{ugGraphThreeDParmPageEmpty5}
+\pastebutton{ugGraphThreeDParmPageFull5}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparmpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparmpage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParmPageEmpty5}
+\begin{paste}{ugGraphThreeDParmPageEmpty5}{ugGraphThreeDParmPagePatch5}
+\pastebutton{ugGraphThreeDParmPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDParPage}{ug07.ht}
 {Plotting 3D Parametric Surfaces}
@@ -35152,6 +91770,93 @@ coordinates == toroidal(1\$DFLOAT)) \free{n1 n2 n3}}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphThreeDParPagePatch1}
+\begin{paste}{ugGraphThreeDParPageFull1}{ugGraphThreeDParPageEmpty1}
+\pastebutton{ugGraphThreeDParPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty1}
+\begin{paste}{ugGraphThreeDParPageEmpty1}{ugGraphThreeDParPagePatch1}
+\pastebutton{ugGraphThreeDParPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPagePatch2}
+\begin{paste}{ugGraphThreeDParPageFull2}{ugGraphThreeDParPageEmpty2}
+\pastebutton{ugGraphThreeDParPageFull2}{\hidepaste}
+\tab{5}\spadcommand{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v)\bound{n1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty2}
+\begin{paste}{ugGraphThreeDParPageEmpty2}{ugGraphThreeDParPagePatch2}
+\pastebutton{ugGraphThreeDParPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v)\bound{n1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPagePatch3}
+\begin{paste}{ugGraphThreeDParPageFull3}{ugGraphThreeDParPageEmpty3}
+\pastebutton{ugGraphThreeDParPageFull3}{\hidepaste}
+\tab{5}\spadcommand{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v)\bound{n2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty3}
+\begin{paste}{ugGraphThreeDParPageEmpty3}{ugGraphThreeDParPagePatch3}
+\pastebutton{ugGraphThreeDParPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v)\bound{n2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPagePatch4}
+\begin{paste}{ugGraphThreeDParPageFull4}{ugGraphThreeDParPageEmpty4}
+\pastebutton{ugGraphThreeDParPageFull4}{\hidepaste}
+\tab{5}\spadcommand{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u\bound{n3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty4}
+\begin{paste}{ugGraphThreeDParPageEmpty4}{ugGraphThreeDParPagePatch4}
+\pastebutton{ugGraphThreeDParPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u\bound{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPagePatch5}
+\begin{paste}{ugGraphThreeDParPageFull5}{ugGraphThreeDParPageEmpty5}
+\pastebutton{ugGraphThreeDParPageFull5}{\hidepaste}
+\tab{5}\spadcommand{n3(0.5,1.0)\free{n3 }}
+\indentrel{3}\begin{verbatim}
+   (5)  0.5
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty5}
+\begin{paste}{ugGraphThreeDParPageEmpty5}{ugGraphThreeDParPagePatch5}
+\pastebutton{ugGraphThreeDParPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{n3(0.5,1.0)\free{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPagePatch6}
+\begin{paste}{ugGraphThreeDParPageFull6}{ugGraphThreeDParPageEmpty6}
+\pastebutton{ugGraphThreeDParPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1$DFLOAT))\free{n1 n2 n3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparpage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDParPageEmpty6}
+\begin{paste}{ugGraphThreeDParPageEmpty6}{ugGraphThreeDParPagePatch6}
+\pastebutton{ugGraphThreeDParPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1$DFLOAT))\free{n1 n2 n3 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDOptionsPage}{ug07.ht}{Three-Dimensional Options}
 \pageto{notitle}{ugGraphCoordPage}
@@ -35364,6 +92069,286 @@ Create a viewport window from a three-space object.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphThreeDOptionsPagePatch1}
+\begin{paste}{ugGraphThreeDOptionsPageFull1}{ugGraphThreeDOptionsPageEmpty1}
+\pastebutton{ugGraphThreeDOptionsPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty1}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty1}{ugGraphThreeDOptionsPagePatch1}
+\pastebutton{ugGraphThreeDOptionsPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch2}
+\begin{paste}{ugGraphThreeDOptionsPageFull2}{ugGraphThreeDOptionsPageEmpty2}
+\pastebutton{ugGraphThreeDOptionsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty2}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty2}{ugGraphThreeDOptionsPagePatch2}
+\pastebutton{ugGraphThreeDOptionsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch3}
+\begin{paste}{ugGraphThreeDOptionsPageFull3}{ugGraphThreeDOptionsPageEmpty3}
+\pastebutton{ugGraphThreeDOptionsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{color1(t) == t\bound{colorFxn1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty3}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty3}{ugGraphThreeDOptionsPagePatch3}
+\pastebutton{ugGraphThreeDOptionsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{color1(t) == t\bound{colorFxn1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch4}
+\begin{paste}{ugGraphThreeDOptionsPageFull4}{ugGraphThreeDOptionsPageEmpty4}
+\pastebutton{ugGraphThreeDOptionsPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1)\free{colorFxn1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty4}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty4}{ugGraphThreeDOptionsPagePatch4}
+\pastebutton{ugGraphThreeDOptionsPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1)\free{colorFxn1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch5}
+\begin{paste}{ugGraphThreeDOptionsPageFull5}{ugGraphThreeDOptionsPageEmpty5}
+\pastebutton{ugGraphThreeDOptionsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{color2(u,v) == u**2 - v**2\bound{colorFxn2 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty5}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty5}{ugGraphThreeDOptionsPagePatch5}
+\pastebutton{ugGraphThreeDOptionsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{color2(u,v) == u**2 - v**2\bound{colorFxn2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch6}
+\begin{paste}{ugGraphThreeDOptionsPageFull6}{ugGraphThreeDOptionsPageEmpty6}
+\pastebutton{ugGraphThreeDOptionsPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2)\free{colorFxn2 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty6}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty6}{ugGraphThreeDOptionsPagePatch6}
+\pastebutton{ugGraphThreeDOptionsPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2)\free{colorFxn2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch7}
+\begin{paste}{ugGraphThreeDOptionsPageFull7}{ugGraphThreeDOptionsPageEmpty7}
+\pastebutton{ugGraphThreeDOptionsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy)\bound{colorFxn3 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty7}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty7}{ugGraphThreeDOptionsPagePatch7}
+\pastebutton{ugGraphThreeDOptionsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy)\bound{colorFxn3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch8}
+\begin{paste}{ugGraphThreeDOptionsPageFull8}{ugGraphThreeDOptionsPageEmpty8}
+\pastebutton{ugGraphThreeDOptionsPageFull8}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3)\free{colorFxn3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage8.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage8}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty8}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty8}{ugGraphThreeDOptionsPagePatch8}
+\pastebutton{ugGraphThreeDOptionsPageEmpty8}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3)\free{colorFxn3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch9}
+\begin{paste}{ugGraphThreeDOptionsPageFull9}{ugGraphThreeDOptionsPageEmpty9}
+\pastebutton{ugGraphThreeDOptionsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty9}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty9}{ugGraphThreeDOptionsPagePatch9}
+\pastebutton{ugGraphThreeDOptionsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch10}
+\begin{paste}{ugGraphThreeDOptionsPageFull10}{ugGraphThreeDOptionsPageEmpty10}
+\pastebutton{ugGraphThreeDOptionsPageFull10}{\hidepaste}
+\tab{5}\spadgraph{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade")\free{m }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty10}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty10}{ugGraphThreeDOptionsPagePatch10}
+\pastebutton{ugGraphThreeDOptionsPageEmpty10}{\showpaste}
+\tab{5}\spadgraph{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade")\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch11}
+\begin{paste}{ugGraphThreeDOptionsPageFull11}{ugGraphThreeDOptionsPageEmpty11}
+\pastebutton{ugGraphThreeDOptionsPageFull11}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage11.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage11}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty11}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty11}{ugGraphThreeDOptionsPagePatch11}
+\pastebutton{ugGraphThreeDOptionsPageEmpty11}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch12}
+\begin{paste}{ugGraphThreeDOptionsPageFull12}{ugGraphThreeDOptionsPageEmpty12}
+\pastebutton{ugGraphThreeDOptionsPageFull12}{\hidepaste}
+\tab{5}\spadgraph{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage12.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage12}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty12}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty12}{ugGraphThreeDOptionsPagePatch12}
+\pastebutton{ugGraphThreeDOptionsPageEmpty12}{\showpaste}
+\tab{5}\spadgraph{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch13}
+\begin{paste}{ugGraphThreeDOptionsPageFull13}{ugGraphThreeDOptionsPageEmpty13}
+\pastebutton{ugGraphThreeDOptionsPageFull13}{\hidepaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage13.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage13}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty13}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty13}{ugGraphThreeDOptionsPagePatch13}
+\pastebutton{ugGraphThreeDOptionsPageEmpty13}{\showpaste}
+\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch14}
+\begin{paste}{ugGraphThreeDOptionsPageFull14}{ugGraphThreeDOptionsPageEmpty14}
+\pastebutton{ugGraphThreeDOptionsPageFull14}{\hidepaste}
+\tab{5}\spadcommand{s := create3Space()$(ThreeSpace DFLOAT)\bound{s }}
+\indentrel{3}\begin{verbatim}
+   (14)  3-Space with 0 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty14}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty14}{ugGraphThreeDOptionsPagePatch14}
+\pastebutton{ugGraphThreeDOptionsPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{s := create3Space()$(ThreeSpace DFLOAT)\bound{s }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch15}
+\begin{paste}{ugGraphThreeDOptionsPageFull15}{ugGraphThreeDOptionsPageEmpty15}
+\pastebutton{ugGraphThreeDOptionsPageFull15}{\hidepaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty15}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty15}{ugGraphThreeDOptionsPagePatch15}
+\pastebutton{ugGraphThreeDOptionsPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch16}
+\begin{paste}{ugGraphThreeDOptionsPageFull16}{ugGraphThreeDOptionsPageEmpty16}
+\pastebutton{ugGraphThreeDOptionsPageFull16}{\hidepaste}
+\tab{5}\spadgraph{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s)\free{s m }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage16.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage16}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty16}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty16}{ugGraphThreeDOptionsPagePatch16}
+\pastebutton{ugGraphThreeDOptionsPageEmpty16}{\showpaste}
+\tab{5}\spadgraph{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s)\free{s m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch17}
+\begin{paste}{ugGraphThreeDOptionsPageFull17}{ugGraphThreeDOptionsPageEmpty17}
+\pastebutton{ugGraphThreeDOptionsPageFull17}{\hidepaste}
+\tab{5}\spadgraph{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s)\free{s }\bound{v }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage17.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage17}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty17}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty17}{ugGraphThreeDOptionsPagePatch17}
+\pastebutton{ugGraphThreeDOptionsPageEmpty17}{\showpaste}
+\tab{5}\spadgraph{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s)\free{s }\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch18}
+\begin{paste}{ugGraphThreeDOptionsPageFull18}{ugGraphThreeDOptionsPageEmpty18}
+\pastebutton{ugGraphThreeDOptionsPageFull18}{\hidepaste}
+\tab{5}\spadcommand{subsp := subspace v\free{v }\bound{su }}
+\indentrel{3}\begin{verbatim}
+   (18)  3-Space with 2 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty18}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty18}{ugGraphThreeDOptionsPagePatch18}
+\pastebutton{ugGraphThreeDOptionsPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{subsp := subspace v\free{v }\bound{su }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch19}
+\begin{paste}{ugGraphThreeDOptionsPageFull19}{ugGraphThreeDOptionsPageEmpty19}
+\pastebutton{ugGraphThreeDOptionsPageFull19}{\hidepaste}
+\tab{5}\spadcommand{subspace(v, subsp)\bound{sp }\free{su }}
+\indentrel{3}\begin{verbatim}
+   (19)
+   Closed or Undefined ThreeDimensionalViewport: "AXIOM3D"
+                         Type: ThreeDimensionalViewport
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty19}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty19}{ugGraphThreeDOptionsPagePatch19}
+\pastebutton{ugGraphThreeDOptionsPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{subspace(v, subsp)\bound{sp }\free{su }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPagePatch20}
+\begin{paste}{ugGraphThreeDOptionsPageFull20}{ugGraphThreeDOptionsPageEmpty20}
+\pastebutton{ugGraphThreeDOptionsPageFull20}{\hidepaste}
+\tab{5}\spadgraph{makeViewport3D(subsp,"Graphs")\free{sp }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage20.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage20}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDOptionsPageEmpty20}
+\begin{paste}{ugGraphThreeDOptionsPageEmpty20}{ugGraphThreeDOptionsPagePatch20}
+\pastebutton{ugGraphThreeDOptionsPageEmpty20}{\showpaste}
+\tab{5}\spadgraph{makeViewport3D(subsp,"Graphs")\free{sp }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphMakeObjectPage}{ug07.ht}{The makeObject Command}
 <<ug07.ht>>=
@@ -35415,6 +92400,66 @@ previously generated before including it in a command line.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphMakeObjectPagePatch1}
+\begin{paste}{ugGraphMakeObjectPageFull1}{ugGraphMakeObjectPageEmpty1}
+\pastebutton{ugGraphMakeObjectPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPageEmpty1}
+\begin{paste}{ugGraphMakeObjectPageEmpty1}{ugGraphMakeObjectPagePatch1}
+\pastebutton{ugGraphMakeObjectPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPagePatch2}
+\begin{paste}{ugGraphMakeObjectPageFull2}{ugGraphMakeObjectPageEmpty2}
+\pastebutton{ugGraphMakeObjectPageFull2}{\hidepaste}
+\tab{5}\spadcommand{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph }\free{m }}
+\indentrel{3}\begin{verbatim}
+   (2)  3-Space with 1 component
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPageEmpty2}
+\begin{paste}{ugGraphMakeObjectPageEmpty2}{ugGraphMakeObjectPagePatch2}
+\pastebutton{ugGraphMakeObjectPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph }\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPagePatch3}
+\begin{paste}{ugGraphMakeObjectPageFull3}{ugGraphMakeObjectPageEmpty3}
+\pastebutton{ugGraphMakeObjectPageFull3}{\hidepaste}
+\tab{5}\spadcommand{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25)\free{sph }\bound{v1 }}
+\indentrel{3}\begin{verbatim}
+   (3)  3-Space with 2 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPageEmpty3}
+\begin{paste}{ugGraphMakeObjectPageEmpty3}{ugGraphMakeObjectPagePatch3}
+\pastebutton{ugGraphMakeObjectPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25)\free{sph }\bound{v1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPagePatch4}
+\begin{paste}{ugGraphMakeObjectPageFull4}{ugGraphMakeObjectPageEmpty4}
+\pastebutton{ugGraphMakeObjectPageFull4}{\hidepaste}
+\tab{5}\spadgraph{makeViewport3D(sph,"Multiple Objects")\free{v1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphmakeobjectpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphmakeobjectpage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphMakeObjectPageEmpty4}
+\begin{paste}{ugGraphMakeObjectPageEmpty4}{ugGraphMakeObjectPagePatch4}
+\pastebutton{ugGraphMakeObjectPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{makeViewport3D(sph,"Multiple Objects")\free{v1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDBuildPage}{ug07.ht}
 {Building 3D Objects From Primitives}
@@ -35608,6 +92653,448 @@ Create and display the viewport.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphThreeDBuildPagePatch1}
+\begin{paste}{ugGraphThreeDBuildPageFull1}{ugGraphThreeDBuildPageEmpty1}
+\pastebutton{ugGraphThreeDBuildPageFull1}{\hidepaste}
+\tab{5}\spadcommand{space := create3Space()$(ThreeSpace DFLOAT)\bound{space }}
+\indentrel{3}\begin{verbatim}
+   (1)  3-Space with 0 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty1}
+\begin{paste}{ugGraphThreeDBuildPageEmpty1}{ugGraphThreeDBuildPagePatch1}
+\pastebutton{ugGraphThreeDBuildPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{space := create3Space()$(ThreeSpace DFLOAT)\bound{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch2}
+\begin{paste}{ugGraphThreeDBuildPageFull2}{ugGraphThreeDBuildPageEmpty2}
+\pastebutton{ugGraphThreeDBuildPageFull2}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve1 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (2)  3-Space with 1 component
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty2}
+\begin{paste}{ugGraphThreeDBuildPageEmpty2}{ugGraphThreeDBuildPagePatch2}
+\pastebutton{ugGraphThreeDBuildPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve1 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch3}
+\begin{paste}{ugGraphThreeDBuildPageFull3}{ugGraphThreeDBuildPageEmpty3}
+\pastebutton{ugGraphThreeDBuildPageFull3}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve2 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (3)  3-Space with 2 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty3}
+\begin{paste}{ugGraphThreeDBuildPageEmpty3}{ugGraphThreeDBuildPagePatch3}
+\pastebutton{ugGraphThreeDBuildPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve2 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch4}
+\begin{paste}{ugGraphThreeDBuildPageFull4}{ugGraphThreeDBuildPageEmpty4}
+\pastebutton{ugGraphThreeDBuildPageFull4}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve3 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (4)  3-Space with 3 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty4}
+\begin{paste}{ugGraphThreeDBuildPageEmpty4}{ugGraphThreeDBuildPagePatch4}
+\pastebutton{ugGraphThreeDBuildPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve3 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch5}
+\begin{paste}{ugGraphThreeDBuildPageFull5}{ugGraphThreeDBuildPageEmpty5}
+\pastebutton{ugGraphThreeDBuildPageFull5}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve4 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (5)  3-Space with 4 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty5}
+\begin{paste}{ugGraphThreeDBuildPageEmpty5}{ugGraphThreeDBuildPagePatch5}
+\pastebutton{ugGraphThreeDBuildPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve4 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch6}
+\begin{paste}{ugGraphThreeDBuildPageFull6}{ugGraphThreeDBuildPageEmpty6}
+\pastebutton{ugGraphThreeDBuildPageFull6}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve5 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (6)  3-Space with 5 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty6}
+\begin{paste}{ugGraphThreeDBuildPageEmpty6}{ugGraphThreeDBuildPagePatch6}
+\pastebutton{ugGraphThreeDBuildPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve5 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch7}
+\begin{paste}{ugGraphThreeDBuildPageFull7}{ugGraphThreeDBuildPageEmpty7}
+\pastebutton{ugGraphThreeDBuildPageFull7}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve6 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (7)  3-Space with 6 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty7}
+\begin{paste}{ugGraphThreeDBuildPageEmpty7}{ugGraphThreeDBuildPagePatch7}
+\pastebutton{ugGraphThreeDBuildPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve6 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch8}
+\begin{paste}{ugGraphThreeDBuildPageFull8}{ugGraphThreeDBuildPageEmpty8}
+\pastebutton{ugGraphThreeDBuildPageFull8}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve7 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (8)  3-Space with 7 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty8}
+\begin{paste}{ugGraphThreeDBuildPageEmpty8}{ugGraphThreeDBuildPagePatch8}
+\pastebutton{ugGraphThreeDBuildPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve7 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch9}
+\begin{paste}{ugGraphThreeDBuildPageFull9}{ugGraphThreeDBuildPageEmpty9}
+\pastebutton{ugGraphThreeDBuildPageFull9}{\hidepaste}
+\tab{5}\spadcommand{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]])\bound{curve8 }\free{space }}
+\indentrel{3}\begin{verbatim}
+   (9)  3-Space with 8 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty9}
+\begin{paste}{ugGraphThreeDBuildPageEmpty9}{ugGraphThreeDBuildPagePatch9}
+\pastebutton{ugGraphThreeDBuildPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{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]])\bound{curve8 }\free{space }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch10}
+\begin{paste}{ugGraphThreeDBuildPageFull10}{ugGraphThreeDBuildPageEmpty10}
+\pastebutton{ugGraphThreeDBuildPageFull10}{\hidepaste}
+\tab{5}\spadgraph{makeViewport3D(space, title == "Letters")\free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedbuildpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedbuildpage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty10}
+\begin{paste}{ugGraphThreeDBuildPageEmpty10}{ugGraphThreeDBuildPagePatch10}
+\pastebutton{ugGraphThreeDBuildPageEmpty10}{\showpaste}
+\tab{5}\spadgraph{makeViewport3D(space, title == "Letters")\free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch11}
+\begin{paste}{ugGraphThreeDBuildPageFull11}{ugGraphThreeDBuildPageEmpty11}
+\pastebutton{ugGraphThreeDBuildPageFull11}{\hidepaste}
+\tab{5}\spadcommand{spaceC := create3Space()$(ThreeSpace DFLOAT)\bound{spaceC }}
+\indentrel{3}\begin{verbatim}
+   (11)  3-Space with 0 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty11}
+\begin{paste}{ugGraphThreeDBuildPageEmpty11}{ugGraphThreeDBuildPagePatch11}
+\pastebutton{ugGraphThreeDBuildPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{spaceC := create3Space()$(ThreeSpace DFLOAT)\bound{spaceC }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch12}
+\begin{paste}{ugGraphThreeDBuildPageFull12}{ugGraphThreeDBuildPageEmpty12}
+\pastebutton{ugGraphThreeDBuildPageFull12}{\hidepaste}
+\tab{5}\spadcommand{x: DFLOAT := 1\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (12)  1.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty12}
+\begin{paste}{ugGraphThreeDBuildPageEmpty12}{ugGraphThreeDBuildPagePatch12}
+\pastebutton{ugGraphThreeDBuildPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{x: DFLOAT := 1\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch13}
+\begin{paste}{ugGraphThreeDBuildPageFull13}{ugGraphThreeDBuildPageEmpty13}
+\pastebutton{ugGraphThreeDBuildPageFull13}{\hidepaste}
+\tab{5}\spadcommand{y: DFLOAT := -1\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (13)  - 1.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty13}
+\begin{paste}{ugGraphThreeDBuildPageEmpty13}{ugGraphThreeDBuildPagePatch13}
+\pastebutton{ugGraphThreeDBuildPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{y: DFLOAT := -1\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch14}
+\begin{paste}{ugGraphThreeDBuildPageFull14}{ugGraphThreeDBuildPageEmpty14}
+\pastebutton{ugGraphThreeDBuildPageFull14}{\hidepaste}
+\tab{5}\spadcommand{a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)\bound{a }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (14)  [1.0,1.0,- 1.0,1.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty14}
+\begin{paste}{ugGraphThreeDBuildPageEmpty14}{ugGraphThreeDBuildPagePatch14}
+\pastebutton{ugGraphThreeDBuildPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)\bound{a }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch15}
+\begin{paste}{ugGraphThreeDBuildPageFull15}{ugGraphThreeDBuildPageEmpty15}
+\pastebutton{ugGraphThreeDBuildPageFull15}{\hidepaste}
+\tab{5}\spadcommand{b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)\bound{b }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (15)  [- 1.0,1.0,- 1.0,4.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty15}
+\begin{paste}{ugGraphThreeDBuildPageEmpty15}{ugGraphThreeDBuildPagePatch15}
+\pastebutton{ugGraphThreeDBuildPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)\bound{b }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch16}
+\begin{paste}{ugGraphThreeDBuildPageFull16}{ugGraphThreeDBuildPageEmpty16}
+\pastebutton{ugGraphThreeDBuildPageFull16}{\hidepaste}
+\tab{5}\spadcommand{c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)\bound{c }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (16)  [- 1.0,1.0,1.0,8.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty16}
+\begin{paste}{ugGraphThreeDBuildPageEmpty16}{ugGraphThreeDBuildPagePatch16}
+\pastebutton{ugGraphThreeDBuildPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)\bound{c }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch17}
+\begin{paste}{ugGraphThreeDBuildPageFull17}{ugGraphThreeDBuildPageEmpty17}
+\pastebutton{ugGraphThreeDBuildPageFull17}{\hidepaste}
+\tab{5}\spadcommand{d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)\bound{d }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (17)  [1.0,1.0,1.0,12.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty17}
+\begin{paste}{ugGraphThreeDBuildPageEmpty17}{ugGraphThreeDBuildPagePatch17}
+\pastebutton{ugGraphThreeDBuildPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)\bound{d }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch18}
+\begin{paste}{ugGraphThreeDBuildPageFull18}{ugGraphThreeDBuildPageEmpty18}
+\pastebutton{ugGraphThreeDBuildPageFull18}{\hidepaste}
+\tab{5}\spadcommand{e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)\bound{e }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (18)  [1.0,- 1.0,- 1.0,16.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty18}
+\begin{paste}{ugGraphThreeDBuildPageEmpty18}{ugGraphThreeDBuildPagePatch18}
+\pastebutton{ugGraphThreeDBuildPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)\bound{e }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch19}
+\begin{paste}{ugGraphThreeDBuildPageFull19}{ugGraphThreeDBuildPageEmpty19}
+\pastebutton{ugGraphThreeDBuildPageFull19}{\hidepaste}
+\tab{5}\spadcommand{f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)\bound{f }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (19)  [- 1.0,- 1.0,- 1.0,20.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty19}
+\begin{paste}{ugGraphThreeDBuildPageEmpty19}{ugGraphThreeDBuildPagePatch19}
+\pastebutton{ugGraphThreeDBuildPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)\bound{f }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch20}
+\begin{paste}{ugGraphThreeDBuildPageFull20}{ugGraphThreeDBuildPageEmpty20}
+\pastebutton{ugGraphThreeDBuildPageFull20}{\hidepaste}
+\tab{5}\spadcommand{g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)\bound{g }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (20)  [- 1.0,- 1.0,1.0,24.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty20}
+\begin{paste}{ugGraphThreeDBuildPageEmpty20}{ugGraphThreeDBuildPagePatch20}
+\pastebutton{ugGraphThreeDBuildPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)\bound{g }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch21}
+\begin{paste}{ugGraphThreeDBuildPageFull21}{ugGraphThreeDBuildPageEmpty21}
+\pastebutton{ugGraphThreeDBuildPageFull21}{\hidepaste}
+\tab{5}\spadcommand{h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)\bound{h }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (21)  [1.0,- 1.0,1.0,27.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty21}
+\begin{paste}{ugGraphThreeDBuildPageEmpty21}{ugGraphThreeDBuildPagePatch21}
+\pastebutton{ugGraphThreeDBuildPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)\bound{h }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch22}
+\begin{paste}{ugGraphThreeDBuildPageFull22}{ugGraphThreeDBuildPageEmpty22}
+\pastebutton{ugGraphThreeDBuildPageFull22}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[d,c,g,h])\free{d c g h spaceC }\bound{pol1 }}
+\indentrel{3}\begin{verbatim}
+   (22)  3-Space with 1 component
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty22}
+\begin{paste}{ugGraphThreeDBuildPageEmpty22}{ugGraphThreeDBuildPagePatch22}
+\pastebutton{ugGraphThreeDBuildPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[d,c,g,h])\free{d c g h spaceC }\bound{pol1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch23}
+\begin{paste}{ugGraphThreeDBuildPageFull23}{ugGraphThreeDBuildPageEmpty23}
+\pastebutton{ugGraphThreeDBuildPageFull23}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[d,h,e,a])\free{d h e a spaceC }\bound{pol2 }}
+\indentrel{3}\begin{verbatim}
+   (23)  3-Space with 2 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty23}
+\begin{paste}{ugGraphThreeDBuildPageEmpty23}{ugGraphThreeDBuildPagePatch23}
+\pastebutton{ugGraphThreeDBuildPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[d,h,e,a])\free{d h e a spaceC }\bound{pol2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch24}
+\begin{paste}{ugGraphThreeDBuildPageFull24}{ugGraphThreeDBuildPageEmpty24}
+\pastebutton{ugGraphThreeDBuildPageFull24}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[c,d,a,b])\free{c d a b spaceC }\bound{pol3 }}
+\indentrel{3}\begin{verbatim}
+   (24)  3-Space with 3 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty24}
+\begin{paste}{ugGraphThreeDBuildPageEmpty24}{ugGraphThreeDBuildPagePatch24}
+\pastebutton{ugGraphThreeDBuildPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[c,d,a,b])\free{c d a b spaceC }\bound{pol3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch25}
+\begin{paste}{ugGraphThreeDBuildPageFull25}{ugGraphThreeDBuildPageEmpty25}
+\pastebutton{ugGraphThreeDBuildPageFull25}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[g,c,b,f])\free{g c b f spaceC }\bound{pol4 }}
+\indentrel{3}\begin{verbatim}
+   (25)  3-Space with 4 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty25}
+\begin{paste}{ugGraphThreeDBuildPageEmpty25}{ugGraphThreeDBuildPagePatch25}
+\pastebutton{ugGraphThreeDBuildPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[g,c,b,f])\free{g c b f spaceC }\bound{pol4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch26}
+\begin{paste}{ugGraphThreeDBuildPageFull26}{ugGraphThreeDBuildPageEmpty26}
+\pastebutton{ugGraphThreeDBuildPageFull26}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[h,g,f,e])\free{h g f e spaceC }\bound{pol5 }}
+\indentrel{3}\begin{verbatim}
+   (26)  3-Space with 5 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty26}
+\begin{paste}{ugGraphThreeDBuildPageEmpty26}{ugGraphThreeDBuildPagePatch26}
+\pastebutton{ugGraphThreeDBuildPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[h,g,f,e])\free{h g f e spaceC }\bound{pol5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch27}
+\begin{paste}{ugGraphThreeDBuildPageFull27}{ugGraphThreeDBuildPageEmpty27}
+\pastebutton{ugGraphThreeDBuildPageFull27}{\hidepaste}
+\tab{5}\spadcommand{polygon(spaceC,[e,f,b,a])\free{e f b a spaceC }\bound{pol6 }}
+\indentrel{3}\begin{verbatim}
+   (27)  3-Space with 6 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty27}
+\begin{paste}{ugGraphThreeDBuildPageEmpty27}{ugGraphThreeDBuildPagePatch27}
+\pastebutton{ugGraphThreeDBuildPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{polygon(spaceC,[e,f,b,a])\free{e f b a spaceC }\bound{pol6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPagePatch28}
+\begin{paste}{ugGraphThreeDBuildPageFull28}{ugGraphThreeDBuildPageEmpty28}
+\pastebutton{ugGraphThreeDBuildPageFull28}{\hidepaste}
+\tab{5}\spadgraph{makeViewport3D(spaceC, title == "Cube")\free{pol1 pol2 pol3 pol4 pol5 pol6 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedbuildpage28.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedbuildpage28}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphThreeDBuildPageEmpty28}
+\begin{paste}{ugGraphThreeDBuildPageEmpty28}{ugGraphThreeDBuildPagePatch28}
+\pastebutton{ugGraphThreeDBuildPageEmpty28}{\showpaste}
+\tab{5}\spadgraph{makeViewport3D(spaceC, title == "Cube")\free{pol1 pol2 pol3 pol4 pol5 pol6 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphCoordPage}{ug07.ht}{Coordinate System Transformations}
 <<ug07.ht>>=
@@ -35773,6 +93260,198 @@ to get more information.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphCoordPagePatch1}
+\begin{paste}{ugGraphCoordPageFull1}{ugGraphCoordPageEmpty1}
+\pastebutton{ugGraphCoordPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2\bound{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty1}
+\begin{paste}{ugGraphCoordPageEmpty1}{ugGraphCoordPagePatch1}
+\pastebutton{ugGraphCoordPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch2}
+\begin{paste}{ugGraphCoordPageFull2}{ugGraphCoordPageEmpty2}
+\pastebutton{ugGraphCoordPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(m,0..3,0..5)\free{m }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty2}
+\begin{paste}{ugGraphCoordPageEmpty2}{ugGraphCoordPagePatch2}
+\pastebutton{ugGraphCoordPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(m,0..3,0..5)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch3}
+\begin{paste}{ugGraphCoordPageFull3}{ugGraphCoordPageEmpty3}
+\pastebutton{ugGraphCoordPageFull3}{\hidepaste}
+\tab{5}\spadcommand{cartesian(point:Point DFLOAT):Point DFLOAT == point\bound{cart }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty3}
+\begin{paste}{ugGraphCoordPageEmpty3}{ugGraphCoordPagePatch3}
+\pastebutton{ugGraphCoordPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{cartesian(point:Point DFLOAT):Point DFLOAT == point\bound{cart }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch4}
+\begin{paste}{ugGraphCoordPageFull4}{ugGraphCoordPageEmpty4}
+\pastebutton{ugGraphCoordPageFull4}{\hidepaste}
+\tab{5}\spadgraph{draw(m,0..3,0..5,coordinates==cartesian)\free{m cart }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage4}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty4}
+\begin{paste}{ugGraphCoordPageEmpty4}{ugGraphCoordPagePatch4}
+\pastebutton{ugGraphCoordPageEmpty4}{\showpaste}
+\tab{5}\spadgraph{draw(m,0..3,0..5,coordinates==cartesian)\free{m cart }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch5}
+\begin{paste}{ugGraphCoordPageFull5}{ugGraphCoordPageEmpty5}
+\pastebutton{ugGraphCoordPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty5}
+\begin{paste}{ugGraphCoordPageEmpty5}{ugGraphCoordPagePatch5}
+\pastebutton{ugGraphCoordPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch6}
+\begin{paste}{ugGraphCoordPageFull6}{ugGraphCoordPageEmpty6}
+\pastebutton{ugGraphCoordPageFull6}{\hidepaste}
+\tab{5}\spadgraph{draw(f,0..\%pi,0..6,coordinates==cylindrical)\free{f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage6}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty6}
+\begin{paste}{ugGraphCoordPageEmpty6}{ugGraphCoordPagePatch6}
+\pastebutton{ugGraphCoordPageEmpty6}{\showpaste}
+\tab{5}\spadgraph{draw(f,0..\%pi,0..6,coordinates==cylindrical)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch7}
+\begin{paste}{ugGraphCoordPageFull7}{ugGraphCoordPageEmpty7}
+\pastebutton{ugGraphCoordPageFull7}{\hidepaste}
+\tab{5}\spadcommand{col := 5\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (7)  5
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty7}
+\begin{paste}{ugGraphCoordPageEmpty7}{ugGraphCoordPagePatch7}
+\pastebutton{ugGraphCoordPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{col := 5\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch8}
+\begin{paste}{ugGraphCoordPageFull8}{ugGraphCoordPageEmpty8}
+\pastebutton{ugGraphCoordPageFull8}{\hidepaste}
+\tab{5}\spadcommand{pt := point[1,2,3,col]$(Point DFLOAT)\free{c }\bound{pt }}
+\indentrel{3}\begin{verbatim}
+   (8)  [1.0,2.0,3.0,5.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty8}
+\begin{paste}{ugGraphCoordPageEmpty8}{ugGraphCoordPagePatch8}
+\pastebutton{ugGraphCoordPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{pt := point[1,2,3,col]$(Point DFLOAT)\free{c }\bound{pt }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch9}
+\begin{paste}{ugGraphCoordPageFull9}{ugGraphCoordPageEmpty9}
+\pastebutton{ugGraphCoordPageFull9}{\hidepaste}
+\tab{5}\spadcommand{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4]\bound{freo }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty9}
+\begin{paste}{ugGraphCoordPageEmpty9}{ugGraphCoordPagePatch9}
+\pastebutton{ugGraphCoordPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4]\bound{freo }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch10}
+\begin{paste}{ugGraphCoordPageFull10}{ugGraphCoordPageEmpty10}
+\pastebutton{ugGraphCoordPageFull10}{\hidepaste}
+\tab{5}\spadcommand{reorder pt\free{pt freo }}
+\indentrel{3}\begin{verbatim}
+   (10)  [2.0,3.0,1.0,5.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty10}
+\begin{paste}{ugGraphCoordPageEmpty10}{ugGraphCoordPagePatch10}
+\pastebutton{ugGraphCoordPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{reorder pt\free{pt freo }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch11}
+\begin{paste}{ugGraphCoordPageFull11}{ugGraphCoordPageEmpty11}
+\pastebutton{ugGraphCoordPageFull11}{\hidepaste}
+\tab{5}\spadcommand{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)\free{freo }\bound{fnewmap }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty11}
+\begin{paste}{ugGraphCoordPageEmpty11}{ugGraphCoordPagePatch11}
+\pastebutton{ugGraphCoordPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)\free{freo }\bound{fnewmap }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch12}
+\begin{paste}{ugGraphCoordPageFull12}{ugGraphCoordPageEmpty12}
+\pastebutton{ugGraphCoordPageFull12}{\hidepaste}
+\tab{5}\spadcommand{newmap pt\free{fnewmap pt }\bound{new }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [- 1.9799849932008908,0.28224001611973443,1.0,5.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty12}
+\begin{paste}{ugGraphCoordPageEmpty12}{ugGraphCoordPagePatch12}
+\pastebutton{ugGraphCoordPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{newmap pt\free{fnewmap pt }\bound{new }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPagePatch13}
+\begin{paste}{ugGraphCoordPageFull13}{ugGraphCoordPageEmpty13}
+\pastebutton{ugGraphCoordPageFull13}{\hidepaste}
+\tab{5}\spadgraph{draw(f,0..3,0..2*\%pi,coordinates==newmap)\free{f new }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage13.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage13}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphCoordPageEmpty13}
+\begin{paste}{ugGraphCoordPageEmpty13}{ugGraphCoordPagePatch13}
+\pastebutton{ugGraphCoordPageEmpty13}{\showpaste}
+\tab{5}\spadgraph{draw(f,0..3,0..2*\%pi,coordinates==newmap)\free{f new }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphClipPage}{ug07.ht}{Three-Dimensional Clipping}
 <<ug07.ht>>=
@@ -35806,6 +93485,40 @@ draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50) \free{g}}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugGraphClipPagePatch1}
+\begin{paste}{ugGraphClipPageFull1}{ugGraphClipPageEmpty1}
+\pastebutton{ugGraphClipPageFull1}{\hidepaste}
+\tab{5}\spadcommand{gamma(x,y) ==
+  g := Gamma complex(x,y)
+  point [x, y, max( min(real g, 4), -4), argument g]
+\bound{g }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugGraphClipPageEmpty1}
+\begin{paste}{ugGraphClipPageEmpty1}{ugGraphClipPagePatch1}
+\pastebutton{ugGraphClipPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{gamma(x,y) ==
+  g := Gamma complex(x,y)
+  point [x, y, max( min(real g, 4), -4), argument g]
+\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphClipPagePatch2}
+\begin{paste}{ugGraphClipPageFull2}{ugGraphClipPageEmpty2}
+\pastebutton{ugGraphClipPageFull2}{\hidepaste}
+\tab{5}\spadgraph{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50)\free{g }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphclippage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphclippage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugGraphClipPageEmpty2}
+\begin{paste}{ugGraphClipPageEmpty2}{ugGraphClipPagePatch2}
+\pastebutton{ugGraphClipPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50)\free{g }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugGraphThreeDControlPage}{ug07.ht}
 {Three-Dimensional Control-Panel}
@@ -37132,6 +94845,541 @@ title=="besselI(x+i*y,5)", style=="shade")}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemNumericPagePatch1}
+\begin{paste}{ugProblemNumericPageFull1}{ugProblemNumericPageEmpty1}
+\pastebutton{ugProblemNumericPageFull1}{\hidepaste}
+\tab{5}\spadcommand{exp(3.1)}
+\indentrel{3}\begin{verbatim}
+   (1)  22.1979512814 41633405
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty1}
+\begin{paste}{ugProblemNumericPageEmpty1}{ugProblemNumericPagePatch1}
+\pastebutton{ugProblemNumericPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{exp(3.1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch2}
+\begin{paste}{ugProblemNumericPageFull2}{ugProblemNumericPageEmpty2}
+\pastebutton{ugProblemNumericPageFull2}{\hidepaste}
+\tab{5}\spadcommand{exp(3.1 + 4.5 * \%i)}
+\indentrel{3}\begin{verbatim}
+   (2)
+   - 4.6792348860 969899118 - 21.6991659280 71731864 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty2}
+\begin{paste}{ugProblemNumericPageEmpty2}{ugProblemNumericPagePatch2}
+\pastebutton{ugProblemNumericPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{exp(3.1 + 4.5 * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch3}
+\begin{paste}{ugProblemNumericPageFull3}{ugProblemNumericPageEmpty3}
+\pastebutton{ugProblemNumericPageFull3}{\hidepaste}
+\tab{5}\spadcommand{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
+\indentrel{3}\begin{verbatim}
+   (3)  - 4.6792348860969906 - 21.699165928071732%i
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty3}
+\begin{paste}{ugProblemNumericPageEmpty3}{ugProblemNumericPagePatch3}
+\pastebutton{ugProblemNumericPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch4}
+\begin{paste}{ugProblemNumericPageFull4}{ugProblemNumericPageEmpty4}
+\pastebutton{ugProblemNumericPageFull4}{\hidepaste}
+\tab{5}\spadcommand{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
+\indentrel{3}\begin{verbatim}
+   (4)  - 4.6792348860969906 - 21.699165928071732%i
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty4}
+\begin{paste}{ugProblemNumericPageEmpty4}{ugProblemNumericPagePatch4}
+\pastebutton{ugProblemNumericPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch5}
+\begin{paste}{ugProblemNumericPageFull5}{ugProblemNumericPageEmpty5}
+\pastebutton{ugProblemNumericPageFull5}{\hidepaste}
+\tab{5}\spadcommand{Gamma(0.5)**2}
+\indentrel{3}\begin{verbatim}
+   (5)  3.14159265358979
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty5}
+\begin{paste}{ugProblemNumericPageEmpty5}{ugProblemNumericPagePatch5}
+\pastebutton{ugProblemNumericPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{Gamma(0.5)**2}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch6}
+\begin{paste}{ugProblemNumericPageFull6}{ugProblemNumericPageEmpty6}
+\pastebutton{ugProblemNumericPageFull6}{\hidepaste}
+\tab{5}\spadcommand{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
+\indentrel{3}\begin{verbatim}
+   (6)  2.489482417547372 - 2.3658460381468371%i
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty6}
+\begin{paste}{ugProblemNumericPageEmpty6}{ugProblemNumericPagePatch6}
+\pastebutton{ugProblemNumericPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch7}
+\begin{paste}{ugProblemNumericPageFull7}{ugProblemNumericPageEmpty7}
+\pastebutton{ugProblemNumericPageFull7}{\hidepaste}
+\tab{5}\spadcommand{[chebyshevT(i, z) for i in 0..5]}
+\indentrel{3}\begin{verbatim}
+   (7)
+          2       3        4     2        5      3
+   [1,z,2z  - 1,4z  - 3z,8z  - 8z  + 1,16z  - 20z  + 5z]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty7}
+\begin{paste}{ugProblemNumericPageEmpty7}{ugProblemNumericPagePatch7}
+\pastebutton{ugProblemNumericPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{[chebyshevT(i, z) for i in 0..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch8}
+\begin{paste}{ugProblemNumericPageFull8}{ugProblemNumericPageEmpty8}
+\pastebutton{ugProblemNumericPageFull8}{\hidepaste}
+\tab{5}\spadcommand{chebyshevT(3, 5.0 + 6.0*\%i)}
+\indentrel{3}\begin{verbatim}
+   (8)  - 1675.0 + 918.0 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty8}
+\begin{paste}{ugProblemNumericPageEmpty8}{ugProblemNumericPagePatch8}
+\pastebutton{ugProblemNumericPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{chebyshevT(3, 5.0 + 6.0*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch9}
+\begin{paste}{ugProblemNumericPageFull9}{ugProblemNumericPageEmpty9}
+\pastebutton{ugProblemNumericPageFull9}{\hidepaste}
+\tab{5}\spadcommand{chebyshevT(3, 5.0::DoubleFloat)}
+\indentrel{3}\begin{verbatim}
+   (9)  485.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty9}
+\begin{paste}{ugProblemNumericPageEmpty9}{ugProblemNumericPagePatch9}
+\pastebutton{ugProblemNumericPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{chebyshevT(3, 5.0::DoubleFloat)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch10}
+\begin{paste}{ugProblemNumericPageFull10}{ugProblemNumericPageEmpty10}
+\pastebutton{ugProblemNumericPageFull10}{\hidepaste}
+\tab{5}\spadcommand{[chebyshevU(i, z) for i in 0..5]}
+\indentrel{3}\begin{verbatim}
+   (10)
+             2        3          4      2
+   [1, 2z, 4z  - 1, 8z  - 4z, 16z  - 12z  + 1,
+       5      3
+    32z  - 32z  + 6z]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty10}
+\begin{paste}{ugProblemNumericPageEmpty10}{ugProblemNumericPagePatch10}
+\pastebutton{ugProblemNumericPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{[chebyshevU(i, z) for i in 0..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch11}
+\begin{paste}{ugProblemNumericPageFull11}{ugProblemNumericPageEmpty11}
+\pastebutton{ugProblemNumericPageFull11}{\hidepaste}
+\tab{5}\spadcommand{chebyshevU(3, 0.2)}
+\indentrel{3}\begin{verbatim}
+   (11)  - 0.736
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty11}
+\begin{paste}{ugProblemNumericPageEmpty11}{ugProblemNumericPagePatch11}
+\pastebutton{ugProblemNumericPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{chebyshevU(3, 0.2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch12}
+\begin{paste}{ugProblemNumericPageFull12}{ugProblemNumericPageEmpty12}
+\pastebutton{ugProblemNumericPageFull12}{\hidepaste}
+\tab{5}\spadcommand{[hermiteH(i, z) for i in 0..5]}
+\indentrel{3}\begin{verbatim}
+   (12)
+             2        3           4      2
+   [1, 2z, 4z  - 2, 8z  - 12z, 16z  - 48z  + 12,
+       5       3
+    32z  - 160z  + 120z]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty12}
+\begin{paste}{ugProblemNumericPageEmpty12}{ugProblemNumericPagePatch12}
+\pastebutton{ugProblemNumericPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{[hermiteH(i, z) for i in 0..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch13}
+\begin{paste}{ugProblemNumericPageFull13}{ugProblemNumericPageEmpty13}
+\pastebutton{ugProblemNumericPageFull13}{\hidepaste}
+\tab{5}\spadcommand{hermiteH(100, 1.0)}
+\indentrel{3}\begin{verbatim}
+   (13)  - 0.1448706729 337934088 E 93
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty13}
+\begin{paste}{ugProblemNumericPageEmpty13}{ugProblemNumericPagePatch13}
+\pastebutton{ugProblemNumericPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{hermiteH(100, 1.0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch14}
+\begin{paste}{ugProblemNumericPageFull14}{ugProblemNumericPageEmpty14}
+\pastebutton{ugProblemNumericPageFull14}{\hidepaste}
+\tab{5}\spadcommand{[laguerreL(i, z) for i in 0..4]}
+\indentrel{3}\begin{verbatim}
+   (14)
+                 2              3     2
+   [1, - z + 1, z  - 4z + 2, - z  + 9z  - 18z + 6,
+     4      3      2
+    z  - 16z  + 72z  - 96z + 24]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty14}
+\begin{paste}{ugProblemNumericPageEmpty14}{ugProblemNumericPagePatch14}
+\pastebutton{ugProblemNumericPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{[laguerreL(i, z) for i in 0..4]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch15}
+\begin{paste}{ugProblemNumericPageFull15}{ugProblemNumericPageEmpty15}
+\pastebutton{ugProblemNumericPageFull15}{\hidepaste}
+\tab{5}\spadcommand{laguerreL(4, 1.2)}
+\indentrel{3}\begin{verbatim}
+   (15)  - 13.0944
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty15}
+\begin{paste}{ugProblemNumericPageEmpty15}{ugProblemNumericPagePatch15}
+\pastebutton{ugProblemNumericPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{laguerreL(4, 1.2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch16}
+\begin{paste}{ugProblemNumericPageFull16}{ugProblemNumericPageEmpty16}
+\pastebutton{ugProblemNumericPageFull16}{\hidepaste}
+\tab{5}\spadcommand{[laguerreL(j, 3, z) for j in 0..4]}
+\indentrel{3}\begin{verbatim}
+   (16)
+       3     2               2
+   [- z  + 9z  - 18z + 6,- 3z  + 18z - 18,- 6z + 18,- 6,0]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty16}
+\begin{paste}{ugProblemNumericPageEmpty16}{ugProblemNumericPagePatch16}
+\pastebutton{ugProblemNumericPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[laguerreL(j, 3, z) for j in 0..4]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch17}
+\begin{paste}{ugProblemNumericPageFull17}{ugProblemNumericPageEmpty17}
+\pastebutton{ugProblemNumericPageFull17}{\hidepaste}
+\tab{5}\spadcommand{laguerreL(1, 3, 2.1)}
+\indentrel{3}\begin{verbatim}
+   (17)  6.57
+                                            Type: Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty17}
+\begin{paste}{ugProblemNumericPageEmpty17}{ugProblemNumericPagePatch17}
+\pastebutton{ugProblemNumericPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{laguerreL(1, 3, 2.1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch18}
+\begin{paste}{ugProblemNumericPageFull18}{ugProblemNumericPageEmpty18}
+\pastebutton{ugProblemNumericPageFull18}{\hidepaste}
+\tab{5}\spadcommand{[legendreP(i,z) for i in 0..5]}
+\indentrel{3}\begin{verbatim}
+   (18)
+          3  2   1  5  3   3    35  4   15  2   3
+   [1, z, Ä z  - Ä, Ä z  - Ä z, ÄÄ z  - ÄÄ z  + Ä,
+          2      2  2      2     8       4      8
+    63  5   35  3   15
+    ÄÄ z  - ÄÄ z  + ÄÄ z]
+     8       4       8
+                 Type: List Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty18}
+\begin{paste}{ugProblemNumericPageEmpty18}{ugProblemNumericPagePatch18}
+\pastebutton{ugProblemNumericPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{[legendreP(i,z) for i in 0..5]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch19}
+\begin{paste}{ugProblemNumericPageFull19}{ugProblemNumericPageEmpty19}
+\pastebutton{ugProblemNumericPageFull19}{\hidepaste}
+\tab{5}\spadcommand{legendreP(3, 3.0*\%i)}
+\indentrel{3}\begin{verbatim}
+   (19)  - 72.0 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty19}
+\begin{paste}{ugProblemNumericPageEmpty19}{ugProblemNumericPagePatch19}
+\pastebutton{ugProblemNumericPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{legendreP(3, 3.0*\%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch20}
+\begin{paste}{ugProblemNumericPageFull20}{ugProblemNumericPageEmpty20}
+\pastebutton{ugProblemNumericPageFull20}{\hidepaste}
+\tab{5}\spadcommand{bernoulliB(3, z)}
+\indentrel{3}\begin{verbatim}
+          3   3  2   1
+   (20)  z  - Ä z  + Ä z
+              2      2
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty20}
+\begin{paste}{ugProblemNumericPageEmpty20}{ugProblemNumericPagePatch20}
+\pastebutton{ugProblemNumericPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{bernoulliB(3, z)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch21}
+\begin{paste}{ugProblemNumericPageFull21}{ugProblemNumericPageEmpty21}
+\pastebutton{ugProblemNumericPageFull21}{\hidepaste}
+\tab{5}\spadcommand{bernoulliB(3, 0.7 + 0.4 * \%i)}
+\indentrel{3}\begin{verbatim}
+   (21)  - 0.138 - 0.116 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty21}
+\begin{paste}{ugProblemNumericPageEmpty21}{ugProblemNumericPagePatch21}
+\pastebutton{ugProblemNumericPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{bernoulliB(3, 0.7 + 0.4 * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch22}
+\begin{paste}{ugProblemNumericPageFull22}{ugProblemNumericPageEmpty22}
+\pastebutton{ugProblemNumericPageFull22}{\hidepaste}
+\tab{5}\spadcommand{eulerE(3, z)}
+\indentrel{3}\begin{verbatim}
+          3   3  2   1
+   (22)  z  - Ä z  + Ä
+              2      4
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty22}
+\begin{paste}{ugProblemNumericPageEmpty22}{ugProblemNumericPagePatch22}
+\pastebutton{ugProblemNumericPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{eulerE(3, z)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch23}
+\begin{paste}{ugProblemNumericPageFull23}{ugProblemNumericPageEmpty23}
+\pastebutton{ugProblemNumericPageFull23}{\hidepaste}
+\tab{5}\spadcommand{eulerE(3, 0.7 + 0.4 * \%i)}
+\indentrel{3}\begin{verbatim}
+   (23)  - 0.238 - 0.316 %i
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty23}
+\begin{paste}{ugProblemNumericPageEmpty23}{ugProblemNumericPagePatch23}
+\pastebutton{ugProblemNumericPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{eulerE(3, 0.7 + 0.4 * \%i)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch24}
+\begin{paste}{ugProblemNumericPageFull24}{ugProblemNumericPageEmpty24}
+\pastebutton{ugProblemNumericPageFull24}{\hidepaste}
+\tab{5}\spadcommand{cyclotomic(3, z)}
+\indentrel{3}\begin{verbatim}
+          2
+   (24)  z  + z + 1
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty24}
+\begin{paste}{ugProblemNumericPageEmpty24}{ugProblemNumericPagePatch24}
+\pastebutton{ugProblemNumericPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{cyclotomic(3, z)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch25}
+\begin{paste}{ugProblemNumericPageFull25}{ugProblemNumericPageEmpty25}
+\pastebutton{ugProblemNumericPageFull25}{\hidepaste}
+\tab{5}\spadcommand{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
+\indentrel{3}\begin{verbatim}
+   (25)  0.0
+                                    Type: Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty25}
+\begin{paste}{ugProblemNumericPageEmpty25}{ugProblemNumericPagePatch25}
+\pastebutton{ugProblemNumericPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch26}
+\begin{paste}{ugProblemNumericPageFull26}{ugProblemNumericPageEmpty26}
+\pastebutton{ugProblemNumericPageFull26}{\hidepaste}
+\tab{5}\spadgraph{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")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage26.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage26}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty26}
+\begin{paste}{ugProblemNumericPageEmpty26}{ugProblemNumericPagePatch26}
+\pastebutton{ugProblemNumericPageEmpty26}{\showpaste}
+\tab{5}\spadgraph{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")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch27}
+\begin{paste}{ugProblemNumericPageFull27}{ugProblemNumericPageEmpty27}
+\pastebutton{ugProblemNumericPageFull27}{\hidepaste}
+\tab{5}\spadgraph{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}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage27.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage27}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty27}
+\begin{paste}{ugProblemNumericPageEmpty27}{ugProblemNumericPagePatch27}
+\pastebutton{ugProblemNumericPageEmpty27}{\showpaste}
+\tab{5}\spadgraph{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}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch28}
+\begin{paste}{ugProblemNumericPageFull28}{ugProblemNumericPageEmpty28}
+\pastebutton{ugProblemNumericPageFull28}{\hidepaste}
+\tab{5}\spadgraph{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)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage28.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage28}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty28}
+\begin{paste}{ugProblemNumericPageEmpty28}{ugProblemNumericPagePatch28}
+\pastebutton{ugProblemNumericPageEmpty28}{\showpaste}
+\tab{5}\spadgraph{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)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch29}
+\begin{paste}{ugProblemNumericPageFull29}{ugProblemNumericPageEmpty29}
+\pastebutton{ugProblemNumericPageFull29}{\hidepaste}
+\tab{5}\spadgraph{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)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage29.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage29}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty29}
+\begin{paste}{ugProblemNumericPageEmpty29}{ugProblemNumericPagePatch29}
+\pastebutton{ugProblemNumericPageEmpty29}{\showpaste}
+\tab{5}\spadgraph{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)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch30}
+\begin{paste}{ugProblemNumericPageFull30}{ugProblemNumericPageEmpty30}
+\pastebutton{ugProblemNumericPageFull30}{\hidepaste}
+\tab{5}\spadgraph{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)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage30.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage30}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty30}
+\begin{paste}{ugProblemNumericPageEmpty30}{ugProblemNumericPagePatch30}
+\pastebutton{ugProblemNumericPageEmpty30}{\showpaste}
+\tab{5}\spadgraph{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)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch31}
+\begin{paste}{ugProblemNumericPageFull31}{ugProblemNumericPageEmpty31}
+\pastebutton{ugProblemNumericPageFull31}{\hidepaste}
+\tab{5}\spadgraph{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage31.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage31}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty31}
+\begin{paste}{ugProblemNumericPageEmpty31}{ugProblemNumericPagePatch31}
+\pastebutton{ugProblemNumericPageEmpty31}{\showpaste}
+\tab{5}\spadgraph{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch32}
+\begin{paste}{ugProblemNumericPageFull32}{ugProblemNumericPageEmpty32}
+\pastebutton{ugProblemNumericPageFull32}{\hidepaste}
+\tab{5}\spadgraph{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")}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage32.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage32}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty32}
+\begin{paste}{ugProblemNumericPageEmpty32}{ugProblemNumericPagePatch32}
+\pastebutton{ugProblemNumericPageEmpty32}{\showpaste}
+\tab{5}\spadgraph{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")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPagePatch33}
+\begin{paste}{ugProblemNumericPageFull33}{ugProblemNumericPageEmpty33}
+\pastebutton{ugProblemNumericPageFull33}{\hidepaste}
+\tab{5}\spadcommand{all}
+\indentrel{3}\begin{verbatim}
+   (33)  all
+                                     Type: Variable all
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemNumericPageEmpty33}
+\begin{paste}{ugProblemNumericPageEmpty33}{ugProblemNumericPagePatch33}
+\pastebutton{ugProblemNumericPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{all}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemFactorPage}{ug08.ht}{Polynomial Factorization}
 \pageto{notitle}{ugProblemFactorIntRatPage}
@@ -37195,6 +95443,80 @@ rational number coefficients.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemFactorIntRatPagePatch1}
+\begin{paste}{ugProblemFactorIntRatPageFull1}{ugProblemFactorIntRatPageEmpty1}
+\pastebutton{ugProblemFactorIntRatPageFull1}{\hidepaste}
+\tab{5}\spadcommand{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12)\bound{v }}
+\indentrel{3}\begin{verbatim}
+   (1)
+         3 3       5       2        6    3        8      5
+     - 2x y  + (24x  + 24)y  + (- 4x  - x )y + 48x  + 12x
+   + 
+        3
+     48x  + 12
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPageEmpty1}
+\begin{paste}{ugProblemFactorIntRatPageEmpty1}{ugProblemFactorIntRatPagePatch1}
+\pastebutton{ugProblemFactorIntRatPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12)\bound{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPagePatch2}
+\begin{paste}{ugProblemFactorIntRatPageFull2}{ugProblemFactorIntRatPageEmpty2}
+\pastebutton{ugProblemFactorIntRatPageFull2}{\hidepaste}
+\tab{5}\spadcommand{factor v\free{v }}
+\indentrel{3}\begin{verbatim}
+            3       5         2     3
+   (2)  - (x y - 12x  - 12)(2y  + 4x  + 1)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPageEmpty2}
+\begin{paste}{ugProblemFactorIntRatPageEmpty2}{ugProblemFactorIntRatPagePatch2}
+\pastebutton{ugProblemFactorIntRatPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{factor v\free{v }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPagePatch3}
+\begin{paste}{ugProblemFactorIntRatPageFull3}{ugProblemFactorIntRatPageEmpty3}
+\pastebutton{ugProblemFactorIntRatPageFull3}{\hidepaste}
+\tab{5}\spadcommand{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12)\bound{w }}
+\indentrel{3}\begin{verbatim}
+           8     7     6   35  5   95  3     2
+   (3)  48x  + 8x  - 2x  + ÄÄ x  + ÄÄ x  + 8x  + 12
+                            3       2
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPageEmpty3}
+\begin{paste}{ugProblemFactorIntRatPageEmpty3}{ugProblemFactorIntRatPagePatch3}
+\pastebutton{ugProblemFactorIntRatPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12)\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPagePatch4}
+\begin{paste}{ugProblemFactorIntRatPageFull4}{ugProblemFactorIntRatPageEmpty4}
+\pastebutton{ugProblemFactorIntRatPageFull4}{\hidepaste}
+\tab{5}\spadcommand{factor w\free{w }}
+\indentrel{3}\begin{verbatim}
+            3   1  2   1   5    1  3
+   (4)  48(x  + Ä x  + Ä)(x  - ÄÄ x  + 1)
+                6      4       24
+             Type: Factored Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorIntRatPageEmpty4}
+\begin{paste}{ugProblemFactorIntRatPageEmpty4}{ugProblemFactorIntRatPagePatch4}
+\pastebutton{ugProblemFactorIntRatPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factor w\free{w }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemFactorFFPage}{ug08.ht}{Finite Field Coefficients}
 \pageto{notitle}{ugProblemFinitePage}
@@ -37231,6 +95553,61 @@ about finite fields.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemFactorFFPagePatch1}
+\begin{paste}{ugProblemFactorFFPageFull1}{ugProblemFactorFFPageEmpty1}
+\pastebutton{ugProblemFactorFFPageFull1}{\hidepaste}
+\tab{5}\spadcommand{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18\bound{u }}
+\indentrel{3}\begin{verbatim}
+          4     2
+   (1)  3x  + 2x  + 15x + 18
+                         Type: Polynomial PrimeField 19
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorFFPageEmpty1}
+\begin{paste}{ugProblemFactorFFPageEmpty1}{ugProblemFactorFFPagePatch1}
+\pastebutton{ugProblemFactorFFPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18\bound{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorFFPagePatch2}
+\begin{paste}{ugProblemFactorFFPageFull2}{ugProblemFactorFFPageEmpty2}
+\pastebutton{ugProblemFactorFFPageFull2}{\hidepaste}
+\tab{5}\spadcommand{factor u\free{u }}
+\indentrel{3}\begin{verbatim}
+                   3    2
+   (2)  3(x + 18)(x  + x  + 8x + 13)
+                Type: Factored Polynomial PrimeField 19
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorFFPageEmpty2}
+\begin{paste}{ugProblemFactorFFPageEmpty2}{ugProblemFactorFFPagePatch2}
+\pastebutton{ugProblemFactorFFPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{factor u\free{u }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorFFPagePatch3}
+\begin{paste}{ugProblemFactorFFPageFull3}{ugProblemFactorFFPageEmpty3}
+\pastebutton{ugProblemFactorFFPageFull3}{\hidepaste}
+\tab{5}\spadcommand{factor(u :: POLY FFX(PF 19,3))\free{u }}
+\indentrel{3}\begin{verbatim}
+   (3)
+                       2
+     3(x + 18)(x + 5%BC  + 3%BC + 13)
+  *
+               2                        2
+     (x + 16%BC  + 14%BC + 13)(x + 17%BC  + 2%BC + 13)
+Type: Factored Polynomial FiniteFieldExtension(PrimeField 19,3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorFFPageEmpty3}
+\begin{paste}{ugProblemFactorFFPageEmpty3}{ugProblemFactorFFPagePatch3}
+\pastebutton{ugProblemFactorFFPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{factor(u :: POLY FFX(PF 19,3))\free{u }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemFactorAlgPage}{ug08.ht}
 {Simple Algebraic Extension Field Coefficients}
@@ -37294,6 +95671,174 @@ and \axiom{bb} to the rational numbers.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemFactorAlgPagePatch1}
+\begin{paste}{ugProblemFactorAlgPageFull1}{ugProblemFactorAlgPageEmpty1}
+\pastebutton{ugProblemFactorAlgPageFull1}{\hidepaste}
+\tab{5}\spadcommand{aa := rootOf(aa**2+aa+1)\bound{aa }}
+\indentrel{3}\begin{verbatim}
+   (1)  aa
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty1}
+\begin{paste}{ugProblemFactorAlgPageEmpty1}{ugProblemFactorAlgPagePatch1}
+\pastebutton{ugProblemFactorAlgPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{aa := rootOf(aa**2+aa+1)\bound{aa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch2}
+\begin{paste}{ugProblemFactorAlgPageFull2}{ugProblemFactorAlgPageEmpty2}
+\pastebutton{ugProblemFactorAlgPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2\free{aa }\bound{p }}
+\indentrel{3}\begin{verbatim}
+   (2)
+                5               3         4
+     (- aa - 1)y  + ((- aa - 1)x  + aa x)y
+   + 
+                  2                 3
+     ((- 2aa - 2)x  + (- 2aa - 2)x)y
+   + 
+                  5               4        3        2  2
+     ((- 2aa - 2)x  + (- 2aa - 2)x  + 2aa x  + 2aa x )y
+   + 
+                 4               3              2
+     ((- aa - 1)x  + (- 2aa - 2)x  + (- aa - 1)x )y
+   + 
+                7               6    5        4       3
+     (- aa - 1)x  + (- 2aa - 2)x  - x  + 2aa x  + aa x
+                       Type: Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty2}
+\begin{paste}{ugProblemFactorAlgPageEmpty2}{ugProblemFactorAlgPagePatch2}
+\pastebutton{ugProblemFactorAlgPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2\free{aa }\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch3}
+\begin{paste}{ugProblemFactorAlgPageFull3}{ugProblemFactorAlgPageEmpty3}
+\pastebutton{ugProblemFactorAlgPageFull3}{\hidepaste}
+\tab{5}\spadcommand{factor(p,[aa])\free{p aa }}
+\indentrel{3}\begin{verbatim}
+                        3                 2    2     2
+   (3)  (- aa - 1)(y + x  + (- aa - 1)x)(y  + x  + x)
+              Type: Factored Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty3}
+\begin{paste}{ugProblemFactorAlgPageEmpty3}{ugProblemFactorAlgPagePatch3}
+\pastebutton{ugProblemFactorAlgPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{factor(p,[aa])\free{p aa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch4}
+\begin{paste}{ugProblemFactorAlgPageFull4}{ugProblemFactorAlgPageEmpty4}
+\pastebutton{ugProblemFactorAlgPageFull4}{\hidepaste}
+\tab{5}\spadcommand{factor(x**2+3)}
+\indentrel{3}\begin{verbatim}
+         2
+   (4)  x  + 3
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty4}
+\begin{paste}{ugProblemFactorAlgPageEmpty4}{ugProblemFactorAlgPagePatch4}
+\pastebutton{ugProblemFactorAlgPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factor(x**2+3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch5}
+\begin{paste}{ugProblemFactorAlgPageFull5}{ugProblemFactorAlgPageEmpty5}
+\pastebutton{ugProblemFactorAlgPageFull5}{\hidepaste}
+\tab{5}\spadcommand{factor(x**2+3,[aa])\free{aa }}
+\indentrel{3}\begin{verbatim}
+   (5)  (x - 2aa - 1)(x + 2aa + 1)
+              Type: Factored Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty5}
+\begin{paste}{ugProblemFactorAlgPageEmpty5}{ugProblemFactorAlgPagePatch5}
+\pastebutton{ugProblemFactorAlgPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{factor(x**2+3,[aa])\free{aa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch6}
+\begin{paste}{ugProblemFactorAlgPageFull6}{ugProblemFactorAlgPageEmpty6}
+\pastebutton{ugProblemFactorAlgPageFull6}{\hidepaste}
+\tab{5}\spadcommand{factor(x**6+108,[aa])\free{aa }}
+\indentrel{3}\begin{verbatim}
+          3              3
+   (6)  (x  - 12aa - 6)(x  + 12aa + 6)
+              Type: Factored Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty6}
+\begin{paste}{ugProblemFactorAlgPageEmpty6}{ugProblemFactorAlgPagePatch6}
+\pastebutton{ugProblemFactorAlgPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{factor(x**6+108,[aa])\free{aa }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch7}
+\begin{paste}{ugProblemFactorAlgPageFull7}{ugProblemFactorAlgPageEmpty7}
+\pastebutton{ugProblemFactorAlgPageFull7}{\hidepaste}
+\tab{5}\spadcommand{bb:=rootOf(bb**3-2)\bound{bb }}
+\indentrel{3}\begin{verbatim}
+   (7)  bb
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty7}
+\begin{paste}{ugProblemFactorAlgPageEmpty7}{ugProblemFactorAlgPagePatch7}
+\pastebutton{ugProblemFactorAlgPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{bb:=rootOf(bb**3-2)\bound{bb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch8}
+\begin{paste}{ugProblemFactorAlgPageFull8}{ugProblemFactorAlgPageEmpty8}
+\pastebutton{ugProblemFactorAlgPageFull8}{\hidepaste}
+\tab{5}\spadcommand{factor(x**6+108,[bb])\free{bb }}
+\indentrel{3}\begin{verbatim}
+   (8)
+     2              2   2      2   2              2
+   (x  - 3bb x + 3bb )(x  + 3bb )(x  + 3bb x + 3bb )
+              Type: Factored Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty8}
+\begin{paste}{ugProblemFactorAlgPageEmpty8}{ugProblemFactorAlgPagePatch8}
+\pastebutton{ugProblemFactorAlgPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{factor(x**6+108,[bb])\free{bb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPagePatch9}
+\begin{paste}{ugProblemFactorAlgPageFull9}{ugProblemFactorAlgPageEmpty9}
+\pastebutton{ugProblemFactorAlgPageFull9}{\hidepaste}
+\tab{5}\spadcommand{factor(x**6+108,[aa,bb])\free{aa bb }}
+\indentrel{3}\begin{verbatim}
+   (9)
+     (x + (- 2aa - 1)bb)(x + (- aa - 2)bb)
+  *
+     (x + (- aa + 1)bb)(x + (aa - 1)bb)(x + (aa + 2)bb)
+  *
+     (x + (2aa + 1)bb)
+              Type: Factored Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorAlgPageEmpty9}
+\begin{paste}{ugProblemFactorAlgPageEmpty9}{ugProblemFactorAlgPagePatch9}
+\pastebutton{ugProblemFactorAlgPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{factor(x**6+108,[aa,bb])\free{aa bb }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemFactorRatFunPage}{ug08.ht}
 {Factoring Rational Functions}
@@ -37326,6 +95871,42 @@ to the numerator and denominator.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemFactorRatFunPagePatch1}
+\begin{paste}{ugProblemFactorRatFunPageFull1}{ugProblemFactorRatFunPageEmpty1}
+\pastebutton{ugProblemFactorRatFunPageFull1}{\hidepaste}
+\tab{5}\spadcommand{factorFraction((x**2-4)/(y**2-4))}
+\indentrel{3}\begin{verbatim}
+        (x - 2)(x + 2)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+        (y - 2)(y + 2)
+             Type: Fraction Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorRatFunPageEmpty1}
+\begin{paste}{ugProblemFactorRatFunPageEmpty1}{ugProblemFactorRatFunPagePatch1}
+\pastebutton{ugProblemFactorRatFunPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{factorFraction((x**2-4)/(y**2-4))}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorRatFunPagePatch2}
+\begin{paste}{ugProblemFactorRatFunPageFull2}{ugProblemFactorRatFunPageEmpty2}
+\pastebutton{ugProblemFactorRatFunPageFull2}{\hidepaste}
+\tab{5}\spadcommand{map(factor,(x**2-4)/(y**2-4))}
+\indentrel{3}\begin{verbatim}
+        (x - 2)(x + 2)
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+        (y - 2)(y + 2)
+             Type: Fraction Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemFactorRatFunPageEmpty2}
+\begin{paste}{ugProblemFactorRatFunPageEmpty2}{ugProblemFactorRatFunPagePatch2}
+\pastebutton{ugProblemFactorRatFunPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{map(factor,(x**2-4)/(y**2-4))}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemSymRootPage}{ug08.ht}
 {Manipulating Symbolic Roots of a Polynomial}
@@ -37423,6 +96004,156 @@ except that it may express the root using radicals in some cases.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSymRootOnePagePatch1}
+\begin{paste}{ugxProblemSymRootOnePageFull1}{ugxProblemSymRootOnePageEmpty1}
+\pastebutton{ugxProblemSymRootOnePageFull1}{\hidepaste}
+\tab{5}\spadcommand{a := rootOf(a**4+1,a)\bound{a }}
+\indentrel{3}\begin{verbatim}
+   (1)  a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty1}
+\begin{paste}{ugxProblemSymRootOnePageEmpty1}{ugxProblemSymRootOnePagePatch1}
+\pastebutton{ugxProblemSymRootOnePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{a := rootOf(a**4+1,a)\bound{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch2}
+\begin{paste}{ugxProblemSymRootOnePageFull2}{ugxProblemSymRootOnePageEmpty2}
+\pastebutton{ugxProblemSymRootOnePageFull2}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial a\free{a }}
+\indentrel{3}\begin{verbatim}
+         4
+   (2)  a  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty2}
+\begin{paste}{ugxProblemSymRootOnePageEmpty2}{ugxProblemSymRootOnePagePatch2}
+\pastebutton{ugxProblemSymRootOnePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch3}
+\begin{paste}{ugxProblemSymRootOnePageFull3}{ugxProblemSymRootOnePageEmpty3}
+\pastebutton{ugxProblemSymRootOnePageFull3}{\hidepaste}
+\tab{5}\spadcommand{b := rootOf(b**2-a-1,b)\free{a }\bound{b }}
+\indentrel{3}\begin{verbatim}
+   (3)  b
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty3}
+\begin{paste}{ugxProblemSymRootOnePageEmpty3}{ugxProblemSymRootOnePagePatch3}
+\pastebutton{ugxProblemSymRootOnePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{b := rootOf(b**2-a-1,b)\free{a }\bound{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch4}
+\begin{paste}{ugxProblemSymRootOnePageFull4}{ugxProblemSymRootOnePageEmpty4}
+\pastebutton{ugxProblemSymRootOnePageFull4}{\hidepaste}
+\tab{5}\spadcommand{a + b\free{a b }\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (4)  b + a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty4}
+\begin{paste}{ugxProblemSymRootOnePageEmpty4}{ugxProblemSymRootOnePagePatch4}
+\pastebutton{ugxProblemSymRootOnePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{a + b\free{a b }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch5}
+\begin{paste}{ugxProblemSymRootOnePageFull5}{ugxProblemSymRootOnePageEmpty5}
+\pastebutton{ugxProblemSymRootOnePageFull5}{\hidepaste}
+\tab{5}\spadcommand{\% ** 5\free{c }}
+\indentrel{3}\begin{verbatim}
+            3      2                 3      2
+   (5)  (10a  + 11a  + 2a - 4)b + 15a  + 10a  + 4a - 10
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty5}
+\begin{paste}{ugxProblemSymRootOnePageEmpty5}{ugxProblemSymRootOnePagePatch5}
+\pastebutton{ugxProblemSymRootOnePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{\% ** 5\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch6}
+\begin{paste}{ugxProblemSymRootOnePageFull6}{ugxProblemSymRootOnePageEmpty6}
+\pastebutton{ugxProblemSymRootOnePageFull6}{\hidepaste}
+\tab{5}\spadcommand{rootOf(c**2+c+1,c)}
+\indentrel{3}\begin{verbatim}
+   (6)  c
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty6}
+\begin{paste}{ugxProblemSymRootOnePageEmpty6}{ugxProblemSymRootOnePagePatch6}
+\pastebutton{ugxProblemSymRootOnePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{rootOf(c**2+c+1,c)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch7}
+\begin{paste}{ugxProblemSymRootOnePageFull7}{ugxProblemSymRootOnePageEmpty7}
+\pastebutton{ugxProblemSymRootOnePageFull7}{\hidepaste}
+\tab{5}\spadcommand{zeroOf(d**2+d+1,d)}
+\indentrel{3}\begin{verbatim}
+         ÚÄÄÄ¿
+        \³- 3  - 1
+   (7)  ÄÄÄÄÄÄÄÄÄÄ
+             2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty7}
+\begin{paste}{ugxProblemSymRootOnePageEmpty7}{ugxProblemSymRootOnePagePatch7}
+\pastebutton{ugxProblemSymRootOnePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{zeroOf(d**2+d+1,d)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch8}
+\begin{paste}{ugxProblemSymRootOnePageFull8}{ugxProblemSymRootOnePageEmpty8}
+\pastebutton{ugxProblemSymRootOnePageFull8}{\hidepaste}
+\tab{5}\spadcommand{rootOf(e**5-2,e)}
+\indentrel{3}\begin{verbatim}
+   (8)  e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty8}
+\begin{paste}{ugxProblemSymRootOnePageEmpty8}{ugxProblemSymRootOnePagePatch8}
+\pastebutton{ugxProblemSymRootOnePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{rootOf(e**5-2,e)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePagePatch9}
+\begin{paste}{ugxProblemSymRootOnePageFull9}{ugxProblemSymRootOnePageEmpty9}
+\pastebutton{ugxProblemSymRootOnePageFull9}{\hidepaste}
+\tab{5}\spadcommand{zeroOf(f**5-2,f)}
+\indentrel{3}\begin{verbatim}
+        5ÚÄ¿
+   (9)  \³2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootOnePageEmpty9}
+\begin{paste}{ugxProblemSymRootOnePageEmpty9}{ugxProblemSymRootOnePagePatch9}
+\pastebutton{ugxProblemSymRootOnePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{zeroOf(f**5-2,f)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSymRootAllPage}{ug08.ht}
 {Using All Roots of a Polynomial}
@@ -37504,6 +96235,175 @@ The other three roots are expressed in radicals.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSymRootAllPagePatch1}
+\begin{paste}{ugxProblemSymRootAllPageFull1}{ugxProblemSymRootAllPageEmpty1}
+\pastebutton{ugxProblemSymRootAllPageFull1}{\hidepaste}
+\tab{5}\spadcommand{l := rootsOf(x**4+1,x)\bound{l }}
+\indentrel{3}\begin{verbatim}
+   (1)  [%x0,%x0 %x1,- %x0,- %x0 %x1]
+                          Type: List Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty1}
+\begin{paste}{ugxProblemSymRootAllPageEmpty1}{ugxProblemSymRootAllPagePatch1}
+\pastebutton{ugxProblemSymRootAllPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{l := rootsOf(x**4+1,x)\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch2}
+\begin{paste}{ugxProblemSymRootAllPageFull2}{ugxProblemSymRootAllPageEmpty2}
+\pastebutton{ugxProblemSymRootAllPageFull2}{\hidepaste}
+\tab{5}\spadcommand{\%x0**5\free{l }}
+\indentrel{3}\begin{verbatim}
+   (2)  - %x0
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty2}
+\begin{paste}{ugxProblemSymRootAllPageEmpty2}{ugxProblemSymRootAllPagePatch2}
+\pastebutton{ugxProblemSymRootAllPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{\%x0**5\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch3}
+\begin{paste}{ugxProblemSymRootAllPageFull3}{ugxProblemSymRootAllPageEmpty3}
+\pastebutton{ugxProblemSymRootAllPageFull3}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial \%x0\free{l }}
+\indentrel{3}\begin{verbatim}
+           4
+   (3)  %x0  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty3}
+\begin{paste}{ugxProblemSymRootAllPageEmpty3}{ugxProblemSymRootAllPagePatch3}
+\pastebutton{ugxProblemSymRootAllPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial \%x0\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch4}
+\begin{paste}{ugxProblemSymRootAllPageFull4}{ugxProblemSymRootAllPageEmpty4}
+\pastebutton{ugxProblemSymRootAllPageFull4}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial \%x1\free{l }}
+\indentrel{3}\begin{verbatim}
+           2
+   (4)  %x1  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty4}
+\begin{paste}{ugxProblemSymRootAllPageEmpty4}{ugxProblemSymRootAllPagePatch4}
+\pastebutton{ugxProblemSymRootAllPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial \%x1\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch5}
+\begin{paste}{ugxProblemSymRootAllPageFull5}{ugxProblemSymRootAllPageEmpty5}
+\pastebutton{ugxProblemSymRootAllPageFull5}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial \%x2\free{l }}
+\indentrel{3}\begin{verbatim}
+   (5)  - %x2 + %%var
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty5}
+\begin{paste}{ugxProblemSymRootAllPageEmpty5}{ugxProblemSymRootAllPagePatch5}
+\pastebutton{ugxProblemSymRootAllPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial \%x2\free{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch6}
+\begin{paste}{ugxProblemSymRootAllPageFull6}{ugxProblemSymRootAllPageEmpty6}
+\pastebutton{ugxProblemSymRootAllPageFull6}{\hidepaste}
+\tab{5}\spadcommand{x3 := last l\free{l }\bound{x3 }}
+\indentrel{3}\begin{verbatim}
+   (6)  - %x0 %x1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty6}
+\begin{paste}{ugxProblemSymRootAllPageEmpty6}{ugxProblemSymRootAllPagePatch6}
+\pastebutton{ugxProblemSymRootAllPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{x3 := last l\free{l }\bound{x3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch7}
+\begin{paste}{ugxProblemSymRootAllPageFull7}{ugxProblemSymRootAllPageEmpty7}
+\pastebutton{ugxProblemSymRootAllPageFull7}{\hidepaste}
+\tab{5}\spadcommand{\%x0 + \%x1 + \%x2 + x3\free{x3 }}
+\indentrel{3}\begin{verbatim}
+   (7)  (- %x0 + 1)%x1 + %x0 + %x2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty7}
+\begin{paste}{ugxProblemSymRootAllPageEmpty7}{ugxProblemSymRootAllPagePatch7}
+\pastebutton{ugxProblemSymRootAllPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{\%x0 + \%x1 + \%x2 + x3\free{x3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch8}
+\begin{paste}{ugxProblemSymRootAllPageFull8}{ugxProblemSymRootAllPageEmpty8}
+\pastebutton{ugxProblemSymRootAllPageFull8}{\hidepaste}
+\tab{5}\spadcommand{\%x0 * \%x1 * \%x2 * x3\free{x3 }}
+\indentrel{3}\begin{verbatim}
+               2
+   (8)  %x2 %x0
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty8}
+\begin{paste}{ugxProblemSymRootAllPageEmpty8}{ugxProblemSymRootAllPagePatch8}
+\pastebutton{ugxProblemSymRootAllPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{\%x0 * \%x1 * \%x2 * x3\free{x3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch9}
+\begin{paste}{ugxProblemSymRootAllPageFull9}{ugxProblemSymRootAllPageEmpty9}
+\pastebutton{ugxProblemSymRootAllPageFull9}{\hidepaste}
+\tab{5}\spadcommand{zerosOf(y**4+1,y)\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (9)
+     ÚÄÄÄ¿      ÚÄÄÄ¿        ÚÄÄÄ¿        ÚÄÄÄ¿
+    \³- 1  + 1 \³- 1  - 1 - \³- 1  - 1 - \³- 1  + 1
+   [ÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]
+        ÚÄ¿        ÚÄ¿         ÚÄ¿          ÚÄ¿
+       \³2        \³2         \³2          \³2
+                          Type: List Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty9}
+\begin{paste}{ugxProblemSymRootAllPageEmpty9}{ugxProblemSymRootAllPagePatch9}
+\pastebutton{ugxProblemSymRootAllPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{zerosOf(y**4+1,y)\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPagePatch10}
+\begin{paste}{ugxProblemSymRootAllPageFull10}{ugxProblemSymRootAllPageEmpty10}
+\pastebutton{ugxProblemSymRootAllPageFull10}{\hidepaste}
+\tab{5}\spadcommand{definingPolynomial \%y1\free{z }}
+\indentrel{3}\begin{verbatim}
+              2
+   (10)  %%var  + 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSymRootAllPageEmpty10}
+\begin{paste}{ugxProblemSymRootAllPageEmpty10}{ugxProblemSymRootAllPagePatch10}
+\pastebutton{ugxProblemSymRootAllPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{definingPolynomial \%y1\free{z }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemEigenPage}{ug08.ht}
 {Computation of Eigenvalues and Eigenvectors}
@@ -37615,6 +96515,280 @@ has a basis of orthonormal eigenvectors, then
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemEigenPagePatch1}
+\begin{paste}{ugProblemEigenPageFull1}{ugProblemEigenPageEmpty1}
+\pastebutton{ugProblemEigenPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]]\bound{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú1   2    1 ¿
+        ³           ³
+   (1)  ³2   1   - 2³
+        ³           ³
+        À1  - 2   4 Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty1}
+\begin{paste}{ugProblemEigenPageEmpty1}{ugProblemEigenPagePatch1}
+\pastebutton{ugProblemEigenPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]]\bound{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch2}
+\begin{paste}{ugProblemEigenPageFull2}{ugProblemEigenPageEmpty2}
+\pastebutton{ugProblemEigenPageFull2}{\hidepaste}
+\tab{5}\spadcommand{leig := eigenvalues(m1)\free{m1 }\bound{leig }}
+\indentrel{3}\begin{verbatim}
+                    2
+   (2)  [5,%DA | %DA  - %DA - 5]
+Type: List Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty2}
+\begin{paste}{ugProblemEigenPageEmpty2}{ugProblemEigenPagePatch2}
+\pastebutton{ugProblemEigenPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{leig := eigenvalues(m1)\free{m1 }\bound{leig }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch3}
+\begin{paste}{ugProblemEigenPageFull3}{ugProblemEigenPageEmpty3}
+\pastebutton{ugProblemEigenPageFull3}{\hidepaste}
+\tab{5}\spadcommand{eigenvector(first(leig),m1)\free{m1 leig }}
+\indentrel{3}\begin{verbatim}
+         Ú 0 ¿
+         ³   ³
+         ³  1³
+   (3)  [³- Ä³]
+         ³  2³
+         ³   ³
+         À 1 Ù
+ Type: List Matrix Fraction Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty3}
+\begin{paste}{ugProblemEigenPageEmpty3}{ugProblemEigenPagePatch3}
+\pastebutton{ugProblemEigenPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{eigenvector(first(leig),m1)\free{m1 leig }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch4}
+\begin{paste}{ugProblemEigenPageFull4}{ugProblemEigenPageEmpty4}
+\pastebutton{ugProblemEigenPageFull4}{\hidepaste}
+\tab{5}\spadcommand{eigenvectors(m1)\free{m1 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+                                   Ú 0 ¿
+                                   ³   ³
+                                   ³  1³
+   [[eigval= 5,eigmult= 1,eigvec= [³- Ä³]],
+                                   ³  2³
+                                   ³   ³
+                                   À 1 Ù
+
+                        2
+     [eigval= (%DB | %DB  - %DB - 5), eigmult= 1,
+               Ú%DB¿
+               ³   ³
+      eigvec= [³ 2 ³]]
+               ³   ³
+               À 1 Ù
+     ]
+Type: List Record(eigval: Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer)),eigmult: NonNegativeInteger,eigvec: List Matrix Fraction Polynomial Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty4}
+\begin{paste}{ugProblemEigenPageEmpty4}{ugProblemEigenPagePatch4}
+\pastebutton{ugProblemEigenPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{eigenvectors(m1)\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch5}
+\begin{paste}{ugProblemEigenPageFull5}{ugProblemEigenPageEmpty5}
+\pastebutton{ugProblemEigenPageFull5}{\hidepaste}
+\tab{5}\spadcommand{radicalEigenvectors(m1)\free{m1 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                                            Ú ÚÄÄ¿    ¿
+              ÚÄÄ¿                          ³\³21  + 1³
+             \³21  + 1                      ³ÄÄÄÄÄÄÄÄÄ³
+   [[radval= ÄÄÄÄÄÄÄÄÄ,radmult= 1,radvect= [³    2    ³]],
+                 2                          ³         ³
+                                            ³    2    ³
+                                            ³         ³
+                                            À    1    Ù
+
+                 ÚÄÄ¿
+              - \³21  + 1
+     [radval= ÄÄÄÄÄÄÄÄÄÄÄ, radmult= 1,
+                   2
+                Ú   ÚÄÄ¿    ¿
+                ³- \³21  + 1³
+                ³ÄÄÄÄÄÄÄÄÄÄÄ³
+      radvect= [³     2     ³]]
+                ³           ³
+                ³     2     ³
+                ³           ³
+                À     1     Ù
+     ,
+                                    Ú 0 ¿
+                                    ³   ³
+                                    ³  1³
+    [radval= 5,radmult= 1,radvect= [³- Ä³]]]
+                                    ³  2³
+                                    ³   ³
+                                    À 1 Ù
+Type: List Record(radval: Expression Integer,radmult: Integer,radvect: List Matrix Expression Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty5}
+\begin{paste}{ugProblemEigenPageEmpty5}{ugProblemEigenPagePatch5}
+\pastebutton{ugProblemEigenPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{radicalEigenvectors(m1)\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch6}
+\begin{paste}{ugProblemEigenPageFull6}{ugProblemEigenPageEmpty6}
+\pastebutton{ugProblemEigenPageFull6}{\hidepaste}
+\tab{5}\spadcommand{realEigenvectors(m1,1/1000)\free{m1 }}
+\indentrel{3}\begin{verbatim}
+   (6)
+                                    Ú 0 ¿
+                                    ³   ³
+                                    ³  1³
+   [[outval= 5,outmult= 1,outvect= [³- Ä³]],
+                                    ³  2³
+                                    ³   ³
+                                    À 1 Ù
+                                       Ú5717¿
+                                       ³ÄÄÄÄ³
+             5717                      ³2048³
+    [outval= ÄÄÄÄ,outmult= 1,outvect= [³    ³]],
+             2048                      ³ 2  ³
+                                       ³    ³
+                                       À 1  Ù
+                                         Ú  3669¿
+                                         ³- ÄÄÄÄ³
+               3669                      ³  2048³
+    [outval= - ÄÄÄÄ,outmult= 1,outvect= [³      ³]]]
+               2048                      ³  2   ³
+                                         ³      ³
+                                         À  1   Ù
+Type: List Record(outval: Fraction Integer,outmult: Integer,outvect: List Matrix Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty6}
+\begin{paste}{ugProblemEigenPageEmpty6}{ugProblemEigenPagePatch6}
+\pastebutton{ugProblemEigenPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{realEigenvectors(m1,1/1000)\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch7}
+\begin{paste}{ugProblemEigenPageFull7}{ugProblemEigenPageEmpty7}
+\pastebutton{ugProblemEigenPageFull7}{\hidepaste}
+\tab{5}\spadcommand{eigenMatrix(m1)\free{m1 }}
+\indentrel{3}\begin{verbatim}
+        Ú ÚÄÄ¿         ÚÄÄ¿         ¿
+        ³\³21  + 1  - \³21  + 1     ³
+        ³ÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄÄÄÄ   0 ³
+        ³    2           2          ³
+   (7)  ³                           ³
+        ³                          1³
+        ³    2           2       - Ä³
+        ³                          2³
+        ³                           ³
+        À    1           1        1 Ù
+             Type: Union(Matrix Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty7}
+\begin{paste}{ugProblemEigenPageEmpty7}{ugProblemEigenPagePatch7}
+\pastebutton{ugProblemEigenPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{eigenMatrix(m1)\free{m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch8}
+\begin{paste}{ugProblemEigenPageFull8}{ugProblemEigenPageEmpty8}
+\pastebutton{ugProblemEigenPageFull8}{\hidepaste}
+\tab{5}\spadcommand{m2 := matrix [[-5,-2],[18,7]]\bound{m2 }}
+\indentrel{3}\begin{verbatim}
+        Ú- 5  - 2¿
+   (8)  ³        ³
+        À18    7 Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty8}
+\begin{paste}{ugProblemEigenPageEmpty8}{ugProblemEigenPagePatch8}
+\pastebutton{ugProblemEigenPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{m2 := matrix [[-5,-2],[18,7]]\bound{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch9}
+\begin{paste}{ugProblemEigenPageFull9}{ugProblemEigenPageEmpty9}
+\pastebutton{ugProblemEigenPageFull9}{\hidepaste}
+\tab{5}\spadcommand{eigenMatrix(m2)\free{m2 }}
+\indentrel{3}\begin{verbatim}
+   (9)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty9}
+\begin{paste}{ugProblemEigenPageEmpty9}{ugProblemEigenPagePatch9}
+\pastebutton{ugProblemEigenPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{eigenMatrix(m2)\free{m2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch10}
+\begin{paste}{ugProblemEigenPageFull10}{ugProblemEigenPageEmpty10}
+\pastebutton{ugProblemEigenPageFull10}{\hidepaste}
+\tab{5}\spadcommand{m3 := matrix [[1,2],[2,1]]\bound{m3 }}
+\indentrel{3}\begin{verbatim}
+         Ú1  2¿
+   (10)  ³    ³
+         À2  1Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty10}
+\begin{paste}{ugProblemEigenPageEmpty10}{ugProblemEigenPagePatch10}
+\pastebutton{ugProblemEigenPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m3 := matrix [[1,2],[2,1]]\bound{m3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPagePatch11}
+\begin{paste}{ugProblemEigenPageFull11}{ugProblemEigenPageEmpty11}
+\pastebutton{ugProblemEigenPageFull11}{\hidepaste}
+\tab{5}\spadcommand{orthonormalBasis(m3)\free{m3 }}
+\indentrel{3}\begin{verbatim}
+          Ú    1 ¿ Ú  1 ¿
+          ³- ÄÄÄÄ³ ³ÄÄÄÄ³
+          ³   ÚÄ¿³ ³ ÚÄ¿³
+          ³  \³2 ³ ³\³2 ³
+   (11)  [³      ³,³    ³]
+          ³   1  ³ ³  1 ³
+          ³ ÄÄÄÄ ³ ³ÄÄÄÄ³
+          ³  ÚÄ¿ ³ ³ ÚÄ¿³
+          À \³2  Ù À\³2 Ù
+                   Type: List Matrix Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemEigenPageEmpty11}
+\begin{paste}{ugProblemEigenPageEmpty11}{ugProblemEigenPagePatch11}
+\pastebutton{ugProblemEigenPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{orthonormalBasis(m3)\free{m3 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemLinPolEqnPage}{ug08.ht}
 {Solution of Linear and Polynomial Equations}
@@ -37757,6 +96931,102 @@ these vectors form a basis for the solution space.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemLinSysPagePatch1}
+\begin{paste}{ugxProblemLinSysPageFull1}{ugxProblemLinSysPageEmpty1}
+\pastebutton{ugxProblemLinSysPageFull1}{\hidepaste}
+\tab{5}\spadcommand{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
+\indentrel{3}\begin{verbatim}
+   (1)  [[x= - 1,y= 2,z= 7]]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty1}
+\begin{paste}{ugxProblemLinSysPageEmpty1}{ugxProblemLinSysPagePatch1}
+\pastebutton{ugxProblemLinSysPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPagePatch2}
+\begin{paste}{ugxProblemLinSysPageFull2}{ugxProblemLinSysPageEmpty2}
+\pastebutton{ugxProblemLinSysPageFull2}{\hidepaste}
+\tab{5}\spadcommand{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
+\indentrel{3}\begin{verbatim}
+   (2)  [[x= %Y - 2,y= - 2%Y + 2,z= %Y]]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty2}
+\begin{paste}{ugxProblemLinSysPageEmpty2}{ugxProblemLinSysPagePatch2}
+\pastebutton{ugxProblemLinSysPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPagePatch3}
+\begin{paste}{ugxProblemLinSysPageFull3}{ugxProblemLinSysPageEmpty3}
+\pastebutton{ugxProblemLinSysPageFull3}{\hidepaste}
+\tab{5}\spadcommand{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
+\indentrel{3}\begin{verbatim}
+   (3)  [particular= [- 1,2,7],basis= [[0,0,0]]]
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty3}
+\begin{paste}{ugxProblemLinSysPageEmpty3}{ugxProblemLinSysPagePatch3}
+\pastebutton{ugxProblemLinSysPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPagePatch4}
+\begin{paste}{ugxProblemLinSysPageFull4}{ugxProblemLinSysPageEmpty4}
+\pastebutton{ugxProblemLinSysPageFull4}{\hidepaste}
+\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
+\indentrel{3}\begin{verbatim}
+   (4)  [particular= [- 2,2,0],basis= [[1,- 2,1]]]
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty4}
+\begin{paste}{ugxProblemLinSysPageEmpty4}{ugxProblemLinSysPagePatch4}
+\pastebutton{ugxProblemLinSysPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPagePatch5}
+\begin{paste}{ugxProblemLinSysPageFull5}{ugxProblemLinSysPageEmpty5}
+\pastebutton{ugxProblemLinSysPageFull5}{\hidepaste}
+\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
+\indentrel{3}\begin{verbatim}
+   (5)  [particular= "failed",basis= [[1,- 2,1]]]
+Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty5}
+\begin{paste}{ugxProblemLinSysPageEmpty5}{ugxProblemLinSysPagePatch5}
+\pastebutton{ugxProblemLinSysPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPagePatch6}
+\begin{paste}{ugxProblemLinSysPageFull6}{ugxProblemLinSysPageEmpty6}
+\pastebutton{ugxProblemLinSysPageFull6}{\hidepaste}
+\tab{5}\spadcommand{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
+\indentrel{3}\begin{verbatim}
+   (6)  [[1,- 2,1]]
+                              Type: List Vector Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLinSysPageEmpty6}
+\begin{paste}{ugxProblemLinSysPageEmpty6}{ugxProblemLinSysPagePatch6}
+\pastebutton{ugxProblemLinSysPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemOnePolPage}{ug08.ht}
 {Solution of a Single Polynomial Equation}
@@ -37838,6 +97108,130 @@ Solutions where the denominator vanishes are discarded.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemOnePolPagePatch1}
+\begin{paste}{ugxProblemOnePolPageFull1}{ugxProblemOnePolPageEmpty1}
+\pastebutton{ugxProblemOnePolPageFull1}{\hidepaste}
+\tab{5}\spadcommand{solve(x**3 = 8,x)}
+\indentrel{3}\begin{verbatim}
+               2
+   (1)  [x= 2,x  + 2x + 4= 0]
+        Type: List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty1}
+\begin{paste}{ugxProblemOnePolPageEmpty1}{ugxProblemOnePolPagePatch1}
+\pastebutton{ugxProblemOnePolPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{solve(x**3 = 8,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch2}
+\begin{paste}{ugxProblemOnePolPageFull2}{ugxProblemOnePolPageEmpty2}
+\pastebutton{ugxProblemOnePolPageFull2}{\hidepaste}
+\tab{5}\spadcommand{radicalSolve(x**3 = 8,x)}
+\indentrel{3}\begin{verbatim}
+               ÚÄÄÄ¿         ÚÄÄÄ¿
+   (2)  [x= - \³- 3  - 1,x= \³- 3  - 1,x= 2]
+                 Type: List Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty2}
+\begin{paste}{ugxProblemOnePolPageEmpty2}{ugxProblemOnePolPagePatch2}
+\pastebutton{ugxProblemOnePolPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{radicalSolve(x**3 = 8,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch3}
+\begin{paste}{ugxProblemOnePolPageFull3}{ugxProblemOnePolPageEmpty3}
+\pastebutton{ugxProblemOnePolPageFull3}{\hidepaste}
+\tab{5}\spadcommand{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
+\indentrel{3}\begin{verbatim}
+   (3)  [x= 3.6180114746 09375,x= 1.3819885253 90625]
+                   Type: List Equation Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty3}
+\begin{paste}{ugxProblemOnePolPageEmpty3}{ugxProblemOnePolPagePatch3}
+\pastebutton{ugxProblemOnePolPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch4}
+\begin{paste}{ugxProblemOnePolPageFull4}{ugxProblemOnePolPageEmpty4}
+\pastebutton{ugxProblemOnePolPageFull4}{\hidepaste}
+\tab{5}\spadcommand{solve(x**3-2,1/1000)}
+\indentrel{3}\begin{verbatim}
+            2581
+   (4)  [x= ÄÄÄÄ]
+            2048
+        Type: List Equation Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty4}
+\begin{paste}{ugxProblemOnePolPageEmpty4}{ugxProblemOnePolPagePatch4}
+\pastebutton{ugxProblemOnePolPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{solve(x**3-2,1/1000)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch5}
+\begin{paste}{ugxProblemOnePolPageFull5}{ugxProblemOnePolPageEmpty5}
+\pastebutton{ugxProblemOnePolPageFull5}{\hidepaste}
+\tab{5}\spadcommand{complexSolve(x**3-2,.0001)}
+\indentrel{3}\begin{verbatim}
+   (5)
+   [x= 1.2599182128 90625,
+    x= - 0.6298943279 5395613131 - 1.0910949707 03125 %i,
+    x= - 0.6298943279 5395613131 + 1.0910949707 03125 %i]
+           Type: List Equation Polynomial Complex Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty5}
+\begin{paste}{ugxProblemOnePolPageEmpty5}{ugxProblemOnePolPagePatch5}
+\pastebutton{ugxProblemOnePolPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{complexSolve(x**3-2,.0001)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch6}
+\begin{paste}{ugxProblemOnePolPageFull6}{ugxProblemOnePolPageEmpty6}
+\pastebutton{ugxProblemOnePolPageFull6}{\hidepaste}
+\tab{5}\spadcommand{complexSolve(x**2-2*\%i+1,1/100)}
+\indentrel{3}\begin{verbatim}
+              13028925   325       13028925   325
+   (6)  [x= - ÄÄÄÄÄÄÄÄ - ÄÄÄ %i,x= ÄÄÄÄÄÄÄÄ + ÄÄÄ %i]
+              16777216   256       16777216   256
+Type: List Equation Polynomial Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty6}
+\begin{paste}{ugxProblemOnePolPageEmpty6}{ugxProblemOnePolPagePatch6}
+\pastebutton{ugxProblemOnePolPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{complexSolve(x**2-2*\%i+1,1/100)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPagePatch7}
+\begin{paste}{ugxProblemOnePolPageFull7}{ugxProblemOnePolPageEmpty7}
+\pastebutton{ugxProblemOnePolPageFull7}{\hidepaste}
+\tab{5}\spadcommand{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
+\indentrel{3}\begin{verbatim}
+               ÚÄÄÄ¿         ÚÄÄÄ¿
+            - \³- 3  - 1    \³- 3  - 1
+   (7)  [x= ÄÄÄÄÄÄÄÄÄÄÄÄ,x= ÄÄÄÄÄÄÄÄÄÄ]
+                  2              2
+                 Type: List Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemOnePolPageEmpty7}
+\begin{paste}{ugxProblemOnePolPageEmpty7}{ugxProblemOnePolPagePatch7}
+\pastebutton{ugxProblemOnePolPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemPolSysPage}{ug08.ht}
 {Solution of Systems of Polynomial Equations}
@@ -37934,6 +97328,172 @@ discarded.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemPolSysPagePatch1}
+\begin{paste}{ugxProblemPolSysPageFull1}{ugxProblemPolSysPageEmpty1}
+\pastebutton{ugxProblemPolSysPageFull1}{\hidepaste}
+\tab{5}\spadcommand{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
+\indentrel{3}\begin{verbatim}
+   (1)
+                     2
+   [[x= - 1,y= 2], [x  - x + 1= 0,y= 2],
+       3
+    [3x  - 1= 0,y= - 2]]
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty1}
+\begin{paste}{ugxProblemPolSysPageEmpty1}{ugxProblemPolSysPagePatch1}
+\pastebutton{ugxProblemPolSysPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch2}
+\begin{paste}{ugxProblemPolSysPageFull2}{ugxProblemPolSysPageEmpty2}
+\pastebutton{ugxProblemPolSysPageFull2}{\hidepaste}
+\tab{5}\spadcommand{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
+\indentrel{3}\begin{verbatim}
+   (2)
+               2
+        z    3z  + z + 9   4     3      2
+   [[x= Ä,y= ÄÄÄÄÄÄÄÄÄÄÄ,9z  + 6z  + 55z  + 15z - 90= 0]]
+        3         3
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty2}
+\begin{paste}{ugxProblemPolSysPageEmpty2}{ugxProblemPolSysPagePatch2}
+\pastebutton{ugxProblemPolSysPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch3}
+\begin{paste}{ugxProblemPolSysPageFull3}{ugxProblemPolSysPageEmpty3}
+\pastebutton{ugxProblemPolSysPageFull3}{\hidepaste}
+\tab{5}\spadcommand{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
+\indentrel{3}\begin{verbatim}
+   (3)
+         ÚÄÄÄ¿                   ÚÄÄÄ¿
+        \³- 3  + 1            - \³- 3  + 1
+   [[x= ÄÄÄÄÄÄÄÄÄÄ,y= 2], [x= ÄÄÄÄÄÄÄÄÄÄÄÄ,y= 2],
+             2                      2
+           ÚÄÄÄ¿ ÚÄ¿
+        - \³- 1 \³3  - 1
+    [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,y= - 2],
+               3ÚÄ¿
+              2\³3
+         ÚÄÄÄ¿ ÚÄ¿
+        \³- 1 \³3  - 1                1
+    [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,y= - 2], [x= ÄÄÄÄ,y= - 2],
+              3ÚÄ¿                  3ÚÄ¿
+             2\³3                   \³3
+    [x= - 1,y= 2]]
+            Type: List List Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty3}
+\begin{paste}{ugxProblemPolSysPageEmpty3}{ugxProblemPolSysPagePatch3}
+\pastebutton{ugxProblemPolSysPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch4}
+\begin{paste}{ugxProblemPolSysPageFull4}{ugxProblemPolSysPageEmpty4}
+\pastebutton{ugxProblemPolSysPageFull4}{\hidepaste}
+\tab{5}\spadcommand{solve([x**2*y - 1,x*y**2 - 2],.01)}
+\indentrel{3}\begin{verbatim}
+   (4)  [[y= 1.5859375,x= 0.79296875]]
+              Type: List List Equation Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty4}
+\begin{paste}{ugxProblemPolSysPageEmpty4}{ugxProblemPolSysPagePatch4}
+\pastebutton{ugxProblemPolSysPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{solve([x**2*y - 1,x*y**2 - 2],.01)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch5}
+\begin{paste}{ugxProblemPolSysPageFull5}{ugxProblemPolSysPageEmpty5}
+\pastebutton{ugxProblemPolSysPageFull5}{\hidepaste}
+\tab{5}\spadcommand{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
+\indentrel{3}\begin{verbatim}
+   (5)
+        1625    1625
+   [[y= ÄÄÄÄ,x= ÄÄÄÄ],
+        1024    2048
+
+           435445573689   1407
+     [y= - ÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄ %i,
+           549755813888   1024
+            435445573689   1407
+      x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄ %i]
+           1099511627776   2048
+     ,
+
+           435445573689   1407
+     [y= - ÄÄÄÄÄÄÄÄÄÄÄÄ + ÄÄÄÄ %i,
+           549755813888   1024
+            435445573689   1407
+      x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄ + ÄÄÄÄ %i]
+           1099511627776   2048
+     ]
+Type: List List Equation Polynomial Complex Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty5}
+\begin{paste}{ugxProblemPolSysPageEmpty5}{ugxProblemPolSysPagePatch5}
+\pastebutton{ugxProblemPolSysPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch6}
+\begin{paste}{ugxProblemPolSysPageFull6}{ugxProblemPolSysPageEmpty6}
+\pastebutton{ugxProblemPolSysPageFull6}{\hidepaste}
+\tab{5}\spadcommand{solve([x**2/a = a,a = a*x],.001)}
+\indentrel{3}\begin{verbatim}
+   (6)  [[x= 1.0,a= - 1.0],[x= 1.0,a= 1.0]]
+              Type: List List Equation Polynomial Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty6}
+\begin{paste}{ugxProblemPolSysPageEmpty6}{ugxProblemPolSysPagePatch6}
+\pastebutton{ugxProblemPolSysPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{solve([x**2/a = a,a = a*x],.001)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPagePatch7}
+\begin{paste}{ugxProblemPolSysPageFull7}{ugxProblemPolSysPageEmpty7}
+\pastebutton{ugxProblemPolSysPageFull7}{\hidepaste}
+\tab{5}\spadcommand{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
+\indentrel{3}\begin{verbatim}
+   (7)
+           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+           ³   4     3     2
+           ³- a  + 2a  + 3a  + 3a + 1     - a - 1
+   [[x= -  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ,y= ÄÄÄÄÄÄÄ],
+           ³             2                   a
+          \³            a
+         ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
+         ³   4     3     2
+         ³- a  + 2a  + 3a  + 3a + 1     - a - 1
+    [x=  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ,y= ÄÄÄÄÄÄÄ]]
+         ³             2                   a
+        \³            a
+            Type: List List Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemPolSysPageEmpty7}
+\begin{paste}{ugxProblemPolSysPageEmpty7}{ugxProblemPolSysPagePatch7}
+\pastebutton{ugxProblemPolSysPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemLimitsPage}{ug08.ht}{Limits}
 <<ug08.ht>>=
@@ -38076,6 +97636,227 @@ But this limit does not.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemLimitsPagePatch1}
+\begin{paste}{ugProblemLimitsPageFull1}{ugProblemLimitsPageEmpty1}
+\pastebutton{ugProblemLimitsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\indentrel{3}\begin{verbatim}
+          1
+   (1)  - Ä
+          2
+Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty1}
+\begin{paste}{ugProblemLimitsPageEmpty1}{ugProblemLimitsPagePatch1}
+\pastebutton{ugProblemLimitsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch2}
+\begin{paste}{ugProblemLimitsPageFull2}{ugProblemLimitsPageEmpty2}
+\pastebutton{ugProblemLimitsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\indentrel{3}\begin{verbatim}
+   (2)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty2}
+\begin{paste}{ugProblemLimitsPageEmpty2}{ugProblemLimitsPagePatch2}
+\pastebutton{ugProblemLimitsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch3}
+\begin{paste}{ugProblemLimitsPageFull3}{ugProblemLimitsPageEmpty3}
+\pastebutton{ugProblemLimitsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (3)  [leftHandLimit= "failed",rightHandLimit= 0]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty3}
+\begin{paste}{ugProblemLimitsPageEmpty3}{ugProblemLimitsPagePatch3}
+\pastebutton{ugProblemLimitsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{limit(x * log(x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch4}
+\begin{paste}{ugProblemLimitsPageFull4}{ugProblemLimitsPageEmpty4}
+\pastebutton{ugProblemLimitsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\indentrel{3}\begin{verbatim}
+   (4)  [leftHandLimit= - 1,rightHandLimit= 1]
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty4}
+\begin{paste}{ugProblemLimitsPageEmpty4}{ugProblemLimitsPagePatch4}
+\pastebutton{ugProblemLimitsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch5}
+\begin{paste}{ugProblemLimitsPageFull5}{ugProblemLimitsPageEmpty5}
+\pastebutton{ugProblemLimitsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\indentrel{3}\begin{verbatim}
+                            1                    1
+   (5)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
+                           ÚÄ¿                  ÚÄ¿
+                          \³2                  \³2
+Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty5}
+\begin{paste}{ugProblemLimitsPageEmpty5}{ugProblemLimitsPagePatch5}
+\pastebutton{ugProblemLimitsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch6}
+\begin{paste}{ugProblemLimitsPageFull6}{ugProblemLimitsPageEmpty6}
+\pastebutton{ugProblemLimitsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+         ÚÄ¿
+        \³3
+   (6)  ÄÄÄÄ
+          5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty6}
+\begin{paste}{ugProblemLimitsPageEmpty6}{ugProblemLimitsPagePatch6}
+\pastebutton{ugProblemLimitsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch7}
+\begin{paste}{ugProblemLimitsPageFull7}{ugProblemLimitsPageEmpty7}
+\pastebutton{ugProblemLimitsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\indentrel{3}\begin{verbatim}
+           ÚÄ¿
+          \³3
+   (7)  - ÄÄÄÄ
+            5
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty7}
+\begin{paste}{ugProblemLimitsPageEmpty7}{ugProblemLimitsPagePatch7}
+\pastebutton{ugProblemLimitsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch8}
+\begin{paste}{ugProblemLimitsPageFull8}{ugProblemLimitsPageEmpty8}
+\pastebutton{ugProblemLimitsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\indentrel{3}\begin{verbatim}
+        a
+   (8)  Ä
+        b
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty8}
+\begin{paste}{ugProblemLimitsPageEmpty8}{ugProblemLimitsPagePatch8}
+\pastebutton{ugProblemLimitsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch9}
+\begin{paste}{ugProblemLimitsPageFull9}{ugProblemLimitsPageEmpty9}
+\pastebutton{ugProblemLimitsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty9}
+\begin{paste}{ugProblemLimitsPageEmpty9}{ugProblemLimitsPagePatch9}
+\pastebutton{ugProblemLimitsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch10}
+\begin{paste}{ugProblemLimitsPageFull10}{ugProblemLimitsPageEmpty10}
+\pastebutton{ugProblemLimitsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\indentrel{3}\begin{verbatim}
+   (10)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty10}
+\begin{paste}{ugProblemLimitsPageEmpty10}{ugProblemLimitsPagePatch10}
+\pastebutton{ugProblemLimitsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch11}
+\begin{paste}{ugProblemLimitsPageFull11}{ugProblemLimitsPageEmpty11}
+\pastebutton{ugProblemLimitsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (11)  - 1
+   Type: OnePointCompletion Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty11}
+\begin{paste}{ugProblemLimitsPageEmpty11}{ugProblemLimitsPagePatch11}
+\pastebutton{ugProblemLimitsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch12}
+\begin{paste}{ugProblemLimitsPageFull12}{ugProblemLimitsPageEmpty12}
+\pastebutton{ugProblemLimitsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\indentrel{3}\begin{verbatim}
+   (12)  0
+  Type: Union(OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty12}
+\begin{paste}{ugProblemLimitsPageEmpty12}{ugProblemLimitsPagePatch12}
+\pastebutton{ugProblemLimitsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPagePatch13}
+\begin{paste}{ugProblemLimitsPageFull13}{ugProblemLimitsPageEmpty13}
+\pastebutton{ugProblemLimitsPageFull13}{\hidepaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\indentrel{3}\begin{verbatim}
+   (13)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLimitsPageEmpty13}
+\begin{paste}{ugProblemLimitsPageEmpty13}{ugProblemLimitsPagePatch13}
+\pastebutton{ugProblemLimitsPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemLaplacePage}{ug08.ht}{Laplace Transforms}
 <<ug08.ht>>=
@@ -38131,6 +97912,160 @@ it keeps it as a formal transform in the answer.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemLaplacePagePatch1}
+\begin{paste}{ugProblemLaplacePageFull1}{ugProblemLaplacePageEmpty1}
+\pastebutton{ugProblemLaplacePageFull1}{\hidepaste}
+\tab{5}\spadcommand{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
+\indentrel{3}\begin{verbatim}
+             3
+           4a
+   (1)  ÄÄÄÄÄÄÄÄ
+         4     4
+        s  + 4a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty1}
+\begin{paste}{ugProblemLaplacePageEmpty1}{ugProblemLaplacePagePatch1}
+\pastebutton{ugProblemLaplacePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch2}
+\begin{paste}{ugProblemLaplacePageFull2}{ugProblemLaplacePageEmpty2}
+\pastebutton{ugProblemLaplacePageFull2}{\hidepaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\indentrel{3}\begin{verbatim}
+   (2)  - log(s - a) + log(s - b)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty2}
+\begin{paste}{ugProblemLaplacePageEmpty2}{ugProblemLaplacePagePatch2}
+\pastebutton{ugProblemLaplacePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch3}
+\begin{paste}{ugProblemLaplacePageFull3}{ugProblemLaplacePageEmpty3}
+\pastebutton{ugProblemLaplacePageFull3}{\hidepaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\indentrel{3}\begin{verbatim}
+             2    2
+   (3)  log(s  + a ) - 2log(s)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty3}
+\begin{paste}{ugProblemLaplacePageEmpty3}{ugProblemLaplacePagePatch3}
+\pastebutton{ugProblemLaplacePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch4}
+\begin{paste}{ugProblemLaplacePageFull4}{ugProblemLaplacePageEmpty4}
+\pastebutton{ugProblemLaplacePageFull4}{\hidepaste}
+\tab{5}\spadcommand{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
+\indentrel{3}\begin{verbatim}
+                    1
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+           2             3    2
+        b s  + 2a b s + b  + a b
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty4}
+\begin{paste}{ugProblemLaplacePageEmpty4}{ugProblemLaplacePagePatch4}
+\pastebutton{ugProblemLaplacePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch5}
+\begin{paste}{ugProblemLaplacePageFull5}{ugProblemLaplacePageEmpty5}
+\pastebutton{ugProblemLaplacePageFull5}{\hidepaste}
+\tab{5}\spadcommand{laplace((cos(a*t) - cos(b*t))/t, t, s)}
+\indentrel{3}\begin{verbatim}
+             2    2         2    2
+        log(s  + b ) - log(s  + a )
+   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                     2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty5}
+\begin{paste}{ugProblemLaplacePageEmpty5}{ugProblemLaplacePagePatch5}
+\pastebutton{ugProblemLaplacePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{laplace((cos(a*t) - cos(b*t))/t, t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch6}
+\begin{paste}{ugProblemLaplacePageFull6}{ugProblemLaplacePageEmpty6}
+\pastebutton{ugProblemLaplacePageFull6}{\hidepaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\indentrel{3}\begin{verbatim}
+          b    s + c - a
+        %e log(ÄÄÄÄÄÄÄÄÄ)
+                   c
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+              s - a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty6}
+\begin{paste}{ugProblemLaplacePageEmpty6}{ugProblemLaplacePagePatch6}
+\pastebutton{ugProblemLaplacePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch7}
+\begin{paste}{ugProblemLaplacePageFull7}{ugProblemLaplacePageEmpty7}
+\pastebutton{ugProblemLaplacePageFull7}{\hidepaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\indentrel{3}\begin{verbatim}
+               2    2
+              s  + b             d
+        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
+                  2              s
+                 b
+   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                     2s
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty7}
+\begin{paste}{ugProblemLaplacePageEmpty7}{ugProblemLaplacePagePatch7}
+\pastebutton{ugProblemLaplacePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePagePatch8}
+\begin{paste}{ugProblemLaplacePageFull8}{ugProblemLaplacePageEmpty8}
+\pastebutton{ugProblemLaplacePageFull8}{\hidepaste}
+\tab{5}\spadcommand{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
+\indentrel{3}\begin{verbatim}
+                                    2
+          4     2 2    4           t           3
+        (s  + 2a s  + a )laplace(%e  ,t,s) + 2a
+   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                      4     2 2    4
+                     s  + 2a s  + a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemLaplacePageEmpty8}
+\begin{paste}{ugProblemLaplacePageEmpty8}{ugProblemLaplacePagePatch8}
+\pastebutton{ugProblemLaplacePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemIntegrationPage}{ug08.ht}{Integration}
 \pageto{notitle}{ugxProblemSymRootAllPage}
@@ -38270,6 +98205,245 @@ The value here is, of course, incorrect if \axiom{sqrt(a)} is between
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemIntegrationPagePatch1}
+\begin{paste}{ugProblemIntegrationPageFull1}{ugProblemIntegrationPageEmpty1}
+\pastebutton{ugProblemIntegrationPageFull1}{\hidepaste}
+\tab{5}\spadcommand{integrate(cosh(a*x)*sinh(a*x), x)}
+\indentrel{3}\begin{verbatim}
+                 2            2
+        sinh(a x)  + cosh(a x)
+   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   4a
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty1}
+\begin{paste}{ugProblemIntegrationPageEmpty1}{ugProblemIntegrationPagePatch1}
+\pastebutton{ugProblemIntegrationPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{integrate(cosh(a*x)*sinh(a*x), x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch2}
+\begin{paste}{ugProblemIntegrationPageFull2}{ugProblemIntegrationPageEmpty2}
+\pastebutton{ugProblemIntegrationPageFull2}{\hidepaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a * x + b)) / x, x)}
+\indentrel{3}\begin{verbatim}
+           x      ÚÄÄÄÄÄÄÄÄ¿
+         Ú¿  log(\³b + %E a  + 1)
+   (2)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%E
+        ÀÙ            %E
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty2}
+\begin{paste}{ugProblemIntegrationPageEmpty2}{ugProblemIntegrationPagePatch2}
+\pastebutton{ugProblemIntegrationPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{integrate(log(1 + sqrt(a * x + b)) / x, x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch3}
+\begin{paste}{ugProblemIntegrationPageFull3}{ugProblemIntegrationPageEmpty3}
+\pastebutton{ugProblemIntegrationPageFull3}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2 - 2),x)}
+\indentrel{3}\begin{verbatim}
+              2      ÚÄ¿
+            (x  + 2)\³2  - 4x
+        log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                   2
+                  x  - 2
+   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   ÚÄ¿
+                 2\³2
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty3}
+\begin{paste}{ugProblemIntegrationPageEmpty3}{ugProblemIntegrationPagePatch3}
+\pastebutton{ugProblemIntegrationPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2 - 2),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch4}
+\begin{paste}{ugProblemIntegrationPageFull4}{ugProblemIntegrationPageEmpty4}
+\pastebutton{ugProblemIntegrationPageFull4}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + 2),x)}
+\indentrel{3}\begin{verbatim}
+               ÚÄ¿
+             x\³2
+        atan(ÄÄÄÄÄ)
+               2
+   (4)  ÄÄÄÄÄÄÄÄÄÄÄ
+             ÚÄ¿
+            \³2
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty4}
+\begin{paste}{ugProblemIntegrationPageEmpty4}{ugProblemIntegrationPagePatch4}
+\pastebutton{ugProblemIntegrationPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2 + 2),x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch5}
+\begin{paste}{ugProblemIntegrationPageFull5}{ugProblemIntegrationPageEmpty5}
+\pastebutton{ugProblemIntegrationPageFull5}{\hidepaste}
+\tab{5}\spadcommand{integrate(x**2 / (x**4 - a**2), x)}
+\indentrel{3}\begin{verbatim}
+   (5)
+          2      ÚÄ¿                   ÚÄ¿
+        (x  + a)\³a  - 2a x          x\³a
+    log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ) + 2atan(ÄÄÄÄÄ)
+                2                      a
+               x  - a
+   [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+                       ÚÄ¿
+                     4\³a
+          2      ÚÄÄÄ¿                   ÚÄÄÄ¿
+        (x  - a)\³- a  + 2a x          x\³- a
+    log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ) - 2atan(ÄÄÄÄÄÄÄ)
+                 2                        a
+                x  + a
+    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
+                        ÚÄÄÄ¿
+                      4\³- a
+               Type: Union(List Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty5}
+\begin{paste}{ugProblemIntegrationPageEmpty5}{ugProblemIntegrationPagePatch5}
+\pastebutton{ugProblemIntegrationPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{integrate(x**2 / (x**4 - a**2), x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch6}
+\begin{paste}{ugProblemIntegrationPageFull6}{ugProblemIntegrationPageEmpty6}
+\pastebutton{ugProblemIntegrationPageFull6}{\hidepaste}
+\tab{5}\spadcommand{complexIntegrate(x**2 / (x**4 - a**2), x)}
+\indentrel{3}\begin{verbatim}
+   (6)
+                  ÚÄÄÄÄ¿                      ÚÄÄ¿
+        ÚÄÄ¿    x\³- 4a  + 2a     ÚÄÄÄÄ¿    x\³4a  + 2a
+       \³4a log(ÄÄÄÄÄÄÄÄÄÄÄÄÄ) - \³- 4a log(ÄÄÄÄÄÄÄÄÄÄÄ)
+                    ÚÄÄÄÄ¿                      ÚÄÄ¿
+                   \³- 4a                      \³4a
+     + 
+                    ÚÄÄ¿                    ÚÄÄÄÄ¿
+        ÚÄÄÄÄ¿    x\³4a  - 2a     ÚÄÄ¿    x\³- 4a  - 2a
+       \³- 4a log(ÄÄÄÄÄÄÄÄÄÄÄ) - \³4a log(ÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                      ÚÄÄ¿                    ÚÄÄÄÄ¿
+                     \³4a                    \³- 4a
+  /
+       ÚÄÄÄÄ¿ ÚÄÄ¿
+     2\³- 4a \³4a
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty6}
+\begin{paste}{ugProblemIntegrationPageEmpty6}{ugProblemIntegrationPagePatch6}
+\pastebutton{ugProblemIntegrationPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{complexIntegrate(x**2 / (x**4 - a**2), x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch7}
+\begin{paste}{ugProblemIntegrationPageFull7}{ugProblemIntegrationPageEmpty7}
+\pastebutton{ugProblemIntegrationPageFull7}{\hidepaste}
+\tab{5}\spadcommand{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
+\indentrel{3}\begin{verbatim}
+           x      ÚÄÄÄÄÄÄÄÄ¿
+         Ú¿  log(\³b + %E a  + 1)
+   (7)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%E
+        ÀÙ            %E
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty7}
+\begin{paste}{ugProblemIntegrationPageEmpty7}{ugProblemIntegrationPagePatch7}
+\pastebutton{ugProblemIntegrationPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch8}
+\begin{paste}{ugProblemIntegrationPageFull8}{ugProblemIntegrationPageEmpty8}
+\pastebutton{ugProblemIntegrationPageFull8}{\hidepaste}
+\tab{5}\spadcommand{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
+\indentrel{3}\begin{verbatim}
+                                               1
+        2atan(8) + 2atan(5) + 2atan(2) + 2atan(Ä) - %pi
+                                               2
+   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                               2
+Type: Union(f1: OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty8}
+\begin{paste}{ugProblemIntegrationPageEmpty8}{ugProblemIntegrationPagePatch8}
+\pastebutton{ugProblemIntegrationPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch9}
+\begin{paste}{ugProblemIntegrationPageFull9}{ugProblemIntegrationPageEmpty9}
+\pastebutton{ugProblemIntegrationPageFull9}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2)}
+\indentrel{3}\begin{verbatim}
+   (9)  potentialPole
+                   Type: Union(pole: potentialPole,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty9}
+\begin{paste}{ugProblemIntegrationPageEmpty9}{ugProblemIntegrationPagePatch9}
+\pastebutton{ugProblemIntegrationPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPagePatch10}
+\begin{paste}{ugProblemIntegrationPageFull10}{ugProblemIntegrationPageEmpty10}
+\pastebutton{ugProblemIntegrationPageFull10}{\hidepaste}
+\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2, "noPole")}
+\indentrel{3}\begin{verbatim}
+   (10)
+   [
+                    2       ÚÄ¿    3     2
+               (- 4a  - 4a)\³a  + a  + 6a  + a
+         - log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                          2
+                         a  - 2a + 1
+       + 
+                  2        ÚÄ¿    3      2
+             (- 8a  - 32a)\³a  + a  + 24a  + 16a
+         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                          2
+                         a  - 8a + 16
+    /
+         ÚÄ¿
+       4\³a
+     ,
+             ÚÄÄÄ¿          ÚÄÄÄ¿
+           2\³- a          \³- a
+    - atan(ÄÄÄÄÄÄÄ) + atan(ÄÄÄÄÄÄ)
+              a               a
+    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
+                 ÚÄÄÄ¿
+                \³- a
+Type: Union(f2: List OrderedCompletion Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIntegrationPageEmpty10}
+\begin{paste}{ugProblemIntegrationPageEmpty10}{ugProblemIntegrationPagePatch10}
+\pastebutton{ugProblemIntegrationPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2, "noPole")}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemSeriesPage}{ug08.ht}{Working with Power Series}
 \pageto{notitle}{ugxProblemDEQSeriesPage}
@@ -38433,6 +98607,211 @@ This is the Taylor expansion of \axiom{exp(w)} at \axiom{w = 0}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesCreatePagePatch1}
+\begin{paste}{ugxProblemSeriesCreatePageFull1}{ugxProblemSeriesCreatePageEmpty1}
+\pastebutton{ugxProblemSeriesCreatePageFull1}{\hidepaste}
+\tab{5}\spadcommand{x := series 'x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty1}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty1}{ugxProblemSeriesCreatePagePatch1}
+\pastebutton{ugxProblemSeriesCreatePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x := series 'x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch2}
+\begin{paste}{ugxProblemSeriesCreatePageFull2}{ugxProblemSeriesCreatePageEmpty2}
+\pastebutton{ugxProblemSeriesCreatePageFull2}{\hidepaste}
+\tab{5}\spadcommand{1/(1 - x - x**2)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (2)
+               2     3     4     5      6      7      8
+     1 + x + 2x  + 3x  + 5x  + 8x  + 13x  + 21x  + 34x
+   + 
+        9      10      11
+     55x  + 89x   + O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty2}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty2}{ugxProblemSeriesCreatePagePatch2}
+\pastebutton{ugxProblemSeriesCreatePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{1/(1 - x - x**2)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch3}
+\begin{paste}{ugxProblemSeriesCreatePageFull3}{ugxProblemSeriesCreatePageEmpty3}
+\pastebutton{ugxProblemSeriesCreatePageFull3}{\hidepaste}
+\tab{5}\spadcommand{sin(x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (3)
+         1  3    1   5     1   7      1    9
+     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+         6      120      5040      362880
+   + 
+           1     11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty3}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty3}{ugxProblemSeriesCreatePagePatch3}
+\pastebutton{ugxProblemSeriesCreatePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sin(x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch4}
+\begin{paste}{ugxProblemSeriesCreatePageFull4}{ugxProblemSeriesCreatePageEmpty4}
+\pastebutton{ugxProblemSeriesCreatePageFull4}{\hidepaste}
+\tab{5}\spadcommand{sin(1 + x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (4)
+                        sin(1)  2   cos(1)  3   sin(1)  4
+     sin(1) + cos(1)x - ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
+                           2           6          24
+   + 
+     cos(1)  5   sin(1)  6   cos(1)  7   sin(1)  8
+     ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
+       120         720        5040        40320
+   + 
+     cos(1)  9    sin(1)  10      11
+     ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄÄ x   + O(x  )
+     362880      3628800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty4}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty4}{ugxProblemSeriesCreatePagePatch4}
+\pastebutton{ugxProblemSeriesCreatePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sin(1 + x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch5}
+\begin{paste}{ugxProblemSeriesCreatePageFull5}{ugxProblemSeriesCreatePageEmpty5}
+\pastebutton{ugxProblemSeriesCreatePageFull5}{\hidepaste}
+\tab{5}\spadcommand{sin(a * x)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (5)
+            3        5        7          9
+           a   3    a   5    a    7     a     9
+     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+            6      120      5040      362880
+   + 
+           11
+          a      11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty5}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty5}{ugxProblemSeriesCreatePagePatch5}
+\pastebutton{ugxProblemSeriesCreatePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{sin(a * x)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch6}
+\begin{paste}{ugxProblemSeriesCreatePageFull6}{ugxProblemSeriesCreatePageEmpty6}
+\pastebutton{ugxProblemSeriesCreatePageFull6}{\hidepaste}
+\tab{5}\spadcommand{series(1/log(y),y = 1)}
+\indentrel{3}\begin{verbatim}
+   (6)
+            - 1   1    1            1        2
+     (y - 1)    + Ä - ÄÄ (y - 1) + ÄÄ (y - 1)
+                  2   12           24
+   + 
+        19        3    3         4    863         5
+     - ÄÄÄ (y - 1)  + ÄÄÄ (y - 1)  - ÄÄÄÄÄ (y - 1)
+       720            160            60480
+   + 
+      275         6    33953         7     8183         8
+     ÄÄÄÄÄ (y - 1)  - ÄÄÄÄÄÄÄ (y - 1)  + ÄÄÄÄÄÄÄ (y - 1)
+     24192            3628800            1036800
+   + 
+        3250433         9            10
+     - ÄÄÄÄÄÄÄÄÄ (y - 1)  + O((y - 1)  )
+       479001600
+  Type: UnivariatePuiseuxSeries(Expression Integer,y,1)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty6}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty6}{ugxProblemSeriesCreatePagePatch6}
+\pastebutton{ugxProblemSeriesCreatePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{series(1/log(y),y = 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch7}
+\begin{paste}{ugxProblemSeriesCreatePageFull7}{ugxProblemSeriesCreatePageEmpty7}
+\pastebutton{ugxProblemSeriesCreatePageFull7}{\hidepaste}
+\tab{5}\spadcommand{y : UTS(FLOAT,'z,0) := exp(z)\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (7)
+                    2                            3
+     1.0 + z + 0.5 z  + 0.1666666666 6666666667 z
+   + 
+                                4
+     0.0416666666 6666666666 7 z
+   + 
+                                 5
+     0.0083333333 3333333333 34 z
+   + 
+                                 6
+     0.0013888888 8888888888 89 z
+   + 
+                                 7
+     0.0001984126 9841269841 27 z
+   + 
+                                   8
+     0.0000248015 8730158730 1587 z
+   + 
+                                    9
+     0.0000027557 3192239858 90653 z
+   + 
+                                   10      11
+     0.2755731922 3985890653 E -6 z   + O(z  )
+              Type: UnivariateTaylorSeries(Float,z,0.0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty7}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty7}{ugxProblemSeriesCreatePagePatch7}
+\pastebutton{ugxProblemSeriesCreatePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{y : UTS(FLOAT,'z,0) := exp(z)\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePagePatch8}
+\begin{paste}{ugxProblemSeriesCreatePageFull8}{ugxProblemSeriesCreatePageEmpty8}
+\pastebutton{ugxProblemSeriesCreatePageFull8}{\hidepaste}
+\tab{5}\spadcommand{series(1/factorial(n),n,w = 0)}
+\indentrel{3}\begin{verbatim}
+   (8)
+             1  2   1  3    1  4    1   5    1   6
+     1 + w + Ä w  + Ä w  + ÄÄ w  + ÄÄÄ w  + ÄÄÄ w
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ w  + ÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄÄ w   + O(w  )
+   5040      40320      362880      3628800
+  Type: UnivariatePuiseuxSeries(Expression Integer,w,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCreatePageEmpty8}
+\begin{paste}{ugxProblemSeriesCreatePageEmpty8}{ugxProblemSeriesCreatePagePatch8}
+\pastebutton{ugxProblemSeriesCreatePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{series(1/factorial(n),n,w = 0)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesCoefficientsPage}{ug08.ht}
 {Coefficients of Power Series}
@@ -38483,6 +98862,108 @@ have all been computed.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesCoefficientsPagePatch1}
+\begin{paste}{ugxProblemSeriesCoefficientsPageFull1}{ugxProblemSeriesCoefficientsPageEmpty1}
+\pastebutton{ugxProblemSeriesCoefficientsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x := series(x)\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty1}
+\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty1}{ugxProblemSeriesCoefficientsPagePatch1}
+\pastebutton{ugxProblemSeriesCoefficientsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x := series(x)\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPagePatch2}
+\begin{paste}{ugxProblemSeriesCoefficientsPageFull2}{ugxProblemSeriesCoefficientsPageEmpty2}
+\pastebutton{ugxProblemSeriesCoefficientsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{y := exp(x) * sin(x)\free{x }\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (2)
+          2   1  3    1  5    1  6    1   7     1    9
+     x + x  + Ä x  - ÄÄ x  - ÄÄ x  - ÄÄÄ x  + ÄÄÄÄÄ x
+              3      30      90      630      22680
+   + 
+        1    10      1     11      12
+     ÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄ x   + O(x  )
+     113400       1247400
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty2}
+\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty2}{ugxProblemSeriesCoefficientsPagePatch2}
+\pastebutton{ugxProblemSeriesCoefficientsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{y := exp(x) * sin(x)\free{x }\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPagePatch3}
+\begin{paste}{ugxProblemSeriesCoefficientsPageFull3}{ugxProblemSeriesCoefficientsPageEmpty3}
+\pastebutton{ugxProblemSeriesCoefficientsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{coefficient(y,6)\free{y }}
+\indentrel{3}\begin{verbatim}
+           1
+   (3)  - ÄÄ
+          90
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty3}
+\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty3}{ugxProblemSeriesCoefficientsPagePatch3}
+\pastebutton{ugxProblemSeriesCoefficientsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{coefficient(y,6)\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPagePatch4}
+\begin{paste}{ugxProblemSeriesCoefficientsPageFull4}{ugxProblemSeriesCoefficientsPageEmpty4}
+\pastebutton{ugxProblemSeriesCoefficientsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{coefficient(y,15)\free{y }\bound{y15 }}
+\indentrel{3}\begin{verbatim}
+               1
+   (4)  - ÄÄÄÄÄÄÄÄÄÄÄ
+          10216206000
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty4}
+\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty4}{ugxProblemSeriesCoefficientsPagePatch4}
+\pastebutton{ugxProblemSeriesCoefficientsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{coefficient(y,15)\free{y }\bound{y15 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPagePatch5}
+\begin{paste}{ugxProblemSeriesCoefficientsPageFull5}{ugxProblemSeriesCoefficientsPageEmpty5}
+\pastebutton{ugxProblemSeriesCoefficientsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{y\free{y15 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+          2   1  3    1  5    1  6    1   7     1    9
+     x + x  + Ä x  - ÄÄ x  - ÄÄ x  - ÄÄÄ x  + ÄÄÄÄÄ x
+              3      30      90      630      22680
+   + 
+        1    10      1     11       1     13
+     ÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄ x
+     113400       1247400       97297200
+   + 
+           1      14        1       15      16
+     - ÄÄÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄÄÄÄ x   + O(x  )
+       681080400       10216206000
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty5}
+\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty5}{ugxProblemSeriesCoefficientsPagePatch5}
+\pastebutton{ugxProblemSeriesCoefficientsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{y\free{y15 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesArithmeticPage}{ug08.ht}
 {Power Series Arithmetic}
@@ -38530,6 +99011,111 @@ are two power series.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesArithmeticPagePatch1}
+\begin{paste}{ugxProblemSeriesArithmeticPageFull1}{ugxProblemSeriesArithmeticPageEmpty1}
+\pastebutton{ugxProblemSeriesArithmeticPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x := series x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPageEmpty1}
+\begin{paste}{ugxProblemSeriesArithmeticPageEmpty1}{ugxProblemSeriesArithmeticPagePatch1}
+\pastebutton{ugxProblemSeriesArithmeticPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x := series x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPagePatch2}
+\begin{paste}{ugxProblemSeriesArithmeticPageFull2}{ugxProblemSeriesArithmeticPageEmpty2}
+\pastebutton{ugxProblemSeriesArithmeticPageFull2}{\hidepaste}
+\tab{5}\spadcommand{(3 + x) / (1 + 7*x)}
+\indentrel{3}\begin{verbatim}
+   (2)
+                   2       3        4         5          6
+     3 - 20x + 140x  - 980x  + 6860x  - 48020x  + 336140x
+   + 
+               7            8             9             10
+     - 2352980x  + 16470860x  - 115296020x  + 807072140x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPageEmpty2}
+\begin{paste}{ugxProblemSeriesArithmeticPageEmpty2}{ugxProblemSeriesArithmeticPagePatch2}
+\pastebutton{ugxProblemSeriesArithmeticPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(3 + x) / (1 + 7*x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPagePatch3}
+\begin{paste}{ugxProblemSeriesArithmeticPageFull3}{ugxProblemSeriesArithmeticPageEmpty3}
+\pastebutton{ugxProblemSeriesArithmeticPageFull3}{\hidepaste}
+\tab{5}\spadcommand{base := 1 / (1 - x)\free{x }\bound{base }}
+\indentrel{3}\begin{verbatim}
+   (3)
+              2    3    4    5    6    7    8    9    10
+     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
+   + 
+        11
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPageEmpty3}
+\begin{paste}{ugxProblemSeriesArithmeticPageEmpty3}{ugxProblemSeriesArithmeticPagePatch3}
+\pastebutton{ugxProblemSeriesArithmeticPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{base := 1 / (1 - x)\free{x }\bound{base }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPagePatch4}
+\begin{paste}{ugxProblemSeriesArithmeticPageFull4}{ugxProblemSeriesArithmeticPageEmpty4}
+\pastebutton{ugxProblemSeriesArithmeticPageFull4}{\hidepaste}
+\tab{5}\spadcommand{expon := x * base\free{x base }\bound{expon }}
+\indentrel{3}\begin{verbatim}
+   (4)
+          2    3    4    5    6    7    8    9    10    11
+     x + x  + x  + x  + x  + x  + x  + x  + x  + x   + x
+   + 
+        12
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPageEmpty4}
+\begin{paste}{ugxProblemSeriesArithmeticPageEmpty4}{ugxProblemSeriesArithmeticPagePatch4}
+\pastebutton{ugxProblemSeriesArithmeticPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{expon := x * base\free{x base }\bound{expon }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPagePatch5}
+\begin{paste}{ugxProblemSeriesArithmeticPageFull5}{ugxProblemSeriesArithmeticPageEmpty5}
+\pastebutton{ugxProblemSeriesArithmeticPageFull5}{\hidepaste}
+\tab{5}\spadcommand{base ** expon\free{base expon }}
+\indentrel{3}\begin{verbatim}
+   (5)
+          2   3  3   7  4   43  5   649  6   241  7
+     1 + x  + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+              2      3      12      120       30
+   + 
+     3706  8   85763  9   245339  10      11
+     ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x   + O(x  )
+      315       5040       10080
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesArithmeticPageEmpty5}
+\begin{paste}{ugxProblemSeriesArithmeticPageEmpty5}{ugxProblemSeriesArithmeticPagePatch5}
+\pastebutton{ugxProblemSeriesArithmeticPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{base ** expon\free{base expon }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesFunctionsPage}{ug08.ht}
 {Functions on Power Series}
@@ -38667,6 +99253,267 @@ are using the variable \axiom{w} instead of \axiom{z}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch1}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull1}{ugxProblemSeriesFunctionsPageEmpty1}
+\pastebutton{ugxProblemSeriesFunctionsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{x := series 'x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (1)  x
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty1}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty1}{ugxProblemSeriesFunctionsPagePatch1}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{x := series 'x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch2}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull2}{ugxProblemSeriesFunctionsPageEmpty2}
+\pastebutton{ugxProblemSeriesFunctionsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{rat := x**2 / (1 - 6*x + x**2)\free{x }\bound{rat }}
+\indentrel{3}\begin{verbatim}
+   (2)
+      2     3      4       5        6        7         8
+     x  + 6x  + 35x  + 204x  + 1189x  + 6930x  + 40391x
+   + 
+            9           10           11            12
+     235416x  + 1372105x   + 7997214x   + 46611179x
+   + 
+        13
+     O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty2}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty2}{ugxProblemSeriesFunctionsPagePatch2}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{rat := x**2 / (1 - 6*x + x**2)\free{x }\bound{rat }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch3}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull3}{ugxProblemSeriesFunctionsPageEmpty3}
+\pastebutton{ugxProblemSeriesFunctionsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{sin(rat)\free{rat }}
+\indentrel{3}\begin{verbatim}
+   (3)
+      2     3      4       5   7133  6        7   80711  8
+     x  + 6x  + 35x  + 204x  + ÄÄÄÄ x  + 6927x  + ÄÄÄÄÄ x
+                                 6                  2
+   + 
+            9   164285281  10   31888513  11
+     235068x  + ÄÄÄÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄÄ x
+                   120              4
+   + 
+     371324777  12      13
+     ÄÄÄÄÄÄÄÄÄ x   + O(x  )
+         8
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty3}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty3}{ugxProblemSeriesFunctionsPagePatch3}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{sin(rat)\free{rat }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch4}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull4}{ugxProblemSeriesFunctionsPageEmpty4}
+\pastebutton{ugxProblemSeriesFunctionsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{y : UTS(FRAC INT,y,0) := y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (4)  y
+     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty4}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty4}{ugxProblemSeriesFunctionsPagePatch4}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{y : UTS(FRAC INT,y,0) := y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch5}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull5}{ugxProblemSeriesFunctionsPageEmpty5}
+\pastebutton{ugxProblemSeriesFunctionsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{exp(y)\free{y }}
+\indentrel{3}\begin{verbatim}
+   (5)
+             1  2   1  3    1  4    1   5    1   6
+     1 + y + Ä y  + Ä y  + ÄÄ y  + ÄÄÄ y  + ÄÄÄ y
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ y  + ÄÄÄÄÄ y  + ÄÄÄÄÄÄ y  + ÄÄÄÄÄÄÄ y   + O(y  )
+   5040      40320      362880      3628800
+     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty5}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty5}{ugxProblemSeriesFunctionsPagePatch5}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{exp(y)\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch6}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull6}{ugxProblemSeriesFunctionsPageEmpty6}
+\pastebutton{ugxProblemSeriesFunctionsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{tan(y**2)\free{y }}
+\indentrel{3}\begin{verbatim}
+         2   1  6    2  10      11
+   (6)  y  + Ä y  + ÄÄ y   + O(y  )
+             3      15
+     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty6}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty6}{ugxProblemSeriesFunctionsPagePatch6}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{tan(y**2)\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch7}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull7}{ugxProblemSeriesFunctionsPageEmpty7}
+\pastebutton{ugxProblemSeriesFunctionsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{cos(y + y**5)\free{y }}
+\indentrel{3}\begin{verbatim}
+   (7)
+         1  2    1  4   721  6    6721  8   1844641  10
+     1 - Ä y  + ÄÄ y  - ÄÄÄ y  + ÄÄÄÄÄ y  - ÄÄÄÄÄÄÄ y
+         2      24      720      40320      3628800
+   + 
+        11
+     O(y  )
+     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty7}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty7}{ugxProblemSeriesFunctionsPagePatch7}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{cos(y + y**5)\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch8}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull8}{ugxProblemSeriesFunctionsPageEmpty8}
+\pastebutton{ugxProblemSeriesFunctionsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{log(1 + sin(y))\free{y }}
+\indentrel{3}\begin{verbatim}
+   (8)
+         1  2   1  3    1  4    1  5    1  6    61   7
+     y - Ä y  + Ä y  - ÄÄ y  + ÄÄ y  - ÄÄ y  + ÄÄÄÄ y
+         2      6      12      24      45      5040
+   + 
+        17   8    277   9     31   10      11
+     - ÄÄÄÄ y  + ÄÄÄÄÄ y  - ÄÄÄÄÄ y   + O(y  )
+       2520      72576      14175
+     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty8}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty8}{ugxProblemSeriesFunctionsPagePatch8}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{log(1 + sin(y))\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch9}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull9}{ugxProblemSeriesFunctionsPageEmpty9}
+\pastebutton{ugxProblemSeriesFunctionsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{z : UTS(EXPR INT,z,0) := z\bound{z }}
+\indentrel{3}\begin{verbatim}
+   (9)  z
+   Type: UnivariateTaylorSeries(Expression Integer,z,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty9}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty9}{ugxProblemSeriesFunctionsPagePatch9}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{z : UTS(EXPR INT,z,0) := z\bound{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch10}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull10}{ugxProblemSeriesFunctionsPageEmpty10}
+\pastebutton{ugxProblemSeriesFunctionsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{exp(2 + tan(z))\free{z }}
+\indentrel{3}\begin{verbatim}
+   (10)
+                    2        2         2          2
+       2     2    %e   2   %e   3   3%e   4   37%e   5
+     %e  + %e z + ÄÄÄ z  + ÄÄÄ z  + ÄÄÄÄ z  + ÄÄÄÄÄ z
+                   2        2         8        120
+   + 
+         2           2           2             2
+     59%e   6   137%e   7   871%e   8   41641%e   9
+     ÄÄÄÄÄ z  + ÄÄÄÄÄÄ z  + ÄÄÄÄÄÄ z  + ÄÄÄÄÄÄÄÄ z
+      240         720        5760        362880
+   + 
+             2
+     325249%e   10      11
+     ÄÄÄÄÄÄÄÄÄ z   + O(z  )
+      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,z,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty10}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty10}{ugxProblemSeriesFunctionsPagePatch10}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{exp(2 + tan(z))\free{z }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch11}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull11}{ugxProblemSeriesFunctionsPageEmpty11}
+\pastebutton{ugxProblemSeriesFunctionsPageFull11}{\hidepaste}
+\tab{5}\spadcommand{w := taylor 'w\bound{w }}
+\indentrel{3}\begin{verbatim}
+   (11)  w
+   Type: UnivariateTaylorSeries(Expression Integer,w,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty11}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty11}{ugxProblemSeriesFunctionsPagePatch11}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{w := taylor 'w\bound{w }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPagePatch12}
+\begin{paste}{ugxProblemSeriesFunctionsPageFull12}{ugxProblemSeriesFunctionsPageEmpty12}
+\pastebutton{ugxProblemSeriesFunctionsPageFull12}{\hidepaste}
+\tab{5}\spadcommand{exp(2 + tan(w))\free{w }}
+\indentrel{3}\begin{verbatim}
+   (12)
+                    2        2         2          2
+       2     2    %e   2   %e   3   3%e   4   37%e   5
+     %e  + %e w + ÄÄÄ w  + ÄÄÄ w  + ÄÄÄÄ w  + ÄÄÄÄÄ w
+                   2        2         8        120
+   + 
+         2           2           2             2
+     59%e   6   137%e   7   871%e   8   41641%e   9
+     ÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄÄÄ w
+      240         720        5760        362880
+   + 
+             2
+     325249%e   10      11
+     ÄÄÄÄÄÄÄÄÄ w   + O(w  )
+      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,w,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFunctionsPageEmpty12}
+\begin{paste}{ugxProblemSeriesFunctionsPageEmpty12}{ugxProblemSeriesFunctionsPagePatch12}
+\pastebutton{ugxProblemSeriesFunctionsPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{exp(2 + tan(w))\free{w }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesConversionsPage}{ug08.ht}
 {Converting to Power Series}
@@ -38790,6 +99637,279 @@ exclusively.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesConversionsPagePatch1}
+\begin{paste}{ugxProblemSeriesConversionsPageFull1}{ugxProblemSeriesConversionsPageEmpty1}
+\pastebutton{ugxProblemSeriesConversionsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{taylor(sin(x),x = 0)}
+\indentrel{3}\begin{verbatim}
+            1  3    1   5     1   7      1    9      11
+   (1)  x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x  + O(x  )
+            6      120      5040      362880
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty1}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty1}{ugxProblemSeriesConversionsPagePatch1}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{taylor(sin(x),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch2}
+\begin{paste}{ugxProblemSeriesConversionsPageFull2}{ugxProblemSeriesConversionsPageEmpty2}
+\pastebutton{ugxProblemSeriesConversionsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{taylor(sin(x),x = \%pi/6)}
+\indentrel{3}\begin{verbatim}
+   (2)
+          ÚÄ¿                             ÚÄ¿
+     1   \³3       %pi    1      %pi 2   \³3       %pi 3
+     Ä + ÄÄÄÄ (x - ÄÄÄ) - Ä (x - ÄÄÄ)  - ÄÄÄÄ (x - ÄÄÄ)
+     2     2        6     4       6       12        6
+   + 
+                      ÚÄ¿
+      1      %pi 4   \³3       %pi 5     1       %pi 6
+     ÄÄ (x - ÄÄÄ)  + ÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄ (x - ÄÄÄ)
+     48       6       240       6      1440       6
+   + 
+         ÚÄ¿
+        \³3       %pi 7     1        %pi 8
+     - ÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄ (x - ÄÄÄ)
+       10080       6      80640       6
+   + 
+       ÚÄ¿
+      \³3        %pi 9      1         %pi 10
+     ÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄ (x - ÄÄÄ)
+     725760       6      7257600       6
+   + 
+            %pi 11
+     O((x - ÄÄÄ)  )
+             6
+Type: UnivariateTaylorSeries(Expression Integer,x,pi/6)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty2}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty2}{ugxProblemSeriesConversionsPagePatch2}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{taylor(sin(x),x = \%pi/6)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch3}
+\begin{paste}{ugxProblemSeriesConversionsPageFull3}{ugxProblemSeriesConversionsPageEmpty3}
+\pastebutton{ugxProblemSeriesConversionsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{taylor(tan(x*y),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (3)
+          3        5         7         9
+         y   3   2y   5   17y   7   62y   9      11
+   y x + ÄÄ x  + ÄÄÄ x  + ÄÄÄÄ x  + ÄÄÄÄ x  + O(x  )
+          3       15       315      2835
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty3}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty3}{ugxProblemSeriesConversionsPagePatch3}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{taylor(tan(x*y),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch4}
+\begin{paste}{ugxProblemSeriesConversionsPageFull4}{ugxProblemSeriesConversionsPageEmpty4}
+\pastebutton{ugxProblemSeriesConversionsPageFull4}{\hidepaste}
+\tab{5}\spadcommand{taylor(tan(x*y),y = 0)}
+\indentrel{3}\begin{verbatim}
+   (4)
+          3        5         7         9
+         x   3   2x   5   17x   7   62x   9      11
+   x y + ÄÄ y  + ÄÄÄ y  + ÄÄÄÄ y  + ÄÄÄÄ y  + O(y  )
+          3       15       315      2835
+   Type: UnivariateTaylorSeries(Expression Integer,y,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty4}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty4}{ugxProblemSeriesConversionsPagePatch4}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{taylor(tan(x*y),y = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch5}
+\begin{paste}{ugxProblemSeriesConversionsPageFull5}{ugxProblemSeriesConversionsPageEmpty5}
+\pastebutton{ugxProblemSeriesConversionsPageFull5}{\hidepaste}
+\tab{5}\spadcommand{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0)\bound{bern }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                      2                 3     2
+         2x - 1     6x  - 6x + 1  2   2x  - 3x  + x  3
+     1 + ÄÄÄÄÄÄ t + ÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+            2            12                 12
+   + 
+        4      3      2            5      4      3
+     30x  - 60x  + 30x  - 1  4   6x  - 15x  + 10x  - x  5
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+               720                        720
+   + 
+        6       5       4      2
+     42x  - 126x  + 105x  - 21x  + 1  6
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+                  30240
+   + 
+       7      6      5     3
+     6x  - 21x  + 21x  - 7x  + x  7
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+                30240
+   + 
+        8       7       6      4      2
+     30x  - 120x  + 140x  - 70x  + 20x  - 1  8
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+                     1209600
+   + 
+        9      8      7      5      3
+     10x  - 45x  + 60x  - 42x  + 20x  - 3x  9
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+                    3628800
+   + 
+        10       9       8       6       4      2
+     66x   - 330x  + 495x  - 462x  + 330x  - 99x  + 5  10
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+                         239500800
+   + 
+        11
+     O(t  )
+   Type: UnivariateTaylorSeries(Expression Integer,t,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty5}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty5}{ugxProblemSeriesConversionsPagePatch5}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0)\bound{bern }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch6}
+\begin{paste}{ugxProblemSeriesConversionsPageFull6}{ugxProblemSeriesConversionsPageEmpty6}
+\pastebutton{ugxProblemSeriesConversionsPageFull6}{\hidepaste}
+\tab{5}\spadcommand{factorial(6) * coefficient(bern,6)\free{bern }}
+\indentrel{3}\begin{verbatim}
+           6       5       4      2
+        42x  - 126x  + 105x  - 21x  + 1
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                       42
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty6}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty6}{ugxProblemSeriesConversionsPagePatch6}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{factorial(6) * coefficient(bern,6)\free{bern }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch7}
+\begin{paste}{ugxProblemSeriesConversionsPageFull7}{ugxProblemSeriesConversionsPageEmpty7}
+\pastebutton{ugxProblemSeriesConversionsPageFull7}{\hidepaste}
+\tab{5}\spadcommand{bernoulliB(6,x)}
+\indentrel{3}\begin{verbatim}
+         6     5   5  4   1  2    1
+   (7)  x  - 3x  + Ä x  - Ä x  + ÄÄ
+                   2      2      42
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty7}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty7}{ugxProblemSeriesConversionsPagePatch7}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{bernoulliB(6,x)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch8}
+\begin{paste}{ugxProblemSeriesConversionsPageFull8}{ugxProblemSeriesConversionsPageEmpty8}
+\pastebutton{ugxProblemSeriesConversionsPageFull8}{\hidepaste}
+\tab{5}\spadcommand{laurent(x/log(x),x = 1)}
+\indentrel{3}\begin{verbatim}
+   (8)
+            - 1   3    5            1        2
+     (x - 1)    + Ä + ÄÄ (x - 1) - ÄÄ (x - 1)
+                  2   12           24
+   + 
+      11        3    11         4    271         5
+     ÄÄÄ (x - 1)  - ÄÄÄÄ (x - 1)  + ÄÄÄÄÄ (x - 1)
+     720            1440            60480
+   + 
+        13         6     7297         7     425         8
+     - ÄÄÄÄ (x - 1)  + ÄÄÄÄÄÄÄ (x - 1)  - ÄÄÄÄÄÄ (x - 1)
+       4480            3628800            290304
+   + 
+       530113         9            10
+     ÄÄÄÄÄÄÄÄÄ (x - 1)  + O((x - 1)  )
+     479001600
+  Type: UnivariateLaurentSeries(Expression Integer,x,1)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty8}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty8}{ugxProblemSeriesConversionsPagePatch8}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{laurent(x/log(x),x = 1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch9}
+\begin{paste}{ugxProblemSeriesConversionsPageFull9}{ugxProblemSeriesConversionsPageEmpty9}
+\pastebutton{ugxProblemSeriesConversionsPageFull9}{\hidepaste}
+\tab{5}\spadcommand{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
+\indentrel{3}\begin{verbatim}
+   (9)
+                 1                3                 7
+               - Ä                Ä                 Ä
+          3%pi   2    1      3%pi 2    1       3%pi 2
+     (x - ÄÄÄÄ)    + ÄÄ (x - ÄÄÄÄ)  + ÄÄÄ (x - ÄÄÄÄ)
+            2        12        2      160        2
+   + 
+            3%pi 5
+     O((x - ÄÄÄÄ) )
+              2
+Type: UnivariatePuiseuxSeries(Expression Integer,x,(3*pi)/2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty9}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty9}{ugxProblemSeriesConversionsPagePatch9}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPagePatch10}
+\begin{paste}{ugxProblemSeriesConversionsPageFull10}{ugxProblemSeriesConversionsPageEmpty10}
+\pastebutton{ugxProblemSeriesConversionsPageFull10}{\hidepaste}
+\tab{5}\spadcommand{series(x**x,x=0)}
+\indentrel{3}\begin{verbatim}
+   (10)
+                         2            3            4
+                   log(x)   2   log(x)   3   log(x)   4
+     1 + log(x)x + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x
+                      2            6            24
+   + 
+           5            6            7            8
+     log(x)   5   log(x)   6   log(x)   7   log(x)   8
+     ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x
+       120          720          5040        40320
+   + 
+           9            10
+     log(x)   9   log(x)    10      11
+     ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x   + O(x  )
+      362880       3628800
+Type: GeneralUnivariatePowerSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesConversionsPageEmpty10}
+\begin{paste}{ugxProblemSeriesConversionsPageEmpty10}{ugxProblemSeriesConversionsPagePatch10}
+\pastebutton{ugxProblemSeriesConversionsPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{series(x**x,x=0)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesFormulaPage}{ug08.ht}
 {Power Series from Formulas}
@@ -38941,6 +100061,188 @@ You can't go wrong using \axiomFun{series}, though.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesFormulaPagePatch1}
+\begin{paste}{ugxProblemSeriesFormulaPageFull1}{ugxProblemSeriesFormulaPageEmpty1}
+\pastebutton{ugxProblemSeriesFormulaPageFull1}{\hidepaste}
+\tab{5}\spadcommand{series(n +-> 1/factorial(n),x = 0)}
+\indentrel{3}\begin{verbatim}
+   (1)
+             1  2   1  3    1  4    1   5    1   6
+     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
+   5040      40320      362880      3628800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty1}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty1}{ugxProblemSeriesFormulaPagePatch1}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{series(n +-> 1/factorial(n),x = 0)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch2}
+\begin{paste}{ugxProblemSeriesFormulaPageFull2}{ugxProblemSeriesFormulaPageEmpty2}
+\pastebutton{ugxProblemSeriesFormulaPageFull2}{\hidepaste}
+\tab{5}\spadcommand{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
+\indentrel{3}\begin{verbatim}
+   (2)
+               1        2   1        3   1        4
+     (x - 1) - Ä (x - 1)  + Ä (x - 1)  - Ä (x - 1)
+               2            3            4
+   + 
+     1        5   1        6   1        7   1        8
+     Ä (x - 1)  - Ä (x - 1)  + Ä (x - 1)  - Ä (x - 1)
+     5            6            7            8
+   + 
+   1        9    1        10    1        11            12
+   Ä (x - 1)  - ÄÄ (x - 1)   + ÄÄ (x - 1)   + O((x - 1)  )
+   9            10             11
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,1)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty2}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty2}{ugxProblemSeriesFormulaPagePatch2}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch3}
+\begin{paste}{ugxProblemSeriesFormulaPageFull3}{ugxProblemSeriesFormulaPageEmpty3}
+\pastebutton{ugxProblemSeriesFormulaPageFull3}{\hidepaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
+\indentrel{3}\begin{verbatim}
+   (3)
+         1  3    1   5     1   7      1    9
+     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+         6      120      5040      362880
+   + 
+           1     11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty3}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty3}{ugxProblemSeriesFormulaPagePatch3}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch4}
+\begin{paste}{ugxProblemSeriesFormulaPageFull4}{ugxProblemSeriesFormulaPageEmpty4}
+\pastebutton{ugxProblemSeriesFormulaPageFull4}{\hidepaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
+\indentrel{3}\begin{verbatim}
+   (4)
+      1              5         7
+      Ä              Ä         Ä
+      3   1      1   3     1   3      1    3
+     x  - Ä x + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+          6     120      5040      362880
+   + 
+                 11
+                 ÄÄ
+           1      3      4
+     - ÄÄÄÄÄÄÄÄ x   + O(x )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty4}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty4}{ugxProblemSeriesFormulaPagePatch4}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch5}
+\begin{paste}{ugxProblemSeriesFormulaPageFull5}{ugxProblemSeriesFormulaPageEmpty5}
+\pastebutton{ugxProblemSeriesFormulaPageFull5}{\hidepaste}
+\tab{5}\spadcommand{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2)\bound{cscx }}
+\indentrel{3}\begin{verbatim}
+   (5)
+      - 1   1      7   3     31   5     127   7
+     x    + Ä x + ÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
+            6     360      15120      604800
+   + 
+        73    9      10
+     ÄÄÄÄÄÄÄ x  + O(x  )
+     3421440
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty5}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty5}{ugxProblemSeriesFormulaPagePatch5}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2)\bound{cscx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch6}
+\begin{paste}{ugxProblemSeriesFormulaPageFull6}{ugxProblemSeriesFormulaPageEmpty6}
+\pastebutton{ugxProblemSeriesFormulaPageFull6}{\hidepaste}
+\tab{5}\spadcommand{1/cscx\free{cscx }}
+\indentrel{3}\begin{verbatim}
+   (6)
+         1  3    1   5     1   7      1    9
+     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
+         6      120      5040      362880
+   + 
+           1     11      12
+     - ÄÄÄÄÄÄÄÄ x   + O(x  )
+       39916800
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty6}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty6}{ugxProblemSeriesFormulaPagePatch6}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{1/cscx\free{cscx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch7}
+\begin{paste}{ugxProblemSeriesFormulaPageFull7}{ugxProblemSeriesFormulaPageEmpty7}
+\pastebutton{ugxProblemSeriesFormulaPageFull7}{\hidepaste}
+\tab{5}\spadcommand{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2)\bound{asinx }}
+\indentrel{3}\begin{verbatim}
+   (7)
+       1  3    3  5    5   7    35   9    63   11      12
+   x + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄÄ x  + ÄÄÄÄ x   + O(x  )
+       6      40      112      1152      2816
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty7}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty7}{ugxProblemSeriesFormulaPagePatch7}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2)\bound{asinx }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPagePatch8}
+\begin{paste}{ugxProblemSeriesFormulaPageFull8}{ugxProblemSeriesFormulaPageEmpty8}
+\pastebutton{ugxProblemSeriesFormulaPageFull8}{\hidepaste}
+\tab{5}\spadcommand{sin(asinx)\free{asinx }}
+\indentrel{3}\begin{verbatim}
+               12
+   (8)  x + O(x  )
+  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesFormulaPageEmpty8}
+\begin{paste}{ugxProblemSeriesFormulaPageEmpty8}{ugxProblemSeriesFormulaPagePatch8}
+\pastebutton{ugxProblemSeriesFormulaPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{sin(asinx)\free{asinx }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesSubstitutePage}{ug08.ht}
 {Substituting Numerical Values in Power Series}
@@ -38973,6 +100275,49 @@ The result is a sequence of the partial sums.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesSubstitutePagePatch1}
+\begin{paste}{ugxProblemSeriesSubstitutePageFull1}{ugxProblemSeriesSubstitutePageEmpty1}
+\pastebutton{ugxProblemSeriesSubstitutePageFull1}{\hidepaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f }}
+\indentrel{3}\begin{verbatim}
+   (1)
+             1  2   1  3    1  4    1   5    1   6
+     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
+             2      6      24      120      720
+   + 
+     1   7     1    8      1    9      1     10      11
+   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
+   5040      40320      362880      3628800
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesSubstitutePageEmpty1}
+\begin{paste}{ugxProblemSeriesSubstitutePageEmpty1}{ugxProblemSeriesSubstitutePagePatch1}
+\pastebutton{ugxProblemSeriesSubstitutePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{f := taylor(exp(x))\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesSubstitutePagePatch2}
+\begin{paste}{ugxProblemSeriesSubstitutePageFull2}{ugxProblemSeriesSubstitutePageEmpty2}
+\pastebutton{ugxProblemSeriesSubstitutePageFull2}{\hidepaste}
+\tab{5}\spadcommand{eval(f,1.0)}
+\indentrel{3}\begin{verbatim}
+   (2)
+   [1.0, 2.0, 2.5, 2.6666666666 666666667,
+    2.7083333333 333333333, 2.7166666666 666666667,
+    2.7180555555 555555556, 2.7182539682 53968254,
+    2.7182787698 412698413, 2.7182815255 731922399, ...]
+                          Type: Stream Expression Float
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesSubstitutePageEmpty2}
+\begin{paste}{ugxProblemSeriesSubstitutePageEmpty2}{ugxProblemSeriesSubstitutePagePatch2}
+\pastebutton{ugxProblemSeriesSubstitutePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{eval(f,1.0)}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemSeriesBernoulliPage}{ug08.ht}
 {Example: Bernoulli Polynomials and Sums of Powers}
@@ -39147,6 +100492,251 @@ first \texht{$k$}{\axiom{k}} 20th powers.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch1}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull1}{ugxProblemSeriesBernoulliPageEmpty1}
+\pastebutton{ugxProblemSeriesBernoulliPageFull1}{\hidepaste}
+\tab{5}\spadcommand{reduce(+,[m**4 for m in 1..10])}
+\indentrel{3}\begin{verbatim}
+   (1)  25333
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty1}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty1}{ugxProblemSeriesBernoulliPagePatch1}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{reduce(+,[m**4 for m in 1..10])}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch2}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull2}{ugxProblemSeriesBernoulliPageEmpty2}
+\pastebutton{ugxProblemSeriesBernoulliPageFull2}{\hidepaste}
+\tab{5}\spadcommand{sum4 := sum(m**4, m = 1..k)\bound{sum4 }}
+\indentrel{3}\begin{verbatim}
+          5      4      3
+        6k  + 15k  + 10k  - k
+   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                  30
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty2}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty2}{ugxProblemSeriesBernoulliPagePatch2}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{sum4 := sum(m**4, m = 1..k)\bound{sum4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch3}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull3}{ugxProblemSeriesBernoulliPageEmpty3}
+\pastebutton{ugxProblemSeriesBernoulliPageFull3}{\hidepaste}
+\tab{5}\spadcommand{eval(sum4, k = 10)\free{sum4 }}
+\indentrel{3}\begin{verbatim}
+   (3)  25333
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty3}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty3}{ugxProblemSeriesBernoulliPagePatch3}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{eval(sum4, k = 10)\free{sum4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch4}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull4}{ugxProblemSeriesBernoulliPageEmpty4}
+\pastebutton{ugxProblemSeriesBernoulliPageFull4}{\hidepaste}
+\tab{5}\spadcommand{f := t*exp(x*t) / (exp(t) - 1)\bound{f }}
+\indentrel{3}\begin{verbatim}
+            t x
+        t %e
+   (4)  ÄÄÄÄÄÄÄ
+          t
+        %e  - 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty4}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty4}{ugxProblemSeriesBernoulliPagePatch4}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{f := t*exp(x*t) / (exp(t) - 1)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch5}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull5}{ugxProblemSeriesBernoulliPageEmpty5}
+\pastebutton{ugxProblemSeriesBernoulliPageFull5}{\hidepaste}
+\tab{5}\spadcommand{)set streams calculate 5\bound{set }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty5}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty5}{ugxProblemSeriesBernoulliPagePatch5}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)set streams calculate 5\bound{set }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch6}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull6}{ugxProblemSeriesBernoulliPageEmpty6}
+\pastebutton{ugxProblemSeriesBernoulliPageFull6}{\hidepaste}
+\tab{5}\spadcommand{ff := taylor(f,t = 0)\free{f set }\bound{ff }}
+\indentrel{3}\begin{verbatim}
+   (5)
+                      2                 3     2
+         2x - 1     6x  - 6x + 1  2   2x  - 3x  + x  3
+     1 + ÄÄÄÄÄÄ t + ÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+            2            12                 12
+   + 
+        4      3      2            5      4      3
+     30x  - 60x  + 30x  - 1  4   6x  - 15x  + 10x  - x  5
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
+               720                        720
+   + 
+        6
+     O(t )
+   Type: UnivariateTaylorSeries(Expression Integer,t,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty6}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty6}{ugxProblemSeriesBernoulliPagePatch6}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{ff := taylor(f,t = 0)\free{f set }\bound{ff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch7}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull7}{ugxProblemSeriesBernoulliPageEmpty7}
+\pastebutton{ugxProblemSeriesBernoulliPageFull7}{\hidepaste}
+\tab{5}\spadcommand{factorial(6) * coefficient(ff,6)\free{ff }}
+\indentrel{3}\begin{verbatim}
+           6       5       4      2
+        42x  - 126x  + 105x  - 21x  + 1
+   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                       42
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty7}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty7}{ugxProblemSeriesBernoulliPagePatch7}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{factorial(6) * coefficient(ff,6)\free{ff }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch8}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull8}{ugxProblemSeriesBernoulliPageEmpty8}
+\pastebutton{ugxProblemSeriesBernoulliPageFull8}{\hidepaste}
+\tab{5}\spadcommand{g := eval(f, x = x + 1) - f\bound{g }\free{f }}
+\indentrel{3}\begin{verbatim}
+            t x + t       t x
+        t %e        - t %e
+   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                 t
+               %e  - 1
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty8}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty8}{ugxProblemSeriesBernoulliPagePatch8}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{g := eval(f, x = x + 1) - f\bound{g }\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch9}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull9}{ugxProblemSeriesBernoulliPageEmpty9}
+\pastebutton{ugxProblemSeriesBernoulliPageFull9}{\hidepaste}
+\tab{5}\spadcommand{normalize(g)\free{g }}
+\indentrel{3}\begin{verbatim}
+            t x
+   (8)  t %e
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty9}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty9}{ugxProblemSeriesBernoulliPagePatch9}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{normalize(g)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch10}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull10}{ugxProblemSeriesBernoulliPageEmpty10}
+\pastebutton{ugxProblemSeriesBernoulliPageFull10}{\hidepaste}
+\tab{5}\spadcommand{taylor(g,t = 0)\free{g }}
+\indentrel{3}\begin{verbatim}
+                    2       3       4
+               2   x   3   x   4   x   5      6
+   (9)  t + x t  + ÄÄ t  + ÄÄ t  + ÄÄ t  + O(t )
+                    2       6      24
+   Type: UnivariateTaylorSeries(Expression Integer,t,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty10}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty10}{ugxProblemSeriesBernoulliPagePatch10}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{taylor(g,t = 0)\free{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch11}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull11}{ugxProblemSeriesBernoulliPageEmpty11}
+\pastebutton{ugxProblemSeriesBernoulliPageFull11}{\hidepaste}
+\tab{5}\spadcommand{B5 := factorial(5) * coefficient(ff,5)\free{ff }\bound{B5 }}
+\indentrel{3}\begin{verbatim}
+           5      4      3
+         6x  - 15x  + 10x  - x
+   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   6
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty11}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty11}{ugxProblemSeriesBernoulliPagePatch11}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{B5 := factorial(5) * coefficient(ff,5)\free{ff }\bound{B5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch12}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull12}{ugxProblemSeriesBernoulliPageEmpty12}
+\pastebutton{ugxProblemSeriesBernoulliPageFull12}{\hidepaste}
+\tab{5}\spadcommand{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1))\free{B5 }}
+\indentrel{3}\begin{verbatim}
+           5      4      3
+         6k  + 15k  + 10k  - k
+   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   30
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty12}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty12}{ugxProblemSeriesBernoulliPagePatch12}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1))\free{B5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPagePatch13}
+\begin{paste}{ugxProblemSeriesBernoulliPageFull13}{ugxProblemSeriesBernoulliPageEmpty13}
+\pastebutton{ugxProblemSeriesBernoulliPageFull13}{\hidepaste}
+\tab{5}\spadcommand{sum4\free{sum4 }}
+\indentrel{3}\begin{verbatim}
+           5      4      3
+         6k  + 15k  + 10k  - k
+   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                   30
+                      Type: Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemSeriesBernoulliPageEmpty13}
+\begin{paste}{ugxProblemSeriesBernoulliPageEmpty13}{ugxProblemSeriesBernoulliPagePatch13}
+\pastebutton{ugxProblemSeriesBernoulliPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{sum4\free{sum4 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemDEQPage}{ug08.ht}{Solution of Differential Equations}
 \pageto{notitle}{ugProblemLinPolEqnPage}
@@ -39344,6 +100934,224 @@ D(y x, x) + y x = 0 \bound{e5}\free{y}}
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemLDEQClosedPagePatch1}
+\begin{paste}{ugxProblemLDEQClosedPageFull1}{ugxProblemLDEQClosedPageEmpty1}
+\pastebutton{ugxProblemLDEQClosedPageFull1}{\hidepaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (1)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty1}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty1}{ugxProblemLDEQClosedPagePatch1}
+\pastebutton{ugxProblemLDEQClosedPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch2}
+\begin{paste}{ugxProblemLDEQClosedPageFull2}{ugxProblemLDEQClosedPageEmpty2}
+\pastebutton{ugxProblemLDEQClosedPageFull2}{\hidepaste}
+\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
+\indentrel{3}\begin{verbatim}
+         ,,       ,
+   (2)  y  (x) + y (x) + y(x)= 0
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty2}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty2}{ugxProblemLDEQClosedPagePatch2}
+\pastebutton{ugxProblemLDEQClosedPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch3}
+\begin{paste}{ugxProblemLDEQClosedPageFull3}{ugxProblemLDEQClosedPageEmpty3}
+\pastebutton{ugxProblemLDEQClosedPageFull3}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [particular= 0,
+                          x     x
+                  ÚÄ¿   - Ä   - Ä      ÚÄ¿
+                x\³3      2     2    x\³3
+    basis= [cos(ÄÄÄÄÄ)%e   ,%e   sin(ÄÄÄÄÄ)]]
+                  2                    2
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty3}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty3}{ugxProblemLDEQClosedPagePatch3}
+\pastebutton{ugxProblemLDEQClosedPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch4}
+\begin{paste}{ugxProblemLDEQClosedPageFull4}{ugxProblemLDEQClosedPageEmpty4}
+\pastebutton{ugxProblemLDEQClosedPageFull4}{\hidepaste}
+\tab{5}\spadcommand{deq := D(y x, x, 2) + y x\bound{e2 }\free{y }}
+\indentrel{3}\begin{verbatim}
+         ,,
+   (4)  y  (x) + y(x)
+
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty4}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty4}{ugxProblemLDEQClosedPagePatch4}
+\pastebutton{ugxProblemLDEQClosedPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{deq := D(y x, x, 2) + y x\bound{e2 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch5}
+\begin{paste}{ugxProblemLDEQClosedPageFull5}{ugxProblemLDEQClosedPageEmpty5}
+\pastebutton{ugxProblemLDEQClosedPageFull5}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x = 0, [1, 1])\free{e2 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (5)  sin(x) + cos(x)
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty5}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty5}{ugxProblemLDEQClosedPagePatch5}
+\pastebutton{ugxProblemLDEQClosedPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x = 0, [1, 1])\free{e2 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch6}
+\begin{paste}{ugxProblemLDEQClosedPageFull6}{ugxProblemLDEQClosedPageEmpty6}
+\pastebutton{ugxProblemLDEQClosedPageFull6}{\hidepaste}
+\tab{5}\spadcommand{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\bound{e3 }\free{y }}
+\indentrel{3}\begin{verbatim}
+         3 ,,,       2 ,,         ,               4
+   (6)  x y   (x) + x y  (x) - 2xy (x) + 2y(x)= 2x
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty6}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty6}{ugxProblemLDEQClosedPagePatch6}
+\pastebutton{ugxProblemLDEQClosedPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{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\bound{e3 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch7}
+\begin{paste}{ugxProblemLDEQClosedPageFull7}{ugxProblemLDEQClosedPageEmpty7}
+\pastebutton{ugxProblemLDEQClosedPageFull7}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (7)
+                 5      3      2
+                x  - 10x  + 20x  + 4
+   [particular= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+                         15x
+              3     2      3      3     2
+            2x  - 3x  + 1 x  - 1 x  - 3x  - 1
+    basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]]
+                  x          x         x
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty7}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty7}{ugxProblemLDEQClosedPagePatch7}
+\pastebutton{ugxProblemLDEQClosedPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch8}
+\begin{paste}{ugxProblemLDEQClosedPageFull8}{ugxProblemLDEQClosedPageEmpty8}
+\pastebutton{ugxProblemLDEQClosedPageFull8}{\hidepaste}
+\tab{5}\spadcommand{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\bound{e4 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (8)
+       9    3  ,,,         8 ,,          ,
+     (x  + x )y   (x) + 18x y  (x) - 90xy (x)
+
+   + 
+            6
+     (- 330x  + 90)y(x)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty8}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty8}{ugxProblemLDEQClosedPagePatch8}
+\pastebutton{ugxProblemLDEQClosedPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{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\bound{e4 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch9}
+\begin{paste}{ugxProblemLDEQClosedPageFull9}{ugxProblemLDEQClosedPageEmpty9}
+\pastebutton{ugxProblemLDEQClosedPageFull9}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e4 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [particular= 0,
+                          ÚÄÄ¿            ÚÄÄ¿
+                       - \³91 log(x)     \³91 log(x)
+               x   x %e              x %e
+    basis= [ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
+             6            6                6
+            x  + 1       x  + 1           x  + 1
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty9}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty9}{ugxProblemLDEQClosedPagePatch9}
+\pastebutton{ugxProblemLDEQClosedPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e4 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch10}
+\begin{paste}{ugxProblemLDEQClosedPageFull10}{ugxProblemLDEQClosedPageEmpty10}
+\pastebutton{ugxProblemLDEQClosedPageFull10}{\hidepaste}
+\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
+\indentrel{3}\begin{verbatim}
+           2      ,,         ,
+   (10)  (x  + 1)y  (x) + 3xy (x) + y(x)= 0
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty10}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty10}{ugxProblemLDEQClosedPagePatch10}
+\pastebutton{ugxProblemLDEQClosedPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPagePatch11}
+\begin{paste}{ugxProblemLDEQClosedPageFull11}{ugxProblemLDEQClosedPageEmpty11}
+\pastebutton{ugxProblemLDEQClosedPageFull11}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (11)
+                                         ÚÄÄÄÄÄÄ¿
+                                         ³ 2
+                              1     log(\³x  + 1  - x)
+   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
+                           ÚÄÄÄÄÄÄ¿       ÚÄÄÄÄÄÄ¿
+                           ³ 2            ³ 2
+                          \³x  + 1       \³x  + 1
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemLDEQClosedPageEmpty11}
+\begin{paste}{ugxProblemLDEQClosedPageEmpty11}{ugxProblemLDEQClosedPagePatch11}
+\pastebutton{ugxProblemLDEQClosedPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemNLDEQClosedPage}{ug08.ht}
 {Closed-Form Solutions of Non-Linear DEs}
@@ -39501,6 +101309,363 @@ Finally, we solve it.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemNLDEQClosedPagePatch1}
+\begin{paste}{ugxProblemNLDEQClosedPageFull1}{ugxProblemNLDEQClosedPageEmpty1}
+\pastebutton{ugxProblemNLDEQClosedPageFull1}{\hidepaste}
+\tab{5}\spadcommand{m := -y\bound{m }}
+\indentrel{3}\begin{verbatim}
+   (1)  - y
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty1}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty1}{ugxProblemNLDEQClosedPagePatch1}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{m := -y\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch2}
+\begin{paste}{ugxProblemNLDEQClosedPageFull2}{ugxProblemNLDEQClosedPageEmpty2}
+\pastebutton{ugxProblemNLDEQClosedPageFull2}{\hidepaste}
+\tab{5}\spadcommand{n := x + y * log y\bound{n }}
+\indentrel{3}\begin{verbatim}
+   (2)  y log(y) + x
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty2}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty2}{ugxProblemNLDEQClosedPagePatch2}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{n := x + y * log y\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch3}
+\begin{paste}{ugxProblemNLDEQClosedPageFull3}{ugxProblemNLDEQClosedPageEmpty3}
+\pastebutton{ugxProblemNLDEQClosedPageFull3}{\hidepaste}
+\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m n }}
+\indentrel{3}\begin{verbatim}
+   (3)  - 2
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty3}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty3}{ugxProblemNLDEQClosedPagePatch3}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch4}
+\begin{paste}{ugxProblemNLDEQClosedPageFull4}{ugxProblemNLDEQClosedPageEmpty4}
+\pastebutton{ugxProblemNLDEQClosedPageFull4}{\hidepaste}
+\tab{5}\spadcommand{mu := operator 'mu\bound{mu }}
+\indentrel{3}\begin{verbatim}
+   (4)  mu
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty4}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty4}{ugxProblemNLDEQClosedPagePatch4}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{mu := operator 'mu\bound{mu }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch5}
+\begin{paste}{ugxProblemNLDEQClosedPageFull5}{ugxProblemNLDEQClosedPageEmpty5}
+\pastebutton{ugxProblemNLDEQClosedPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a := D(mu(x) * m, y) - D(mu(x) * n, x)\bound{a }\free{m n mu }}
+\indentrel{3}\begin{verbatim}
+                          ,
+   (5)  (- y log(y) - x)mu (x) - 2mu(x)
+
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty5}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty5}{ugxProblemNLDEQClosedPagePatch5}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a := D(mu(x) * m, y) - D(mu(x) * n, x)\bound{a }\free{m n mu }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch6}
+\begin{paste}{ugxProblemNLDEQClosedPageFull6}{ugxProblemNLDEQClosedPageEmpty6}
+\pastebutton{ugxProblemNLDEQClosedPageFull6}{\hidepaste}
+\tab{5}\spadcommand{solve(a = 0, mu, x)\free{mu a }}
+\indentrel{3}\begin{verbatim}
+   (6)
+                                        1
+   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
+                           2      2                  2
+                          y log(y)  + 2x y log(y) + x
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty6}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty6}{ugxProblemNLDEQClosedPagePatch6}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{solve(a = 0, mu, x)\free{mu a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch7}
+\begin{paste}{ugxProblemNLDEQClosedPageFull7}{ugxProblemNLDEQClosedPageEmpty7}
+\pastebutton{ugxProblemNLDEQClosedPageFull7}{\hidepaste}
+\tab{5}\spadcommand{b := D(mu(y) * m, y) - D(mu(y) * n, x)\bound{b }\free{mu m }}
+\indentrel{3}\begin{verbatim}
+             ,
+   (7)  - ymu (y) - 2mu(y)
+
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty7}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty7}{ugxProblemNLDEQClosedPagePatch7}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{b := D(mu(y) * m, y) - D(mu(y) * n, x)\bound{b }\free{mu m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch8}
+\begin{paste}{ugxProblemNLDEQClosedPageFull8}{ugxProblemNLDEQClosedPageEmpty8}
+\pastebutton{ugxProblemNLDEQClosedPageFull8}{\hidepaste}
+\tab{5}\spadcommand{sb := solve(b = 0, mu, y)\free{mu b }\bound{sb }}
+\indentrel{3}\begin{verbatim}
+                                1
+   (8)  [particular= 0,basis= [ÄÄ]]
+                                2
+                               y
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty8}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty8}{ugxProblemNLDEQClosedPagePatch8}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{sb := solve(b = 0, mu, y)\free{mu b }\bound{sb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch9}
+\begin{paste}{ugxProblemNLDEQClosedPageFull9}{ugxProblemNLDEQClosedPageEmpty9}
+\pastebutton{ugxProblemNLDEQClosedPageFull9}{\hidepaste}
+\tab{5}\spadcommand{intFactor := sb.basis.1\bound{intFactor }\free{sb }}
+\indentrel{3}\begin{verbatim}
+         1
+   (9)  ÄÄ
+         2
+        y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty9}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty9}{ugxProblemNLDEQClosedPagePatch9}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{intFactor := sb.basis.1\bound{intFactor }\free{sb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch10}
+\begin{paste}{ugxProblemNLDEQClosedPageFull10}{ugxProblemNLDEQClosedPageEmpty10}
+\pastebutton{ugxProblemNLDEQClosedPageFull10}{\hidepaste}
+\tab{5}\spadcommand{m := intFactor * m\bound{m1 }\free{m intFactor }}
+\indentrel{3}\begin{verbatim}
+           1
+   (10)  - Ä
+           y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty10}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty10}{ugxProblemNLDEQClosedPagePatch10}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{m := intFactor * m\bound{m1 }\free{m intFactor }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch11}
+\begin{paste}{ugxProblemNLDEQClosedPageFull11}{ugxProblemNLDEQClosedPageEmpty11}
+\pastebutton{ugxProblemNLDEQClosedPageFull11}{\hidepaste}
+\tab{5}\spadcommand{n := intFactor * n\bound{n1 }\free{n intFactor }}
+\indentrel{3}\begin{verbatim}
+         y log(y) + x
+   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄ
+               2
+              y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty11}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty11}{ugxProblemNLDEQClosedPagePatch11}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{n := intFactor * n\bound{n1 }\free{n intFactor }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch12}
+\begin{paste}{ugxProblemNLDEQClosedPageFull12}{ugxProblemNLDEQClosedPageEmpty12}
+\pastebutton{ugxProblemNLDEQClosedPageFull12}{\hidepaste}
+\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m1 n1 }}
+\indentrel{3}\begin{verbatim}
+   (12)  0
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty12}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty12}{ugxProblemNLDEQClosedPagePatch12}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m1 n1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch13}
+\begin{paste}{ugxProblemNLDEQClosedPageFull13}{ugxProblemNLDEQClosedPageEmpty13}
+\pastebutton{ugxProblemNLDEQClosedPageFull13}{\hidepaste}
+\tab{5}\spadcommand{h := operator 'h\bound{h }}
+\indentrel{3}\begin{verbatim}
+   (13)  h
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty13}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty13}{ugxProblemNLDEQClosedPagePatch13}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{h := operator 'h\bound{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch14}
+\begin{paste}{ugxProblemNLDEQClosedPageFull14}{ugxProblemNLDEQClosedPageEmpty14}
+\pastebutton{ugxProblemNLDEQClosedPageFull14}{\hidepaste}
+\tab{5}\spadcommand{sol := h y + integrate(m, x)\bound{sol }\free{h m1 }}
+\indentrel{3}\begin{verbatim}
+         y h(y) - x
+   (14)  ÄÄÄÄÄÄÄÄÄÄ
+              y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty14}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty14}{ugxProblemNLDEQClosedPagePatch14}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{sol := h y + integrate(m, x)\bound{sol }\free{h m1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch15}
+\begin{paste}{ugxProblemNLDEQClosedPageFull15}{ugxProblemNLDEQClosedPageEmpty15}
+\pastebutton{ugxProblemNLDEQClosedPageFull15}{\hidepaste}
+\tab{5}\spadcommand{dsol := D(sol, y)\free{sol }\bound{dsol }}
+\indentrel{3}\begin{verbatim}
+          2 ,
+         y h (y) + x
+
+   (15)  ÄÄÄÄÄÄÄÄÄÄÄ
+               2
+              y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty15}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty15}{ugxProblemNLDEQClosedPagePatch15}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{dsol := D(sol, y)\free{sol }\bound{dsol }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch16}
+\begin{paste}{ugxProblemNLDEQClosedPageFull16}{ugxProblemNLDEQClosedPageEmpty16}
+\pastebutton{ugxProblemNLDEQClosedPageFull16}{\hidepaste}
+\tab{5}\spadcommand{nsol := solve(dsol = n, h, y)\free{dsol n1 h }\bound{nsol }}
+\indentrel{3}\begin{verbatim}
+                            2
+                      log(y)
+   (16)  [particular= ÄÄÄÄÄÄÄ,basis= [1]]
+                         2
+Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty16}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty16}{ugxProblemNLDEQClosedPagePatch16}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{nsol := solve(dsol = n, h, y)\free{dsol n1 h }\bound{nsol }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch17}
+\begin{paste}{ugxProblemNLDEQClosedPageFull17}{ugxProblemNLDEQClosedPageEmpty17}
+\pastebutton{ugxProblemNLDEQClosedPageFull17}{\hidepaste}
+\tab{5}\spadcommand{eval(sol, h y = nsol.particular)\free{sol h nsol }}
+\indentrel{3}\begin{verbatim}
+                 2
+         y log(y)  - 2x
+   (17)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+               2y
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty17}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty17}{ugxProblemNLDEQClosedPagePatch17}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{eval(sol, h y = nsol.particular)\free{sol h nsol }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch18}
+\begin{paste}{ugxProblemNLDEQClosedPageFull18}{ugxProblemNLDEQClosedPageEmpty18}
+\pastebutton{ugxProblemNLDEQClosedPageFull18}{\hidepaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (18)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty18}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty18}{ugxProblemNLDEQClosedPagePatch18}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch19}
+\begin{paste}{ugxProblemNLDEQClosedPageFull19}{ugxProblemNLDEQClosedPageEmpty19}
+\pastebutton{ugxProblemNLDEQClosedPageFull19}{\hidepaste}
+\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
+\indentrel{3}\begin{verbatim}
+          ,            y(x)
+   (19)  y (x)= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                y(x)log(y(x)) + x
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty19}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty19}{ugxProblemNLDEQClosedPagePatch19}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPagePatch20}
+\begin{paste}{ugxProblemNLDEQClosedPageFull20}{ugxProblemNLDEQClosedPageEmpty20}
+\pastebutton{ugxProblemNLDEQClosedPageFull20}{\hidepaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
+\indentrel{3}\begin{verbatim}
+                      2
+         y(x)log(y(x))  - 2x
+   (20)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                2y(x)
+                    Type: Union(Expression Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemNLDEQClosedPageEmpty20}
+\begin{paste}{ugxProblemNLDEQClosedPageEmpty20}{ugxProblemNLDEQClosedPagePatch20}
+\pastebutton{ugxProblemNLDEQClosedPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemDEQSeriesPage}{ug08.ht}
 {Power Series Solutions of Differential Equations}
@@ -39589,6 +101754,153 @@ the solution.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemDEQSeriesPagePatch1}
+\begin{paste}{ugxProblemDEQSeriesPageFull1}{ugxProblemDEQSeriesPageEmpty1}
+\pastebutton{ugxProblemDEQSeriesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set streams calculate 7\bound{c7 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty1}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty1}{ugxProblemDEQSeriesPagePatch1}
+\pastebutton{ugxProblemDEQSeriesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set streams calculate 7\bound{c7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch2}
+\begin{paste}{ugxProblemDEQSeriesPageFull2}{ugxProblemDEQSeriesPageEmpty2}
+\pastebutton{ugxProblemDEQSeriesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\indentrel{3}\begin{verbatim}
+   (1)  y
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty2}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty2}{ugxProblemDEQSeriesPagePatch2}
+\pastebutton{ugxProblemDEQSeriesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{y := operator 'y\bound{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch3}
+\begin{paste}{ugxProblemDEQSeriesPageFull3}{ugxProblemDEQSeriesPageEmpty3}
+\pastebutton{ugxProblemDEQSeriesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq }\free{y }}
+\indentrel{3}\begin{verbatim}
+         ,,,        y(x)     ,,
+   (2)  y   (x) - %e    sin(y  (x))= cos(x)
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty3}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty3}{ugxProblemDEQSeriesPagePatch3}
+\pastebutton{ugxProblemDEQSeriesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch4}
+\begin{paste}{ugxProblemDEQSeriesPageFull4}{ugxProblemDEQSeriesPageEmpty4}
+\pastebutton{ugxProblemDEQSeriesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y }\free{eq }\free{c7 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+                          2            3
+         1  3   %e  4   %e  - 1  5   %e  - 2%e  6
+     1 + Ä x  + ÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄÄ x
+         6      24        120           720
+   + 
+       4      2
+     %e  - 8%e  + 4%e + 1  7      8
+     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ x  + O(x )
+             5040
+   Type: UnivariateTaylorSeries(Expression Integer,x,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty4}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty4}{ugxProblemDEQSeriesPagePatch4}
+\pastebutton{ugxProblemDEQSeriesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y }\free{eq }\free{c7 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch5}
+\begin{paste}{ugxProblemDEQSeriesPageFull5}{ugxProblemDEQSeriesPageEmpty5}
+\pastebutton{ugxProblemDEQSeriesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{x := operator 'x\bound{x }}
+\indentrel{3}\begin{verbatim}
+   (4)  x
+                                    Type: BasicOperator
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty5}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty5}{ugxProblemDEQSeriesPagePatch5}
+\pastebutton{ugxProblemDEQSeriesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{x := operator 'x\bound{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch6}
+\begin{paste}{ugxProblemDEQSeriesPageFull6}{ugxProblemDEQSeriesPageEmpty6}
+\pastebutton{ugxProblemDEQSeriesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
+\indentrel{3}\begin{verbatim}
+         ,         2
+   (5)  x (t)= x(t)  + 1
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty6}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty6}{ugxProblemDEQSeriesPagePatch6}
+\pastebutton{ugxProblemDEQSeriesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch7}
+\begin{paste}{ugxProblemDEQSeriesPageFull7}{ugxProblemDEQSeriesPageEmpty7}
+\pastebutton{ugxProblemDEQSeriesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
+\indentrel{3}\begin{verbatim}
+         ,
+   (6)  y (t)= x(t)y(t)
+
+                      Type: Equation Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty7}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty7}{ugxProblemDEQSeriesPagePatch7}
+\pastebutton{ugxProblemDEQSeriesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPagePatch8}
+\begin{paste}{ugxProblemDEQSeriesPageFull8}{ugxProblemDEQSeriesPageEmpty8}
+\pastebutton{ugxProblemDEQSeriesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }\free{c7 }}
+\indentrel{3}\begin{verbatim}
+   (7)
+        1  3    2  5    17  7      8
+   [t + Ä t  + ÄÄ t  + ÄÄÄ t  + O(t ),
+        3      15      315
+        1  2    5  4    61  6      8
+    1 + Ä t  + ÄÄ t  + ÄÄÄ t  + O(t )]
+        2      24      720
+Type: List UnivariateTaylorSeries(Expression Integer,t,0)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemDEQSeriesPageEmpty8}
+\begin{paste}{ugxProblemDEQSeriesPageEmpty8}{ugxProblemDEQSeriesPagePatch8}
+\pastebutton{ugxProblemDEQSeriesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }\free{c7 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemFinitePage}{ug08.ht}{Finite Fields}
 \pagepic{ps/v71ugproblemfinitepage.eps}{ugProblemFinitePage}
@@ -39812,6 +102124,331 @@ The order of a primitive element is the defining \smath{p-1}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemFinitePrimePagePatch1}
+\begin{paste}{ugxProblemFinitePrimePageFull1}{ugxProblemFinitePrimePageEmpty1}
+\pastebutton{ugxProblemFinitePrimePageFull1}{\hidepaste}
+\tab{5}\spadcommand{(a,b) : IntegerMod 12\bound{abdec }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty1}
+\begin{paste}{ugxProblemFinitePrimePageEmpty1}{ugxProblemFinitePrimePagePatch1}
+\pastebutton{ugxProblemFinitePrimePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(a,b) : IntegerMod 12\bound{abdec }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch2}
+\begin{paste}{ugxProblemFinitePrimePageFull2}{ugxProblemFinitePrimePageEmpty2}
+\pastebutton{ugxProblemFinitePrimePageFull2}{\hidepaste}
+\tab{5}\spadcommand{(a, b) := (16, 7)\free{abdec }\bound{a b }}
+\indentrel{3}\begin{verbatim}
+   (2)  7
+                                    Type: IntegerMod 12
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty2}
+\begin{paste}{ugxProblemFinitePrimePageEmpty2}{ugxProblemFinitePrimePagePatch2}
+\pastebutton{ugxProblemFinitePrimePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(a, b) := (16, 7)\free{abdec }\bound{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch3}
+\begin{paste}{ugxProblemFinitePrimePageFull3}{ugxProblemFinitePrimePageEmpty3}
+\pastebutton{ugxProblemFinitePrimePageFull3}{\hidepaste}
+\tab{5}\spadcommand{[a - b, a * b]\free{a b }}
+\indentrel{3}\begin{verbatim}
+   (3)  [9,4]
+                               Type: List IntegerMod 12
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty3}
+\begin{paste}{ugxProblemFinitePrimePageEmpty3}{ugxProblemFinitePrimePagePatch3}
+\pastebutton{ugxProblemFinitePrimePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{[a - b, a * b]\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch4}
+\begin{paste}{ugxProblemFinitePrimePageFull4}{ugxProblemFinitePrimePageEmpty4}
+\pastebutton{ugxProblemFinitePrimePageFull4}{\hidepaste}
+\tab{5}\spadcommand{a / b\free{a b }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty4}
+\begin{paste}{ugxProblemFinitePrimePageEmpty4}{ugxProblemFinitePrimePagePatch4}
+\pastebutton{ugxProblemFinitePrimePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{a / b\free{a b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch5}
+\begin{paste}{ugxProblemFinitePrimePageFull5}{ugxProblemFinitePrimePageEmpty5}
+\pastebutton{ugxProblemFinitePrimePageFull5}{\hidepaste}
+\tab{5}\spadcommand{recip a\free{a }}
+\indentrel{3}\begin{verbatim}
+   (4)  "failed"
+                              Type: Union("failed",...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty5}
+\begin{paste}{ugxProblemFinitePrimePageEmpty5}{ugxProblemFinitePrimePagePatch5}
+\pastebutton{ugxProblemFinitePrimePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{recip a\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch6}
+\begin{paste}{ugxProblemFinitePrimePageFull6}{ugxProblemFinitePrimePageEmpty6}
+\pastebutton{ugxProblemFinitePrimePageFull6}{\hidepaste}
+\tab{5}\spadcommand{recip b\free{b }}
+\indentrel{3}\begin{verbatim}
+   (5)  7
+                         Type: Union(IntegerMod 12,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty6}
+\begin{paste}{ugxProblemFinitePrimePageEmpty6}{ugxProblemFinitePrimePagePatch6}
+\pastebutton{ugxProblemFinitePrimePageEmpty6}{\showpaste}
+\tab{5}\spadcommand{recip b\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch7}
+\begin{paste}{ugxProblemFinitePrimePageFull7}{ugxProblemFinitePrimePageEmpty7}
+\pastebutton{ugxProblemFinitePrimePageFull7}{\hidepaste}
+\tab{5}\spadcommand{c : PrimeField 11 := 8\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (6)  8
+                                    Type: PrimeField 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty7}
+\begin{paste}{ugxProblemFinitePrimePageEmpty7}{ugxProblemFinitePrimePagePatch7}
+\pastebutton{ugxProblemFinitePrimePageEmpty7}{\showpaste}
+\tab{5}\spadcommand{c : PrimeField 11 := 8\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch8}
+\begin{paste}{ugxProblemFinitePrimePageFull8}{ugxProblemFinitePrimePageEmpty8}
+\pastebutton{ugxProblemFinitePrimePageFull8}{\hidepaste}
+\tab{5}\spadcommand{inv c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (7)  7
+                                    Type: PrimeField 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty8}
+\begin{paste}{ugxProblemFinitePrimePageEmpty8}{ugxProblemFinitePrimePagePatch8}
+\pastebutton{ugxProblemFinitePrimePageEmpty8}{\showpaste}
+\tab{5}\spadcommand{inv c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch9}
+\begin{paste}{ugxProblemFinitePrimePageFull9}{ugxProblemFinitePrimePageEmpty9}
+\pastebutton{ugxProblemFinitePrimePageFull9}{\hidepaste}
+\tab{5}\spadcommand{9/c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (8)  8
+                                    Type: PrimeField 11
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty9}
+\begin{paste}{ugxProblemFinitePrimePageEmpty9}{ugxProblemFinitePrimePagePatch9}
+\pastebutton{ugxProblemFinitePrimePageEmpty9}{\showpaste}
+\tab{5}\spadcommand{9/c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch10}
+\begin{paste}{ugxProblemFinitePrimePageFull10}{ugxProblemFinitePrimePageEmpty10}
+\pastebutton{ugxProblemFinitePrimePageFull10}{\hidepaste}
+\tab{5}\spadcommand{GF101 := PF 101\bound{GF101 }}
+\indentrel{3}\begin{verbatim}
+   (9)  PrimeField 101
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty10}
+\begin{paste}{ugxProblemFinitePrimePageEmpty10}{ugxProblemFinitePrimePagePatch10}
+\pastebutton{ugxProblemFinitePrimePageEmpty10}{\showpaste}
+\tab{5}\spadcommand{GF101 := PF 101\bound{GF101 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch11}
+\begin{paste}{ugxProblemFinitePrimePageFull11}{ugxProblemFinitePrimePageEmpty11}
+\pastebutton{ugxProblemFinitePrimePageFull11}{\hidepaste}
+\tab{5}\spadcommand{x := random()$GF101\bound{x }\free{GF101 }}
+\indentrel{3}\begin{verbatim}
+   (10)  78
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty11}
+\begin{paste}{ugxProblemFinitePrimePageEmpty11}{ugxProblemFinitePrimePagePatch11}
+\pastebutton{ugxProblemFinitePrimePageEmpty11}{\showpaste}
+\tab{5}\spadcommand{x := random()$GF101\bound{x }\free{GF101 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch12}
+\begin{paste}{ugxProblemFinitePrimePageFull12}{ugxProblemFinitePrimePageEmpty12}
+\pastebutton{ugxProblemFinitePrimePageFull12}{\hidepaste}
+\tab{5}\spadcommand{y : GF101 := 37\bound{y }\free{GF101 }}
+\indentrel{3}\begin{verbatim}
+   (11)  37
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty12}
+\begin{paste}{ugxProblemFinitePrimePageEmpty12}{ugxProblemFinitePrimePagePatch12}
+\pastebutton{ugxProblemFinitePrimePageEmpty12}{\showpaste}
+\tab{5}\spadcommand{y : GF101 := 37\bound{y }\free{GF101 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch13}
+\begin{paste}{ugxProblemFinitePrimePageFull13}{ugxProblemFinitePrimePageEmpty13}
+\pastebutton{ugxProblemFinitePrimePageFull13}{\hidepaste}
+\tab{5}\spadcommand{z := x/y\bound{z }\free{x y }}
+\indentrel{3}\begin{verbatim}
+   (12)  84
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty13}
+\begin{paste}{ugxProblemFinitePrimePageEmpty13}{ugxProblemFinitePrimePagePatch13}
+\pastebutton{ugxProblemFinitePrimePageEmpty13}{\showpaste}
+\tab{5}\spadcommand{z := x/y\bound{z }\free{x y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch14}
+\begin{paste}{ugxProblemFinitePrimePageFull14}{ugxProblemFinitePrimePageEmpty14}
+\pastebutton{ugxProblemFinitePrimePageFull14}{\hidepaste}
+\tab{5}\spadcommand{z * y - x\free{x y z }}
+\indentrel{3}\begin{verbatim}
+   (13)  0
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty14}
+\begin{paste}{ugxProblemFinitePrimePageEmpty14}{ugxProblemFinitePrimePagePatch14}
+\pastebutton{ugxProblemFinitePrimePageEmpty14}{\showpaste}
+\tab{5}\spadcommand{z * y - x\free{x y z }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch15}
+\begin{paste}{ugxProblemFinitePrimePageFull15}{ugxProblemFinitePrimePageEmpty15}
+\pastebutton{ugxProblemFinitePrimePageFull15}{\hidepaste}
+\tab{5}\spadcommand{pe := primitiveElement()$GF101\bound{pe }\free{GF101 }}
+\indentrel{3}\begin{verbatim}
+   (14)  2
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty15}
+\begin{paste}{ugxProblemFinitePrimePageEmpty15}{ugxProblemFinitePrimePagePatch15}
+\pastebutton{ugxProblemFinitePrimePageEmpty15}{\showpaste}
+\tab{5}\spadcommand{pe := primitiveElement()$GF101\bound{pe }\free{GF101 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch16}
+\begin{paste}{ugxProblemFinitePrimePageFull16}{ugxProblemFinitePrimePageEmpty16}
+\pastebutton{ugxProblemFinitePrimePageFull16}{\hidepaste}
+\tab{5}\spadcommand{[pe**i for i in 0..99]\free{pe }}
+\indentrel{3}\begin{verbatim}
+   (15)
+   [1, 2, 4, 8, 16, 32, 64, 27, 54, 7, 14, 28, 56, 11,
+    22, 44, 88, 75, 49, 98, 95, 89, 77, 53, 5, 10, 20,
+    40, 80, 59, 17, 34, 68, 35, 70, 39, 78, 55, 9, 18,
+    36, 72, 43, 86, 71, 41, 82, 63, 25, 50, 100, 99, 97,
+    93, 85, 69, 37, 74, 47, 94, 87, 73, 45, 90, 79, 57,
+    13, 26, 52, 3, 6, 12, 24, 48, 96, 91, 81, 61, 21, 42,
+    84, 67, 33, 66, 31, 62, 23, 46, 92, 83, 65, 29, 58,
+    15, 30, 60, 19, 38, 76, 51]
+                              Type: List PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty16}
+\begin{paste}{ugxProblemFinitePrimePageEmpty16}{ugxProblemFinitePrimePagePatch16}
+\pastebutton{ugxProblemFinitePrimePageEmpty16}{\showpaste}
+\tab{5}\spadcommand{[pe**i for i in 0..99]\free{pe }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch17}
+\begin{paste}{ugxProblemFinitePrimePageFull17}{ugxProblemFinitePrimePageEmpty17}
+\pastebutton{ugxProblemFinitePrimePageFull17}{\hidepaste}
+\tab{5}\spadcommand{ex := discreteLog(y)\bound{ex }\free{y }}
+\indentrel{3}\begin{verbatim}
+   (16)  56
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty17}
+\begin{paste}{ugxProblemFinitePrimePageEmpty17}{ugxProblemFinitePrimePagePatch17}
+\pastebutton{ugxProblemFinitePrimePageEmpty17}{\showpaste}
+\tab{5}\spadcommand{ex := discreteLog(y)\bound{ex }\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch18}
+\begin{paste}{ugxProblemFinitePrimePageFull18}{ugxProblemFinitePrimePageEmpty18}
+\pastebutton{ugxProblemFinitePrimePageFull18}{\hidepaste}
+\tab{5}\spadcommand{pe ** ex\free{ex pe }}
+\indentrel{3}\begin{verbatim}
+   (17)  37
+                                   Type: PrimeField 101
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty18}
+\begin{paste}{ugxProblemFinitePrimePageEmpty18}{ugxProblemFinitePrimePagePatch18}
+\pastebutton{ugxProblemFinitePrimePageEmpty18}{\showpaste}
+\tab{5}\spadcommand{pe ** ex\free{ex pe }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch19}
+\begin{paste}{ugxProblemFinitePrimePageFull19}{ugxProblemFinitePrimePageEmpty19}
+\pastebutton{ugxProblemFinitePrimePageFull19}{\hidepaste}
+\tab{5}\spadcommand{order y\free{y }}
+\indentrel{3}\begin{verbatim}
+   (18)  25
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty19}
+\begin{paste}{ugxProblemFinitePrimePageEmpty19}{ugxProblemFinitePrimePagePatch19}
+\pastebutton{ugxProblemFinitePrimePageEmpty19}{\showpaste}
+\tab{5}\spadcommand{order y\free{y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePagePatch20}
+\begin{paste}{ugxProblemFinitePrimePageFull20}{ugxProblemFinitePrimePageEmpty20}
+\pastebutton{ugxProblemFinitePrimePageFull20}{\hidepaste}
+\tab{5}\spadcommand{order pe\free{pe }}
+\indentrel{3}\begin{verbatim}
+   (19)  100
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFinitePrimePageEmpty20}
+\begin{paste}{ugxProblemFinitePrimePageEmpty20}{ugxProblemFinitePrimePagePatch20}
+\pastebutton{ugxProblemFinitePrimePageEmpty20}{\showpaste}
+\tab{5}\spadcommand{order pe\free{pe }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemFiniteExtensionFinitePage}{ug08.ht}
 {Extensions of Finite Fields}
@@ -40086,6 +102723,280 @@ The degree of the extension is the degree of the polynomial.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemFiniteModulusPagePatch1}
+\begin{paste}{ugxProblemFiniteModulusPageFull1}{ugxProblemFiniteModulusPageEmpty1}
+\pastebutton{ugxProblemFiniteModulusPageFull1}{\hidepaste}
+\tab{5}\spadcommand{GF4096 := FF(2,12);\bound{GF4096 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty1}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty1}{ugxProblemFiniteModulusPagePatch1}
+\pastebutton{ugxProblemFiniteModulusPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{GF4096 := FF(2,12);\bound{GF4096 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch2}
+\begin{paste}{ugxProblemFiniteModulusPageFull2}{ugxProblemFiniteModulusPageEmpty2}
+\pastebutton{ugxProblemFiniteModulusPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a := index(2)$GF4096\bound{a }\free{GF4096 }}
+\indentrel{3}\begin{verbatim}
+   (2)  %CS
+                                Type: FiniteField(2,12)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty2}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty2}{ugxProblemFiniteModulusPagePatch2}
+\pastebutton{ugxProblemFiniteModulusPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a := index(2)$GF4096\bound{a }\free{GF4096 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch3}
+\begin{paste}{ugxProblemFiniteModulusPageFull3}{ugxProblemFiniteModulusPageEmpty3}
+\pastebutton{ugxProblemFiniteModulusPageFull3}{\hidepaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\indentrel{3}\begin{verbatim}
+           5      3
+   (3)  %CS  + %CS  + %CS + 1
+                                Type: FiniteField(2,12)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty3}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty3}{ugxProblemFiniteModulusPagePatch3}
+\pastebutton{ugxProblemFiniteModulusPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch4}
+\begin{paste}{ugxProblemFiniteModulusPageFull4}{ugxProblemFiniteModulusPageEmpty4}
+\pastebutton{ugxProblemFiniteModulusPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b ** 1000\free{b }}
+\indentrel{3}\begin{verbatim}
+           10      9      7      5      4      3
+   (4)  %CS   + %CS  + %CS  + %CS  + %CS  + %CS  + %CS
+                                Type: FiniteField(2,12)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty4}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty4}{ugxProblemFiniteModulusPagePatch4}
+\pastebutton{ugxProblemFiniteModulusPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b ** 1000\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch5}
+\begin{paste}{ugxProblemFiniteModulusPageFull5}{ugxProblemFiniteModulusPageEmpty5}
+\pastebutton{ugxProblemFiniteModulusPageFull5}{\hidepaste}
+\tab{5}\spadcommand{c := a/b\free{a b }\bound{c }}
+\indentrel{3}\begin{verbatim}
+           11      8      7      5      4      3      2
+   (5)  %CS   + %CS  + %CS  + %CS  + %CS  + %CS  + %CS
+                                Type: FiniteField(2,12)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty5}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty5}{ugxProblemFiniteModulusPagePatch5}
+\pastebutton{ugxProblemFiniteModulusPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{c := a/b\free{a b }\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch6}
+\begin{paste}{ugxProblemFiniteModulusPageFull6}{ugxProblemFiniteModulusPageEmpty6}
+\pastebutton{ugxProblemFiniteModulusPageFull6}{\hidepaste}
+\tab{5}\spadcommand{norm c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (6)  1
+                                     Type: PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty6}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty6}{ugxProblemFiniteModulusPagePatch6}
+\pastebutton{ugxProblemFiniteModulusPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{norm c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch7}
+\begin{paste}{ugxProblemFiniteModulusPageFull7}{ugxProblemFiniteModulusPageEmpty7}
+\pastebutton{ugxProblemFiniteModulusPageFull7}{\hidepaste}
+\tab{5}\spadcommand{trace c\free{c }}
+\indentrel{3}\begin{verbatim}
+   (7)  0
+                                     Type: PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty7}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty7}{ugxProblemFiniteModulusPagePatch7}
+\pastebutton{ugxProblemFiniteModulusPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{trace c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch8}
+\begin{paste}{ugxProblemFiniteModulusPageFull8}{ugxProblemFiniteModulusPageEmpty8}
+\pastebutton{ugxProblemFiniteModulusPageFull8}{\hidepaste}
+\tab{5}\spadcommand{dL := discreteLog a\free{a }\bound{dL }}
+\indentrel{3}\begin{verbatim}
+   (8)  1729
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty8}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty8}{ugxProblemFiniteModulusPagePatch8}
+\pastebutton{ugxProblemFiniteModulusPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{dL := discreteLog a\free{a }\bound{dL }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch9}
+\begin{paste}{ugxProblemFiniteModulusPageFull9}{ugxProblemFiniteModulusPageEmpty9}
+\pastebutton{ugxProblemFiniteModulusPageFull9}{\hidepaste}
+\tab{5}\spadcommand{g ** dL\free{dL g }}
+\indentrel{3}\begin{verbatim}
+         1729
+   (9)  g
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty9}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty9}{ugxProblemFiniteModulusPagePatch9}
+\pastebutton{ugxProblemFiniteModulusPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{g ** dL\free{dL g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch10}
+\begin{paste}{ugxProblemFiniteModulusPageFull10}{ugxProblemFiniteModulusPageEmpty10}
+\pastebutton{ugxProblemFiniteModulusPageFull10}{\hidepaste}
+\tab{5}\spadcommand{GF16 := FF(2,4);\bound{GF16 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty10}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty10}{ugxProblemFiniteModulusPagePatch10}
+\pastebutton{ugxProblemFiniteModulusPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{GF16 := FF(2,4);\bound{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch11}
+\begin{paste}{ugxProblemFiniteModulusPageFull11}{ugxProblemFiniteModulusPageEmpty11}
+\pastebutton{ugxProblemFiniteModulusPageFull11}{\hidepaste}
+\tab{5}\spadcommand{GF4096 := FFX(GF16,3);\bound{GF4096x }\free{GF16 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty11}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty11}{ugxProblemFiniteModulusPagePatch11}
+\pastebutton{ugxProblemFiniteModulusPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{GF4096 := FFX(GF16,3);\bound{GF4096x }\free{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch12}
+\begin{paste}{ugxProblemFiniteModulusPageFull12}{ugxProblemFiniteModulusPageEmpty12}
+\pastebutton{ugxProblemFiniteModulusPageFull12}{\hidepaste}
+\tab{5}\spadcommand{r := (random()$GF4096) ** 20\free{GF4096x }\bound{r }}
+\indentrel{3}\begin{verbatim}
+             3              2
+   (12)  (%CT  + %CT + 1)%CU  + %CT %CU
+         Type: FiniteFieldExtension(FiniteField(2,4),3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty12}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty12}{ugxProblemFiniteModulusPagePatch12}
+\pastebutton{ugxProblemFiniteModulusPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{r := (random()$GF4096) ** 20\free{GF4096x }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch13}
+\begin{paste}{ugxProblemFiniteModulusPageFull13}{ugxProblemFiniteModulusPageEmpty13}
+\pastebutton{ugxProblemFiniteModulusPageFull13}{\hidepaste}
+\tab{5}\spadcommand{norm(r)\free{r }}
+\indentrel{3}\begin{verbatim}
+            2
+   (13)  %CT  + %CT
+                                 Type: FiniteField(2,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty13}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty13}{ugxProblemFiniteModulusPagePatch13}
+\pastebutton{ugxProblemFiniteModulusPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{norm(r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch14}
+\begin{paste}{ugxProblemFiniteModulusPageFull14}{ugxProblemFiniteModulusPageEmpty14}
+\pastebutton{ugxProblemFiniteModulusPageFull14}{\hidepaste}
+\tab{5}\spadcommand{GF4 := FF(2,2);\bound{GF4 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty14}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty14}{ugxProblemFiniteModulusPagePatch14}
+\pastebutton{ugxProblemFiniteModulusPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{GF4 := FF(2,2);\bound{GF4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch15}
+\begin{paste}{ugxProblemFiniteModulusPageFull15}{ugxProblemFiniteModulusPageEmpty15}
+\pastebutton{ugxProblemFiniteModulusPageFull15}{\hidepaste}
+\tab{5}\spadcommand{f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4)\free{GF4 }\bound{f }}
+\indentrel{3}\begin{verbatim}
+          6    5             4             2
+   (15)  ?  + ?  + (%CV + 1)?  + (%CV + 1)?  + ? + %CV
+Type: Union(SparseUnivariatePolynomial FiniteField(2,2),...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty15}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty15}{ugxProblemFiniteModulusPagePatch15}
+\pastebutton{ugxProblemFiniteModulusPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4)\free{GF4 }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch16}
+\begin{paste}{ugxProblemFiniteModulusPageFull16}{ugxProblemFiniteModulusPageEmpty16}
+\pastebutton{ugxProblemFiniteModulusPageFull16}{\hidepaste}
+\tab{5}\spadcommand{GF4096 := FFP(GF4,f);\bound{GF4096y }\free{f GF4 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty16}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty16}{ugxProblemFiniteModulusPagePatch16}
+\pastebutton{ugxProblemFiniteModulusPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{GF4096 := FFP(GF4,f);\bound{GF4096y }\free{f GF4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPagePatch17}
+\begin{paste}{ugxProblemFiniteModulusPageFull17}{ugxProblemFiniteModulusPageEmpty17}
+\pastebutton{ugxProblemFiniteModulusPageFull17}{\hidepaste}
+\tab{5}\spadcommand{discreteLog random()$GF4096\free{GF4096y }}
+\indentrel{3}\begin{verbatim}
+   (17)  3370
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteModulusPageEmpty17}
+\begin{paste}{ugxProblemFiniteModulusPageEmpty17}{ugxProblemFiniteModulusPagePatch17}
+\pastebutton{ugxProblemFiniteModulusPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{discreteLog random()$GF4096\free{GF4096y }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemFiniteCyclicPage}{ug08.ht}
 {Cyclic Group Representations}
@@ -40212,6 +103123,215 @@ Let's look at a random element from this field.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemFiniteCyclicPagePatch1}
+\begin{paste}{ugxProblemFiniteCyclicPageFull1}{ugxProblemFiniteCyclicPageEmpty1}
+\pastebutton{ugxProblemFiniteCyclicPageFull1}{\hidepaste}
+\tab{5}\spadcommand{GF81 := FFCG(3,4);\bound{GF81 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty1}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty1}{ugxProblemFiniteCyclicPagePatch1}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{GF81 := FFCG(3,4);\bound{GF81 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch2}
+\begin{paste}{ugxProblemFiniteCyclicPageFull2}{ugxProblemFiniteCyclicPageEmpty2}
+\pastebutton{ugxProblemFiniteCyclicPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a := primitiveElement()$GF81\bound{a }\free{GF81 }}
+\indentrel{3}\begin{verbatim}
+           1
+   (2)  %BF
+                      Type: FiniteFieldCyclicGroup(3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty2}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty2}{ugxProblemFiniteCyclicPagePatch2}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a := primitiveElement()$GF81\bound{a }\free{GF81 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch3}
+\begin{paste}{ugxProblemFiniteCyclicPageFull3}{ugxProblemFiniteCyclicPageEmpty3}
+\pastebutton{ugxProblemFiniteCyclicPageFull3}{\hidepaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\indentrel{3}\begin{verbatim}
+           72
+   (3)  %BF
+                      Type: FiniteFieldCyclicGroup(3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty3}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty3}{ugxProblemFiniteCyclicPagePatch3}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch4}
+\begin{paste}{ugxProblemFiniteCyclicPageFull4}{ugxProblemFiniteCyclicPageEmpty4}
+\pastebutton{ugxProblemFiniteCyclicPageFull4}{\hidepaste}
+\tab{5}\spadcommand{b\free{b }}
+\indentrel{3}\begin{verbatim}
+           72
+   (4)  %BF
+                      Type: FiniteFieldCyclicGroup(3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty4}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty4}{ugxProblemFiniteCyclicPagePatch4}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{b\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch5}
+\begin{paste}{ugxProblemFiniteCyclicPageFull5}{ugxProblemFiniteCyclicPageEmpty5}
+\pastebutton{ugxProblemFiniteCyclicPageFull5}{\hidepaste}
+\tab{5}\spadcommand{discreteLog b\free{b }}
+\indentrel{3}\begin{verbatim}
+   (5)  72
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty5}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty5}{ugxProblemFiniteCyclicPagePatch5}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{discreteLog b\free{b }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch6}
+\begin{paste}{ugxProblemFiniteCyclicPageFull6}{ugxProblemFiniteCyclicPageEmpty6}
+\pastebutton{ugxProblemFiniteCyclicPageFull6}{\hidepaste}
+\tab{5}\spadcommand{GF9 := FF(3,2);\bound{GF9 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty6}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty6}{ugxProblemFiniteCyclicPagePatch6}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{GF9 := FF(3,2);\bound{GF9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch7}
+\begin{paste}{ugxProblemFiniteCyclicPageFull7}{ugxProblemFiniteCyclicPageEmpty7}
+\pastebutton{ugxProblemFiniteCyclicPageFull7}{\hidepaste}
+\tab{5}\spadcommand{GF729 := FFCGX(GF9,3);\bound{GF729 }\free{GF9 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty7}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty7}{ugxProblemFiniteCyclicPagePatch7}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{GF729 := FFCGX(GF9,3);\bound{GF729 }\free{GF9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch8}
+\begin{paste}{ugxProblemFiniteCyclicPageFull8}{ugxProblemFiniteCyclicPageEmpty8}
+\pastebutton{ugxProblemFiniteCyclicPageFull8}{\hidepaste}
+\tab{5}\spadcommand{r := (random()$GF729) ** 20\free{GF729 }\bound{r }}
+\indentrel{3}\begin{verbatim}
+           68
+   (8)  %CN
+Type: FiniteFieldCyclicGroupExtension(FiniteField(3,2),3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty8}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty8}{ugxProblemFiniteCyclicPagePatch8}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{r := (random()$GF729) ** 20\free{GF729 }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch9}
+\begin{paste}{ugxProblemFiniteCyclicPageFull9}{ugxProblemFiniteCyclicPageEmpty9}
+\pastebutton{ugxProblemFiniteCyclicPageFull9}{\hidepaste}
+\tab{5}\spadcommand{trace(r)\free{r }}
+\indentrel{3}\begin{verbatim}
+   (9)  2
+                                 Type: FiniteField(3,2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty9}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty9}{ugxProblemFiniteCyclicPagePatch9}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{trace(r)\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch10}
+\begin{paste}{ugxProblemFiniteCyclicPageFull10}{ugxProblemFiniteCyclicPageEmpty10}
+\pastebutton{ugxProblemFiniteCyclicPageFull10}{\hidepaste}
+\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty10}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty10}{ugxProblemFiniteCyclicPagePatch10}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch11}
+\begin{paste}{ugxProblemFiniteCyclicPageFull11}{ugxProblemFiniteCyclicPageEmpty11}
+\pastebutton{ugxProblemFiniteCyclicPageFull11}{\hidepaste}
+\tab{5}\spadcommand{f := createPrimitivePoly(4)$FFPOLY(GF3)\bound{f }\free{GF3 }}
+\indentrel{3}\begin{verbatim}
+          4
+   (11)  ?  + ? + 2
+          Type: SparseUnivariatePolynomial PrimeField 3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty11}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty11}{ugxProblemFiniteCyclicPagePatch11}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{f := createPrimitivePoly(4)$FFPOLY(GF3)\bound{f }\free{GF3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch12}
+\begin{paste}{ugxProblemFiniteCyclicPageFull12}{ugxProblemFiniteCyclicPageEmpty12}
+\pastebutton{ugxProblemFiniteCyclicPageFull12}{\hidepaste}
+\tab{5}\spadcommand{GF81 := FFCGP(GF3,f);\bound{GF81x }\free{f GF3 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty12}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty12}{ugxProblemFiniteCyclicPagePatch12}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{GF81 := FFCGP(GF3,f);\bound{GF81x }\free{f GF3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPagePatch13}
+\begin{paste}{ugxProblemFiniteCyclicPageFull13}{ugxProblemFiniteCyclicPageEmpty13}
+\pastebutton{ugxProblemFiniteCyclicPageFull13}{\hidepaste}
+\tab{5}\spadcommand{random()$GF81\free{GF81x }}
+\indentrel{3}\begin{verbatim}
+            8
+   (13)  %BF
+Type: FiniteFieldCyclicGroupExtensionByPolynomial(PrimeField 3,?**4+?+2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteCyclicPageEmpty13}
+\begin{paste}{ugxProblemFiniteCyclicPageEmpty13}{ugxProblemFiniteCyclicPagePatch13}
+\pastebutton{ugxProblemFiniteCyclicPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{random()$GF81\free{GF81x }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemFiniteNormalPage}{ug08.ht}
 {Normal Basis Representations}
@@ -40352,6 +103472,221 @@ Let's look at a random element from this field.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemFiniteNormalPagePatch1}
+\begin{paste}{ugxProblemFiniteNormalPageFull1}{ugxProblemFiniteNormalPageEmpty1}
+\pastebutton{ugxProblemFiniteNormalPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := FFNB(3,8)\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  FiniteFieldNormalBasis(3,8)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty1}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty1}{ugxProblemFiniteNormalPagePatch1}
+\pastebutton{ugxProblemFiniteNormalPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := FFNB(3,8)\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch2}
+\begin{paste}{ugxProblemFiniteNormalPageFull2}{ugxProblemFiniteNormalPageEmpty2}
+\pastebutton{ugxProblemFiniteNormalPageFull2}{\hidepaste}
+\tab{5}\spadcommand{a := normalElement()$K\bound{a }\free{K }}
+\indentrel{3}\begin{verbatim}
+   (2)  %CO
+                      Type: FiniteFieldNormalBasis(3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty2}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty2}{ugxProblemFiniteNormalPagePatch2}
+\pastebutton{ugxProblemFiniteNormalPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{a := normalElement()$K\bound{a }\free{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch3}
+\begin{paste}{ugxProblemFiniteNormalPageFull3}{ugxProblemFiniteNormalPageEmpty3}
+\pastebutton{ugxProblemFiniteNormalPageFull3}{\hidepaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\indentrel{3}\begin{verbatim}
+             7       5
+            q       q       q
+   (3)  2%CO   + %CO   + %CO
+                      Type: FiniteFieldNormalBasis(3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty3}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty3}{ugxProblemFiniteNormalPagePatch3}
+\pastebutton{ugxProblemFiniteNormalPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch4}
+\begin{paste}{ugxProblemFiniteNormalPageFull4}{ugxProblemFiniteNormalPageEmpty4}
+\pastebutton{ugxProblemFiniteNormalPageFull4}{\hidepaste}
+\tab{5}\spadcommand{GF9 := FFNB(3,2);\bound{GF9 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty4}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty4}{ugxProblemFiniteNormalPagePatch4}
+\pastebutton{ugxProblemFiniteNormalPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{GF9 := FFNB(3,2);\bound{GF9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch5}
+\begin{paste}{ugxProblemFiniteNormalPageFull5}{ugxProblemFiniteNormalPageEmpty5}
+\pastebutton{ugxProblemFiniteNormalPageFull5}{\hidepaste}
+\tab{5}\spadcommand{GF729 := FFNBX(GF9,3);\bound{GF729 }\free{GF9 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty5}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty5}{ugxProblemFiniteNormalPagePatch5}
+\pastebutton{ugxProblemFiniteNormalPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{GF729 := FFNBX(GF9,3);\bound{GF729 }\free{GF9 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch6}
+\begin{paste}{ugxProblemFiniteNormalPageFull6}{ugxProblemFiniteNormalPageEmpty6}
+\pastebutton{ugxProblemFiniteNormalPageFull6}{\hidepaste}
+\tab{5}\spadcommand{r := random()$GF729\bound{r }\free{GF729 }}
+\indentrel{3}\begin{verbatim}
+                 2
+            q   q
+   (6)  2%CP %CQ
+Type: FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty6}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty6}{ugxProblemFiniteNormalPagePatch6}
+\pastebutton{ugxProblemFiniteNormalPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{r := random()$GF729\bound{r }\free{GF729 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch7}
+\begin{paste}{ugxProblemFiniteNormalPageFull7}{ugxProblemFiniteNormalPageEmpty7}
+\pastebutton{ugxProblemFiniteNormalPageFull7}{\hidepaste}
+\tab{5}\spadcommand{r + r**3 + r**9 + r**27\free{r }}
+\indentrel{3}\begin{verbatim}
+                          2
+             q           q            q       q
+   (7)  (2%CP  + 2%CP)%CQ   + 2%CP %CQ  + 2%CP %CQ
+Type: FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty7}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty7}{ugxProblemFiniteNormalPagePatch7}
+\pastebutton{ugxProblemFiniteNormalPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{r + r**3 + r**9 + r**27\free{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch8}
+\begin{paste}{ugxProblemFiniteNormalPageFull8}{ugxProblemFiniteNormalPageEmpty8}
+\pastebutton{ugxProblemFiniteNormalPageFull8}{\hidepaste}
+\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty8}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty8}{ugxProblemFiniteNormalPagePatch8}
+\pastebutton{ugxProblemFiniteNormalPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch9}
+\begin{paste}{ugxProblemFiniteNormalPageFull9}{ugxProblemFiniteNormalPageEmpty9}
+\pastebutton{ugxProblemFiniteNormalPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f := createNormalPoly(4)$FFPOLY(GF3)\free{GF3 }\bound{f }}
+\indentrel{3}\begin{verbatim}
+         4     3
+   (9)  ?  + 2?  + 2
+          Type: SparseUnivariatePolynomial PrimeField 3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty9}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty9}{ugxProblemFiniteNormalPagePatch9}
+\pastebutton{ugxProblemFiniteNormalPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f := createNormalPoly(4)$FFPOLY(GF3)\free{GF3 }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch10}
+\begin{paste}{ugxProblemFiniteNormalPageFull10}{ugxProblemFiniteNormalPageEmpty10}
+\pastebutton{ugxProblemFiniteNormalPageFull10}{\hidepaste}
+\tab{5}\spadcommand{GF81 := FFNBP(GF3,f);\bound{GF81 }\free{f GF3 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty10}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty10}{ugxProblemFiniteNormalPagePatch10}
+\pastebutton{ugxProblemFiniteNormalPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{GF81 := FFNBP(GF3,f);\bound{GF81 }\free{f GF3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch11}
+\begin{paste}{ugxProblemFiniteNormalPageFull11}{ugxProblemFiniteNormalPageEmpty11}
+\pastebutton{ugxProblemFiniteNormalPageFull11}{\hidepaste}
+\tab{5}\spadcommand{r := random()$GF81\free{GF81 }\bound{r1 }}
+\indentrel{3}\begin{verbatim}
+             3       2
+            q       q       q
+   (11)  %CR   + %CR   + %CR
+Type: FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty11}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty11}{ugxProblemFiniteNormalPagePatch11}
+\pastebutton{ugxProblemFiniteNormalPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{r := random()$GF81\free{GF81 }\bound{r1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch12}
+\begin{paste}{ugxProblemFiniteNormalPageFull12}{ugxProblemFiniteNormalPageEmpty12}
+\pastebutton{ugxProblemFiniteNormalPageFull12}{\hidepaste}
+\tab{5}\spadcommand{r * r**3 * r**9 * r**27\free{r1 }}
+\indentrel{3}\begin{verbatim}
+              3        2
+             q        q        q
+   (12)  2%CR   + 2%CR   + 2%CR  + 2%CR
+Type: FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty12}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty12}{ugxProblemFiniteNormalPagePatch12}
+\pastebutton{ugxProblemFiniteNormalPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{r * r**3 * r**9 * r**27\free{r1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPagePatch13}
+\begin{paste}{ugxProblemFiniteNormalPageFull13}{ugxProblemFiniteNormalPageEmpty13}
+\pastebutton{ugxProblemFiniteNormalPageFull13}{\hidepaste}
+\tab{5}\spadcommand{norm r\free{r1 }}
+\indentrel{3}\begin{verbatim}
+   (13)  2
+                                     Type: PrimeField 3
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteNormalPageEmpty13}
+\begin{paste}{ugxProblemFiniteNormalPageEmpty13}{ugxProblemFiniteNormalPagePatch13}
+\pastebutton{ugxProblemFiniteNormalPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{norm r\free{r1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemFiniteConversionPage}{ug08.ht}
 {Conversion Operations for Finite Fields}
@@ -40488,6 +103823,292 @@ Check the arithmetic again.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugxProblemFiniteConversionPagePatch1}
+\begin{paste}{ugxProblemFiniteConversionPageFull1}{ugxProblemFiniteConversionPageEmpty1}
+\pastebutton{ugxProblemFiniteConversionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{K := PrimeField 3\bound{K }}
+\indentrel{3}\begin{verbatim}
+   (1)  PrimeField 3
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty1}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty1}{ugxProblemFiniteConversionPagePatch1}
+\pastebutton{ugxProblemFiniteConversionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{K := PrimeField 3\bound{K }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch2}
+\begin{paste}{ugxProblemFiniteConversionPageFull2}{ugxProblemFiniteConversionPageEmpty2}
+\pastebutton{ugxProblemFiniteConversionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{(m,n) := (4,8)\bound{m n }}
+\indentrel{3}\begin{verbatim}
+   (2)  8
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty2}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty2}{ugxProblemFiniteConversionPagePatch2}
+\pastebutton{ugxProblemFiniteConversionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{(m,n) := (4,8)\bound{m n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch3}
+\begin{paste}{ugxProblemFiniteConversionPageFull3}{ugxProblemFiniteConversionPageEmpty3}
+\pastebutton{ugxProblemFiniteConversionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{Km := FiniteFieldExtension(K,m)\bound{Km }\free{K m }}
+\indentrel{3}\begin{verbatim}
+   (3)  FiniteFieldExtension(PrimeField 3,4)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty3}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty3}{ugxProblemFiniteConversionPagePatch3}
+\pastebutton{ugxProblemFiniteConversionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{Km := FiniteFieldExtension(K,m)\bound{Km }\free{K m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch4}
+\begin{paste}{ugxProblemFiniteConversionPageFull4}{ugxProblemFiniteConversionPageEmpty4}
+\pastebutton{ugxProblemFiniteConversionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{Kn := FiniteFieldExtension(K,n)\bound{Kn }\free{K n }}
+\indentrel{3}\begin{verbatim}
+   (4)  FiniteFieldExtension(PrimeField 3,8)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty4}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty4}{ugxProblemFiniteConversionPagePatch4}
+\pastebutton{ugxProblemFiniteConversionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{Kn := FiniteFieldExtension(K,n)\bound{Kn }\free{K n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch5}
+\begin{paste}{ugxProblemFiniteConversionPageFull5}{ugxProblemFiniteConversionPageEmpty5}
+\pastebutton{ugxProblemFiniteConversionPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a1 := random()$Km\bound{a1 }\free{Km }}
+\indentrel{3}\begin{verbatim}
+            3       2
+   (5)  2%BD  + 2%BD  + 2%BD + 1
+             Type: FiniteFieldExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty5}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty5}{ugxProblemFiniteConversionPagePatch5}
+\pastebutton{ugxProblemFiniteConversionPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a1 := random()$Km\bound{a1 }\free{Km }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch6}
+\begin{paste}{ugxProblemFiniteConversionPageFull6}{ugxProblemFiniteConversionPageEmpty6}
+\pastebutton{ugxProblemFiniteConversionPageFull6}{\hidepaste}
+\tab{5}\spadcommand{b1 := random()$Km\bound{b1 }\free{Km }}
+\indentrel{3}\begin{verbatim}
+           3      2
+   (6)  %BD  + %BD  + 2%BD + 2
+             Type: FiniteFieldExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty6}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty6}{ugxProblemFiniteConversionPagePatch6}
+\pastebutton{ugxProblemFiniteConversionPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{b1 := random()$Km\bound{b1 }\free{Km }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch7}
+\begin{paste}{ugxProblemFiniteConversionPageFull7}{ugxProblemFiniteConversionPageEmpty7}
+\pastebutton{ugxProblemFiniteConversionPageFull7}{\hidepaste}
+\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a2 }\free{a1 Kn }}
+\indentrel{3}\begin{verbatim}
+            6
+   (7)  2%BE  + 1
+             Type: FiniteFieldExtension(PrimeField 3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty7}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty7}{ugxProblemFiniteConversionPagePatch7}
+\pastebutton{ugxProblemFiniteConversionPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a2 }\free{a1 Kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch8}
+\begin{paste}{ugxProblemFiniteConversionPageFull8}{ugxProblemFiniteConversionPageEmpty8}
+\pastebutton{ugxProblemFiniteConversionPageFull8}{\hidepaste}
+\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b2 }\free{b1 Kn }}
+\indentrel{3}\begin{verbatim}
+            6       4      2
+   (8)  2%BE  + 2%BE  + %BE  + 2
+             Type: FiniteFieldExtension(PrimeField 3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty8}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty8}{ugxProblemFiniteConversionPagePatch8}
+\pastebutton{ugxProblemFiniteConversionPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b2 }\free{b1 Kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch9}
+\begin{paste}{ugxProblemFiniteConversionPageFull9}{ugxProblemFiniteConversionPageEmpty9}
+\pastebutton{ugxProblemFiniteConversionPageFull9}{\hidepaste}
+\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
+\indentrel{3}\begin{verbatim}
+   (9)  0
+             Type: FiniteFieldExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty9}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty9}{ugxProblemFiniteConversionPagePatch9}
+\pastebutton{ugxProblemFiniteConversionPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch10}
+\begin{paste}{ugxProblemFiniteConversionPageFull10}{ugxProblemFiniteConversionPageEmpty10}
+\pastebutton{ugxProblemFiniteConversionPageFull10}{\hidepaste}
+\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
+\indentrel{3}\begin{verbatim}
+   (10)  0
+             Type: FiniteFieldExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty10}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty10}{ugxProblemFiniteConversionPagePatch10}
+\pastebutton{ugxProblemFiniteConversionPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch11}
+\begin{paste}{ugxProblemFiniteConversionPageFull11}{ugxProblemFiniteConversionPageEmpty11}
+\pastebutton{ugxProblemFiniteConversionPageFull11}{\hidepaste}
+\tab{5}\spadcommand{Km := FFCGX(K,m)\bound{Km2 }\free{K m }}
+\indentrel{3}\begin{verbatim}
+   (11)  FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty11}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty11}{ugxProblemFiniteConversionPagePatch11}
+\pastebutton{ugxProblemFiniteConversionPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{Km := FFCGX(K,m)\bound{Km2 }\free{K m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch12}
+\begin{paste}{ugxProblemFiniteConversionPageFull12}{ugxProblemFiniteConversionPageEmpty12}
+\pastebutton{ugxProblemFiniteConversionPageFull12}{\hidepaste}
+\tab{5}\spadcommand{Kn := FFNBX(K,n)\bound{Kn2 }\free{K n }}
+\indentrel{3}\begin{verbatim}
+   (12)  FiniteFieldNormalBasisExtension(PrimeField 3,8)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty12}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty12}{ugxProblemFiniteConversionPagePatch12}
+\pastebutton{ugxProblemFiniteConversionPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{Kn := FFNBX(K,n)\bound{Kn2 }\free{K n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch13}
+\begin{paste}{ugxProblemFiniteConversionPageFull13}{ugxProblemFiniteConversionPageEmpty13}
+\pastebutton{ugxProblemFiniteConversionPageFull13}{\hidepaste}
+\tab{5}\spadcommand{(a1,b1) := (random()$Km,random()$Km)\bound{a12 b12 }\free{Km2 }}
+\indentrel{3}\begin{verbatim}
+            13
+   (13)  %BF
+  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty13}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty13}{ugxProblemFiniteConversionPagePatch13}
+\pastebutton{ugxProblemFiniteConversionPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{(a1,b1) := (random()$Km,random()$Km)\bound{a12 b12 }\free{Km2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch14}
+\begin{paste}{ugxProblemFiniteConversionPageFull14}{ugxProblemFiniteConversionPageEmpty14}
+\pastebutton{ugxProblemFiniteConversionPageFull14}{\hidepaste}
+\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a22 }\free{a12 Kn2 }}
+\indentrel{3}\begin{verbatim}
+   (14)
+        6        5        4        2
+       q        q        q        q        q
+   2%BG   + 2%BG   + 2%BG   + 2%BG   + 2%BG  + 2%BG
+  Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty14}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty14}{ugxProblemFiniteConversionPagePatch14}
+\pastebutton{ugxProblemFiniteConversionPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a22 }\free{a12 Kn2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch15}
+\begin{paste}{ugxProblemFiniteConversionPageFull15}{ugxProblemFiniteConversionPageEmpty15}
+\pastebutton{ugxProblemFiniteConversionPageFull15}{\hidepaste}
+\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b22 }\free{b12 Kn2 }}
+\indentrel{3}\begin{verbatim}
+   (15)
+          7       6       5       4        3       2
+         q       q       q       q        q       q
+     2%BG   + %BG   + %BG   + %BG   + 2%BG   + %BG
+   + 
+        q
+     %BG  + %BG
+  Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty15}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty15}{ugxProblemFiniteConversionPagePatch15}
+\pastebutton{ugxProblemFiniteConversionPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b22 }\free{b12 Kn2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch16}
+\begin{paste}{ugxProblemFiniteConversionPageFull16}{ugxProblemFiniteConversionPageEmpty16}
+\pastebutton{ugxProblemFiniteConversionPageFull16}{\hidepaste}
+\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
+\indentrel{3}\begin{verbatim}
+   (16)  0
+  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty16}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty16}{ugxProblemFiniteConversionPagePatch16}
+\pastebutton{ugxProblemFiniteConversionPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPagePatch17}
+\begin{paste}{ugxProblemFiniteConversionPageFull17}{ugxProblemFiniteConversionPageEmpty17}
+\pastebutton{ugxProblemFiniteConversionPageFull17}{\hidepaste}
+\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
+\indentrel{3}\begin{verbatim}
+   (17)  0
+  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteConversionPageEmpty17}
+\begin{paste}{ugxProblemFiniteConversionPageEmpty17}{ugxProblemFiniteConversionPagePatch17}
+\pastebutton{ugxProblemFiniteConversionPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugxProblemFiniteUtilityPage}{ug08.ht}
 {Utility Operations for Finite Fields}
@@ -40784,8 +104405,544 @@ We compute a root of \axiom{f}.
 \autobuttons
 \end{page}
 
-@ \pagehead{ugProblemIdealPage}{ug08.ht}
-{Primary Decomposition of Ideals} 
+\begin{patch}{ugxProblemFiniteUtilityPagePatch1}
+\begin{paste}{ugxProblemFiniteUtilityPageFull1}{ugxProblemFiniteUtilityPageEmpty1}
+\pastebutton{ugxProblemFiniteUtilityPageFull1}{\hidepaste}
+\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty1}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty1}{ugxProblemFiniteUtilityPagePatch1}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch2}
+\begin{paste}{ugxProblemFiniteUtilityPageFull2}{ugxProblemFiniteUtilityPageEmpty2}
+\pastebutton{ugxProblemFiniteUtilityPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f := createIrreduciblePoly(8)$FFPOLY(GF5)\bound{f }\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+         8    4
+   (2)  ?  + ?  + 2
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty2}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty2}{ugxProblemFiniteUtilityPagePatch2}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f := createIrreduciblePoly(8)$FFPOLY(GF5)\bound{f }\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch3}
+\begin{paste}{ugxProblemFiniteUtilityPageFull3}{ugxProblemFiniteUtilityPageEmpty3}
+\pastebutton{ugxProblemFiniteUtilityPageFull3}{\hidepaste}
+\tab{5}\spadcommand{primitive?(f)$FFPOLY(GF5)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (3)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty3}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty3}{ugxProblemFiniteUtilityPagePatch3}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{primitive?(f)$FFPOLY(GF5)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch4}
+\begin{paste}{ugxProblemFiniteUtilityPageFull4}{ugxProblemFiniteUtilityPageEmpty4}
+\pastebutton{ugxProblemFiniteUtilityPageFull4}{\hidepaste}
+\tab{5}\spadcommand{normal?(f)$FFPOLY(GF5)\free{f }}
+\indentrel{3}\begin{verbatim}
+   (4)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty4}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty4}{ugxProblemFiniteUtilityPagePatch4}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{normal?(f)$FFPOLY(GF5)\free{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch5}
+\begin{paste}{ugxProblemFiniteUtilityPageFull5}{ugxProblemFiniteUtilityPageEmpty5}
+\pastebutton{ugxProblemFiniteUtilityPageFull5}{\hidepaste}
+\tab{5}\spadcommand{p := createPrimitivePoly(8)$FFPOLY(GF5)\bound{p }\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+         8    3    2
+   (5)  ?  + ?  + ?  + ? + 2
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty5}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty5}{ugxProblemFiniteUtilityPagePatch5}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{p := createPrimitivePoly(8)$FFPOLY(GF5)\bound{p }\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch6}
+\begin{paste}{ugxProblemFiniteUtilityPageFull6}{ugxProblemFiniteUtilityPageEmpty6}
+\pastebutton{ugxProblemFiniteUtilityPageFull6}{\hidepaste}
+\tab{5}\spadcommand{primitive?(p)$FFPOLY(GF5)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (6)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty6}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty6}{ugxProblemFiniteUtilityPagePatch6}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{primitive?(p)$FFPOLY(GF5)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch7}
+\begin{paste}{ugxProblemFiniteUtilityPageFull7}{ugxProblemFiniteUtilityPageEmpty7}
+\pastebutton{ugxProblemFiniteUtilityPageFull7}{\hidepaste}
+\tab{5}\spadcommand{normal?(p)$FFPOLY(GF5)\free{p }}
+\indentrel{3}\begin{verbatim}
+   (7)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty7}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty7}{ugxProblemFiniteUtilityPagePatch7}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{normal?(p)$FFPOLY(GF5)\free{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch8}
+\begin{paste}{ugxProblemFiniteUtilityPageFull8}{ugxProblemFiniteUtilityPageEmpty8}
+\pastebutton{ugxProblemFiniteUtilityPageFull8}{\hidepaste}
+\tab{5}\spadcommand{n := createNormalPoly(8)$FFPOLY(GF5)\bound{n }\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+         8     7    3
+   (8)  ?  + 4?  + ?  + 1
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty8}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty8}{ugxProblemFiniteUtilityPagePatch8}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{n := createNormalPoly(8)$FFPOLY(GF5)\bound{n }\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch9}
+\begin{paste}{ugxProblemFiniteUtilityPageFull9}{ugxProblemFiniteUtilityPageEmpty9}
+\pastebutton{ugxProblemFiniteUtilityPageFull9}{\hidepaste}
+\tab{5}\spadcommand{primitive?(n)$FFPOLY(GF5)\free{n }}
+\indentrel{3}\begin{verbatim}
+   (9)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty9}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty9}{ugxProblemFiniteUtilityPagePatch9}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{primitive?(n)$FFPOLY(GF5)\free{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch10}
+\begin{paste}{ugxProblemFiniteUtilityPageFull10}{ugxProblemFiniteUtilityPageEmpty10}
+\pastebutton{ugxProblemFiniteUtilityPageFull10}{\hidepaste}
+\tab{5}\spadcommand{createPrimitiveNormalPoly(8)$FFPOLY(GF5)\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+          8     7     5
+   (10)  ?  + 4?  + 2?  + 2
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty10}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty10}{ugxProblemFiniteUtilityPagePatch10}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{createPrimitiveNormalPoly(8)$FFPOLY(GF5)\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch11}
+\begin{paste}{ugxProblemFiniteUtilityPageFull11}{ugxProblemFiniteUtilityPageEmpty11}
+\pastebutton{ugxProblemFiniteUtilityPageFull11}{\hidepaste}
+\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty11}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty11}{ugxProblemFiniteUtilityPagePatch11}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch12}
+\begin{paste}{ugxProblemFiniteUtilityPageFull12}{ugxProblemFiniteUtilityPageEmpty12}
+\pastebutton{ugxProblemFiniteUtilityPageFull12}{\hidepaste}
+\tab{5}\spadcommand{h := monomial(1,8)$SUP(GF5)\bound{h }\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+          8
+   (12)  ?
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty12}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty12}{ugxProblemFiniteUtilityPagePatch12}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{h := monomial(1,8)$SUP(GF5)\bound{h }\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch13}
+\begin{paste}{ugxProblemFiniteUtilityPageFull13}{ugxProblemFiniteUtilityPageEmpty13}
+\pastebutton{ugxProblemFiniteUtilityPageFull13}{\hidepaste}
+\tab{5}\spadcommand{nh := nextIrreduciblePoly(h)$FFPOLY(GF5)\bound{nh }\free{h }}
+\indentrel{3}\begin{verbatim}
+          8
+   (13)  ?  + 2
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty13}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty13}{ugxProblemFiniteUtilityPagePatch13}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{nh := nextIrreduciblePoly(h)$FFPOLY(GF5)\bound{nh }\free{h }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch14}
+\begin{paste}{ugxProblemFiniteUtilityPageFull14}{ugxProblemFiniteUtilityPageEmpty14}
+\pastebutton{ugxProblemFiniteUtilityPageFull14}{\hidepaste}
+\tab{5}\spadcommand{createIrreduciblePoly(3)$FFPOLY(GF5)\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+          3
+   (14)  ?  + ? + 1
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty14}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty14}{ugxProblemFiniteUtilityPagePatch14}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{createIrreduciblePoly(3)$FFPOLY(GF5)\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch15}
+\begin{paste}{ugxProblemFiniteUtilityPageFull15}{ugxProblemFiniteUtilityPageEmpty15}
+\pastebutton{ugxProblemFiniteUtilityPageFull15}{\hidepaste}
+\tab{5}\spadcommand{nh := nextIrreduciblePoly(nh)$FFPOLY(GF5)\free{nh }}
+\indentrel{3}\begin{verbatim}
+          8
+   (15)  ?  + 3
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty15}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty15}{ugxProblemFiniteUtilityPagePatch15}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{nh := nextIrreduciblePoly(nh)$FFPOLY(GF5)\free{nh }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch16}
+\begin{paste}{ugxProblemFiniteUtilityPageFull16}{ugxProblemFiniteUtilityPageEmpty16}
+\pastebutton{ugxProblemFiniteUtilityPageFull16}{\hidepaste}
+\tab{5}\spadcommand{numberOfIrreduciblePoly(5)$FFPOLY(GF5)\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+   (16)  624
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty16}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty16}{ugxProblemFiniteUtilityPagePatch16}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{numberOfIrreduciblePoly(5)$FFPOLY(GF5)\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch17}
+\begin{paste}{ugxProblemFiniteUtilityPageFull17}{ugxProblemFiniteUtilityPageEmpty17}
+\pastebutton{ugxProblemFiniteUtilityPageFull17}{\hidepaste}
+\tab{5}\spadcommand{numberOfPrimitivePoly(3)$FFPOLY(GF5)\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+   (17)  20
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty17}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty17}{ugxProblemFiniteUtilityPagePatch17}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{numberOfPrimitivePoly(3)$FFPOLY(GF5)\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch18}
+\begin{paste}{ugxProblemFiniteUtilityPageFull18}{ugxProblemFiniteUtilityPageEmpty18}
+\pastebutton{ugxProblemFiniteUtilityPageFull18}{\hidepaste}
+\tab{5}\spadcommand{m := monomial(1,1)$SUP(GF5)\bound{m }\free{GF5 }}
+\indentrel{3}\begin{verbatim}
+   (18)  ?
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty18}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty18}{ugxProblemFiniteUtilityPagePatch18}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{m := monomial(1,1)$SUP(GF5)\bound{m }\free{GF5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch19}
+\begin{paste}{ugxProblemFiniteUtilityPageFull19}{ugxProblemFiniteUtilityPageEmpty19}
+\pastebutton{ugxProblemFiniteUtilityPageFull19}{\hidepaste}
+\tab{5}\spadcommand{f := m**3 + 4*m**2 + m + 2\bound{fx }\free{m }}
+\indentrel{3}\begin{verbatim}
+          3     2
+   (19)  ?  + 4?  + ? + 2
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty19}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty19}{ugxProblemFiniteUtilityPagePatch19}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{f := m**3 + 4*m**2 + m + 2\bound{fx }\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch20}
+\begin{paste}{ugxProblemFiniteUtilityPageFull20}{ugxProblemFiniteUtilityPageEmpty20}
+\pastebutton{ugxProblemFiniteUtilityPageFull20}{\hidepaste}
+\tab{5}\spadcommand{f1 := nextPrimitivePoly(f)$FFPOLY(GF5)\free{fx }\bound{f1 }}
+\indentrel{3}\begin{verbatim}
+          3     2
+   (20)  ?  + 4?  + 4? + 2
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty20}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty20}{ugxProblemFiniteUtilityPagePatch20}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{f1 := nextPrimitivePoly(f)$FFPOLY(GF5)\free{fx }\bound{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch21}
+\begin{paste}{ugxProblemFiniteUtilityPageFull21}{ugxProblemFiniteUtilityPageEmpty21}
+\pastebutton{ugxProblemFiniteUtilityPageFull21}{\hidepaste}
+\tab{5}\spadcommand{nextPrimitivePoly(f1)$FFPOLY(GF5)\free{f1 }}
+\indentrel{3}\begin{verbatim}
+          3     2
+   (21)  ?  + 2?  + 3
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty21}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty21}{ugxProblemFiniteUtilityPagePatch21}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{nextPrimitivePoly(f1)$FFPOLY(GF5)\free{f1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch22}
+\begin{paste}{ugxProblemFiniteUtilityPageFull22}{ugxProblemFiniteUtilityPageEmpty22}
+\pastebutton{ugxProblemFiniteUtilityPageFull22}{\hidepaste}
+\tab{5}\spadcommand{f := m**3 + m**2 + 4*m + 1\bound{fy }\free{m }}
+\indentrel{3}\begin{verbatim}
+          3    2
+   (22)  ?  + ?  + 4? + 1
+          Type: SparseUnivariatePolynomial PrimeField 5
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty22}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty22}{ugxProblemFiniteUtilityPagePatch22}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{f := m**3 + m**2 + 4*m + 1\bound{fy }\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch23}
+\begin{paste}{ugxProblemFiniteUtilityPageFull23}{ugxProblemFiniteUtilityPageEmpty23}
+\pastebutton{ugxProblemFiniteUtilityPageFull23}{\hidepaste}
+\tab{5}\spadcommand{f1 := nextNormalPoly(f)$FFPOLY(GF5)\free{fy }\bound{f1y }}
+\indentrel{3}\begin{verbatim}
+          3    2
+   (23)  ?  + ?  + 4? + 3
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty23}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty23}{ugxProblemFiniteUtilityPagePatch23}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{f1 := nextNormalPoly(f)$FFPOLY(GF5)\free{fy }\bound{f1y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch24}
+\begin{paste}{ugxProblemFiniteUtilityPageFull24}{ugxProblemFiniteUtilityPageEmpty24}
+\pastebutton{ugxProblemFiniteUtilityPageFull24}{\hidepaste}
+\tab{5}\spadcommand{nextNormalPoly(f1)$FFPOLY(GF5)\free{f1y }}
+\indentrel{3}\begin{verbatim}
+          3     2
+   (24)  ?  + 2?  + 1
+Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty24}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty24}{ugxProblemFiniteUtilityPagePatch24}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{nextNormalPoly(f1)$FFPOLY(GF5)\free{f1y }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch25}
+\begin{paste}{ugxProblemFiniteUtilityPageFull25}{ugxProblemFiniteUtilityPageEmpty25}
+\pastebutton{ugxProblemFiniteUtilityPageFull25}{\hidepaste}
+\tab{5}\spadcommand{GF16 := FFX(FFX(PF 2,2),2);\bound{GF16 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty25}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty25}{ugxProblemFiniteUtilityPagePatch25}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{GF16 := FFX(FFX(PF 2,2),2);\bound{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch26}
+\begin{paste}{ugxProblemFiniteUtilityPageFull26}{ugxProblemFiniteUtilityPageEmpty26}
+\pastebutton{ugxProblemFiniteUtilityPageFull26}{\hidepaste}
+\tab{5}\spadcommand{createIrreduciblePoly(5)$FFPOLY(GF16)\free{GF16 }}
+\indentrel{3}\begin{verbatim}
+          5
+   (26)  ?  + %CZ
+Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty26}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty26}{ugxProblemFiniteUtilityPagePatch26}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{createIrreduciblePoly(5)$FFPOLY(GF16)\free{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch27}
+\begin{paste}{ugxProblemFiniteUtilityPageFull27}{ugxProblemFiniteUtilityPageEmpty27}
+\pastebutton{ugxProblemFiniteUtilityPageFull27}{\hidepaste}
+\tab{5}\spadcommand{random(5)$FFPOLY(GF16)\free{GF16 }}
+\indentrel{3}\begin{verbatim}
+   (27)
+      5             4                            3
+     ?  + (%CV + 1)?  + ((%CV + 1)%CZ + %CV + 1)?
+   + 
+               2
+     (%CV + 1)?  + ((%CV + 1)%CZ + %CV + 1)?
+   + 
+     (%CV + 1)%CZ + 1
+Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty27}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty27}{ugxProblemFiniteUtilityPagePatch27}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{random(5)$FFPOLY(GF16)\free{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch28}
+\begin{paste}{ugxProblemFiniteUtilityPageFull28}{ugxProblemFiniteUtilityPageEmpty28}
+\pastebutton{ugxProblemFiniteUtilityPageFull28}{\hidepaste}
+\tab{5}\spadcommand{random(3,9)$FFPOLY(GF16)\free{GF16 }}
+\indentrel{3}\begin{verbatim}
+   (28)
+      4                   3                       2
+     ?  + (%CZ + %CV + 1)?  + (%CV %CZ + %CV + 1)?
+   + 
+     (%CZ + %CV)? + (%CV + 1)%CZ
+Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty28}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty28}{ugxProblemFiniteUtilityPagePatch28}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{random(3,9)$FFPOLY(GF16)\free{GF16 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch29}
+\begin{paste}{ugxProblemFiniteUtilityPageFull29}{ugxProblemFiniteUtilityPageEmpty29}
+\pastebutton{ugxProblemFiniteUtilityPageFull29}{\hidepaste}
+\tab{5}\spadcommand{GF2 := PrimeField 2;\bound{GF2 }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty29}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty29}{ugxProblemFiniteUtilityPagePatch29}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{GF2 := PrimeField 2;\bound{GF2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch30}
+\begin{paste}{ugxProblemFiniteUtilityPageFull30}{ugxProblemFiniteUtilityPageEmpty30}
+\pastebutton{ugxProblemFiniteUtilityPageFull30}{\hidepaste}
+\tab{5}\spadcommand{F := FFX(GF2,12)\bound{F }\free{GF2 }}
+\indentrel{3}\begin{verbatim}
+   (30)  FiniteFieldExtension(PrimeField 2,12)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty30}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty30}{ugxProblemFiniteUtilityPagePatch30}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{F := FFX(GF2,12)\bound{F }\free{GF2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch31}
+\begin{paste}{ugxProblemFiniteUtilityPageFull31}{ugxProblemFiniteUtilityPageEmpty31}
+\pastebutton{ugxProblemFiniteUtilityPageFull31}{\hidepaste}
+\tab{5}\spadcommand{f := createIrreduciblePoly(6)$FFPOLY(GF2)\bound{fz }\free{GF2 }}
+\indentrel{3}\begin{verbatim}
+          6
+   (31)  ?  + ? + 1
+          Type: SparseUnivariatePolynomial PrimeField 2
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty31}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty31}{ugxProblemFiniteUtilityPagePatch31}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{f := createIrreduciblePoly(6)$FFPOLY(GF2)\bound{fz }\free{GF2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPagePatch32}
+\begin{paste}{ugxProblemFiniteUtilityPageFull32}{ugxProblemFiniteUtilityPageEmpty32}
+\pastebutton{ugxProblemFiniteUtilityPageFull32}{\hidepaste}
+\tab{5}\spadcommand{root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2)\free{F GF2 fz }\bound{root }}
+\indentrel{3}\begin{verbatim}
+            11      8      7      5
+   (32)  %CS   + %CS  + %CS  + %CS  + %CS + 1
+            Type: FiniteFieldExtension(PrimeField 2,12)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugxProblemFiniteUtilityPageEmpty32}
+\begin{paste}{ugxProblemFiniteUtilityPageEmpty32}{ugxProblemFiniteUtilityPagePatch32}
+\pastebutton{ugxProblemFiniteUtilityPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2)\free{F GF2 fz }\bound{root }}
+\end{paste}\end{patch}
+
+@ 
+\pagehead{ugProblemIdealPage}{ug08.ht}{Primary Decomposition of Ideals} 
 <<ug08.ht>>= 
 \begin{page}{ugProblemIdealPage}{8.12. Primary Decomposition of Ideals} 
 \beginscroll 
@@ -40909,6 +105066,290 @@ Their intersection is equal to the radical of the ideal of \axiom{l}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemIdealPagePatch1}
+\begin{paste}{ugProblemIdealPageFull1}{ugProblemIdealPageEmpty1}
+\pastebutton{ugProblemIdealPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(n,m) : List DMP([x,y],FRAC INT)\bound{nm }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty1}
+\begin{paste}{ugProblemIdealPageEmpty1}{ugProblemIdealPagePatch1}
+\pastebutton{ugProblemIdealPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(n,m) : List DMP([x,y],FRAC INT)\bound{nm }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch2}
+\begin{paste}{ugProblemIdealPageFull2}{ugProblemIdealPageEmpty2}
+\pastebutton{ugProblemIdealPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := [x**2+y**2-1]\free{nm }\bound{m }}
+\indentrel{3}\begin{verbatim}
+          2    2
+   (2)  [x  + y  - 1]
+Type: List DistributedMultivariatePolynomial([x,y],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty2}
+\begin{paste}{ugProblemIdealPageEmpty2}{ugProblemIdealPagePatch2}
+\pastebutton{ugProblemIdealPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := [x**2+y**2-1]\free{nm }\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch3}
+\begin{paste}{ugProblemIdealPageFull3}{ugProblemIdealPageEmpty3}
+\pastebutton{ugProblemIdealPageFull3}{\hidepaste}
+\tab{5}\spadcommand{n := [x**2-y**2]\free{nm }\bound{n }}
+\indentrel{3}\begin{verbatim}
+          2    2
+   (3)  [x  - y ]
+Type: List DistributedMultivariatePolynomial([x,y],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty3}
+\begin{paste}{ugProblemIdealPageEmpty3}{ugProblemIdealPagePatch3}
+\pastebutton{ugProblemIdealPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{n := [x**2-y**2]\free{nm }\bound{n }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch4}
+\begin{paste}{ugProblemIdealPageFull4}{ugProblemIdealPageEmpty4}
+\pastebutton{ugProblemIdealPageFull4}{\hidepaste}
+\tab{5}\spadcommand{id := ideal m + ideal n\free{n m }\bound{id }}
+\indentrel{3}\begin{verbatim}
+          2   1  2   1
+   (4)  [x  - Ä,y  - Ä]
+              2      2
+Type: PolynomialIdeals(Fraction Integer,DirectProduct(2,NonNegativeInteger),OrderedVariableList [x,y],DistributedMultivariatePolynomial([x,y],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty4}
+\begin{paste}{ugProblemIdealPageEmpty4}{ugProblemIdealPagePatch4}
+\pastebutton{ugProblemIdealPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{id := ideal m + ideal n\free{n m }\bound{id }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch5}
+\begin{paste}{ugProblemIdealPageFull5}{ugProblemIdealPageEmpty5}
+\pastebutton{ugProblemIdealPageFull5}{\hidepaste}
+\tab{5}\spadcommand{zeroDim? id\free{id }}
+\indentrel{3}\begin{verbatim}
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty5}
+\begin{paste}{ugProblemIdealPageEmpty5}{ugProblemIdealPagePatch5}
+\pastebutton{ugProblemIdealPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{zeroDim? id\free{id }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch6}
+\begin{paste}{ugProblemIdealPageFull6}{ugProblemIdealPageEmpty6}
+\pastebutton{ugProblemIdealPageFull6}{\hidepaste}
+\tab{5}\spadcommand{zeroDim?(ideal m)\free{m }}
+\indentrel{3}\begin{verbatim}
+   (6)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty6}
+\begin{paste}{ugProblemIdealPageEmpty6}{ugProblemIdealPagePatch6}
+\pastebutton{ugProblemIdealPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{zeroDim?(ideal m)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch7}
+\begin{paste}{ugProblemIdealPageFull7}{ugProblemIdealPageEmpty7}
+\pastebutton{ugProblemIdealPageFull7}{\hidepaste}
+\tab{5}\spadcommand{dimension ideal m\free{m }}
+\indentrel{3}\begin{verbatim}
+   (7)  1
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty7}
+\begin{paste}{ugProblemIdealPageEmpty7}{ugProblemIdealPagePatch7}
+\pastebutton{ugProblemIdealPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{dimension ideal m\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch8}
+\begin{paste}{ugProblemIdealPageFull8}{ugProblemIdealPageEmpty8}
+\pastebutton{ugProblemIdealPageFull8}{\hidepaste}
+\tab{5}\spadcommand{(f,g):DMP([x,y],FRAC INT)\bound{fg }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty8}
+\begin{paste}{ugProblemIdealPageEmpty8}{ugProblemIdealPagePatch8}
+\pastebutton{ugProblemIdealPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{(f,g):DMP([x,y],FRAC INT)\bound{fg }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch9}
+\begin{paste}{ugProblemIdealPageFull9}{ugProblemIdealPageEmpty9}
+\pastebutton{ugProblemIdealPageFull9}{\hidepaste}
+\tab{5}\spadcommand{f := x**2-1\free{fg }\bound{f }}
+\indentrel{3}\begin{verbatim}
+         2
+   (9)  x  - 1
+Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty9}
+\begin{paste}{ugProblemIdealPageEmpty9}{ugProblemIdealPagePatch9}
+\pastebutton{ugProblemIdealPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{f := x**2-1\free{fg }\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch10}
+\begin{paste}{ugProblemIdealPageFull10}{ugProblemIdealPageEmpty10}
+\pastebutton{ugProblemIdealPageFull10}{\hidepaste}
+\tab{5}\spadcommand{g := x*(x**2-1)\free{fg }\bound{g }}
+\indentrel{3}\begin{verbatim}
+          3
+   (10)  x  - x
+Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty10}
+\begin{paste}{ugProblemIdealPageEmpty10}{ugProblemIdealPagePatch10}
+\pastebutton{ugProblemIdealPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{g := x*(x**2-1)\free{fg }\bound{g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch11}
+\begin{paste}{ugProblemIdealPageFull11}{ugProblemIdealPageEmpty11}
+\pastebutton{ugProblemIdealPageFull11}{\hidepaste}
+\tab{5}\spadcommand{relationsIdeal [f,g]\free{f g }}
+\indentrel{3}\begin{verbatim}
+   (11)
+         2      3      2           2           3
+   [- %CY  + %CX  + %CX ] | [%CX= x  - 1,%CY= x  - x]
+Type: SuchThat(List Polynomial Fraction Integer,List Equation Polynomial Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty11}
+\begin{paste}{ugProblemIdealPageEmpty11}{ugProblemIdealPagePatch11}
+\pastebutton{ugProblemIdealPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{relationsIdeal [f,g]\free{f g }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch12}
+\begin{paste}{ugProblemIdealPageFull12}{ugProblemIdealPageEmpty12}
+\pastebutton{ugProblemIdealPageFull12}{\hidepaste}
+\tab{5}\spadcommand{l: List DMP([x,y,z],FRAC INT)\bound{ll }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty12}
+\begin{paste}{ugProblemIdealPageEmpty12}{ugProblemIdealPagePatch12}
+\pastebutton{ugProblemIdealPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{l: List DMP([x,y,z],FRAC INT)\bound{ll }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch13}
+\begin{paste}{ugProblemIdealPageFull13}{ugProblemIdealPageEmpty13}
+\pastebutton{ugProblemIdealPageFull13}{\hidepaste}
+\tab{5}\spadcommand{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]\free{ll }\bound{l }}
+\indentrel{3}\begin{verbatim}
+           2     2    2        2
+   (13)  [x  + 2y ,x z  - y z,z  - 4]
+Type: List DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty13}
+\begin{paste}{ugProblemIdealPageEmpty13}{ugProblemIdealPagePatch13}
+\pastebutton{ugProblemIdealPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]\free{ll }\bound{l }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch14}
+\begin{paste}{ugProblemIdealPageFull14}{ugProblemIdealPageEmpty14}
+\pastebutton{ugProblemIdealPageFull14}{\hidepaste}
+\tab{5}\spadcommand{ld:=primaryDecomp ideal l\free{l }\bound{ld }}
+\indentrel{3}\begin{verbatim}
+               1    2             1    2
+   (14)  [[x + Ä y,y ,z + 2],[x - Ä y,y ,z - 2]]
+               2                  2
+Type: List PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty14}
+\begin{paste}{ugProblemIdealPageEmpty14}{ugProblemIdealPagePatch14}
+\pastebutton{ugProblemIdealPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{ld:=primaryDecomp ideal l\free{l }\bound{ld }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch15}
+\begin{paste}{ugProblemIdealPageFull15}{ugProblemIdealPageEmpty15}
+\pastebutton{ugProblemIdealPageFull15}{\hidepaste}
+\tab{5}\spadcommand{reduce(intersect,ld)\free{ld }}
+\indentrel{3}\begin{verbatim}
+              1      2  2
+   (15)  [x - Ä y z,y ,z  - 4]
+              4
+Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty15}
+\begin{paste}{ugProblemIdealPageEmpty15}{ugProblemIdealPagePatch15}
+\pastebutton{ugProblemIdealPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{reduce(intersect,ld)\free{ld }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch16}
+\begin{paste}{ugProblemIdealPageFull16}{ugProblemIdealPageEmpty16}
+\pastebutton{ugProblemIdealPageFull16}{\hidepaste}
+\tab{5}\spadcommand{reduce(intersect,[radical ld.i for i in 1..2])\free{ld }}
+\indentrel{3}\begin{verbatim}
+               2
+   (16)  [x,y,z  - 4]
+Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty16}
+\begin{paste}{ugProblemIdealPageEmpty16}{ugProblemIdealPagePatch16}
+\pastebutton{ugProblemIdealPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{reduce(intersect,[radical ld.i for i in 1..2])\free{ld }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPagePatch17}
+\begin{paste}{ugProblemIdealPageFull17}{ugProblemIdealPageEmpty17}
+\pastebutton{ugProblemIdealPageFull17}{\hidepaste}
+\tab{5}\spadcommand{radical ideal l\free{l }}
+\indentrel{3}\begin{verbatim}
+               2
+   (17)  [x,y,z  - 4]
+Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemIdealPageEmpty17}
+\begin{paste}{ugProblemIdealPageEmpty17}{ugProblemIdealPagePatch17}
+\pastebutton{ugProblemIdealPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{radical ideal l\free{l }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemGaloisPage}{ug08.ht}{Computation of Galois Groups}
 \pagepic{ps/v71ugproblemgaloispage.eps}{ugProblemGaloisPage}
@@ -41254,6 +105695,628 @@ isomorphic to \texht{$S_3,$}{} the symmetric group on three letters.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemGaloisPagePatch1}
+\begin{paste}{ugProblemGaloisPageFull1}{ugProblemGaloisPageEmpty1}
+\pastebutton{ugProblemGaloisPageFull1}{\hidepaste}
+\tab{5}\spadcommand{p := x**5 - 5*x + 12\bound{p }}
+\indentrel{3}\begin{verbatim}
+         5
+   (1)  x  - 5x + 12
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty1}
+\begin{paste}{ugProblemGaloisPageEmpty1}{ugProblemGaloisPagePatch1}
+\pastebutton{ugProblemGaloisPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{p := x**5 - 5*x + 12\bound{p }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch2}
+\begin{paste}{ugProblemGaloisPageFull2}{ugProblemGaloisPageEmpty2}
+\pastebutton{ugProblemGaloisPageFull2}{\hidepaste}
+\tab{5}\spadcommand{q := resultant(eval(p,x,y),-eval(p,x,y-x),y)\free{p }\bound{q }}
+\indentrel{3}\begin{verbatim}
+   (2)
+      25      21        17         15        13
+     x   - 50x   - 2375x   + 90000x   - 5000x
+   + 
+             11          9            7            5
+     2700000x   + 250000x  + 18000000x  + 64000000x
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty2}
+\begin{paste}{ugProblemGaloisPageEmpty2}{ugProblemGaloisPagePatch2}
+\pastebutton{ugProblemGaloisPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{q := resultant(eval(p,x,y),-eval(p,x,y-x),y)\free{p }\bound{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch3}
+\begin{paste}{ugProblemGaloisPageFull3}{ugProblemGaloisPageEmpty3}
+\pastebutton{ugProblemGaloisPageFull3}{\hidepaste}
+\tab{5}\spadcommand{q1 := exquo(q, x**5)\free{q }\bound{q1 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+      20      16        12         10        8           6
+     x   - 50x   - 2375x   + 90000x   - 5000x  + 2700000x
+   + 
+            4            2
+     250000x  + 18000000x  + 64000000
+                    Type: Union(Polynomial Integer,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty3}
+\begin{paste}{ugProblemGaloisPageEmpty3}{ugProblemGaloisPagePatch3}
+\pastebutton{ugProblemGaloisPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{q1 := exquo(q, x**5)\free{q }\bound{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch4}
+\begin{paste}{ugProblemGaloisPageFull4}{ugProblemGaloisPageEmpty4}
+\pastebutton{ugProblemGaloisPageFull4}{\hidepaste}
+\tab{5}\spadcommand{factoredQ := factor q1\free{q1 }\bound{factoredQ }}
+\indentrel{3}\begin{verbatim}
+   (4)
+       10      8      6        4        2
+     (x   - 10x  - 75x  + 1500x  - 5500x  + 16000)
+  *
+       10      8       6       4        2
+     (x   + 10x  + 125x  + 500x  + 2500x  + 4000)
+                      Type: Factored Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty4}
+\begin{paste}{ugProblemGaloisPageEmpty4}{ugProblemGaloisPagePatch4}
+\pastebutton{ugProblemGaloisPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{factoredQ := factor q1\free{q1 }\bound{factoredQ }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch5}
+\begin{paste}{ugProblemGaloisPageFull5}{ugProblemGaloisPageEmpty5}
+\pastebutton{ugProblemGaloisPageFull5}{\hidepaste}
+\tab{5}\spadcommand{r := nthFactor(factoredQ,1)\free{factoredQ }\bound{r }}
+\indentrel{3}\begin{verbatim}
+         10      8      6        4        2
+   (5)  x   - 10x  - 75x  + 1500x  - 5500x  + 16000
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty5}
+\begin{paste}{ugProblemGaloisPageEmpty5}{ugProblemGaloisPagePatch5}
+\pastebutton{ugProblemGaloisPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{r := nthFactor(factoredQ,1)\free{factoredQ }\bound{r }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch6}
+\begin{paste}{ugProblemGaloisPageFull6}{ugProblemGaloisPageEmpty6}
+\pastebutton{ugProblemGaloisPageFull6}{\hidepaste}
+\tab{5}\spadcommand{beta:AN := rootOf(eval(r,x,b))\free{r }\bound{beta }}
+\indentrel{3}\begin{verbatim}
+   (6)  b
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty6}
+\begin{paste}{ugProblemGaloisPageEmpty6}{ugProblemGaloisPagePatch6}
+\pastebutton{ugProblemGaloisPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{beta:AN := rootOf(eval(r,x,b))\free{r }\bound{beta }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch7}
+\begin{paste}{ugProblemGaloisPageFull7}{ugProblemGaloisPageEmpty7}
+\pastebutton{ugProblemGaloisPageFull7}{\hidepaste}
+\tab{5}\spadcommand{p := p::UP(x,INT)::UP(x,AN)\free{p }\bound{declareP }}
+\indentrel{3}\begin{verbatim}
+         5
+   (7)  x  - 5x + 12
+          Type: UnivariatePolynomial(x,AlgebraicNumber)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty7}
+\begin{paste}{ugProblemGaloisPageEmpty7}{ugProblemGaloisPagePatch7}
+\pastebutton{ugProblemGaloisPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{p := p::UP(x,INT)::UP(x,AN)\free{p }\bound{declareP }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch8}
+\begin{paste}{ugProblemGaloisPageFull8}{ugProblemGaloisPageEmpty8}
+\pastebutton{ugProblemGaloisPageFull8}{\hidepaste}
+\tab{5}\spadcommand{algFactors := factor(p,[beta])\free{declareP beta }\bound{algFactors }}
+\indentrel{3}\begin{verbatim}
+   (8)
+       x
+     + 
+                9       8       7        6         5
+           - 85b  - 116b  + 780b  + 2640b  + 14895b
+         + 
+                  4          3          2
+           - 8820b  - 127050b  - 327000b  - 405200b
+         + 
+           2062400
+      /
+         1339200
+  *
+               8       6        4         2
+          - 17b  + 156b  + 2979b  - 25410b  - 14080
+     (x + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
+                            66960
+  *
+       x
+     + 
+               8        6         4          2
+           143b  - 2100b  - 10485b  + 290550b  - 334800b
+         + 
+           - 960800
+      /
+         669600
+  *
+       x
+     + 
+               8        6         4          2
+           143b  - 2100b  - 10485b  + 290550b  + 334800b
+         + 
+           - 960800
+      /
+         669600
+  *
+       x
+     + 
+              9       8       7        6         5
+           85b  - 116b  - 780b  + 2640b  - 14895b
+         + 
+                  4          3          2
+           - 8820b  + 127050b  - 327000b  + 405200b
+         + 
+           2062400
+      /
+         1339200
+ Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty8}
+\begin{paste}{ugProblemGaloisPageEmpty8}{ugProblemGaloisPagePatch8}
+\pastebutton{ugProblemGaloisPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{algFactors := factor(p,[beta])\free{declareP beta }\bound{algFactors }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch9}
+\begin{paste}{ugProblemGaloisPageFull9}{ugProblemGaloisPageEmpty9}
+\pastebutton{ugProblemGaloisPageFull9}{\hidepaste}
+\tab{5}\spadcommand{factor(p)\free{declareP }}
+\indentrel{3}\begin{verbatim}
+         5
+   (9)  x  - 5x + 12
+ Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty9}
+\begin{paste}{ugProblemGaloisPageEmpty9}{ugProblemGaloisPagePatch9}
+\pastebutton{ugProblemGaloisPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{factor(p)\free{declareP }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch10}
+\begin{paste}{ugProblemGaloisPageFull10}{ugProblemGaloisPageEmpty10}
+\pastebutton{ugProblemGaloisPageFull10}{\hidepaste}
+\tab{5}\spadcommand{factor1 := nthFactor(algFactors,1)\free{algFactors }\bound{factor1 }}
+\indentrel{3}\begin{verbatim}
+   (10)
+     x
+   + 
+              9       8       7        6         5
+         - 85b  - 116b  + 780b  + 2640b  + 14895b
+       + 
+              4          3          2
+       - 8820b  - 127050b  - 327000b  - 405200b + 2062400
+    /
+       1339200
+          Type: UnivariatePolynomial(x,AlgebraicNumber)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty10}
+\begin{paste}{ugProblemGaloisPageEmpty10}{ugProblemGaloisPagePatch10}
+\pastebutton{ugProblemGaloisPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{factor1 := nthFactor(algFactors,1)\free{algFactors }\bound{factor1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch11}
+\begin{paste}{ugProblemGaloisPageFull11}{ugProblemGaloisPageEmpty11}
+\pastebutton{ugProblemGaloisPageFull11}{\hidepaste}
+\tab{5}\spadcommand{root1 := -coefficient(factor1,0)\free{factor1 }\bound{root1 }}
+\indentrel{3}\begin{verbatim}
+   (11)
+          9       8       7        6         5        4
+       85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
+     + 
+              3          2
+       127050b  + 327000b  + 405200b - 2062400
+  /
+     1339200
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty11}
+\begin{paste}{ugProblemGaloisPageEmpty11}{ugProblemGaloisPagePatch11}
+\pastebutton{ugProblemGaloisPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{root1 := -coefficient(factor1,0)\free{factor1 }\bound{root1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch12}
+\begin{paste}{ugProblemGaloisPageFull12}{ugProblemGaloisPageEmpty12}
+\pastebutton{ugProblemGaloisPageFull12}{\hidepaste}
+\tab{5}\spadcommand{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]\free{algFactors }\bound{roots }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [
+            9       8       7        6         5        4
+         85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
+       + 
+                3          2
+         127050b  + 327000b  + 405200b - 2062400
+    /
+       1339200
+     ,
+       8       6        4         2
+    17b  - 156b  - 2979b  + 25410b  + 14080
+    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
+                     66960
+
+               8        6         4          2
+         - 143b  + 2100b  + 10485b  - 290550b  + 334800b
+       + 
+         960800
+    /
+       669600
+     ,
+
+               8        6         4          2
+         - 143b  + 2100b  + 10485b  - 290550b  - 334800b
+       + 
+         960800
+    /
+       669600
+     ,
+
+              9       8       7        6         5
+         - 85b  + 116b  + 780b  - 2640b  + 14895b
+       + 
+              4          3          2
+         8820b  - 127050b  + 327000b  - 405200b - 2062400
+    /
+       1339200
+     ]
+                             Type: List AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty12}
+\begin{paste}{ugProblemGaloisPageEmpty12}{ugProblemGaloisPagePatch12}
+\pastebutton{ugProblemGaloisPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]\free{algFactors }\bound{roots }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch13}
+\begin{paste}{ugProblemGaloisPageFull13}{ugProblemGaloisPageEmpty13}
+\pastebutton{ugProblemGaloisPageFull13}{\hidepaste}
+\tab{5}\spadcommand{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)\free{roots }\bound{ais }}
+\indentrel{3}\begin{verbatim}
+   (13)
+            9       8       7        6         5        4
+       - 85b  + 116b  + 780b  - 2640b  + 14895b  + 8820b
+     + 
+                3          2
+       - 127050b  + 327000b  - 405200b - 2062400
+  /
+     1339200
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty13}
+\begin{paste}{ugProblemGaloisPageEmpty13}{ugProblemGaloisPagePatch13}
+\pastebutton{ugProblemGaloisPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)\free{roots }\bound{ais }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch14}
+\begin{paste}{ugProblemGaloisPageFull14}{ugProblemGaloisPageEmpty14}
+\pastebutton{ugProblemGaloisPageFull14}{\hidepaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a2)\free{ais }}
+\indentrel{3}\begin{verbatim}
+   (14)  0
+                       Type: Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty14}
+\begin{paste}{ugProblemGaloisPageEmpty14}{ugProblemGaloisPagePatch14}
+\pastebutton{ugProblemGaloisPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a2)\free{ais }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch15}
+\begin{paste}{ugProblemGaloisPageFull15}{ugProblemGaloisPageEmpty15}
+\pastebutton{ugProblemGaloisPageFull15}{\hidepaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a3)\free{ais }}
+\indentrel{3}\begin{verbatim}
+   (15)
+             9         8          7          6           5
+       47905b  + 66920b  - 536100b  - 980400b  - 3345075b
+     + 
+                 4            3             2
+       - 5787000b  + 75572250b  + 161688000b  - 184600000b
+     + 
+       - 710912000
+  /
+     4464
+                       Type: Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty15}
+\begin{paste}{ugProblemGaloisPageEmpty15}{ugProblemGaloisPagePatch15}
+\pastebutton{ugProblemGaloisPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a3)\free{ais }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch16}
+\begin{paste}{ugProblemGaloisPageFull16}{ugProblemGaloisPageEmpty16}
+\pastebutton{ugProblemGaloisPageFull16}{\hidepaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a4)\free{ais }}
+\indentrel{3}\begin{verbatim}
+   (16)  0
+                       Type: Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty16}
+\begin{paste}{ugProblemGaloisPageEmpty16}{ugProblemGaloisPagePatch16}
+\pastebutton{ugProblemGaloisPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a4)\free{ais }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch17}
+\begin{paste}{ugProblemGaloisPageFull17}{ugProblemGaloisPageEmpty17}
+\pastebutton{ugProblemGaloisPageFull17}{\hidepaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a5)\free{ais }}
+\indentrel{3}\begin{verbatim}
+             8        6         4          2
+         405b  + 3450b  - 19875b  - 198000b  - 588000
+   (17)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                              31
+                       Type: Polynomial AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty17}
+\begin{paste}{ugProblemGaloisPageEmpty17}{ugProblemGaloisPagePatch17}
+\pastebutton{ugProblemGaloisPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{eval(r,x,a1 - a5)\free{ais }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch18}
+\begin{paste}{ugProblemGaloisPageFull18}{ugProblemGaloisPageEmpty18}
+\pastebutton{ugProblemGaloisPageFull18}{\hidepaste}
+\tab{5}\spadcommand{bb := a1 - a4\free{ais }\bound{bb }}
+\indentrel{3}\begin{verbatim}
+   (18)
+          9       8       7        6         5         4
+       85b  + 402b  - 780b  - 6840b  - 14895b  - 12150b
+     + 
+              3          2
+       127050b  + 908100b  + 1074800b - 3984000
+  /
+     1339200
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty18}
+\begin{paste}{ugProblemGaloisPageEmpty18}{ugProblemGaloisPagePatch18}
+\pastebutton{ugProblemGaloisPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{bb := a1 - a4\free{ais }\bound{bb }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch19}
+\begin{paste}{ugProblemGaloisPageFull19}{ugProblemGaloisPageEmpty19}
+\pastebutton{ugProblemGaloisPageFull19}{\hidepaste}
+\tab{5}\spadcommand{aa1 := subst(a1,beta = bb)\free{beta bb ais }\bound{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (19)
+             8        6         4          2
+       - 143b  + 2100b  + 10485b  - 290550b  + 334800b
+     + 
+       960800
+  /
+     669600
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty19}
+\begin{paste}{ugProblemGaloisPageEmpty19}{ugProblemGaloisPagePatch19}
+\pastebutton{ugProblemGaloisPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{aa1 := subst(a1,beta = bb)\free{beta bb ais }\bound{aa1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch20}
+\begin{paste}{ugProblemGaloisPageFull20}{ugProblemGaloisPageEmpty20}
+\pastebutton{ugProblemGaloisPageFull20}{\hidepaste}
+\tab{5}\spadcommand{aa2 := subst(a2,beta = bb)\free{beta bb ais }\bound{aa2 }}
+\indentrel{3}\begin{verbatim}
+   (20)
+            9       8       7        6         5        4
+       - 85b  + 116b  + 780b  - 2640b  + 14895b  + 8820b
+     + 
+                3          2
+       - 127050b  + 327000b  - 405200b - 2062400
+  /
+     1339200
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty20}
+\begin{paste}{ugProblemGaloisPageEmpty20}{ugProblemGaloisPagePatch20}
+\pastebutton{ugProblemGaloisPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{aa2 := subst(a2,beta = bb)\free{beta bb ais }\bound{aa2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch21}
+\begin{paste}{ugProblemGaloisPageFull21}{ugProblemGaloisPageEmpty21}
+\pastebutton{ugProblemGaloisPageFull21}{\hidepaste}
+\tab{5}\spadcommand{aa3 := subst(a3,beta = bb)\free{beta bb ais }\bound{aa3 }}
+\indentrel{3}\begin{verbatim}
+   (21)
+          9       8       7        6         5        4
+       85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
+     + 
+              3          2
+       127050b  + 327000b  + 405200b - 2062400
+  /
+     1339200
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty21}
+\begin{paste}{ugProblemGaloisPageEmpty21}{ugProblemGaloisPagePatch21}
+\pastebutton{ugProblemGaloisPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{aa3 := subst(a3,beta = bb)\free{beta bb ais }\bound{aa3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch22}
+\begin{paste}{ugProblemGaloisPageFull22}{ugProblemGaloisPageEmpty22}
+\pastebutton{ugProblemGaloisPageFull22}{\hidepaste}
+\tab{5}\spadcommand{aa4 := subst(a4,beta = bb)\free{beta bb ais }\bound{aa4 }}
+\indentrel{3}\begin{verbatim}
+   (22)
+             8        6         4          2
+       - 143b  + 2100b  + 10485b  - 290550b  - 334800b
+     + 
+       960800
+  /
+     669600
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty22}
+\begin{paste}{ugProblemGaloisPageEmpty22}{ugProblemGaloisPagePatch22}
+\pastebutton{ugProblemGaloisPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{aa4 := subst(a4,beta = bb)\free{beta bb ais }\bound{aa4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch23}
+\begin{paste}{ugProblemGaloisPageFull23}{ugProblemGaloisPageEmpty23}
+\pastebutton{ugProblemGaloisPageFull23}{\hidepaste}
+\tab{5}\spadcommand{aa5 := subst(a5,beta = bb)\free{beta bb ais }\bound{aa5 }}
+\indentrel{3}\begin{verbatim}
+            8       6        4         2
+         17b  - 156b  - 2979b  + 25410b  + 14080
+   (23)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
+                          66960
+                                  Type: AlgebraicNumber
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty23}
+\begin{paste}{ugProblemGaloisPageEmpty23}{ugProblemGaloisPagePatch23}
+\pastebutton{ugProblemGaloisPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{aa5 := subst(a5,beta = bb)\free{beta bb ais }\bound{aa5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch24}
+\begin{paste}{ugProblemGaloisPageFull24}{ugProblemGaloisPageEmpty24}
+\pastebutton{ugProblemGaloisPageFull24}{\hidepaste}
+\tab{5}\spadcommand{(aa1 = a1) :: Boolean\free{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (24)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty24}
+\begin{paste}{ugProblemGaloisPageEmpty24}{ugProblemGaloisPagePatch24}
+\pastebutton{ugProblemGaloisPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{(aa1 = a1) :: Boolean\free{aa1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch25}
+\begin{paste}{ugProblemGaloisPageFull25}{ugProblemGaloisPageEmpty25}
+\pastebutton{ugProblemGaloisPageFull25}{\hidepaste}
+\tab{5}\spadcommand{(aa1 = a2) :: Boolean\free{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (25)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty25}
+\begin{paste}{ugProblemGaloisPageEmpty25}{ugProblemGaloisPagePatch25}
+\pastebutton{ugProblemGaloisPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{(aa1 = a2) :: Boolean\free{aa1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch26}
+\begin{paste}{ugProblemGaloisPageFull26}{ugProblemGaloisPageEmpty26}
+\pastebutton{ugProblemGaloisPageFull26}{\hidepaste}
+\tab{5}\spadcommand{(aa1 = a3) :: Boolean\free{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (26)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty26}
+\begin{paste}{ugProblemGaloisPageEmpty26}{ugProblemGaloisPagePatch26}
+\pastebutton{ugProblemGaloisPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{(aa1 = a3) :: Boolean\free{aa1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch27}
+\begin{paste}{ugProblemGaloisPageFull27}{ugProblemGaloisPageEmpty27}
+\pastebutton{ugProblemGaloisPageFull27}{\hidepaste}
+\tab{5}\spadcommand{(aa1 = a4) :: Boolean\free{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (27)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty27}
+\begin{paste}{ugProblemGaloisPageEmpty27}{ugProblemGaloisPagePatch27}
+\pastebutton{ugProblemGaloisPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{(aa1 = a4) :: Boolean\free{aa1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPagePatch28}
+\begin{paste}{ugProblemGaloisPageFull28}{ugProblemGaloisPageEmpty28}
+\pastebutton{ugProblemGaloisPageFull28}{\hidepaste}
+\tab{5}\spadcommand{(aa1 = a5) :: Boolean\free{aa1 }}
+\indentrel{3}\begin{verbatim}
+   (28)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGaloisPageEmpty28}
+\begin{paste}{ugProblemGaloisPageEmpty28}{ugProblemGaloisPagePatch28}
+\pastebutton{ugProblemGaloisPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{(aa1 = a5) :: Boolean\free{aa1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugProblemGeneticPage}{ug08.ht}
 {Non-Associative Algebras and Genetic Laws}
@@ -41475,6 +106538,320 @@ Verify the result.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugProblemGeneticPagePatch1}
+\begin{paste}{ugProblemGeneticPageFull1}{ugProblemGeneticPageEmpty1}
+\pastebutton{ugProblemGeneticPageFull1}{\hidepaste}
+\tab{5}\spadcommand{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] ] ]\bound{segregationRates }}
+\indentrel{3}\begin{verbatim}
+   (1)
+    Ú    1   1    9¿  Ú    1        1¿  Ú        1    1¿
+    ³1   Ä   Ä   ÄÄ³  ³0   Ä   0   ÄÄ³  ³0   0   Ä   ÄÄ³
+    ³    2   2   20³  ³    2       20³  ³        2   20³
+    ³              ³  ³              ³  ³              ³
+    ³1        1    ³  ³1        9  1 ³  ³         9    ³
+    ³Ä   0   ÄÄ  0 ³  ³Ä   1   ÄÄ  Ä ³  ³0   0   ÄÄ  0 ³
+    ³2       20    ³  ³2       20  2 ³  ³        20    ³
+   [³              ³, ³              ³, ³              ³,
+    ³1    1        ³  ³     9        ³  ³1    9      1 ³
+    ³Ä   ÄÄ  0   0 ³  ³0   ÄÄ  0   0 ³  ³Ä   ÄÄ  1   Ä ³
+    ³2   20        ³  ³    20        ³  ³2   20      2 ³
+    ³              ³  ³              ³  ³              ³
+    ³ 9            ³  ³ 1  1         ³  ³ 1      1     ³
+    ³ÄÄ  0   0   0 ³  ³ÄÄ  Ä   0   0 ³  ³ÄÄ  0   Ä   0 ³
+    À20            Ù  À20  2         Ù  À20      2     Ù
+    Ú             9¿
+    ³0   0   0   ÄÄ³
+    ³            20³
+    ³              ³
+    ³         1  1 ³
+    ³0   0   ÄÄ  Ä ³
+    ³        20  2 ³
+    ³              ³]
+    ³     1      1 ³
+    ³0   ÄÄ  0   Ä ³
+    ³    20      2 ³
+    ³              ³
+    ³ 9  1   1     ³
+    ³ÄÄ  Ä   Ä   1 ³
+    À20  2   2     Ù
+            Type: List SquareMatrix(4,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty1}
+\begin{paste}{ugProblemGeneticPageEmpty1}{ugProblemGeneticPagePatch1}
+\pastebutton{ugProblemGeneticPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{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] ] ]\bound{segregationRates }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch2}
+\begin{paste}{ugProblemGeneticPageFull2}{ugProblemGeneticPageEmpty2}
+\pastebutton{ugProblemGeneticPageFull2}{\hidepaste}
+\tab{5}\spadcommand{gametes := ['AB,'Ab,'aB,'ab]\bound{gametes }}
+\indentrel{3}\begin{verbatim}
+   (2)  [AB,Ab,aB,ab]
+           Type: List OrderedVariableList [AB,Ab,aB,ab]
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty2}
+\begin{paste}{ugProblemGeneticPageEmpty2}{ugProblemGeneticPagePatch2}
+\pastebutton{ugProblemGeneticPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{gametes := ['AB,'Ab,'aB,'ab]\bound{gametes }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch3}
+\begin{paste}{ugProblemGeneticPageFull3}{ugProblemGeneticPageEmpty3}
+\pastebutton{ugProblemGeneticPageFull3}{\hidepaste}
+\tab{5}\spadcommand{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A }\free{gametes segregationRates }}
+\indentrel{3}\begin{verbatim}
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty3}
+\begin{paste}{ugProblemGeneticPageEmpty3}{ugProblemGeneticPagePatch3}
+\pastebutton{ugProblemGeneticPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A }\free{gametes segregationRates }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch4}
+\begin{paste}{ugProblemGeneticPageFull4}{ugProblemGeneticPageEmpty4}
+\pastebutton{ugProblemGeneticPageFull4}{\hidepaste}
+\tab{5}\spadcommand{a := basis()$A; a.1*a.4}
+\indentrel{3}\begin{verbatim}
+         9       1       1       9
+   (4)  ÄÄ ab + ÄÄ aB + ÄÄ Ab + ÄÄ AB
+        20      20      20      20
+Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty4}
+\begin{paste}{ugProblemGeneticPageEmpty4}{ugProblemGeneticPagePatch4}
+\pastebutton{ugProblemGeneticPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{a := basis()$A; a.1*a.4}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch5}
+\begin{paste}{ugProblemGeneticPageFull5}{ugProblemGeneticPageEmpty5}
+\pastebutton{ugProblemGeneticPageFull5}{\hidepaste}
+\tab{5}\spadcommand{commutative?()$A\free{A }}
+\indentrel{3}\begin{verbatim}
+   algebra is commutative
+   (5)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty5}
+\begin{paste}{ugProblemGeneticPageEmpty5}{ugProblemGeneticPagePatch5}
+\pastebutton{ugProblemGeneticPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{commutative?()$A\free{A }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch6}
+\begin{paste}{ugProblemGeneticPageFull6}{ugProblemGeneticPageEmpty6}
+\pastebutton{ugProblemGeneticPageFull6}{\hidepaste}
+\tab{5}\spadcommand{associative?()$A\free{A }}
+\indentrel{3}\begin{verbatim}
+   algebra is not associative
+   (6)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty6}
+\begin{paste}{ugProblemGeneticPageEmpty6}{ugProblemGeneticPagePatch6}
+\pastebutton{ugProblemGeneticPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{associative?()$A\free{A }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch7}
+\begin{paste}{ugProblemGeneticPageFull7}{ugProblemGeneticPageEmpty7}
+\pastebutton{ugProblemGeneticPageFull7}{\hidepaste}
+\tab{5}\spadcommand{x : ALGSC(DECIMAL, 4, gametes, segregationRates) := convert [3/10, 1/5, 1/10, 2/5]\bound{x }\free{gametes segregationRates }}
+\indentrel{3}\begin{verbatim}
+   (7)  0.4ab + 0.1aB + 0.2Ab + 0.3AB
+Type: AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty7}
+\begin{paste}{ugProblemGeneticPageEmpty7}{ugProblemGeneticPagePatch7}
+\pastebutton{ugProblemGeneticPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{x : ALGSC(DECIMAL, 4, gametes, segregationRates) := convert [3/10, 1/5, 1/10, 2/5]\bound{x }\free{gametes segregationRates }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch8}
+\begin{paste}{ugProblemGeneticPageFull8}{ugProblemGeneticPageEmpty8}
+\pastebutton{ugProblemGeneticPageFull8}{\hidepaste}
+\tab{5}\spadcommand{plenaryPower(x,5)\free{x }}
+\indentrel{3}\begin{verbatim}
+   (8)  0.36561ab + 0.13439aB + 0.23439Ab + 0.26561AB
+Type: AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty8}
+\begin{paste}{ugProblemGeneticPageEmpty8}{ugProblemGeneticPagePatch8}
+\pastebutton{ugProblemGeneticPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{plenaryPower(x,5)\free{x }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch9}
+\begin{paste}{ugProblemGeneticPageFull9}{ugProblemGeneticPageEmpty9}
+\pastebutton{ugProblemGeneticPageFull9}{\hidepaste}
+\tab{5}\spadcommand{q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q }\free{gametes segregationRates }}
+\indentrel{3}\begin{verbatim}
+   (9)
+      3      29       29       29       29      2
+     Y  + (- ÄÄ %x4 - ÄÄ %x3 - ÄÄ %x2 - ÄÄ %x1)Y
+             20       20       20       20
+   + 
+          9    2     9        9        9            9    2
+         ÄÄ %x4  + (ÄÄ %x3 + ÄÄ %x2 + ÄÄ %x1)%x4 + ÄÄ %x3
+         20         10       10       10           20
+       + 
+           9        9            9    2    9
+         (ÄÄ %x2 + ÄÄ %x1)%x3 + ÄÄ %x2  + ÄÄ %x1 %x2
+          10       10           20        10
+       + 
+          9    2
+         ÄÄ %x1
+         20
+    *
+       Y
+Type: UnivariatePolynomial(Y,Polynomial Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty9}
+\begin{paste}{ugProblemGeneticPageEmpty9}{ugProblemGeneticPagePatch9}
+\pastebutton{ugProblemGeneticPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q }\free{gametes segregationRates }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch10}
+\begin{paste}{ugProblemGeneticPageFull10}{ugProblemGeneticPageEmpty10}
+\pastebutton{ugProblemGeneticPageFull10}{\hidepaste}
+\tab{5}\spadcommand{factor(q :: POLY FRAC INT)\free{q }}
+\indentrel{3}\begin{verbatim}
+   (10)
+     (Y - %x4 - %x3 - %x2 - %x1)
+  *
+           9        9        9        9
+     (Y - ÄÄ %x4 - ÄÄ %x3 - ÄÄ %x2 - ÄÄ %x1)Y
+          20       20       20       20
+             Type: Factored Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty10}
+\begin{paste}{ugProblemGeneticPageEmpty10}{ugProblemGeneticPagePatch10}
+\pastebutton{ugProblemGeneticPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{factor(q :: POLY FRAC INT)\free{q }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch11}
+\begin{paste}{ugProblemGeneticPageFull11}{ugProblemGeneticPageEmpty11}
+\pastebutton{ugProblemGeneticPageFull11}{\hidepaste}
+\tab{5}\spadcommand{cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI }\free{gametes segregationRates }}
+\indentrel{3}\begin{verbatim}
+   (11)
+     9             1                              2
+   [ÄÄ %x1 %x4 + (ÄÄ %x2 + %x1)%x3 + %x1 %x2 + %x1  - %x1,
+    10            10
+            1            9              2
+    (%x2 + ÄÄ %x1)%x4 + ÄÄ %x2 %x3 + %x2  + (%x1 - 1)%x2,
+           10           10
+            1              2     9
+    (%x3 + ÄÄ %x1)%x4 + %x3  + (ÄÄ %x2 + %x1 - 1)%x3,
+           10                   10
+       2                 9                1
+    %x4  + (%x3 + %x2 + ÄÄ %x1 - 1)%x4 + ÄÄ %x2 %x3]
+                        10               10
+                 Type: List Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty11}
+\begin{paste}{ugProblemGeneticPageEmpty11}{ugProblemGeneticPagePatch11}
+\pastebutton{ugProblemGeneticPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI }\free{gametes segregationRates }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch12}
+\begin{paste}{ugProblemGeneticPageFull12}{ugProblemGeneticPageEmpty12}
+\pastebutton{ugProblemGeneticPageFull12}{\hidepaste}
+\tab{5}\spadcommand{gbs:= groebnerFactorize cI; gbs.1\free{cI }\bound{gbs }}
+\indentrel{3}\begin{verbatim}
+   (12)
+   [%x4 + %x3 + %x2 + %x1 - 1,
+                                  2
+    (%x2 + %x1)%x3 + %x1 %x2 + %x1  - %x1]
+                 Type: List Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty12}
+\begin{paste}{ugProblemGeneticPageEmpty12}{ugProblemGeneticPagePatch12}
+\pastebutton{ugProblemGeneticPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{gbs:= groebnerFactorize cI; gbs.1\free{cI }\bound{gbs }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch13}
+\begin{paste}{ugProblemGeneticPageFull13}{ugProblemGeneticPageEmpty13}
+\pastebutton{ugProblemGeneticPageFull13}{\hidepaste}
+\tab{5}\spadcommand{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol }\free{gbs }}
+\indentrel{3}\begin{verbatim}
+                2      2       1       1
+   (13)  [[%x4= Ä,%x3= Ä,%x2= ÄÄ,%x1= ÄÄ]]
+                5      5      10      10
+   Type: List List Equation Fraction Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty13}
+\begin{paste}{ugProblemGeneticPageEmpty13}{ugProblemGeneticPagePatch13}
+\pastebutton{ugProblemGeneticPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol }\free{gbs }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch14}
+\begin{paste}{ugProblemGeneticPageFull14}{ugProblemGeneticPageEmpty14}
+\pastebutton{ugProblemGeneticPageFull14}{\hidepaste}
+\tab{5}\spadcommand{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e }\free{A sol }}
+\indentrel{3}\begin{verbatim}
+         2      2       1       1
+   (14)  Ä ab + Ä aB + ÄÄ Ab + ÄÄ AB
+         5      5      10      10
+Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty14}
+\begin{paste}{ugProblemGeneticPageEmpty14}{ugProblemGeneticPagePatch14}
+\pastebutton{ugProblemGeneticPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e }\free{A sol }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPagePatch15}
+\begin{paste}{ugProblemGeneticPageFull15}{ugProblemGeneticPageEmpty15}
+\pastebutton{ugProblemGeneticPageFull15}{\hidepaste}
+\tab{5}\spadcommand{e*e-e\free{e }}
+\indentrel{3}\begin{verbatim}
+   (15)  0
+Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugProblemGeneticPageEmpty15}
+\begin{paste}{ugProblemGeneticPageEmpty15}{ugProblemGeneticPagePatch15}
+\pastebutton{ugProblemGeneticPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{e*e-e\free{e }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 10 (ug10.ht)}
 \pagehead{ugIntProgPage}{ug10.ht}{Interactive Programming}
@@ -41701,6 +107078,106 @@ the details.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgDrawingPagePatch1}
+\begin{paste}{ugIntProgDrawingPageFull1}{ugIntProgDrawingPageEmpty1}
+\pastebutton{ugIntProgDrawingPageFull1}{\hidepaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,y=0..1)}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage1}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty1}
+\begin{paste}{ugIntProgDrawingPageEmpty1}{ugIntProgDrawingPagePatch1}
+\pastebutton{ugIntProgDrawingPageEmpty1}{\showpaste}
+\tab{5}\spadgraph{draw(x**2,x=-1..1,y=0..1)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch2}
+\begin{paste}{ugIntProgDrawingPageFull2}{ugIntProgDrawingPageEmpty2}
+\pastebutton{ugIntProgDrawingPageFull2}{\hidepaste}
+\tab{5}\spadgraph{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1)\bound{d1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty2}
+\begin{paste}{ugIntProgDrawingPageEmpty2}{ugIntProgDrawingPagePatch2}
+\pastebutton{ugIntProgDrawingPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1)\bound{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch3}
+\begin{paste}{ugIntProgDrawingPageFull3}{ugIntProgDrawingPageEmpty3}
+\pastebutton{ugIntProgDrawingPageFull3}{\hidepaste}
+\tab{5}\spadcommand{rotate(vp, 0, -90)\bound{d3 }\free{d1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty3}
+\begin{paste}{ugIntProgDrawingPageEmpty3}{ugIntProgDrawingPagePatch3}
+\pastebutton{ugIntProgDrawingPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{rotate(vp, 0, -90)\bound{d3 }\free{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch4}
+\begin{paste}{ugIntProgDrawingPageFull4}{ugIntProgDrawingPageEmpty4}
+\pastebutton{ugIntProgDrawingPageFull4}{\hidepaste}
+\tab{5}\spadcommand{sp := subspace(vp)\bound{d5 }\free{d1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  3-Space with 1 component
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty4}
+\begin{paste}{ugIntProgDrawingPageEmpty4}{ugIntProgDrawingPagePatch4}
+\pastebutton{ugIntProgDrawingPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{sp := subspace(vp)\bound{d5 }\free{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch5}
+\begin{paste}{ugIntProgDrawingPageFull5}{ugIntProgDrawingPageEmpty5}
+\pastebutton{ugIntProgDrawingPageFull5}{\hidepaste}
+\tab{5}\spadgraph{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6 }\free{d5 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage5}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty5}
+\begin{paste}{ugIntProgDrawingPageEmpty5}{ugIntProgDrawingPagePatch5}
+\pastebutton{ugIntProgDrawingPageEmpty5}{\showpaste}
+\tab{5}\spadgraph{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6 }\free{d5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch6}
+\begin{paste}{ugIntProgDrawingPageFull6}{ugIntProgDrawingPageEmpty6}
+\pastebutton{ugIntProgDrawingPageFull6}{\hidepaste}
+\tab{5}\spadcommand{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10 }\free{d6 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty6}
+\begin{paste}{ugIntProgDrawingPageEmpty6}{ugIntProgDrawingPagePatch6}
+\pastebutton{ugIntProgDrawingPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10 }\free{d6 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPagePatch7}
+\begin{paste}{ugIntProgDrawingPageFull7}{ugIntProgDrawingPageEmpty7}
+\pastebutton{ugIntProgDrawingPageFull7}{\hidepaste}
+\tab{5}\spadcommand{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11 }\free{d10 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgDrawingPageEmpty7}
+\begin{paste}{ugIntProgDrawingPageEmpty7}{ugIntProgDrawingPagePatch7}
+\pastebutton{ugIntProgDrawingPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11 }\free{d10 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgRibbonPage}{ug10.ht}{A Ribbon Program}
 \pageto{notitle}{ugUserPage}
@@ -41803,11 +107280,38 @@ for \texht{$-1 \leq x \leq 1$}{-1 <= x <= 1}
 \epsffile[0 0 295 295]{../ps/ribbons5.ps}
 }
 
-
 \endscroll
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgRibbonPagePatch1}
+\begin{paste}{ugIntProgRibbonPageFull1}{ugIntProgRibbonPageEmpty1}
+\pastebutton{ugIntProgRibbonPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)read ribbon\bound{s0 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgRibbonPageEmpty1}
+\begin{paste}{ugIntProgRibbonPageEmpty1}{ugIntProgRibbonPagePatch1}
+\pastebutton{ugIntProgRibbonPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)read ribbon\bound{s0 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgRibbonPagePatch2}
+\begin{paste}{ugIntProgRibbonPageFull2}{ugIntProgRibbonPageEmpty2}
+\pastebutton{ugIntProgRibbonPageFull2}{\hidepaste}
+\tab{5}\spadgraph{drawRibbons([x**i for i in 1..5],x=-1..1)\free{s0 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogribbonpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogribbonpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgRibbonPageEmpty2}
+\begin{paste}{ugIntProgRibbonPageEmpty2}{ugIntProgRibbonPagePatch2}
+\pastebutton{ugIntProgRibbonPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{drawRibbons([x**i for i in 1..5],x=-1..1)\free{s0 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgColorPage}{ug10.ht}{Coloring and Positioning Ribbons}
 <<ug10.ht>>=
@@ -42013,6 +107517,194 @@ Here is a better viewing angle.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgPLCPagePatch1}
+\begin{paste}{ugIntProgPLCPageFull1}{ugIntProgPLCPageEmpty1}
+\pastebutton{ugIntProgPLCPageFull1}{\hidepaste}
+\tab{5}\spadcommand{zero := 0.0@DFLOAT\bound{d1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  0.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty1}
+\begin{paste}{ugIntProgPLCPageEmpty1}{ugIntProgPLCPagePatch1}
+\pastebutton{ugIntProgPLCPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{zero := 0.0@DFLOAT\bound{d1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch2}
+\begin{paste}{ugIntProgPLCPageFull2}{ugIntProgPLCPageEmpty2}
+\pastebutton{ugIntProgPLCPageFull2}{\hidepaste}
+\tab{5}\spadcommand{one := 1.0@DFLOAT\bound{d2 }}
+\indentrel{3}\begin{verbatim}
+   (2)  1.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty2}
+\begin{paste}{ugIntProgPLCPageEmpty2}{ugIntProgPLCPagePatch2}
+\pastebutton{ugIntProgPLCPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{one := 1.0@DFLOAT\bound{d2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch3}
+\begin{paste}{ugIntProgPLCPageFull3}{ugIntProgPLCPageEmpty3}
+\pastebutton{ugIntProgPLCPageFull3}{\hidepaste}
+\tab{5}\spadcommand{origin := point [zero,zero,zero,zero]\free{d1 }\bound{d3 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [0.0,0.0,0.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty3}
+\begin{paste}{ugIntProgPLCPageEmpty3}{ugIntProgPLCPagePatch3}
+\pastebutton{ugIntProgPLCPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{origin := point [zero,zero,zero,zero]\free{d1 }\bound{d3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch4}
+\begin{paste}{ugIntProgPLCPageFull4}{ugIntProgPLCPageEmpty4}
+\pastebutton{ugIntProgPLCPageFull4}{\hidepaste}
+\tab{5}\spadcommand{unit := point [one,one,one,zero]\free{d1 d2 }\bound{d4 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [1.0,1.0,1.0,0.0]
+                                Type: Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty4}
+\begin{paste}{ugIntProgPLCPageEmpty4}{ugIntProgPLCPagePatch4}
+\pastebutton{ugIntProgPLCPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{unit := point [one,one,one,zero]\free{d1 d2 }\bound{d4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch5}
+\begin{paste}{ugIntProgPLCPageFull5}{ugIntProgPLCPageEmpty5}
+\pastebutton{ugIntProgPLCPageFull5}{\hidepaste}
+\tab{5}\spadcommand{line := [origin, unit]\free{d3 d4 }\bound{d5 }}
+\indentrel{3}\begin{verbatim}
+   (5)  [[0.0,0.0,0.0,0.0],[1.0,1.0,1.0,0.0]]
+                           Type: List Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty5}
+\begin{paste}{ugIntProgPLCPageEmpty5}{ugIntProgPLCPagePatch5}
+\pastebutton{ugIntProgPLCPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{line := [origin, unit]\free{d3 d4 }\bound{d5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch6}
+\begin{paste}{ugIntProgPLCPageFull6}{ugIntProgPLCPageEmpty6}
+\pastebutton{ugIntProgPLCPageFull6}{\hidepaste}
+\tab{5}\spadcommand{)read arrows\bound{v1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  2.8274333882308138
+                                      Type: DoubleFloat
+   (7)  0.20000000000000001
+                                      Type: DoubleFloat
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty6}
+\begin{paste}{ugIntProgPLCPageEmpty6}{ugIntProgPLCPagePatch6}
+\pastebutton{ugIntProgPLCPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{)read arrows\bound{v1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch7}
+\begin{paste}{ugIntProgPLCPageFull7}{ugIntProgPLCPageEmpty7}
+\pastebutton{ugIntProgPLCPageFull7}{\hidepaste}
+\tab{5}\spadcommand{arrow := makeArrow(origin,unit)\bound{v2 }\free{v1 d3 d4 }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   [
+     [[0.0,0.0,0.0,0.0], [1.0,1.0,1.0,0.0],
+
+       [0.69134628604607973, 0.842733077659504,
+        0.80000000000000004, 0.0]
+       ]
+     ,
+
+     [[1.0,1.0,1.0,0.0],
+
+       [0.842733077659504, 0.69134628604607973,
+        0.80000000000000004, 0.0]
+       ]
+     ]
+                      Type: List List Point DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty7}
+\begin{paste}{ugIntProgPLCPageEmpty7}{ugIntProgPLCPagePatch7}
+\pastebutton{ugIntProgPLCPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{arrow := makeArrow(origin,unit)\bound{v2 }\free{v1 d3 d4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch8}
+\begin{paste}{ugIntProgPLCPageFull8}{ugIntProgPLCPageEmpty8}
+\pastebutton{ugIntProgPLCPageFull8}{\hidepaste}
+\tab{5}\spadcommand{sp := createThreeSpace()\bound{c1 }}
+\indentrel{3}\begin{verbatim}
+   (10)  3-Space with 0 components
+                           Type: ThreeSpace DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty8}
+\begin{paste}{ugIntProgPLCPageEmpty8}{ugIntProgPLCPagePatch8}
+\pastebutton{ugIntProgPLCPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{sp := createThreeSpace()\bound{c1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch9}
+\begin{paste}{ugIntProgPLCPageFull9}{ugIntProgPLCPageEmpty9}
+\pastebutton{ugIntProgPLCPageFull9}{\hidepaste}
+\tab{5}\spadcommand{for a in arrow repeat sp := curve(sp,a)\bound{v3 }\free{v2 }\free{c1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty9}
+\begin{paste}{ugIntProgPLCPageEmpty9}{ugIntProgPLCPagePatch9}
+\pastebutton{ugIntProgPLCPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{for a in arrow repeat sp := curve(sp,a)\bound{v3 }\free{v2 }\free{c1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch10}
+\begin{paste}{ugIntProgPLCPageFull10}{ugIntProgPLCPageEmpty10}
+\pastebutton{ugIntProgPLCPageFull10}{\hidepaste}
+\tab{5}\spadgraph{vp := makeViewport3D(sp,"Arrow")\bound{v4 }\free{v3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogplcpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogplcpage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty10}
+\begin{paste}{ugIntProgPLCPageEmpty10}{ugIntProgPLCPagePatch10}
+\pastebutton{ugIntProgPLCPageEmpty10}{\showpaste}
+\tab{5}\spadgraph{vp := makeViewport3D(sp,"Arrow")\bound{v4 }\free{v3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPagePatch11}
+\begin{paste}{ugIntProgPLCPageFull11}{ugIntProgPLCPageEmpty11}
+\pastebutton{ugIntProgPLCPageFull11}{\hidepaste}
+\tab{5}\spadcommand{rotate(vp,200,-60)\bound{v5 }\free{v4 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgPLCPageEmpty11}
+\begin{paste}{ugIntProgPLCPageEmpty11}{ugIntProgPLCPagePatch11}
+\pastebutton{ugIntProgPLCPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{rotate(vp,200,-60)\bound{v5 }\free{v4 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgColorArrPage}{ug10.ht}{A Bouquet of Arrows}
 <<ug10.ht>>=
@@ -42071,6 +107763,39 @@ A bouquet of a dozen arrows.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgColorArrPagePatch1}
+\begin{paste}{ugIntProgColorArrPageFull1}{ugIntProgColorArrPageEmpty1}
+\pastebutton{ugIntProgColorArrPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)read bouquet\bound{b1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  0.20000000000000001
+                                      Type: DoubleFloat
+   (2)  2.8274333882308138
+                                      Type: DoubleFloat
+                                             Type: Void
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgColorArrPageEmpty1}
+\begin{paste}{ugIntProgColorArrPageEmpty1}{ugIntProgColorArrPagePatch1}
+\pastebutton{ugIntProgColorArrPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)read bouquet\bound{b1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgColorArrPagePatch2}
+\begin{paste}{ugIntProgColorArrPageFull2}{ugIntProgColorArrPageEmpty2}
+\pastebutton{ugIntProgColorArrPageFull2}{\hidepaste}
+\tab{5}\spadgraph{drawBouquet(12,"A Dozen Arrows")\free{b1 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogcolorarrpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogcolorarrpage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgColorArrPageEmpty2}
+\begin{paste}{ugIntProgColorArrPageEmpty2}{ugIntProgColorArrPagePatch2}
+\pastebutton{ugIntProgColorArrPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{drawBouquet(12,"A Dozen Arrows")\free{b1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgVecFieldsPage}{ug10.ht}{Drawing Complex Vector Fields}
 <<ug10.ht>>=
@@ -42219,6 +107944,53 @@ Draw the complex vector field of \spad{sin(x)}.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgVecFieldsPagePatch1}
+\begin{paste}{ugIntProgVecFieldsPageFull1}{ugIntProgVecFieldsPageEmpty1}
+\pastebutton{ugIntProgVecFieldsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)read vectors\bound{readVI }}
+\indentrel{3}\begin{verbatim}
+   (1)  2.8274333882308138
+                                      Type: DoubleFloat
+   (2)  0.20000000000000001
+                                      Type: DoubleFloat
+                                             Type: Void
+   (4)  6.0
+                                      Type: DoubleFloat
+                                             Type: Void
+   (6)  25
+                                          Type: Integer
+   (7)  25
+                                          Type: Integer
+   (8)  Complex DoubleFloat
+                                           Type: Domain
+   (9)  Segment DoubleFloat
+                                           Type: Domain
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgVecFieldsPageEmpty1}
+\begin{paste}{ugIntProgVecFieldsPageEmpty1}{ugIntProgVecFieldsPagePatch1}
+\pastebutton{ugIntProgVecFieldsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)read vectors\bound{readVI }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgVecFieldsPagePatch2}
+\begin{paste}{ugIntProgVecFieldsPageFull2}{ugIntProgVecFieldsPageEmpty2}
+\pastebutton{ugIntProgVecFieldsPageFull2}{\hidepaste}
+\tab{5}\spadgraph{drawComplexVectorField(sin,-2..2,-2..2)\free{readVI }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogvecfieldspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogvecfieldspage2}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgVecFieldsPageEmpty2}
+\begin{paste}{ugIntProgVecFieldsPageEmpty2}{ugIntProgVecFieldsPagePatch2}
+\pastebutton{ugIntProgVecFieldsPageEmpty2}{\showpaste}
+\tab{5}\spadgraph{drawComplexVectorField(sin,-2..2,-2..2)\free{readVI }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgCompFunsPage}{ug10.ht}{Drawing Complex Functions}
 \pageto{notitle}{ugGraphPage}
@@ -42323,6 +108095,68 @@ Draw it with an odd number of steps to avoid the pole.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgCompFunsPagePatch1}
+\begin{paste}{ugIntProgCompFunsPageFull1}{ugIntProgCompFunsPageEmpty1}
+\pastebutton{ugIntProgCompFunsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)read vectors\bound{readVI }}
+\indentrel{3}\begin{verbatim}
+   (1)  2.8274333882308138
+                                      Type: DoubleFloat
+   (2)  0.20000000000000001
+                                      Type: DoubleFloat
+                                             Type: Void
+   (4)  6.0
+                                      Type: DoubleFloat
+                                             Type: Void
+   (6)  25
+                                          Type: Integer
+   (7)  25
+                                          Type: Integer
+   (8)  Complex DoubleFloat
+                                           Type: Domain
+   (9)  Segment DoubleFloat
+                                           Type: Domain
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgCompFunsPageEmpty1}
+\begin{paste}{ugIntProgCompFunsPageEmpty1}{ugIntProgCompFunsPagePatch1}
+\pastebutton{ugIntProgCompFunsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)read vectors\bound{readVI }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgCompFunsPagePatch2}
+\begin{paste}{ugIntProgCompFunsPageFull2}{ugIntProgCompFunsPageEmpty2}
+\pastebutton{ugIntProgCompFunsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f(z) == exp(1/z)\bound{e1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgCompFunsPageEmpty2}
+\begin{paste}{ugIntProgCompFunsPageEmpty2}{ugIntProgCompFunsPagePatch2}
+\pastebutton{ugIntProgCompFunsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f(z) == exp(1/z)\bound{e1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgCompFunsPagePatch3}
+\begin{paste}{ugIntProgCompFunsPageFull3}{ugIntProgCompFunsPageEmpty3}
+\pastebutton{ugIntProgCompFunsPageFull3}{\hidepaste}
+\tab{5}\spadgraph{drawComplex(f,-2..2,-2..2)\free{e1 readVI }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogcompfunspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogcompfunspage3}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgCompFunsPageEmpty3}
+\begin{paste}{ugIntProgCompFunsPageEmpty3}{ugIntProgCompFunsPagePatch3}
+\pastebutton{ugIntProgCompFunsPageEmpty3}{\showpaste}
+\tab{5}\spadgraph{drawComplex(f,-2..2,-2..2)\free{e1 readVI }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgFunctionsPage}{ug10.ht}{Functions Producing Functions}
 \pageto{notitle}{ugUserMakePage}
@@ -42361,6 +108195,56 @@ For a more sophisticated application, read on.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgFunctionsPagePatch1}
+\begin{paste}{ugIntProgFunctionsPageFull1}{ugIntProgFunctionsPageEmpty1}
+\pastebutton{ugIntProgFunctionsPageFull1}{\hidepaste}
+\tab{5}\spadcommand{(x+1/3)**5\bound{p1 }}
+\indentrel{3}\begin{verbatim}
+         5   5  4   10  3   10  2    5      1
+   (1)  x  + Ä x  + ÄÄ x  + ÄÄ x  + ÄÄ x + ÄÄÄ
+             3       9      27      81     243
+                      Type: Polynomial Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgFunctionsPageEmpty1}
+\begin{paste}{ugIntProgFunctionsPageEmpty1}{ugIntProgFunctionsPagePatch1}
+\pastebutton{ugIntProgFunctionsPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{(x+1/3)**5\bound{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgFunctionsPagePatch2}
+\begin{paste}{ugIntProgFunctionsPageFull2}{ugIntProgFunctionsPageEmpty2}
+\pastebutton{ugIntProgFunctionsPageFull2}{\hidepaste}
+\tab{5}\spadcommand{p := compiledFunction(\%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)\bound{p2 }\free{p1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  theMap(MKUCFUNC;unaryFunction;SM;2!0,350)
+                     Type: (DoubleFloat -> DoubleFloat)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgFunctionsPageEmpty2}
+\begin{paste}{ugIntProgFunctionsPageEmpty2}{ugIntProgFunctionsPagePatch2}
+\pastebutton{ugIntProgFunctionsPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{p := compiledFunction(\%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)\bound{p2 }\free{p1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgFunctionsPagePatch3}
+\begin{paste}{ugIntProgFunctionsPageFull3}{ugIntProgFunctionsPageEmpty3}
+\pastebutton{ugIntProgFunctionsPageFull3}{\hidepaste}
+\tab{5}\spadcommand{p(sin(1.3))\bound{p3 }\free{p2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  3.668751115057229
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgFunctionsPageEmpty3}
+\begin{paste}{ugIntProgFunctionsPageEmpty3}{ugIntProgFunctionsPagePatch3}
+\pastebutton{ugIntProgFunctionsPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{p(sin(1.3))\bound{p3 }\free{p2 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugIntProgNewtonPage}{ug10.ht}
 {Automatic Newton Iteration Formulas}
@@ -42529,11 +108413,231 @@ The surface.
 }
 \ 
 
-
 \endscroll
 \autobuttons
 \end{page}
 
+\begin{patch}{ugIntProgNewtonPagePatch1}
+\begin{paste}{ugIntProgNewtonPageFull1}{ugIntProgNewtonPageEmpty1}
+\pastebutton{ugIntProgNewtonPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)read newton\bound{n1 }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+   (2)
+  MakeUnaryCompiledFunction(Expression Integer,Complex Do
+  ubleFloat,Complex DoubleFloat)
+                                           Type: Domain
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty1}
+\begin{paste}{ugIntProgNewtonPageEmpty1}{ugIntProgNewtonPagePatch1}
+\pastebutton{ugIntProgNewtonPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)read newton\bound{n1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch2}
+\begin{paste}{ugIntProgNewtonPageFull2}{ugIntProgNewtonPageEmpty2}
+\pastebutton{ugIntProgNewtonPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)read vectors\bound{n1a }}
+\indentrel{3}\begin{verbatim}
+   (6)  2.8274333882308138
+                                      Type: DoubleFloat
+   (7)  0.20000000000000001
+                                      Type: DoubleFloat
+                                             Type: Void
+   (9)  6.0
+                                      Type: DoubleFloat
+                                             Type: Void
+   (11)  25
+                                          Type: Integer
+   (12)  25
+                                          Type: Integer
+   (13)  Complex DoubleFloat
+                                           Type: Domain
+   (14)  Segment DoubleFloat
+                                           Type: Domain
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty2}
+\begin{paste}{ugIntProgNewtonPageEmpty2}{ugIntProgNewtonPagePatch2}
+\pastebutton{ugIntProgNewtonPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)read vectors\bound{n1a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch3}
+\begin{paste}{ugIntProgNewtonPageFull3}{ugIntProgNewtonPageEmpty3}
+\pastebutton{ugIntProgNewtonPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f := x**3 - 2\bound{n2 }\free{n1 n1a }}
+\indentrel{3}\begin{verbatim}
+          3
+   (19)  x  - 2
+                               Type: Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty3}
+\begin{paste}{ugIntProgNewtonPageEmpty3}{ugIntProgNewtonPagePatch3}
+\pastebutton{ugIntProgNewtonPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f := x**3 - 2\bound{n2 }\free{n1 n1a }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch4}
+\begin{paste}{ugIntProgNewtonPageFull4}{ugIntProgNewtonPageEmpty4}
+\pastebutton{ugIntProgNewtonPageFull4}{\hidepaste}
+\tab{5}\spadcommand{g := newtonStep f\bound{n3 }\free{n2 }}
+\indentrel{3}\begin{verbatim}
+   (20)  theMap(LAMBDA_f3lkwh_704,484)
+     Type: (Complex DoubleFloat -> Complex DoubleFloat)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty4}
+\begin{paste}{ugIntProgNewtonPageEmpty4}{ugIntProgNewtonPagePatch4}
+\pastebutton{ugIntProgNewtonPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{g := newtonStep f\bound{n3 }\free{n2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch5}
+\begin{paste}{ugIntProgNewtonPageFull5}{ugIntProgNewtonPageEmpty5}
+\pastebutton{ugIntProgNewtonPageFull5}{\hidepaste}
+\tab{5}\spadcommand{a := g(1.0 + \%i)\bound{n4 }\free{n3 }}
+\indentrel{3}\begin{verbatim}
+   (21)  0.66666666666666674 + 0.33333333333333337%i
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty5}
+\begin{paste}{ugIntProgNewtonPageEmpty5}{ugIntProgNewtonPagePatch5}
+\pastebutton{ugIntProgNewtonPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{a := g(1.0 + \%i)\bound{n4 }\free{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch6}
+\begin{paste}{ugIntProgNewtonPageFull6}{ugIntProgNewtonPageEmpty6}
+\pastebutton{ugIntProgNewtonPageFull6}{\hidepaste}
+\tab{5}\spadcommand{[(a := g(a)) for i in 1..]\bound{n5 }\free{n4 }}
+\indentrel{3}\begin{verbatim}
+   (22)
+   [1.1644444444444444 - 0.73777777777777775%i,
+    0.92614004697164776 - 0.17463006425584393%i,
+    1.3164444838140228 + 0.15690694583015852%i,
+    1.2462991025761463 + 0.015454763610132094%i,
+    1.2598725296532081 - 0.00033827162059311272%i,
+    1.259920960928212 + 2.6023534653422681e-08%i,
+    1.259921049894879 - 3.6751942591616685e-15%i,
+    1.2599210498948732 - 3.3132158019282496e-29%i,
+    1.2599210498948732 - 5.6051938572992683e-45%i,
+    1.2599210498948732, ...]
+                       Type: Stream Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty6}
+\begin{paste}{ugIntProgNewtonPageEmpty6}{ugIntProgNewtonPagePatch6}
+\pastebutton{ugIntProgNewtonPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{[(a := g(a)) for i in 1..]\bound{n5 }\free{n4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch7}
+\begin{paste}{ugIntProgNewtonPageFull7}{ugIntProgNewtonPageEmpty7}
+\pastebutton{ugIntProgNewtonPageFull7}{\hidepaste}
+\tab{5}\spadcommand{a**3\bound{n6 }\free{n5 }}
+\indentrel{3}\begin{verbatim}
+   (23)  2.0
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty7}
+\begin{paste}{ugIntProgNewtonPageEmpty7}{ugIntProgNewtonPagePatch7}
+\pastebutton{ugIntProgNewtonPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{a**3\bound{n6 }\free{n5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch8}
+\begin{paste}{ugIntProgNewtonPageFull8}{ugIntProgNewtonPageEmpty8}
+\pastebutton{ugIntProgNewtonPageFull8}{\hidepaste}
+\tab{5}\spadcommand{(g*g) (1.0 + \%i)\bound{n10 }\free{n3 }}
+\indentrel{3}\begin{verbatim}
+   (24)  1.1644444444444444 - 0.73777777777777775%i
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty8}
+\begin{paste}{ugIntProgNewtonPageEmpty8}{ugIntProgNewtonPagePatch8}
+\pastebutton{ugIntProgNewtonPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{(g*g) (1.0 + \%i)\bound{n10 }\free{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch9}
+\begin{paste}{ugIntProgNewtonPageFull9}{ugIntProgNewtonPageEmpty9}
+\pastebutton{ugIntProgNewtonPageFull9}{\hidepaste}
+\tab{5}\spadcommand{(g**11) (1.0 + \%i)\bound{n11 }\free{n10 }}
+\indentrel{3}\begin{verbatim}
+   (25)  1.2599210498948732
+                              Type: Complex DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty9}
+\begin{paste}{ugIntProgNewtonPageEmpty9}{ugIntProgNewtonPagePatch9}
+\pastebutton{ugIntProgNewtonPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{(g**11) (1.0 + \%i)\bound{n11 }\free{n10 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch10}
+\begin{paste}{ugIntProgNewtonPageFull10}{ugIntProgNewtonPageEmpty10}
+\pastebutton{ugIntProgNewtonPageFull10}{\hidepaste}
+\tab{5}\spadgraph{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprognewtonpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprognewtonpage10}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty10}
+\begin{paste}{ugIntProgNewtonPageEmpty10}{ugIntProgNewtonPagePatch10}
+\pastebutton{ugIntProgNewtonPageEmpty10}{\showpaste}
+\tab{5}\spadgraph{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch11}
+\begin{paste}{ugIntProgNewtonPageFull11}{ugIntProgNewtonPageEmpty11}
+\pastebutton{ugIntProgNewtonPageFull11}{\hidepaste}
+\tab{5}\spadgraph{drawComplex(g**3,-3..3,-3..3)\free{n3 }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprognewtonpage11.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprognewtonpage11}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty11}
+\begin{paste}{ugIntProgNewtonPageEmpty11}{ugIntProgNewtonPagePatch11}
+\pastebutton{ugIntProgNewtonPageEmpty11}{\showpaste}
+\tab{5}\spadgraph{drawComplex(g**3,-3..3,-3..3)\free{n3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPagePatch12}
+\begin{paste}{ugIntProgNewtonPageFull12}{ugIntProgNewtonPageEmpty12}
+\pastebutton{ugIntProgNewtonPageFull12}{\hidepaste}
+\tab{5}\spadcommand{all}
+\indentrel{3}\begin{verbatim}
+   (28)  all
+                                     Type: Variable all
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugIntProgNewtonPageEmpty12}
+\begin{paste}{ugIntProgNewtonPageEmpty12}{ugIntProgNewtonPagePatch12}
+\pastebutton{ugIntProgNewtonPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{all}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 11 (ug11.ht)}
 \pagehead{ugPackagesPage}{ug11.ht}{Packages}
@@ -42976,6 +109080,110 @@ Draw the \spadfun{Gamma} function.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugPackagesPackagesPagePatch1}
+\begin{paste}{ugPackagesPackagesPageFull1}{ugPackagesPackagesPageEmpty1}
+\pastebutton{ugPackagesPackagesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)compile drawpak}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty1}
+\begin{paste}{ugPackagesPackagesPageEmpty1}{ugPackagesPackagesPagePatch1}
+\pastebutton{ugPackagesPackagesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)compile drawpak}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch2}
+\begin{paste}{ugPackagesPackagesPageFull2}{ugPackagesPackagesPageEmpty2}
+\pastebutton{ugPackagesPackagesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{)expose DRAWCX\bound{dp }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty2}
+\begin{paste}{ugPackagesPackagesPageEmpty2}{ugPackagesPackagesPagePatch2}
+\pastebutton{ugPackagesPackagesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{)expose DRAWCX\bound{dp }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch3}
+\begin{paste}{ugPackagesPackagesPageFull3}{ugPackagesPackagesPageEmpty3}
+\pastebutton{ugPackagesPackagesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{setRealSteps 51\free{dp }\bound{srs }}
+\indentrel{3}\begin{verbatim}
+   (1)  51
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty3}
+\begin{paste}{ugPackagesPackagesPageEmpty3}{ugPackagesPackagesPagePatch3}
+\pastebutton{ugPackagesPackagesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{setRealSteps 51\free{dp }\bound{srs }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch4}
+\begin{paste}{ugPackagesPackagesPageFull4}{ugPackagesPackagesPageEmpty4}
+\pastebutton{ugPackagesPackagesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{setImagSteps 51\free{dp }\bound{scs }}
+\indentrel{3}\begin{verbatim}
+   (2)  51
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty4}
+\begin{paste}{ugPackagesPackagesPageEmpty4}{ugPackagesPackagesPagePatch4}
+\pastebutton{ugPackagesPackagesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{setImagSteps 51\free{dp }\bound{scs }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch5}
+\begin{paste}{ugPackagesPackagesPageFull5}{ugPackagesPackagesPageEmpty5}
+\pastebutton{ugPackagesPackagesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{f(z) == Gamma(z)\bound{f }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty5}
+\begin{paste}{ugPackagesPackagesPageEmpty5}{ugPackagesPackagesPagePatch5}
+\pastebutton{ugPackagesPackagesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{f(z) == Gamma(z)\bound{f }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch6}
+\begin{paste}{ugPackagesPackagesPageFull6}{ugPackagesPackagesPageEmpty6}
+\pastebutton{ugPackagesPackagesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{setClipValue 7}
+\indentrel{3}\begin{verbatim}
+   (4)  7.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty6}
+\begin{paste}{ugPackagesPackagesPageEmpty6}{ugPackagesPackagesPagePatch6}
+\pastebutton{ugPackagesPackagesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{setClipValue 7}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPagePatch7}
+\begin{paste}{ugPackagesPackagesPageFull7}{ugPackagesPackagesPageEmpty7}
+\pastebutton{ugPackagesPackagesPageFull7}{\hidepaste}
+\tab{5}\spadgraph{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false)\free{srs scs f }}
+\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugpackagespackagespage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugpackagespackagespage7}}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesPackagesPageEmpty7}
+\begin{paste}{ugPackagesPackagesPageEmpty7}{ugPackagesPackagesPagePatch7}
+\pastebutton{ugPackagesPackagesPageEmpty7}{\showpaste}
+\tab{5}\spadgraph{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false)\free{srs scs f }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugPackagesParametersPage}{ug11.ht}{Parameters}
 \pageto{notitle}{ugTypesPage}
@@ -43329,6 +109537,244 @@ Now sort it.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugPackagesCompilingPagePatch1}
+\begin{paste}{ugPackagesCompilingPageFull1}{ugPackagesCompilingPageEmpty1}
+\pastebutton{ugPackagesCompilingPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)expose SORTPAK}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty1}
+\begin{paste}{ugPackagesCompilingPageEmpty1}{ugPackagesCompilingPagePatch1}
+\pastebutton{ugPackagesCompilingPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)expose SORTPAK}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch2}
+\begin{paste}{ugPackagesCompilingPageFull2}{ugPackagesCompilingPageEmpty2}
+\pastebutton{ugPackagesCompilingPageFull2}{\hidepaste}
+\tab{5}\spadcommand{l := [1,7,4,2,11,-7,3,2]}
+\indentrel{3}\begin{verbatim}
+   (1)  [1,7,4,2,11,- 7,3,2]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty2}
+\begin{paste}{ugPackagesCompilingPageEmpty2}{ugPackagesCompilingPagePatch2}
+\pastebutton{ugPackagesCompilingPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{l := [1,7,4,2,11,-7,3,2]}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch3}
+\begin{paste}{ugPackagesCompilingPageFull3}{ugPackagesCompilingPageEmpty3}
+\pastebutton{ugPackagesCompilingPageFull3}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort!(l)}
+\indentrel{3}\begin{verbatim}
+   (2)  [- 7,1,2,2,3,4,7,11]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty3}
+\begin{paste}{ugPackagesCompilingPageEmpty3}{ugPackagesCompilingPagePatch3}
+\pastebutton{ugPackagesCompilingPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{bubbleSort!(l)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch4}
+\begin{paste}{ugPackagesCompilingPageFull4}{ugPackagesCompilingPageEmpty4}
+\pastebutton{ugPackagesCompilingPageFull4}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort!(l,(x,y) +-> x > y)}
+\indentrel{3}\begin{verbatim}
+   (3)  [11,7,4,3,2,2,1,- 7]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty4}
+\begin{paste}{ugPackagesCompilingPageEmpty4}{ugPackagesCompilingPagePatch4}
+\pastebutton{ugPackagesCompilingPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{bubbleSort!(l,(x,y) +-> x > y)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch5}
+\begin{paste}{ugPackagesCompilingPageFull5}{ugPackagesCompilingPageEmpty5}
+\pastebutton{ugPackagesCompilingPageFull5}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort!(l, <$Integer)}
+\indentrel{3}\begin{verbatim}
+   (4)  [- 7,1,2,2,3,4,7,11]
+                                     Type: List Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty5}
+\begin{paste}{ugPackagesCompilingPageEmpty5}{ugPackagesCompilingPagePatch5}
+\pastebutton{ugPackagesCompilingPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{bubbleSort!(l, <$Integer)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch6}
+\begin{paste}{ugPackagesCompilingPageFull6}{ugPackagesCompilingPageEmpty6}
+\pastebutton{ugPackagesCompilingPageFull6}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort! "Mathematical Sciences"}
+\indentrel{3}\begin{verbatim}
+   (5)  " MSaaaccceeehiilmnstt"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty6}
+\begin{paste}{ugPackagesCompilingPageEmpty6}{ugPackagesCompilingPagePatch6}
+\pastebutton{ugPackagesCompilingPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{bubbleSort! "Mathematical Sciences"}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch7}
+\begin{paste}{ugPackagesCompilingPageFull7}{ugPackagesCompilingPageEmpty7}
+\pastebutton{ugPackagesCompilingPageFull7}{\hidepaste}
+\tab{5}\spadcommand{false < true}
+\indentrel{3}\begin{verbatim}
+   (6)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty7}
+\begin{paste}{ugPackagesCompilingPageEmpty7}{ugPackagesCompilingPagePatch7}
+\pastebutton{ugPackagesCompilingPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{false < true}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch8}
+\begin{paste}{ugPackagesCompilingPageFull8}{ugPackagesCompilingPageEmpty8}
+\pastebutton{ugPackagesCompilingPageFull8}{\hidepaste}
+\tab{5}\spadcommand{u : Bits := new(10,true)}
+\indentrel{3}\begin{verbatim}
+   (7)  "1111111111"
+                                             Type: Bits
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty8}
+\begin{paste}{ugPackagesCompilingPageEmpty8}{ugPackagesCompilingPagePatch8}
+\pastebutton{ugPackagesCompilingPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{u : Bits := new(10,true)}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch9}
+\begin{paste}{ugPackagesCompilingPageFull9}{ugPackagesCompilingPageEmpty9}
+\pastebutton{ugPackagesCompilingPageFull9}{\hidepaste}
+\tab{5}\spadcommand{u(3..5) := false; u}
+\indentrel{3}\begin{verbatim}
+   (8)  "1100011111"
+                                             Type: Bits
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty9}
+\begin{paste}{ugPackagesCompilingPageEmpty9}{ugPackagesCompilingPagePatch9}
+\pastebutton{ugPackagesCompilingPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{u(3..5) := false; u}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch10}
+\begin{paste}{ugPackagesCompilingPageFull10}{ugPackagesCompilingPageEmpty10}
+\pastebutton{ugPackagesCompilingPageFull10}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort! u}
+\indentrel{3}\begin{verbatim}
+   (9)  "0001111111"
+                                             Type: Bits
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty10}
+\begin{paste}{ugPackagesCompilingPageEmpty10}{ugPackagesCompilingPagePatch10}
+\pastebutton{ugPackagesCompilingPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{bubbleSort! u}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch11}
+\begin{paste}{ugPackagesCompilingPageFull11}{ugPackagesCompilingPageEmpty11}
+\pastebutton{ugPackagesCompilingPageFull11}{\hidepaste}
+\tab{5}\spadcommand{t : EqTable(Integer,String) := table()}
+\indentrel{3}\begin{verbatim}
+   (10)  table()
+                          Type: EqTable(Integer,String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty11}
+\begin{paste}{ugPackagesCompilingPageEmpty11}{ugPackagesCompilingPagePatch11}
+\pastebutton{ugPackagesCompilingPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{t : EqTable(Integer,String) := table()}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch12}
+\begin{paste}{ugPackagesCompilingPageFull12}{ugPackagesCompilingPageEmpty12}
+\pastebutton{ugPackagesCompilingPageFull12}{\hidepaste}
+\tab{5}\spadcommand{t.1 := "robert"}
+\indentrel{3}\begin{verbatim}
+   (11)  "robert"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty12}
+\begin{paste}{ugPackagesCompilingPageEmpty12}{ugPackagesCompilingPagePatch12}
+\pastebutton{ugPackagesCompilingPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{t.1 := "robert"}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch13}
+\begin{paste}{ugPackagesCompilingPageFull13}{ugPackagesCompilingPageEmpty13}
+\pastebutton{ugPackagesCompilingPageFull13}{\hidepaste}
+\tab{5}\spadcommand{t.2 := "richard"}
+\indentrel{3}\begin{verbatim}
+   (12)  "richard"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty13}
+\begin{paste}{ugPackagesCompilingPageEmpty13}{ugPackagesCompilingPagePatch13}
+\pastebutton{ugPackagesCompilingPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{t.2 := "richard"}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch14}
+\begin{paste}{ugPackagesCompilingPageFull14}{ugPackagesCompilingPageEmpty14}
+\pastebutton{ugPackagesCompilingPageFull14}{\hidepaste}
+\tab{5}\spadcommand{t}
+\indentrel{3}\begin{verbatim}
+   (13)  table(2= "richard",1= "robert")
+                          Type: EqTable(Integer,String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty14}
+\begin{paste}{ugPackagesCompilingPageEmpty14}{ugPackagesCompilingPagePatch14}
+\pastebutton{ugPackagesCompilingPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{t}
+\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPagePatch15}
+\begin{paste}{ugPackagesCompilingPageFull15}{ugPackagesCompilingPageEmpty15}
+\pastebutton{ugPackagesCompilingPageFull15}{\hidepaste}
+\tab{5}\spadcommand{bubbleSort! t}
+\indentrel{3}\begin{verbatim}
+   (14)  table(2= "robert",1= "richard")
+                          Type: EqTable(Integer,String)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesCompilingPageEmpty15}
+\begin{paste}{ugPackagesCompilingPageEmpty15}{ugPackagesCompilingPagePatch15}
+\pastebutton{ugPackagesCompilingPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{bubbleSort! t}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugPackagesHowPage}{ug11.ht}{How Packages Work}
 \pageto{notitle}{ugCategoriesHierPage}
@@ -43403,6 +109849,20 @@ the function to the argument \axiom{[1,-5,3]}.  The
 environment and produces the result.  \endscroll \autobuttons
 \end{page}
 
+\begin{patch}{ugPackagesHowPagePatch1}
+\begin{paste}{ugPackagesHowPageFull1}{ugPackagesHowPageEmpty1}
+\pastebutton{ugPackagesHowPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)display op bubbleSort!}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugPackagesHowPageEmpty1}
+\begin{paste}{ugPackagesHowPageEmpty1}{ugPackagesHowPagePatch1}
+\pastebutton{ugPackagesHowPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)display op bubbleSort!}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 12 (ug12.ht)}
 \pagehead{ugCategoriesPage}{ug12.ht}{Categories}
@@ -44094,6 +110554,38 @@ to rings but do not have this attribute).
 \autobuttons
 \end{page}
 
+\begin{patch}{ugCategoriesAttributesPagePatch1}
+\begin{paste}{ugCategoriesAttributesPageFull1}{ugCategoriesAttributesPageEmpty1}
+\pastebutton{ugCategoriesAttributesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{Polynomial Integer has commutative("*")}
+\indentrel{3}\begin{verbatim}
+   (1)  true
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugCategoriesAttributesPageEmpty1}
+\begin{paste}{ugCategoriesAttributesPageEmpty1}{ugCategoriesAttributesPagePatch1}
+\pastebutton{ugCategoriesAttributesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{Polynomial Integer has commutative("*")}
+\end{paste}\end{patch}
+
+\begin{patch}{ugCategoriesAttributesPagePatch2}
+\begin{paste}{ugCategoriesAttributesPageFull2}{ugCategoriesAttributesPageEmpty2}
+\pastebutton{ugCategoriesAttributesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{Matrix Integer has commutative("*")}
+\indentrel{3}\begin{verbatim}
+   (2)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugCategoriesAttributesPageEmpty2}
+\begin{paste}{ugCategoriesAttributesPageEmpty2}{ugCategoriesAttributesPagePatch2}
+\pastebutton{ugCategoriesAttributesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{Matrix Integer has commutative("*")}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugCategoriesParametersPage}{ug12.ht}{Parameters}
 \pagefrom{Categories}{ugCategoriesPage}
@@ -44599,6 +111091,134 @@ What is 3 times \axiom{q} minus \axiom{q} plus \axiom{q}?
 \autobuttons
 \end{page}
 
+\begin{patch}{ugDomainsDemoPagePatch1}
+\begin{paste}{ugDomainsDemoPageFull1}{ugDomainsDemoPageEmpty1}
+\pastebutton{ugDomainsDemoPageFull1}{\hidepaste}
+\tab{5}\spadcommand{QF := QuadraticForm(2,Fraction Integer)\bound{x2 }\free{x1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  QuadraticForm(2,Fraction Integer)
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty1}
+\begin{paste}{ugDomainsDemoPageEmpty1}{ugDomainsDemoPagePatch1}
+\pastebutton{ugDomainsDemoPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{QF := QuadraticForm(2,Fraction Integer)\bound{x2 }\free{x1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch2}
+\begin{paste}{ugDomainsDemoPageFull2}{ugDomainsDemoPageEmpty2}
+\pastebutton{ugDomainsDemoPageFull2}{\hidepaste}
+\tab{5}\spadcommand{A := matrix [[-1,1/2],[1/2,1]]\bound{x3 }\free{x2 }}
+\indentrel{3}\begin{verbatim}
+        Ú     1¿
+        ³- 1  Ä³
+        ³     2³
+   (2)  ³      ³
+        ³ 1    ³
+        ³ Ä   1³
+        À 2    Ù
+                          Type: Matrix Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty2}
+\begin{paste}{ugDomainsDemoPageEmpty2}{ugDomainsDemoPagePatch2}
+\pastebutton{ugDomainsDemoPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{A := matrix [[-1,1/2],[1/2,1]]\bound{x3 }\free{x2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch3}
+\begin{paste}{ugDomainsDemoPageFull3}{ugDomainsDemoPageEmpty3}
+\pastebutton{ugDomainsDemoPageFull3}{\hidepaste}
+\tab{5}\spadcommand{q : QF := quadraticForm(A)\bound{x4 }\free{x3 }}
+\indentrel{3}\begin{verbatim}
+        Ú     1¿
+        ³- 1  Ä³
+        ³     2³
+   (3)  ³      ³
+        ³ 1    ³
+        ³ Ä   1³
+        À 2    Ù
+                Type: QuadraticForm(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty3}
+\begin{paste}{ugDomainsDemoPageEmpty3}{ugDomainsDemoPagePatch3}
+\pastebutton{ugDomainsDemoPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{q : QF := quadraticForm(A)\bound{x4 }\free{x3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch4}
+\begin{paste}{ugDomainsDemoPageFull4}{ugDomainsDemoPageEmpty4}
+\pastebutton{ugDomainsDemoPageFull4}{\hidepaste}
+\tab{5}\spadcommand{nrows q\free{x3 }}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty4}
+\begin{paste}{ugDomainsDemoPageEmpty4}{ugDomainsDemoPagePatch4}
+\pastebutton{ugDomainsDemoPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{nrows q\free{x3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch5}
+\begin{paste}{ugDomainsDemoPageFull5}{ugDomainsDemoPageEmpty5}
+\pastebutton{ugDomainsDemoPageFull5}{\hidepaste}
+\tab{5}\spadcommand{v := directProduct([2,-1])$DirectProduct(2,Fraction Integer)\bound{x5 }\free{x4 }}
+\indentrel{3}\begin{verbatim}
+   (4)  [2,- 1]
+                Type: DirectProduct(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty5}
+\begin{paste}{ugDomainsDemoPageEmpty5}{ugDomainsDemoPagePatch5}
+\pastebutton{ugDomainsDemoPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{v := directProduct([2,-1])$DirectProduct(2,Fraction Integer)\bound{x5 }\free{x4 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch6}
+\begin{paste}{ugDomainsDemoPageFull6}{ugDomainsDemoPageEmpty6}
+\pastebutton{ugDomainsDemoPageFull6}{\hidepaste}
+\tab{5}\spadcommand{q.v\free{x5 }}
+\indentrel{3}\begin{verbatim}
+   (5)  - 5
+                                 Type: Fraction Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty6}
+\begin{paste}{ugDomainsDemoPageEmpty6}{ugDomainsDemoPagePatch6}
+\pastebutton{ugDomainsDemoPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{q.v\free{x5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPagePatch7}
+\begin{paste}{ugDomainsDemoPageFull7}{ugDomainsDemoPageEmpty7}
+\pastebutton{ugDomainsDemoPageFull7}{\hidepaste}
+\tab{5}\spadcommand{3*q-q+q\free{x4 }}
+\indentrel{3}\begin{verbatim}
+        Ú     3¿
+        ³- 3  Ä³
+        ³     2³
+   (6)  ³      ³
+        ³ 3    ³
+        ³ Ä   3³
+        À 2    Ù
+                Type: QuadraticForm(2,Fraction Integer)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsDemoPageEmpty7}
+\begin{paste}{ugDomainsDemoPageEmpty7}{ugDomainsDemoPagePatch7}
+\pastebutton{ugDomainsDemoPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{3*q-q+q\free{x4 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugDomainsBrowsePage}{ug13.ht}{Browse}
 <<ug13.ht>>=
@@ -45235,6 +111855,57 @@ we now build the necessary domains and packages to implement it.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugDomainsQueryLanguagePagePatch1}
+\begin{paste}{ugDomainsQueryLanguagePageFull1}{ugDomainsQueryLanguagePageEmpty1}
+\pastebutton{ugDomainsQueryLanguagePageFull1}{\hidepaste}
+\tab{5}\spadcommand{ops := getDatabase("o")\bound{o1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  6315
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsQueryLanguagePageEmpty1}
+\begin{paste}{ugDomainsQueryLanguagePageEmpty1}{ugDomainsQueryLanguagePagePatch1}
+\pastebutton{ugDomainsQueryLanguagePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ops := getDatabase("o")\bound{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsQueryLanguagePagePatch2}
+\begin{paste}{ugDomainsQueryLanguagePageFull2}{ugDomainsQueryLanguagePageEmpty2}
+\pastebutton{ugDomainsQueryLanguagePageFull2}{\hidepaste}
+\tab{5}\spadcommand{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2 }\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  3
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsQueryLanguagePageEmpty2}
+\begin{paste}{ugDomainsQueryLanguagePageEmpty2}{ugDomainsQueryLanguagePagePatch2}
+\pastebutton{ugDomainsQueryLanguagePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2 }\free{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsQueryLanguagePagePatch3}
+\begin{paste}{ugDomainsQueryLanguagePageFull3}{ugDomainsQueryLanguagePageEmpty3}
+\pastebutton{ugDomainsQueryLanguagePageFull3}{\hidepaste}
+\tab{5}\spadcommand{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   ["InnerMatrixLinearAlgebraFunctions",
+    "MatrixCategory", "MatrixLinearAlgebraFunctions",
+    "SquareMatrixCategory"]
+                                  Type: DataList String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsQueryLanguagePageEmpty3}
+\begin{paste}{ugDomainsQueryLanguagePageEmpty3}{ugDomainsQueryLanguagePagePatch3}
+\pastebutton{ugDomainsQueryLanguagePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1 }}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugDomainsDatabaseConstructorPage}{ug13.ht}
 {The Database Constructor}
@@ -45701,12 +112372,504 @@ How many distinct names of operations involving matrices are there?
 \spadpaste{elt(elt(elt(m,name),unique),count) \free{x14}}
 }
 
-
-
 \endscroll
 \autobuttons
 \end{page}
 
+\begin{patch}{ugDomainsExamplesPagePatch1}
+\begin{paste}{ugDomainsExamplesPageFull1}{ugDomainsExamplesPageEmpty1}
+\pastebutton{ugDomainsExamplesPageFull1}{\hidepaste}
+\tab{5}\spadcommand{ks := getDatabase "k"\bound{q1 }}
+\indentrel{3}\begin{verbatim}
+   (1)  1067
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty1}
+\begin{paste}{ugDomainsExamplesPageEmpty1}{ugDomainsExamplesPagePatch1}
+\pastebutton{ugDomainsExamplesPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{ks := getDatabase "k"\bound{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch2}
+\begin{paste}{ugDomainsExamplesPageFull2}{ugDomainsExamplesPageEmpty2}
+\pastebutton{ugDomainsExamplesPageFull2}{\hidepaste}
+\tab{5}\spadcommand{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3 }\free{q1 }}
+\indentrel{3}\begin{verbatim}
+   (2)  [205,393,469]
+                          Type: List Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty2}
+\begin{paste}{ugDomainsExamplesPageEmpty2}{ugDomainsExamplesPagePatch2}
+\pastebutton{ugDomainsExamplesPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3 }\free{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch3}
+\begin{paste}{ugDomainsExamplesPageFull3}{ugDomainsExamplesPageEmpty3}
+\pastebutton{ugDomainsExamplesPageFull3}{\hidepaste}
+\tab{5}\spadcommand{elt(ks.(kind="d").(nargs="0"),name)\bound{q4 }\free{q1 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   ["AlgebraicNumber", "AnonymousFunction", "Any",
+    "AttributeButtons", "BasicFunctions",
+    "BasicOperator", "BinaryExpansion", "BinaryFile",
+    "Bits", "Boolean", "CardinalNumber",
+    "CharacterClass", "Character", "Color", "Commutator",
+    "DecimalExpansion", "DoubleFloat", "DrawOption",
+    "Exit", "ExtAlgBasis", "FileName", "Float",
+    "FortranCode", "FortranScalarType",
+    "FortranTemplate", "FortranType", "GraphImage",
+    "HexadecimalExpansion", "IVBaseColor", "IVBasicNode",
+    "IVCoordinate3", "IVCoordinate4", "IVFaceSet",
+    "IVField", "IVGroup", "IVIndexedLineSet",
+    "IVNodeConnection", "IVNodeObject", "IVPointSet",
+    "IVQuadMesh", "IVSeparator", "IVSimpleInnerNode",
+    "IVUtilities", "IVValue", "IndexCard",
+    "InnerAlgebraicNumber", "InputForm", "Integer",
+    "IntegrationFunctionsTable", "InventorDataSink",
+    "InventorRenderPackage", "InventorViewPort",
+    "Library", "MachineComplex", "MachineFloat",
+    "MachineInteger",
+    "NagDiscreteFourierTransformInterfacePackage",
+    "NagEigenInterfacePackage",
+    "NagOptimisationInterfacePackage",
+    "NagQuadratureInterfacePackage", "NagResultChecks",
+    "NagSpecialFunctionsInterfacePackage",
+    "NonNegativeInteger", "None",
+    "NumericalIntegrationProblem", "NumericalODEProblem",
+    "NumericalOptimizationProblem",
+    "NumericalPDEProblem", "ODEIntensityFunctionsTable",
+    "OrdSetInts", "OutputForm", "Palette", "Partition",
+    "Pi", "PlaneAlgebraicCurvePlot", "Plot3D", "Plot",
+    "PositiveInteger", "QueryEquation", "RenderTools",
+    "Result", "RomanNumeral", "RoutinesTable",
+    "SExpression", "ScriptFormulaFormat",
+    "SingleInteger", "SingletonAsOrderedSet", "String",
+    "SubSpaceComponentProperty", "Switch", "SymbolTable",
+    "Symbol", "TexFormat", "TextFile", "TheSymbolTable",
+    "ThreeDimensionalViewport", "Timer",
+    "TwoDimensionalViewport", "Void",
+    "d01TransformFunctionType", "d01ajfAnnaType",
+    "d01akfAnnaType", "d01alfAnnaType", "d01amfAnnaType",
+    "d01anfAnnaType", "d01apfAnnaType", "d01aqfAnnaType",
+    "d01asfAnnaType", "d01fcfAnnaType", "d01gbfAnnaType",
+    "d02bbfAnnaType", "d02bhfAnnaType", "d02cjfAnnaType",
+    "d02ejfAnnaType", "d03eefAnnaType", "d03fafAnnaType",
+    "e04dgfAnnaType", "e04fdfAnnaType", "e04gcfAnnaType",
+    "e04jafAnnaType", "e04mbfAnnaType", "e04nafAnnaType",
+    "e04ucfAnnaType"]
+                                  Type: DataList String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty3}
+\begin{paste}{ugDomainsExamplesPageEmpty3}{ugDomainsExamplesPagePatch3}
+\pastebutton{ugDomainsExamplesPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{elt(ks.(kind="d").(nargs="0"),name)\bound{q4 }\free{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch4}
+\begin{paste}{ugDomainsExamplesPageFull4}{ugDomainsExamplesPageEmpty4}
+\pastebutton{ugDomainsExamplesPageFull4}{\hidepaste}
+\tab{5}\spadcommand{mk := ks.(name="*Matrix*")\bound{q5 }\free{q1 }}
+\indentrel{3}\begin{verbatim}
+   (4)  26
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty4}
+\begin{paste}{ugDomainsExamplesPageEmpty4}{ugDomainsExamplesPagePatch4}
+\pastebutton{ugDomainsExamplesPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{mk := ks.(name="*Matrix*")\bound{q5 }\free{q1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch5}
+\begin{paste}{ugDomainsExamplesPageFull5}{ugDomainsExamplesPageEmpty5}
+\pastebutton{ugDomainsExamplesPageFull5}{\hidepaste}
+\tab{5}\spadcommand{elt(mk.(kind="d"),name)\bound{q6 }\free{q5 }}
+\indentrel{3}\begin{verbatim}
+   (5)
+   ["DenavitHartenbergMatrix",
+    "DirectProductMatrixModule", "IndexedMatrix",
+    "LieSquareMatrix", "Matrix", "RectangularMatrix",
+    "SquareMatrix", "ThreeDimensionalMatrix"]
+                                  Type: DataList String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty5}
+\begin{paste}{ugDomainsExamplesPageEmpty5}{ugDomainsExamplesPagePatch5}
+\pastebutton{ugDomainsExamplesPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{elt(mk.(kind="d"),name)\bound{q6 }\free{q5 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch6}
+\begin{paste}{ugDomainsExamplesPageFull6}{ugDomainsExamplesPageEmpty6}
+\pastebutton{ugDomainsExamplesPageFull6}{\hidepaste}
+\tab{5}\spadcommand{o := getDatabase "o"\bound{o1 }}
+\indentrel{3}\begin{verbatim}
+   (6)  6315
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty6}
+\begin{paste}{ugDomainsExamplesPageEmpty6}{ugDomainsExamplesPagePatch6}
+\pastebutton{ugDomainsExamplesPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{o := getDatabase "o"\bound{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch7}
+\begin{paste}{ugDomainsExamplesPageFull7}{ugDomainsExamplesPageEmpty7}
+\pastebutton{ugDomainsExamplesPageFull7}{\hidepaste}
+\tab{5}\spadcommand{[o.(kind=k) for k in ["c","d","p"]]\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (7)  [1646,2040,2629]
+                          Type: List Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty7}
+\begin{paste}{ugDomainsExamplesPageEmpty7}{ugDomainsExamplesPagePatch7}
+\pastebutton{ugDomainsExamplesPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{[o.(kind=k) for k in ["c","d","p"]]\free{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch8}
+\begin{paste}{ugDomainsExamplesPageFull8}{ugDomainsExamplesPageEmpty8}
+\pastebutton{ugDomainsExamplesPageFull8}{\hidepaste}
+\tab{5}\spadcommand{eigens := o.(name="*eigen*")\bound{eigens }\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (8)  4
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty8}
+\begin{paste}{ugDomainsExamplesPageEmpty8}{ugDomainsExamplesPagePatch8}
+\pastebutton{ugDomainsExamplesPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{eigens := o.(name="*eigen*")\bound{eigens }\free{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch9}
+\begin{paste}{ugDomainsExamplesPageFull9}{ugDomainsExamplesPageEmpty9}
+\pastebutton{ugDomainsExamplesPageFull9}{\hidepaste}
+\tab{5}\spadcommand{elt(eigens,name)\free{eigens }}
+\indentrel{3}\begin{verbatim}
+   (9)
+   ["eigenMatrix", "eigenvalues", "eigenvector",
+    "eigenvectors"]
+                                  Type: DataList String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty9}
+\begin{paste}{ugDomainsExamplesPageEmpty9}{ugDomainsExamplesPagePatch9}
+\pastebutton{ugDomainsExamplesPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{elt(eigens,name)\free{eigens }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch10}
+\begin{paste}{ugDomainsExamplesPageFull10}{ugDomainsExamplesPageEmpty10}
+\pastebutton{ugDomainsExamplesPageFull10}{\hidepaste}
+\tab{5}\spadcommand{elt(elt(elt(eigens,origin),sort),unique)\free{eigens }}
+\indentrel{3}\begin{verbatim}
+   (10)  ["EigenPackage","RadicalEigenPackage"]
+                                  Type: DataList String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty10}
+\begin{paste}{ugDomainsExamplesPageEmpty10}{ugDomainsExamplesPagePatch10}
+\pastebutton{ugDomainsExamplesPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{elt(elt(elt(eigens,origin),sort),unique)\free{eigens }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch11}
+\begin{paste}{ugDomainsExamplesPageFull11}{ugDomainsExamplesPageEmpty11}
+\pastebutton{ugDomainsExamplesPageFull11}{\hidepaste}
+\tab{5}\spadcommand{tm := o.(type="*Matrix*")\bound{x10 }\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (11)  353
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty11}
+\begin{paste}{ugDomainsExamplesPageEmpty11}{ugDomainsExamplesPagePatch11}
+\pastebutton{ugDomainsExamplesPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{tm := o.(type="*Matrix*")\bound{x10 }\free{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch12}
+\begin{paste}{ugDomainsExamplesPageFull12}{ugDomainsExamplesPageEmpty12}
+\pastebutton{ugDomainsExamplesPageFull12}{\hidepaste}
+\tab{5}\spadcommand{fm := o.(origin="*Matrix*")\bound{x11 }\free{o1 }}
+\indentrel{3}\begin{verbatim}
+   (12)  192
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty12}
+\begin{paste}{ugDomainsExamplesPageEmpty12}{ugDomainsExamplesPagePatch12}
+\pastebutton{ugDomainsExamplesPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{fm := o.(origin="*Matrix*")\bound{x11 }\free{o1 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch13}
+\begin{paste}{ugDomainsExamplesPageFull13}{ugDomainsExamplesPageEmpty13}
+\pastebutton{ugDomainsExamplesPageFull13}{\hidepaste}
+\tab{5}\spadcommand{fm-tm\bound{x12 }\free{x10 x11 }}
+\indentrel{3}\begin{verbatim}
+   (13)  146
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty13}
+\begin{paste}{ugDomainsExamplesPageEmpty13}{ugDomainsExamplesPagePatch13}
+\pastebutton{ugDomainsExamplesPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{fm-tm\bound{x12 }\free{x10 x11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch14}
+\begin{paste}{ugDomainsExamplesPageFull14}{ugDomainsExamplesPageEmpty14}
+\pastebutton{ugDomainsExamplesPageFull14}{\hidepaste}
+\tab{5}\spadcommand{fullDisplay(fm-\%)\bound{x13 }\free{x12 }}
+\indentrel{3}\begin{verbatim}
+   ** : (Matrix(R),NonNegativeInteger)->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   clearDenominator : (Matrix(Q))->Matrix(R)
+      from MatrixCommonDenominator(R,Q)
+   coerceP
+      : (Vector(Matrix(R)))->Vector(Matrix(Polynomial(R)))
+      from CoerceVectorMatrixPackage(R) (unexposed)
+   coerce
+      :
+      (Vector(Matrix(R)))->Vector(Matrix(Fraction(Polynom
+      ial(R))))
+      from CoerceVectorMatrixPackage(R) (unexposed)
+   coerce : (_$)->Matrix(R)
+      from RectangularMatrix(m,n,R) (unexposed)
+   coerce : (_$)->Matrix(R)
+      from SquareMatrix(ndim,R) (unexposed)
+   coerce : (Matrix(MachineFloat))->_$
+      from FortranMatrixCategory
+   commonDenominator : (Matrix(Q))->R
+      from MatrixCommonDenominator(R,Q)
+   copy! : (Matrix(R),Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   f01brf
+      :
+      (Integer,Integer,Integer,Integer,DoubleFloat,Boolea
+      n,Boolean,List(Boolean),Matrix(DoubleFloat),Matrix(
+      Integer),Matrix(Integer),Integer)->Result
+      from NagMatrixOperationsPackage
+   f01bsf
+      :
+      (Integer,Integer,Integer,Matrix(Integer),Matrix(Int
+      eger),Matrix(Integer),Matrix(Integer),Boolean,Doubl
+      eFloat,Boolean,Matrix(Integer),Matrix(DoubleFloat),
+      Integer)->Result
+      from NagMatrixOperationsPackage
+   f01maf
+      :
+      (Integer,Integer,Integer,Integer,List(Boolean),Matr
+      ix(DoubleFloat),Matrix(Integer),Matrix(Integer),Dou
+      bleFloat,DoubleFloat,Integer)->Result
+      from NagMatrixOperationsPackage
+   f01mcf
+      :
+      (Integer,Matrix(DoubleFloat),Integer,Matrix(Integer
+      ),Integer)->Result
+      from NagMatrixOperationsPackage
+   f01qcf
+      :
+      (Integer,Integer,Integer,Matrix(DoubleFloat),Intege
+      r)->Result
+      from NagMatrixOperationsPackage
+   f01qdf
+      :
+      (String,String,Integer,Integer,Matrix(DoubleFloat),
+      Integer,Matrix(DoubleFloat),Integer,Integer,Matrix(
+      DoubleFloat),Integer)->Result
+      from NagMatrixOperationsPackage
+   f01qef
+      :
+      (String,Integer,Integer,Integer,Integer,Matrix(Doub
+      leFloat),Matrix(DoubleFloat),Integer)->Result
+      from NagMatrixOperationsPackage
+   f01rcf
+      :
+      (Integer,Integer,Integer,Matrix(Complex(DoubleFloat
+      )),Integer)->Result
+      from NagMatrixOperationsPackage
+   f01rdf
+      :
+      (String,String,Integer,Integer,Matrix(Complex(Doubl
+      eFloat)),Integer,Matrix(Complex(DoubleFloat)),Integ
+      er,Integer,Matrix(Complex(DoubleFloat)),Integer)->R
+      esult
+      from NagMatrixOperationsPackage
+   f01ref
+      :
+      (String,Integer,Integer,Integer,Integer,Matrix(Comp
+      lex(DoubleFloat)),Matrix(Complex(DoubleFloat)),Inte
+      ger)->Result
+      from NagMatrixOperationsPackage
+   hasSolution? : (Matrix(F),Vector(F))->Boolean
+      from LinearSystemMatrixPackage1(F)
+   leftScalarTimes! : (Matrix(R),R,Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   minus! : (Matrix(R),Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   minus! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   particularSolution
+      : (Matrix(F),Vector(F))->Union(Vector(F),"failed")
+      from LinearSystemMatrixPackage1(F)
+   plus! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   power!
+      :
+      (Matrix(R),Matrix(R),Matrix(R),Matrix(R),NonNegativ
+      eInteger)->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   rank : (Matrix(F),Vector(F))->NonNegativeInteger
+      from LinearSystemMatrixPackage1(F)
+   rectangularMatrix : (Matrix(R))->_$
+      from RectangularMatrix(m,n,R) (unexposed)
+   retractIfCan
+      : (Matrix(Expression(Float)))->Union(_$,"failed")
+      from FortranMatrixFunctionCategory
+   retractIfCan
+      : (Matrix(Expression(Integer)))->Union(_$,"failed")
+      from FortranMatrixFunctionCategory
+   retractIfCan
+      :
+      (Matrix(Fraction(Polynomial(Float))))->Union(_$,"fa
+      iled")
+      from FortranMatrixFunctionCategory
+   retractIfCan
+      :
+      (Matrix(Fraction(Polynomial(Integer))))->Union(_$,"
+      failed")
+      from FortranMatrixFunctionCategory
+   retractIfCan
+      : (Matrix(Polynomial(Float)))->Union(_$,"failed")
+      from FortranMatrixFunctionCategory
+   retractIfCan
+      : (Matrix(Polynomial(Integer)))->Union(_$,"failed")
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Expression(Float)))->_$
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Expression(Integer)))->_$
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Fraction(Polynomial(Float))))->_$
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Fraction(Polynomial(Integer))))->_$
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Polynomial(Float)))->_$
+      from FortranMatrixFunctionCategory
+   retract : (Matrix(Polynomial(Integer)))->_$
+      from FortranMatrixFunctionCategory
+   rightScalarTimes! : (Matrix(R),Matrix(R),R)->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+   solve
+      :
+      (Matrix(F),List(Vector(F)))->List(Record(particular
+      :Union(Vector(F),"failed"),basis:List(Vector(F))))
+      from LinearSystemMatrixPackage1(F)
+   solve
+      :
+      (Matrix(F),Vector(F))->Record(particular:Union(Vect
+      or(F),"failed"),basis:List(Vector(F)))
+      from LinearSystemMatrixPackage1(F)
+   splitDenominator
+      : (Matrix(Q))->Record(num:Matrix(R),den:R)
+      from MatrixCommonDenominator(R,Q)
+   squareMatrix : (Matrix(R))->_$
+      from SquareMatrix(ndim,R) (unexposed)
+   times! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
+      from StorageEfficientMatrixOperations(R) (unexposed)
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty14}
+\begin{paste}{ugDomainsExamplesPageEmpty14}{ugDomainsExamplesPagePatch14}
+\pastebutton{ugDomainsExamplesPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{fullDisplay(fm-\%)\bound{x13 }\free{x12 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch15}
+\begin{paste}{ugDomainsExamplesPageFull15}{ugDomainsExamplesPageEmpty15}
+\pastebutton{ugDomainsExamplesPageFull15}{\hidepaste}
+\tab{5}\spadcommand{m := tm+fm\bound{x14 }\free{x10 x11 }}
+\indentrel{3}\begin{verbatim}
+   (15)  499
+                               Type: Database IndexCard
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty15}
+\begin{paste}{ugDomainsExamplesPageEmpty15}{ugDomainsExamplesPagePatch15}
+\pastebutton{ugDomainsExamplesPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{m := tm+fm\bound{x14 }\free{x10 x11 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch16}
+\begin{paste}{ugDomainsExamplesPageFull16}{ugDomainsExamplesPageEmpty16}
+\pastebutton{ugDomainsExamplesPageFull16}{\hidepaste}
+\tab{5}\spadcommand{fullDisplay(m, 202, 205)\free{x14 }}
+\indentrel{3}\begin{verbatim}
+   elt : (_$,List(Integer),List(Integer))->_$
+      from MatrixCategory(R,Row,Col)
+   elt : (_$,Integer,Integer,R)->R
+      from RectangularMatrixCategory(m,n,R,Row,Col)
+   elt
+      :
+      (_$,NonNegativeInteger,NonNegativeInteger,NonNegati
+      veInteger)->R
+      from ThreeDimensionalMatrix(R)
+   eval
+      :
+      (Matrix(Expression(DoubleFloat)),List(Symbol),Vecto
+      r(Expression(DoubleFloat)))->Matrix(Expression(Doub
+      leFloat))
+      from d02AgentsPackage
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty16}
+\begin{paste}{ugDomainsExamplesPageEmpty16}{ugDomainsExamplesPagePatch16}
+\pastebutton{ugDomainsExamplesPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{fullDisplay(m, 202, 205)\free{x14 }}
+\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPagePatch17}
+\begin{paste}{ugDomainsExamplesPageFull17}{ugDomainsExamplesPageEmpty17}
+\pastebutton{ugDomainsExamplesPageFull17}{\hidepaste}
+\tab{5}\spadcommand{elt(elt(elt(m,name),unique),count)\free{x14 }}
+\indentrel{3}\begin{verbatim}
+   (17)  317
+                                  Type: PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugDomainsExamplesPageEmpty17}
+\begin{paste}{ugDomainsExamplesPageEmpty17}{ugDomainsExamplesPagePatch17}
+\pastebutton{ugDomainsExamplesPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{elt(elt(elt(m,name),unique),count)\free{x14 }}
+\end{paste}\end{patch}
+
 @
 \chapter{Users Guide Chapter 14 (ug14.ht)}
 \pagehead{ugBrowsePage}{ug14.ht}{Browse}
@@ -46978,6 +114141,100 @@ example for that routine.
 \autobuttons
 \end{page}
 
+\begin{patch}{nagLinkUsagePagePatch1}
+\begin{paste}{nagLinkUsagePageFull1}{nagLinkUsagePageEmpty1}
+\pastebutton{nagLinkUsagePageFull1}{\hidepaste}
+\tab{5}\spadcommand{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer }}
+\indentrel{3}\begin{verbatim}
+   (1)  [ifail: Integer,x: DoubleFloat]
+                                           Type: Result
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePageEmpty1}
+\begin{paste}{nagLinkUsagePageEmpty1}{nagLinkUsagePagePatch1}
+\pastebutton{nagLinkUsagePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer }}
+\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePagePatch2}
+\begin{paste}{nagLinkUsagePageFull2}{nagLinkUsagePageEmpty2}
+\pastebutton{nagLinkUsagePageFull2}{\hidepaste}
+\tab{5}\spadcommand{answer . x\free{answer }}
+\indentrel{3}\begin{verbatim}
+   (2)  3.14159265545896
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePageEmpty2}
+\begin{paste}{nagLinkUsagePageEmpty2}{nagLinkUsagePagePatch2}
+\pastebutton{nagLinkUsagePageEmpty2}{\showpaste}
+\tab{5}\spadcommand{answer . x\free{answer }}
+\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePagePatch3}
+\begin{paste}{nagLinkUsagePageFull3}{nagLinkUsagePageEmpty3}
+\pastebutton{nagLinkUsagePageFull3}{\hidepaste}
+\tab{5}\spadcommand{answer . ifail\free{answer }}
+\indentrel{3}\begin{verbatim}
+   (3)  0
+                                          Type: Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePageEmpty3}
+\begin{paste}{nagLinkUsagePageEmpty3}{nagLinkUsagePagePatch3}
+\pastebutton{nagLinkUsagePageEmpty3}{\showpaste}
+\tab{5}\spadcommand{answer . ifail\free{answer }}
+\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePagePatch4}
+\begin{paste}{nagLinkUsagePageFull4}{nagLinkUsagePageEmpty4}
+\pastebutton{nagLinkUsagePageFull4}{\hidepaste}
+\tab{5}\spadcommand{answer "x"\free{answer }}
+\indentrel{3}\begin{verbatim}
+   (4)  3.14159265545896
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePageEmpty4}
+\begin{paste}{nagLinkUsagePageEmpty4}{nagLinkUsagePagePatch4}
+\pastebutton{nagLinkUsagePageEmpty4}{\showpaste}
+\tab{5}\spadcommand{answer "x"\free{answer }}
+\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePagePatch5}
+\begin{paste}{nagLinkUsagePageFull5}{nagLinkUsagePageEmpty5}
+\pastebutton{nagLinkUsagePageFull5}{\hidepaste}
+\tab{5}\spadcommand{)read c05adf.input}
+\indentrel{3}\begin{verbatim}
+   (1)  true
+                                          Type: Boolean
+   (2)  true
+                                          Type: Boolean
+   (3)  F
+                                           Type: Asp1 F
+   (4)  0.0
+                                      Type: DoubleFloat
+   (5)  1.0
+                                      Type: DoubleFloat
+   (6)  1.0e-05
+                                      Type: DoubleFloat
+   (7)  0.0
+                                      Type: DoubleFloat
+   (8)  [ifail: 0,x: 0.567143306604963]
+                                           Type: Result
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{nagLinkUsagePageEmpty5}
+\begin{paste}{nagLinkUsagePageEmpty5}{nagLinkUsagePagePatch5}
+\pastebutton{nagLinkUsagePageEmpty5}{\showpaste}
+\tab{5}\spadcommand{)read c05adf.input}
+\end{paste}\end{patch}
+
 @
 \pagehead{aspSectionPage}{ug15.ht}
 {Providing values for Argument Subprograms}
@@ -47079,6 +114336,68 @@ d01ajf(0.0 ,1.0, 0.0, 1.0e-5, 800, 200, -1, "asp.f")
 \autobuttons
 \end{page}
 
+\begin{patch}{aspSectionPagePatch1}
+\begin{paste}{aspSectionPageFull1}{aspSectionPageEmpty1}
+\pastebutton{aspSectionPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)display operation c05adf}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPageEmpty1}
+\begin{paste}{aspSectionPageEmpty1}{aspSectionPagePatch1}
+\pastebutton{aspSectionPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)display operation c05adf}
+\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPagePatch2}
+\begin{paste}{aspSectionPageFull2}{aspSectionPageEmpty2}
+\pastebutton{aspSectionPageFull2}{\hidepaste}
+\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
+\indentrel{3}\begin{verbatim}
+   (1)  sin(X) + M
+                  3,1
+          Type: FortranExpression([X],[M],MachineFloat)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPageEmpty2}
+\begin{paste}{aspSectionPageEmpty2}{aspSectionPagePatch2}
+\pastebutton{aspSectionPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
+\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPagePatch3}
+\begin{paste}{aspSectionPageFull3}{aspSectionPageEmpty3}
+\pastebutton{aspSectionPageFull3}{\hidepaste}
+\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
+\indentrel{3}\begin{verbatim}
+   sin(M) + Y
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPageEmpty3}
+\begin{paste}{aspSectionPageEmpty3}{aspSectionPagePatch3}
+\pastebutton{aspSectionPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
+\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPagePatch4}
+\begin{paste}{aspSectionPageFull4}{aspSectionPageEmpty4}
+\pastebutton{aspSectionPageFull4}{\hidepaste}
+\tab{5}\spadcommand{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result}
+\indentrel{3}\begin{verbatim}
+   (2)  1.0
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{aspSectionPageEmpty4}
+\begin{paste}{aspSectionPageEmpty4}{aspSectionPagePatch4}
+\pastebutton{aspSectionPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result}
+\end{paste}\end{patch}
+
 @
 \pagehead{generalFortranPage}{ug15.ht}
 {General Fortran-generation utilities in Axiom}
@@ -47650,6 +114969,667 @@ and transform the conditional expression we prepared earlier:
 \autobuttons
 \end{page}
 
+\begin{patch}{generalFortranPagePatch1}
+\begin{paste}{generalFortranPageFull1}{generalFortranPageEmpty1}
+\pastebutton{generalFortranPageFull1}{\hidepaste}
+\tab{5}\spadcommand{)set fortran precision}
+\indentrel{3}\begin{verbatim}
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty1}
+\begin{paste}{generalFortranPageEmpty1}{generalFortranPagePatch1}
+\pastebutton{generalFortranPageEmpty1}{\showpaste}
+\tab{5}\spadcommand{)set fortran precision}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch2}
+\begin{paste}{generalFortranPageFull2}{generalFortranPageEmpty2}
+\pastebutton{generalFortranPageFull2}{\hidepaste}
+\tab{5}\spadcommand{m := matrix [[1,2,3],[4,5,6]]\bound{m }}
+\indentrel{3}\begin{verbatim}
+        Ú1  2  3¿
+   (1)  ³       ³
+        À4  5  6Ù
+                                   Type: Matrix Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty2}
+\begin{paste}{generalFortranPageEmpty2}{generalFortranPagePatch2}
+\pastebutton{generalFortranPageEmpty2}{\showpaste}
+\tab{5}\spadcommand{m := matrix [[1,2,3],[4,5,6]]\bound{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch3}
+\begin{paste}{generalFortranPageFull3}{generalFortranPageEmpty3}
+\pastebutton{generalFortranPageFull3}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteralLine concat ["C      The Matrix has ", nrows(m)::String, " rows and ", ncols(m)::String, " columns"]\free{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty3}
+\begin{paste}{generalFortranPageEmpty3}{generalFortranPagePatch3}
+\pastebutton{generalFortranPageEmpty3}{\showpaste}
+\tab{5}\spadcommand{fortranLiteralLine concat ["C      The Matrix has ", nrows(m)::String, " rows and ", ncols(m)::String, " columns"]\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch4}
+\begin{paste}{generalFortranPageFull4}{generalFortranPageEmpty4}
+\pastebutton{generalFortranPageFull4}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteral "C      The Matrix has "}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty4}
+\begin{paste}{generalFortranPageEmpty4}{generalFortranPagePatch4}
+\pastebutton{generalFortranPageEmpty4}{\showpaste}
+\tab{5}\spadcommand{fortranLiteral "C      The Matrix has "}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch5}
+\begin{paste}{generalFortranPageFull5}{generalFortranPageEmpty5}
+\pastebutton{generalFortranPageFull5}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteral(nrows(m)::String)}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty5}
+\begin{paste}{generalFortranPageEmpty5}{generalFortranPagePatch5}
+\pastebutton{generalFortranPageEmpty5}{\showpaste}
+\tab{5}\spadcommand{fortranLiteral(nrows(m)::String)}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch6}
+\begin{paste}{generalFortranPageFull6}{generalFortranPageEmpty6}
+\pastebutton{generalFortranPageFull6}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteral " rows and "}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty6}
+\begin{paste}{generalFortranPageEmpty6}{generalFortranPagePatch6}
+\pastebutton{generalFortranPageEmpty6}{\showpaste}
+\tab{5}\spadcommand{fortranLiteral " rows and "}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch7}
+\begin{paste}{generalFortranPageFull7}{generalFortranPageEmpty7}
+\pastebutton{generalFortranPageFull7}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteral(ncols(m)::String)\free{m }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty7}
+\begin{paste}{generalFortranPageEmpty7}{generalFortranPagePatch7}
+\pastebutton{generalFortranPageEmpty7}{\showpaste}
+\tab{5}\spadcommand{fortranLiteral(ncols(m)::String)\free{m }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch8}
+\begin{paste}{generalFortranPageFull8}{generalFortranPageEmpty8}
+\pastebutton{generalFortranPageFull8}{\hidepaste}
+\tab{5}\spadcommand{fortranLiteral " columns"}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty8}
+\begin{paste}{generalFortranPageEmpty8}{generalFortranPagePatch8}
+\pastebutton{generalFortranPageEmpty8}{\showpaste}
+\tab{5}\spadcommand{fortranLiteral " columns"}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch9}
+\begin{paste}{generalFortranPageFull9}{generalFortranPageEmpty9}
+\pastebutton{generalFortranPageFull9}{\hidepaste}
+\tab{5}\spadcommand{fortranCarriageReturn()}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty9}
+\begin{paste}{generalFortranPageEmpty9}{generalFortranPagePatch9}
+\pastebutton{generalFortranPageEmpty9}{\showpaste}
+\tab{5}\spadcommand{fortranCarriageReturn()}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch10}
+\begin{paste}{generalFortranPageFull10}{generalFortranPageEmpty10}
+\pastebutton{generalFortranPageFull10}{\hidepaste}
+\tab{5}\spadcommand{topFortranOutputStack()}
+\indentrel{3}\begin{verbatim}
+   (9)  "CONSOLE"
+                                           Type: String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty10}
+\begin{paste}{generalFortranPageEmpty10}{generalFortranPagePatch10}
+\pastebutton{generalFortranPageEmpty10}{\showpaste}
+\tab{5}\spadcommand{topFortranOutputStack()}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch11}
+\begin{paste}{generalFortranPageFull11}{generalFortranPageEmpty11}
+\pastebutton{generalFortranPageFull11}{\hidepaste}
+\tab{5}\spadcommand{type:=construct(real,[i,10],false)$FortranType}
+\indentrel{3}\begin{verbatim}
+   (10)  REAL
+             (i,10)
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty11}
+\begin{paste}{generalFortranPageEmpty11}{generalFortranPagePatch11}
+\pastebutton{generalFortranPageEmpty11}{\showpaste}
+\tab{5}\spadcommand{type:=construct(real,[i,10],false)$FortranType}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch12}
+\begin{paste}{generalFortranPageFull12}{generalFortranPageEmpty12}
+\pastebutton{generalFortranPageFull12}{\hidepaste}
+\tab{5}\spadcommand{type:=[real,[i,10],false]$FortranType\bound{type }}
+\indentrel{3}\begin{verbatim}
+   (11)  REAL
+             (i,10)
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty12}
+\begin{paste}{generalFortranPageEmpty12}{generalFortranPagePatch12}
+\pastebutton{generalFortranPageEmpty12}{\showpaste}
+\tab{5}\spadcommand{type:=[real,[i,10],false]$FortranType\bound{type }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch13}
+\begin{paste}{generalFortranPageFull13}{generalFortranPageEmpty13}
+\pastebutton{generalFortranPageFull13}{\hidepaste}
+\tab{5}\spadcommand{scalarTypeOf type\free{type }}
+\indentrel{3}\begin{verbatim}
+   (12)  REAL
+                Type: Union(fst: FortranScalarType,...)
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty13}
+\begin{paste}{generalFortranPageEmpty13}{generalFortranPagePatch13}
+\pastebutton{generalFortranPageEmpty13}{\showpaste}
+\tab{5}\spadcommand{scalarTypeOf type\free{type }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch14}
+\begin{paste}{generalFortranPageFull14}{generalFortranPageEmpty14}
+\pastebutton{generalFortranPageFull14}{\hidepaste}
+\tab{5}\spadcommand{dimensionsOf type\free{type }}
+\indentrel{3}\begin{verbatim}
+   (13)  [i,10]
+                          Type: List Polynomial Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty14}
+\begin{paste}{generalFortranPageEmpty14}{generalFortranPagePatch14}
+\pastebutton{generalFortranPageEmpty14}{\showpaste}
+\tab{5}\spadcommand{dimensionsOf type\free{type }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch15}
+\begin{paste}{generalFortranPageFull15}{generalFortranPageEmpty15}
+\pastebutton{generalFortranPageFull15}{\hidepaste}
+\tab{5}\spadcommand{external? type\free{type }}
+\indentrel{3}\begin{verbatim}
+   (14)  false
+                                          Type: Boolean
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty15}
+\begin{paste}{generalFortranPageEmpty15}{generalFortranPagePatch15}
+\pastebutton{generalFortranPageEmpty15}{\showpaste}
+\tab{5}\spadcommand{external? type\free{type }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch16}
+\begin{paste}{generalFortranPageFull16}{generalFortranPageEmpty16}
+\pastebutton{generalFortranPageFull16}{\hidepaste}
+\tab{5}\spadcommand{fortranLogical()}
+\indentrel{3}\begin{verbatim}
+   (15)  LOGICAL
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty16}
+\begin{paste}{generalFortranPageEmpty16}{generalFortranPagePatch16}
+\pastebutton{generalFortranPageEmpty16}{\showpaste}
+\tab{5}\spadcommand{fortranLogical()}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch17}
+\begin{paste}{generalFortranPageFull17}{generalFortranPageEmpty17}
+\pastebutton{generalFortranPageFull17}{\hidepaste}
+\tab{5}\spadcommand{construct(integer,[],true)$FortranType}
+\indentrel{3}\begin{verbatim}
+   (16)  EXTERNAL INTEGER
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty17}
+\begin{paste}{generalFortranPageEmpty17}{generalFortranPagePatch17}
+\pastebutton{generalFortranPageEmpty17}{\showpaste}
+\tab{5}\spadcommand{construct(integer,[],true)$FortranType}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch18}
+\begin{paste}{generalFortranPageFull18}{generalFortranPageEmpty18}
+\pastebutton{generalFortranPageFull18}{\hidepaste}
+\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
+\indentrel{3}\begin{verbatim}
+   (17)  table()
+                                      Type: SymbolTable
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty18}
+\begin{paste}{generalFortranPageEmpty18}{generalFortranPagePatch18}
+\pastebutton{generalFortranPageEmpty18}{\showpaste}
+\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch19}
+\begin{paste}{generalFortranPageFull19}{generalFortranPageEmpty19}
+\pastebutton{generalFortranPageFull19}{\hidepaste}
+\tab{5}\spadcommand{declare!(X,fortranReal(),symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (18)  REAL
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty19}
+\begin{paste}{generalFortranPageEmpty19}{generalFortranPagePatch19}
+\pastebutton{generalFortranPageEmpty19}{\showpaste}
+\tab{5}\spadcommand{declare!(X,fortranReal(),symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch20}
+\begin{paste}{generalFortranPageFull20}{generalFortranPageEmpty20}
+\pastebutton{generalFortranPageFull20}{\hidepaste}
+\tab{5}\spadcommand{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (19)  REAL
+             (i,j)
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty20}
+\begin{paste}{generalFortranPageEmpty20}{generalFortranPagePatch20}
+\pastebutton{generalFortranPageEmpty20}{\showpaste}
+\tab{5}\spadcommand{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch21}
+\begin{paste}{generalFortranPageFull21}{generalFortranPageEmpty21}
+\pastebutton{generalFortranPageFull21}{\hidepaste}
+\tab{5}\spadcommand{declare!([i,j],fortranInteger(),symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (20)  INTEGER
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty21}
+\begin{paste}{generalFortranPageEmpty21}{generalFortranPagePatch21}
+\pastebutton{generalFortranPageEmpty21}{\showpaste}
+\tab{5}\spadcommand{declare!([i,j],fortranInteger(),symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch22}
+\begin{paste}{generalFortranPageFull22}{generalFortranPageEmpty22}
+\pastebutton{generalFortranPageFull22}{\hidepaste}
+\tab{5}\spadcommand{symbols\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (21)
+   table(X= REAL,M= REAL     ,i= INTEGER,j= INTEGER)
+                        (i,j)
+                                      Type: SymbolTable
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty22}
+\begin{paste}{generalFortranPageEmpty22}{generalFortranPagePatch22}
+\pastebutton{generalFortranPageEmpty22}{\showpaste}
+\tab{5}\spadcommand{symbols\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch23}
+\begin{paste}{generalFortranPageFull23}{generalFortranPageEmpty23}
+\pastebutton{generalFortranPageFull23}{\hidepaste}
+\tab{5}\spadcommand{fortranTypeOf(i,symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (22)  INTEGER
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty23}
+\begin{paste}{generalFortranPageEmpty23}{generalFortranPagePatch23}
+\pastebutton{generalFortranPageEmpty23}{\showpaste}
+\tab{5}\spadcommand{fortranTypeOf(i,symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch24}
+\begin{paste}{generalFortranPageFull24}{generalFortranPageEmpty24}
+\pastebutton{generalFortranPageFull24}{\hidepaste}
+\tab{5}\spadcommand{typeList(real,symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (23)  [X,[M,i,j]]
+Type: List Union(name: Symbol,bounds: List Union(S: Symbol,P: Polynomial Integer))
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty24}
+\begin{paste}{generalFortranPageEmpty24}{generalFortranPagePatch24}
+\pastebutton{generalFortranPageEmpty24}{\showpaste}
+\tab{5}\spadcommand{typeList(real,symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch25}
+\begin{paste}{generalFortranPageFull25}{generalFortranPageEmpty25}
+\pastebutton{generalFortranPageFull25}{\hidepaste}
+\tab{5}\spadcommand{printTypes symbols\free{symbols }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty25}
+\begin{paste}{generalFortranPageEmpty25}{generalFortranPagePatch25}
+\pastebutton{generalFortranPageEmpty25}{\showpaste}
+\tab{5}\spadcommand{printTypes symbols\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch26}
+\begin{paste}{generalFortranPageFull26}{generalFortranPageEmpty26}
+\pastebutton{generalFortranPageFull26}{\hidepaste}
+\tab{5}\spadcommand{newSubProgram F}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty26}
+\begin{paste}{generalFortranPageEmpty26}{generalFortranPagePatch26}
+\pastebutton{generalFortranPageEmpty26}{\showpaste}
+\tab{5}\spadcommand{newSubProgram F}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch27}
+\begin{paste}{generalFortranPageFull27}{generalFortranPageEmpty27}
+\pastebutton{generalFortranPageFull27}{\hidepaste}
+\tab{5}\spadcommand{endSubProgram()}
+\indentrel{3}\begin{verbatim}
+   (26)  MAIN
+                                           Type: Symbol
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty27}
+\begin{paste}{generalFortranPageEmpty27}{generalFortranPagePatch27}
+\pastebutton{generalFortranPageEmpty27}{\showpaste}
+\tab{5}\spadcommand{endSubProgram()}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch28}
+\begin{paste}{generalFortranPageFull28}{generalFortranPageEmpty28}
+\pastebutton{generalFortranPageFull28}{\hidepaste}
+\tab{5}\spadcommand{newSubProgram F\bound{forPleasure }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty28}
+\begin{paste}{generalFortranPageEmpty28}{generalFortranPagePatch28}
+\pastebutton{generalFortranPageEmpty28}{\showpaste}
+\tab{5}\spadcommand{newSubProgram F\bound{forPleasure }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch29}
+\begin{paste}{generalFortranPageFull29}{generalFortranPageEmpty29}
+\pastebutton{generalFortranPageFull29}{\hidepaste}
+\tab{5}\spadcommand{argumentList!(F,[X])\free{forPleasure }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty29}
+\begin{paste}{generalFortranPageEmpty29}{generalFortranPagePatch29}
+\pastebutton{generalFortranPageEmpty29}{\showpaste}
+\tab{5}\spadcommand{argumentList!(F,[X])\free{forPleasure }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch30}
+\begin{paste}{generalFortranPageFull30}{generalFortranPageEmpty30}
+\pastebutton{generalFortranPageFull30}{\hidepaste}
+\tab{5}\spadcommand{returnType!(F,real)\free{forPleasure }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty30}
+\begin{paste}{generalFortranPageEmpty30}{generalFortranPagePatch30}
+\pastebutton{generalFortranPageEmpty30}{\showpaste}
+\tab{5}\spadcommand{returnType!(F,real)\free{forPleasure }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch31}
+\begin{paste}{generalFortranPageFull31}{generalFortranPageEmpty31}
+\pastebutton{generalFortranPageFull31}{\hidepaste}
+\tab{5}\spadcommand{declare!(X,fortranReal(),F)\free{forPleasure }}
+\indentrel{3}\begin{verbatim}
+   (30)  REAL
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty31}
+\begin{paste}{generalFortranPageEmpty31}{generalFortranPagePatch31}
+\pastebutton{generalFortranPageEmpty31}{\showpaste}
+\tab{5}\spadcommand{declare!(X,fortranReal(),F)\free{forPleasure }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch32}
+\begin{paste}{generalFortranPageFull32}{generalFortranPageEmpty32}
+\pastebutton{generalFortranPageFull32}{\hidepaste}
+\tab{5}\spadcommand{printHeader F\free{forPleasure }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty32}
+\begin{paste}{generalFortranPageEmpty32}{generalFortranPagePatch32}
+\pastebutton{generalFortranPageEmpty32}{\showpaste}
+\tab{5}\spadcommand{printHeader F\free{forPleasure }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch33}
+\begin{paste}{generalFortranPageFull33}{generalFortranPageEmpty33}
+\pastebutton{generalFortranPageFull33}{\hidepaste}
+\tab{5}\spadcommand{LT(x,y)}
+\indentrel{3}\begin{verbatim}
+   (32)  x < y
+                                           Type: Switch
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty33}
+\begin{paste}{generalFortranPageEmpty33}{generalFortranPagePatch33}
+\pastebutton{generalFortranPageEmpty33}{\showpaste}
+\tab{5}\spadcommand{LT(x,y)}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch34}
+\begin{paste}{generalFortranPageFull34}{generalFortranPageEmpty34}
+\pastebutton{generalFortranPageFull34}{\hidepaste}
+\tab{5}\spadcommand{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c }}
+\indentrel{3}\begin{verbatim}
+   (33)  conditional
+                                      Type: FortranCode
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty34}
+\begin{paste}{generalFortranPageEmpty34}{generalFortranPagePatch34}
+\pastebutton{generalFortranPageEmpty34}{\showpaste}
+\tab{5}\spadcommand{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch35}
+\begin{paste}{generalFortranPageFull35}{generalFortranPageEmpty35}
+\pastebutton{generalFortranPageFull35}{\hidepaste}
+\tab{5}\spadcommand{printCode c\free{c }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty35}
+\begin{paste}{generalFortranPageEmpty35}{generalFortranPagePatch35}
+\pastebutton{generalFortranPageEmpty35}{\showpaste}
+\tab{5}\spadcommand{printCode c\free{c }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch36}
+\begin{paste}{generalFortranPageFull36}{generalFortranPageEmpty36}
+\pastebutton{generalFortranPageFull36}{\hidepaste}
+\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
+\indentrel{3}\begin{verbatim}
+   (35)  table()
+                                      Type: SymbolTable
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty36}
+\begin{paste}{generalFortranPageEmpty36}{generalFortranPagePatch36}
+\pastebutton{generalFortranPageEmpty36}{\showpaste}
+\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch37}
+\begin{paste}{generalFortranPageFull37}{generalFortranPageEmpty37}
+\pastebutton{generalFortranPageFull37}{\hidepaste}
+\tab{5}\spadcommand{declare!([X,Y],fortranReal(),symbols)\free{symbols }}
+\indentrel{3}\begin{verbatim}
+   (36)  REAL
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty37}
+\begin{paste}{generalFortranPageEmpty37}{generalFortranPagePatch37}
+\pastebutton{generalFortranPageEmpty37}{\showpaste}
+\tab{5}\spadcommand{declare!([X,Y],fortranReal(),symbols)\free{symbols }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch38}
+\begin{paste}{generalFortranPageFull38}{generalFortranPageEmpty38}
+\pastebutton{generalFortranPageFull38}{\hidepaste}
+\tab{5}\spadcommand{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols }\bound{FP }}
+\indentrel{3}\begin{verbatim}
+   (37)  FortranProgram(F,REAL,[X,Y],table(...,...))
+                                           Type: Domain
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty38}
+\begin{paste}{generalFortranPageEmpty38}{generalFortranPagePatch38}
+\pastebutton{generalFortranPageEmpty38}{\showpaste}
+\tab{5}\spadcommand{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols }\bound{FP }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch39}
+\begin{paste}{generalFortranPageFull39}{generalFortranPageEmpty39}
+\pastebutton{generalFortranPageFull39}{\hidepaste}
+\tab{5}\spadcommand{asp := X*sin(Y)\bound{asp }}
+\indentrel{3}\begin{verbatim}
+   (38)  X sin(Y)
+                               Type: Expression Integer
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty39}
+\begin{paste}{generalFortranPageEmpty39}{generalFortranPagePatch39}
+\pastebutton{generalFortranPageEmpty39}{\showpaste}
+\tab{5}\spadcommand{asp := X*sin(Y)\bound{asp }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch40}
+\begin{paste}{generalFortranPageFull40}{generalFortranPageEmpty40}
+\pastebutton{generalFortranPageFull40}{\hidepaste}
+\tab{5}\spadcommand{outputAsFortran(asp::FP)\free{FP asp }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty40}
+\begin{paste}{generalFortranPageEmpty40}{generalFortranPagePatch40}
+\pastebutton{generalFortranPageEmpty40}{\showpaste}
+\tab{5}\spadcommand{outputAsFortran(asp::FP)\free{FP asp }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch41}
+\begin{paste}{generalFortranPageFull41}{generalFortranPageEmpty41}
+\pastebutton{generalFortranPageFull41}{\hidepaste}
+\tab{5}\spadcommand{declare!(Z,fortranReal(),symbols)\free{symbols }\bound{Z }}
+\indentrel{3}\begin{verbatim}
+   (40)  REAL
+                                      Type: FortranType
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty41}
+\begin{paste}{generalFortranPageEmpty41}{generalFortranPagePatch41}
+\pastebutton{generalFortranPageEmpty41}{\showpaste}
+\tab{5}\spadcommand{declare!(Z,fortranReal(),symbols)\free{symbols }\bound{Z }}
+\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPagePatch42}
+\begin{paste}{generalFortranPageFull42}{generalFortranPageEmpty42}
+\pastebutton{generalFortranPageFull42}{\hidepaste}
+\tab{5}\spadcommand{outputAsFortran([c,returns()]::FP)\free{FP c Z }}
+\indentrel{3}\begin{verbatim}
+                                             Type: Void
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{generalFortranPageEmpty42}
+\begin{paste}{generalFortranPageEmpty42}{generalFortranPagePatch42}
+\pastebutton{generalFortranPageEmpty42}{\showpaste}
+\tab{5}\spadcommand{outputAsFortran([c,returns()]::FP)\free{FP c Z }}
+\end{paste}\end{patch}
+
 @
 \pagehead{nagTechnicalPage}{ug15.ht}{Some technical information}
 <<ug15.ht>>=
@@ -47748,6 +115728,22 @@ Various messages have been added or rewritten for clarity.
 \autobuttons
 \end{page}
 
+\begin{patch}{ugWhatsNewLanguagePagePatch1}
+\begin{paste}{ugWhatsNewLanguagePageFull1}{ugWhatsNewLanguagePageEmpty1}
+\pastebutton{ugWhatsNewLanguagePageFull1}{\hidepaste}
+\tab{5}\spadcommand{set [1,2,3,4]}
+\indentrel{3}\begin{verbatim}
+   (1)  {1,2,3,4}
+                              Type: Set PositiveInteger
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{ugWhatsNewLanguagePageEmpty1}
+\begin{paste}{ugWhatsNewLanguagePageEmpty1}{ugWhatsNewLanguagePagePatch1}
+\pastebutton{ugWhatsNewLanguagePageEmpty1}{\showpaste}
+\tab{5}\spadcommand{set [1,2,3,4]}
+\end{paste}\end{patch}
+
 @
 \pagehead{ugWhatsNewLibraryPage}{ug15.ht}{Library}
 \pageto{notitle}{FullPartialFracExpansionXmpPage}
@@ -51737,9 +119733,7 @@ displays and acts like this
 
 The best way to familiarise yourself to
 macros is to study the macros defined in
-\centerline{
-{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}
-}
+\centerline{{\bf util.ht}}
 It is highly probable that a good many of them
 will prove useful to you.
 Clever use of macros will allow you to
@@ -52020,7 +120014,7 @@ Set the environment variable {\tt HTPATH} so that
 it points first to your directory and then the system directory.
 In the {\bf /bin/csh}, you might use
 \centerline{
-{\tt setenv HTPATH /tmp:\$AXIOM/doc/hypertex/pages}
+{\tt setenv HTPATH /tmp:\$AXIOM/doc}
 }
 Make sure that no {\bf trypaste.input} or {\bf trypaste.pht}
 files exist in the directory.
@@ -53602,7 +121596,7 @@ of an X11 bitmap file.
 \begin{paste}{HTXFormatPage8xPaste1}{HTXFormatPage8xPatch1}
 \pastebutton{HTXFormatPage8xPaste1}{Interpret}
 \newline
-{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
+{\tt \\inputbitmap\{\env{AXIOM}/doc/bitmaps/sup.bitmap\} }
 \end{paste}
 \endImportant
 
@@ -53628,7 +121622,7 @@ the {\it image.xpm} or the {\it image.bm} file for you
 based on the capabilities of your X server. 
 
 For your convenience, there are two macros defined
-in \centerline{ {\bf \env{AXIOM}{}/doc/hypertex/pages/util.ht}.}
+in \centerline{ {\bf util.ht}.}
 The {\tt \\viewport} macro eliminates the need to specify
 the {\tt .view/image} part and the
 {\tt \\axiomViewport} macro automatically selects viewport
@@ -53662,14 +121656,14 @@ or
 \begin{paste}{HTXFormatPage8xPaste1A}{HTXFormatPage8xPatch1A}
 \pastebutton{HTXFormatPage8xPaste1A}{Source}
 \newline
-\inputbitmap{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap}
+\inputbitmap{\env{AXIOM}/doc/bitmaps/sup.bitmap}
 \end{paste}
 \end{patch}
 \begin{patch}{HTXFormatPage8xPatch1A}
 \begin{paste}{HTXFormatPage8xPaste1B}{HTXFormatPage8xPatch1}
 \pastebutton{HTXFormatPage8xPaste1B}{Interpret}
 \newline
-{\tt \\inputbitmap\{\env{AXIOM}/doc/hypertex/bitmaps/sup.bitmap\} }
+{\tt \\inputbitmap\{\env{AXIOM}/doc/bitmaps/sup.bitmap\} }
 \end{paste}
 \end{patch}
 
@@ -53882,7 +121876,7 @@ in the case where you have started Hyperdoc with the Axiom database
 --- see \downlink{later on}{HTXLinkPage6}. It is suggested that the
 page names you define start with the letters {\tt UX} (standing for
 {\tt U}ser e{\tt X}tensions). You can have a look at the Axiom system
-database file {\centerline{\bf \env{AXIOM}/doc/hypertex/pages/ht.db} }
+database file {\centerline{\bf \env{AXIOM}/doc/ht.db} }
 which contains the names of all pages, macros and patches used by
 Axiom.
 
@@ -54208,7 +122202,7 @@ the {\tt AXIOM} environment variable is not set.
 If it is, then Hyperdoc will assume that it points
 to the Axiom system directory and will look for
 these files in
-{\bf \$AXIOM/doc/hypertex/bitmaps}.
+{\bf \$AXIOM/doc/bitmaps}.
 
 \end{scroll}
 \beginmenu
@@ -54271,7 +122265,7 @@ This section explains how to include Axiom
 commands in your page. The commands we will
 introduce are actually {\it macros} that are defined
 in
-\centerline{{\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
+\centerline{{\bf \env{AXIOM}/doc/util.ht}}
 This means that you can use them only if you include
 this file in your Hyperdoc database.
 
@@ -54694,7 +122688,7 @@ Now, the most important use of this facility
 so far has been in the \Browse{} and Basic Commands components of
 Hyperdoc. Instead of giving you details of the various
 \Browse{} {\it Lisp} functions, a few macros are defined in
-\centerline{{\bf \$AXIOM/doc/hypertex/pages/util.ht}}
+\centerline{{\bf \$AXIOM/doc/util.ht}}
 
 The most important defined macros are
 \beginImportant
@@ -54991,7 +122985,7 @@ file known to contain just one page.
 \pastebutton{HTXLinkPage5xPaste2}{Interpret}
 \newline
 {\tt \\unixlink\{Some file\}} \newline
-{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
+{\tt \{cat\\ \\env\{AXIOM\}/doc/HTXplay.ht\}}
 \end{paste}
 \endImportant
 
@@ -55057,7 +123051,7 @@ a file by clicking on its name.
 \pastebutton{HTXLinkPage5xPaste2A}{Source}
 \newline
 \unixlink{Some file}
-{cat\ \env{AXIOM}/doc/hypertex/pages/HTXplay.ht}
+{cat\ \env{AXIOM}/doc/HTXplay.ht}
 \end{paste}
 \end{patch}
 
@@ -55073,7 +123067,7 @@ a file by clicking on its name.
 \pastebutton{HTXLinkPage5xPaste2B}{Interpret}
 \newline
 {\tt \\unixlink\{Some file\}} \newline
-{\tt \{cat\\ \\env\{AXIOM\}/doc/hypertex/pages/HTXplay.ht\}}
+{\tt \{cat\\ \\env\{AXIOM\}/doc/HTXplay.ht\}}
 \end{paste}
 \end{patch}
 
@@ -55106,7 +123100,7 @@ a line like this.
 \endImportant
 
 This macro is defined in
-\centerline{ {\bf \env{AXIOM}/doc/hypertex/pages/util.ht}}
+\centerline{ {\bf \env{AXIOM}/doc/util.ht}}
 to be (see \downlink{Macros}{HTXAdvPage3} to learn how to define macros):
 \beginImportant
 \newline
@@ -55161,7 +123155,7 @@ list of directory full pathnames.
 The order of the directories is respected with earlier entries overriding
 later ones. Since we want all the Axiom pages but need to override the
 {\tt \\localinfo} macro, we should use the value
-\centerline{{\bf /u/sugar/Hyperdoc:\env{AXIOM}/doc/hypertex/pages}}
+\centerline{{\bf /u/sugar/Hyperdoc:\env{AXIOM}/doc}}
 The way that you define environment variables depends on the shell
 you are using. In the {\bf /bin/csh}, it would be
 \newline
@@ -55225,9 +123219,9 @@ is specified.
 {\tt -s}\tab{8}\indentrel{8}
 build {\bf ht.db} database in {\it system} directory. The
 system directory is built as follows. If the {\tt AXIOM}
-variable is defined, the {\bf \$AXIOM/doc/hypertex/pages} directory
+variable is defined, the {\bf \$AXIOM/doc} directory
 is used. If {\tt AXIOM} is not defined, the
-{\bf /usr/local/axiom/doc/hypertex/pages} directory is used.
+{\bf /usr/local/axiom/doc} directory is used.
 
 
 \indentrel{-8}\newline
@@ -55258,7 +123252,7 @@ Otherwise, the following interpretation will occur:
 If the {\tt HTPATH} variable is defined, the directories
 specified in it will be tried in order. If {\tt HTPATH}
 is not defined, then, if {\tt AXIOM} is defined, the
-{\bf \$AXIOM/doc/hypertex/pages} will be tried, else
+{\bf \$AXIOM/doc} will be tried, else
 the file will be deemed missing and {\bf htadd} will fail.
 \indentrel{-12}
 \end{paste}
@@ -55293,7 +123287,7 @@ the file will be deemed missing and {\bf htadd} will fail.
 The Hyperdoc program is \centerline{{\bf \env{AXIOM}/lib/hypertex}} If
 {\tt AXIOM} is defined and {\tt HTPATH} is not (this is the case when
 Axiom starts Hyperdoc) Hyperdoc will look in 
-\centerline{{\bf \env{AXIOM}/doc/hypertex/pages}} 
+\centerline{{\bf \env{AXIOM}/doc}} 
 for the {\bf ht.db} file and all
 Hyperdoc pages.  If {\tt HTPATH} is defined, it is assumed that it
 alone points to the directories to be searched (the above default will
@@ -55424,7 +123418,7 @@ just get back to this page and click on {\bf Link} again. }
 \beginmenu
 {\it Filename: }{\inputstring{filename}{40}{\env{HOME}/HTXplay.ht}}
 \menuunixcommand{Initialize}
-{cp\space{1}\env{AXIOM}/doc/hypertex/pages/HTXplay.ht 
+{cp\space{1}\env{AXIOM}/doc/HTXplay.ht 
 \stringvalue{filename}} \tab{20} Get a fresh copy from the system.
 \menuunixcommand{Edit}{xterm -T "\stringvalue{filename}" -e vi 
 \stringvalue{filename}} \tab{20} Edit the file.
@@ -118054,6 +186048,212 @@ results.  This whole process was transparent to the user.
 %\downlink{Decision Agents}{UXANNADec}
 \end{page}
 
+\begin{patch}{UXANNAExPatch1}
+\begin{paste}{UXANNAExFull1}{UXANNAExEmpty1}
+\pastebutton{UXANNAExFull1}{\hidepaste}
+\tab{5}\spadcommand{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [d01ajfAnnaTypeAnswer: Result, abserr: DoubleFloat,
+    method: Result, result: DoubleFloat,
+    explanations: List(String), attributes: List(Any),
+    d01apfAnnaTypeAnswer: Result]
+                                           Type: Result
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAExEmpty1}
+\begin{paste}{UXANNAExEmpty1}{UXANNAExPatch1}
+\pastebutton{UXANNAExEmpty1}{\showpaste}
+\tab{5}\spadcommand{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAExPatch2}
+\begin{paste}{UXANNAExFull2}{UXANNAExEmpty2}
+\pastebutton{UXANNAExFull2}{\hidepaste}
+\tab{5}\spadcommand{ans . 'result\free{ans }}
+\indentrel{3}\begin{verbatim}
+   (2)  3.23287256251958
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAExEmpty2}
+\begin{paste}{UXANNAExEmpty2}{UXANNAExPatch2}
+\pastebutton{UXANNAExEmpty2}{\showpaste}
+\tab{5}\spadcommand{ans . 'result\free{ans }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAExPatch3}
+\begin{paste}{UXANNAExFull3}{UXANNAExEmpty3}
+\pastebutton{UXANNAExFull3}{\hidepaste}
+\tab{5}\spadcommand{ans . 'abserr\free{ans }}
+\indentrel{3}\begin{verbatim}
+   (3)  2.69960156338737e-08
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAExEmpty3}
+\begin{paste}{UXANNAExEmpty3}{UXANNAExPatch3}
+\pastebutton{UXANNAExEmpty3}{\showpaste}
+\tab{5}\spadcommand{ans . 'abserr\free{ans }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Patch1}
+\begin{paste}{UXANNAEx2Full1}{UXANNAEx2Empty1}
+\pastebutton{UXANNAEx2Full1}{\hidepaste}
+\tab{5}\spadcommand{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0, [1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [ifail: Integer, intensityFunctions: List(String),
+    tol: DoubleFloat, result: Matrix(DoubleFloat),
+    y: Matrix(DoubleFloat), method: Result,
+    explanations: List(String), x: DoubleFloat]
+                                           Type: Result
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Empty1}
+\begin{paste}{UXANNAEx2Empty1}{UXANNAEx2Patch1}
+\pastebutton{UXANNAEx2Empty1}{\showpaste}
+\tab{5}\spadcommand{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0, [1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Patch2}
+\begin{paste}{UXANNAEx2Full2}{UXANNAEx2Empty2}
+\pastebutton{UXANNAEx2Full2}{\hidepaste}
+\tab{5}\spadcommand{ans2 . 'result\free{ans2 }}
+\indentrel{3}\begin{verbatim}
+        Ú        1.0                   - 1.0         ¿
+        ³                                            ³
+        ³ 0.135329965475963     - 0.135329965475963  ³
+        ³                                            ³
+   (2)  ³ 0.018315370486087     - 0.0183153704860871 ³
+        ³                                            ³
+        ³0.00247869592278824   - 0.00247869592278825 ³
+        ³                                            ³
+        À0.000335497710871914  - 0.000335497710871913Ù
+                               Type: Matrix DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Empty2}
+\begin{paste}{UXANNAEx2Empty2}{UXANNAEx2Patch2}
+\pastebutton{UXANNAEx2Empty2}{\showpaste}
+\tab{5}\spadcommand{ans2 . 'result\free{ans2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Patch3}
+\begin{paste}{UXANNAEx2Full3}{UXANNAEx2Empty3}
+\pastebutton{UXANNAEx2Full3}{\hidepaste}
+\tab{5}\spadcommand{ans2 . 'y\free{ans2 }}
+\indentrel{3}\begin{verbatim}
+   (3)  [4.54002176643708e-05  - 4.54002176643708e-05]
+                               Type: Matrix DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx2Empty3}
+\begin{paste}{UXANNAEx2Empty3}{UXANNAEx2Patch3}
+\pastebutton{UXANNAEx2Empty3}{\showpaste}
+\tab{5}\spadcommand{ans2 . 'y\free{ans2 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Patch1}
+\begin{paste}{UXANNAEx3Full1}{UXANNAEx3Empty1}
+\pastebutton{UXANNAEx3Full1}{\hidepaste}
+\tab{5}\spadcommand{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + (X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], [3,0,\%plusInfinity,3])\bound{ans3 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [ifail: Integer, bl: Matrix(DoubleFloat),
+    bu: Matrix(DoubleFloat), method: Result,
+    attributes: List(String), explanations: List(String),
+    x: Matrix(DoubleFloat), objf: DoubleFloat]
+                                           Type: Result
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Empty1}
+\begin{paste}{UXANNAEx3Empty1}{UXANNAEx3Patch1}
+\pastebutton{UXANNAEx3Empty1}{\showpaste}
+\tab{5}\spadcommand{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + (X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], [3,0,\%plusInfinity,3])\bound{ans3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Patch2}
+\begin{paste}{UXANNAEx3Full2}{UXANNAEx3Empty2}
+\pastebutton{UXANNAEx3Full2}{\hidepaste}
+\tab{5}\spadcommand{ans3 . objf\free{ans3 }}
+\indentrel{3}\begin{verbatim}
+   (2)  2.43378751212073
+                                      Type: DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Empty2}
+\begin{paste}{UXANNAEx3Empty2}{UXANNAEx3Patch2}
+\pastebutton{UXANNAEx3Empty2}{\showpaste}
+\tab{5}\spadcommand{ans3 . objf\free{ans3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Patch3}
+\begin{paste}{UXANNAEx3Full3}{UXANNAEx3Empty3}
+\pastebutton{UXANNAEx3Full3}{\hidepaste}
+\tab{5}\spadcommand{ans3 . x\free{ans3 }}
+\indentrel{3}\begin{verbatim}
+   (3)
+   [1.0  - 0.0852325900999037  0.409303588204477  1.0]
+                               Type: Matrix DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Empty3}
+\begin{paste}{UXANNAEx3Empty3}{UXANNAEx3Patch3}
+\pastebutton{UXANNAEx3Empty3}{\showpaste}
+\tab{5}\spadcommand{ans3 . x\free{ans3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Patch4}
+\begin{paste}{UXANNAEx3Full4}{UXANNAEx3Empty4}
+\pastebutton{UXANNAEx3Full4}{\hidepaste}
+\tab{5}\spadcommand{ans3 . attributes\free{ans3 }}
+\indentrel{3}\begin{verbatim}
+   (4)
+   ["The object function is non-linear",
+    "There are simple bounds on the variables",
+    "There are no constraint functions"]
+                                      Type: List String
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAEx3Empty4}
+\begin{paste}{UXANNAEx3Empty4}{UXANNAEx3Patch4}
+\pastebutton{UXANNAEx3Empty4}{\showpaste}
+\tab{5}\spadcommand{ans3 . attributes\free{ans3 }}
+\end{paste}\end{patch}
+
+\begin{patch}{UXANNAAgentPatch1}
+\begin{paste}{UXANNAAgentFull1}{UXANNAAgentEmpty1}
+\pastebutton{UXANNAAgentFull1}{\hidepaste}
+\tab{5}\spadcommand{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT\free{lib3 }}
+\indentrel{3}\begin{verbatim}
+   (1)
+   [1.5707963267948966, 4.7123889803846897,
+    7.8539816339744828, 10.995574287564276,
+    14.137166941154069, 17.27875959474386,
+    20.420352248333657, 23.561944901923447,
+    26.703537555513243, 29.845130209103033, ...]
+                               Type: Stream DoubleFloat
+\end{verbatim}
+\indentrel{-3}\end{paste}\end{patch}
+
+\begin{patch}{UXANNAAgentEmpty1}
+\begin{paste}{UXANNAAgentEmpty1}{UXANNAAgentPatch1}
+\pastebutton{UXANNAAgentEmpty1}{\showpaste}
+\tab{5}\spadcommand{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT\free{lib3 }}
+\end{paste}\end{patch}
+
+
 @
 \pagehead{UXANNAEx2}{annaex.ht}{Example using the Axiom/NAG Expert System}
 \pageto{notitle}{UXANNAEx3}
@@ -120072,7 +188272,7 @@ PAGELIST= ${PHT} algebra aspex basic  bmcat cphelp expose gloss  \
 
 
 
-HYPER=${MNT}/${SYS}/doc/hypertex/pages
+HYPER=${MNT}/${SYS}/doc
 PAGEFILE=${HYPER}/bookvol7.1.pamphlet
 SMAN=${MNT}/${SYS}/bin/sman
 
@@ -120098,32 +188298,17 @@ ${PAGEFILE}: ${BOOK}
 	@${TANGLE} -R"$*.ht" ${BOOK} >${HYPER}/$*.ht
 
 @
-Note that I've commented out the paste file creation process
-as it hangs occasionally leading to a failed build. We need
-to figure out where the graphics "goes off into the weeds" and hangs.
-Killing the process confuses make and leads to bad results.
-Ulimately the commented loop needs to be fixed and the line:
-\begin{verbatim}
-	@ cp -pr ${IN}/*.pht ${HYPER}
-\end{verbatim} 
-should be removed.
+The patch/paste files are now included directly in bookvol7.1
+Add new patch/paste files is a manual process when editing the book.
 <<*>>=
 
 ${HYPER}/ht.db: ${BOOK}
 	@echo 2 making ${HYPER} from ${BOOK}
-#	@ (cd ${HYPER} ; \
-#	   htadd *.ht ; \
-#           for j in ${PHT} ; do \
-#	     echo 2a making $$j.pht from $$j.ht ; \
-#             ${SMAN} -noihere -paste $$j.ht ; \
-#           done )
-	@ cp -pr ${IN}/pages/*.pht ${HYPER}
 	@ (cd ${HYPER} ; \
            rm -f ht.db ; \
-           rm -f *~ ; \
-	   htadd ${PAGEFILE} *.pht )
+	   htadd ${PAGEFILE} )
 	@ cp -pr ${IN}/bitmaps ${HYPER}
-	@ cp -pr ${IN}/viewports ${MNT}/${SYS}/doc
+	@ cp -pr ${IN}/viewports ${HYPER}
 
 
 @
diff --git a/books/bookvol7.pamphlet b/books/bookvol7.pamphlet
index 776042b..1ce229c 100644
--- a/books/bookvol7.pamphlet
+++ b/books/bookvol7.pamphlet
@@ -1681,7 +1681,7 @@ static int buildHtFilename(char *fname, char *aname, char *name) {
         HTPATH = (char *) getenv("HTPATH");
         if (HTPATH == NULL) {
         /** The user does not have a HTPATH, so I will use the the directory
-        $AXIOM/doc/hypertex/pages/ as the default path ***/
+        $AXIOM/doc as the default path ***/
           char *spad = (char *) getenv("AXIOM");
           if (spad == NULL) {
             fprintf(stderr,
@@ -1690,7 +1690,7 @@ static int buildHtFilename(char *fname, char *aname, char *name) {
           }
           HTPATH = (char *) halloc(1024 * sizeof(char), "HTPATH");
           strcpy(HTPATH, spad);
-          strcat(HTPATH, "/doc/hypertex/pages");
+          strcat(HTPATH, "/doc");
         }
         /** Now that I have filled HTPATH, I should try to open a file by the
           given name **/
@@ -1755,7 +1755,7 @@ FILE *htFileOpen(char *fname, char *aname, char *name) {
 \subsection{dbFileOpen}
 This function is responsible for actually opening the database file. For the
 moment it gets the \$AXIOM environment variable, and appends to it
-``doc/hypertex/ht.db'', and then opens it
+``doc/ht.db'', and then opens it
 
 Modified on 12/3/89 to take a second argument. This argument tells the
 open routine whether it is reading the db file, or writing it. If writing
@@ -1790,7 +1790,7 @@ FILE *dbFileOpen(char *dbFile) {
             }
             gDatabasePath = (char *) halloc(sizeof(char) * 1024, "dbFileOpen");
             strcpy(gDatabasePath, spad);
-            strcat(gDatabasePath, "/doc/hypertex/pages");
+            strcat(gDatabasePath, "/doc");
         }
         db_path_trace = gDatabasePath;
     }
@@ -1804,15 +1804,14 @@ FILE *dbFileOpen(char *dbFile) {
             *dbFile_trace++ = *db_path_trace;
         *dbFile_trace = '\0';
         strcat(dbFile_trace, "/ht.db");
-/*
-fprintf(stderr,"addfile:dbFileOpen: dbFile_trace=%s\n",dbFile_trace);
-fprintf(stderr,"addfile:dbFileOpen: dbFile=%s\n",dbFile);
-*/
+/*    fprintf(stderr,"addfile:dbFileOpen: dbFile_trace=%s\n",dbFile_trace); */
+/*    fprintf(stderr,"addfile:dbFileOpen: dbFile=%s\n",dbFile); */
         db_fp = fopen(dbFile, "r");
         if (*db_path_trace != '\0')
             db_path_trace++;
     }
-/*    if (db_fp == NULL)
+/*
+    if (db_fp == NULL)
       fprintf(stderr,"addfile:dbFileOpen: exit (null)\n");
     else
       fprintf(stderr,"addfile:dbFileOpen: exit opened\n");
@@ -3457,7 +3456,7 @@ hfree(char *p) {
 \section{hyper.h}
 The \verb|hypertex| function, of which this is the top level, is a browser
 for Axiom information. It works off a database of pages. The pages are
-stored in the \verb|$AXIOM/doc/hypertex/pages| subdirectory and there is
+stored in the \verb|$AXIOM/doc| subdirectory and there is
 a key file called \verb|ht.db| in that subdirectory which contains 
 critical information about each page. If you add or delete pages you
 must rerun the \verb|htadd| command.
@@ -3466,12 +3465,12 @@ must rerun the \verb|htadd| command.
 Generally, if you add or delete pages you can recreate a proper 
 \verb|pages/ht.db| file by doing:
 \begin{verbatim}
-cd $AXIOM/doc/hypertex
+cd $AXIOM/doc
 htadd -f pages -n pages/*
 \end{verbatim}
 
 
-The \verb|hypertex| function looks in \verb|$AXIOM/doc/hypertex/pages| by
+The \verb|hypertex| function looks in \verb|$AXIOM/doc| by
 default. This can be over-ridden by setting the \verb|HTPATH| shell
 variable to point to the desired directory containing the pages and
 the ht.db file.
@@ -4496,7 +4495,7 @@ int main(int argc, char **argv){
 @
 \chapter{The htadd command}
 The \verb|htadd| function can manipulate the database of hypertex pages.
-To rebuild the hypertex database changes to the \verb|$AXIOM/doc/hypertex| 
+To rebuild the hypertex database changes to the \verb|$AXIOM/doc| 
 subdirectory and type:
 \begin{verbatim}
 htadd -f pages -n pages/*
@@ -4706,8 +4705,8 @@ static int buildDBFilename(short flag, char *db_dir, char *dbfilename) {
                     "buildDBFilename: Defaulting on $AXIOM\n");
             SPAD = (char *) def_spad;
         }
-        sprintf(dbfilename, "%s/doc/hypertex/pages/%s", SPAD, dbFileName);
-        sprintf(path, "%s/doc/hypertex/pages", SPAD);
+        sprintf(dbfilename, "%s/doc/%s", SPAD, dbFileName);
+        sprintf(path, "%s/doc", SPAD);
     }
     else if (flag & Named) {
         sprintf(dbfilename, "%s/%s", db_dir, dbFileName);
@@ -19866,31 +19865,31 @@ static void readTitleBarImages(void) {
     char *axiomEnvVar = NULL;
     axiomEnvVar = getenv("AXIOM");
     if (axiomEnvVar)
-        sprintf(filename, "%s/doc/hypertex/bitmaps/%s", axiomEnvVar, tw1file);
+        sprintf(filename, "%s/doc/bitmaps/%s", axiomEnvVar, tw1file);
     else
         sprintf(filename, "%s", tw1file);
     tw1image = HTReadBitmapFile(gXDisplay, gXScreenNumber, filename,
                                 &twwidth, &twheight);
     if (axiomEnvVar)
-        sprintf(filename, "%s/doc/hypertex/bitmaps/%s", axiomEnvVar, tw2file);
+        sprintf(filename, "%s/doc/bitmaps/%s", axiomEnvVar, tw2file);
     else
         sprintf(filename, "%s", tw2file);
     tw2image = HTReadBitmapFile(gXDisplay, gXScreenNumber, filename, &w, &h);
     twwidth = ((twwidth >= w) ? (twwidth) : (w));
     if (axiomEnvVar)
-        sprintf(filename, "%s/doc/hypertex/bitmaps/%s", axiomEnvVar, tw3file);
+        sprintf(filename, "%s/doc/bitmaps/%s", axiomEnvVar, tw3file);
     else
         sprintf(filename, "%s", tw3file);
     tw3image = HTReadBitmapFile(gXDisplay, gXScreenNumber, filename, &w, &h);
     twwidth = ((twwidth >= w) ? (twwidth) : (w));
     if (axiomEnvVar)
-        sprintf(filename, "%s/doc/hypertex/bitmaps/%s", axiomEnvVar, tw4file);
+        sprintf(filename, "%s/doc/bitmaps/%s", axiomEnvVar, tw4file);
     else
         sprintf(filename, "%s", tw4file);
     tw4image = HTReadBitmapFile(gXDisplay, gXScreenNumber, filename, &w, &h);
     twwidth = ((twwidth >= w) ? (twwidth) : (w));
     if (axiomEnvVar)
-        sprintf(filename, "%s/doc/hypertex/bitmaps/%s", axiomEnvVar, noopfile);
+        sprintf(filename, "%s/doc/bitmaps/%s", axiomEnvVar, noopfile);
     else
         sprintf(filename, "%s", noopfile);
     noopimage = HTReadBitmapFile(gXDisplay, gXScreenNumber, filename,
@@ -20025,7 +20024,7 @@ The syntax of the command is:
 #!/bin/sh
 
 htbindir=$AXIOM/lib
-htpagedir=$AXIOM/doc/hypertex/pages
+htpagedir=$AXIOM/doc
 
 if test -z "$1"
 then 
@@ -20605,8 +20604,7 @@ INC=    ${SRC}/include
 # this is where we hid the libspad library
 LIB= ${OBJ}/${SYS}/lib
 
-HYPER=${MNT}/${SYS}/doc/hypertex
-BMAPS=${HYPER}/bitmaps
+HYPER=${MNT}/${SYS}/doc
 
 CFLAGS= ${CCF} 
 LDFLAGS= -L${LIB} -lspad ${LDF}
@@ -20621,7 +20619,7 @@ HYPER_LIBS=${LIBS} ${LIB}/pixmap.o ${LIB}/spadcolors.o ${LIB}/util.o
 all: ${OUTLIB}/spadbuf ${OUTLIB}/ex2ht ${OUTBIN}/htadd ${OUTLIB}/hthits \
      ${OUTLIB}/htsearch ${OUTLIB}/presea ${OUTBIN}/hypertex \
      ${HYPER}/axbook ${HYPER}/bigbayou.png ${HYPER}/doctitle.png
-	@cp ${IN}/bitmaps/* ${HYPER}/bitmaps
+	@cp -pr ${IN}/bitmaps ${HYPER}
 	@ echo 0 finished ${BOOK}
 
 ${OUTLIB}/spadbuf: ${BOOK} 
diff --git a/books/pages/alist.pht b/books/pages/alist.pht
deleted file mode 100644
index 3cf6ce8..0000000
--- a/books/pages/alist.pht
+++ /dev/null
@@ -1,173 +0,0 @@
-\begin{patch}{AssociationListXmpPagePatch1}
-\begin{paste}{AssociationListXmpPageFull1}{AssociationListXmpPageEmpty1}
-\pastebutton{AssociationListXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Data := Record(monthsOld : Integer, gender : String)\bound{Data }}
-\indentrel{3}\begin{verbatim}
-   (1)  Record(monthsOld: Integer,gender: String)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty1}
-\begin{paste}{AssociationListXmpPageEmpty1}{AssociationListXmpPagePatch1}
-\pastebutton{AssociationListXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Data := Record(monthsOld : Integer, gender : String)\bound{Data }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch2}
-\begin{paste}{AssociationListXmpPageFull2}{AssociationListXmpPageEmpty2}
-\pastebutton{AssociationListXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{al : AssociationList(String,Data)\free{Data }\bound{al }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty2}
-\begin{paste}{AssociationListXmpPageEmpty2}{AssociationListXmpPagePatch2}
-\pastebutton{AssociationListXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{al : AssociationList(String,Data)\free{Data }\bound{al }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch3}
-\begin{paste}{AssociationListXmpPageFull3}{AssociationListXmpPageEmpty3}
-\pastebutton{AssociationListXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{al := table()\free{al }\bound{al1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  table()
-Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty3}
-\begin{paste}{AssociationListXmpPageEmpty3}{AssociationListXmpPagePatch3}
-\pastebutton{AssociationListXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{al := table()\free{al }\bound{al1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch4}
-\begin{paste}{AssociationListXmpPageFull4}{AssociationListXmpPageEmpty4}
-\pastebutton{AssociationListXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{al."bob" := [407,"male"]$Data\free{al1 }\bound{al2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [monthsOld= 407,gender= "male"]
-        Type: Record(monthsOld: Integer,gender: String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty4}
-\begin{paste}{AssociationListXmpPageEmpty4}{AssociationListXmpPagePatch4}
-\pastebutton{AssociationListXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{al."bob" := [407,"male"]$Data\free{al1 }\bound{al2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch5}
-\begin{paste}{AssociationListXmpPageFull5}{AssociationListXmpPageEmpty5}
-\pastebutton{AssociationListXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{al."judith" := [366,"female"]$Data\free{al2 }\bound{al3 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [monthsOld= 366,gender= "female"]
-        Type: Record(monthsOld: Integer,gender: String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty5}
-\begin{paste}{AssociationListXmpPageEmpty5}{AssociationListXmpPagePatch5}
-\pastebutton{AssociationListXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{al."judith" := [366,"female"]$Data\free{al2 }\bound{al3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch6}
-\begin{paste}{AssociationListXmpPageFull6}{AssociationListXmpPageEmpty6}
-\pastebutton{AssociationListXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{al."katie" := [24,"female"]$Data\free{al3 }\bound{al4 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [monthsOld= 24,gender= "female"]
-        Type: Record(monthsOld: Integer,gender: String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty6}
-\begin{paste}{AssociationListXmpPageEmpty6}{AssociationListXmpPagePatch6}
-\pastebutton{AssociationListXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{al."katie" := [24,"female"]$Data\free{al3 }\bound{al4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch7}
-\begin{paste}{AssociationListXmpPageFull7}{AssociationListXmpPageEmpty7}
-\pastebutton{AssociationListXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{al."smokie" := [200,"female"]$Data\free{al4 }\bound{al5 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [monthsOld= 200,gender= "female"]
-        Type: Record(monthsOld: Integer,gender: String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty7}
-\begin{paste}{AssociationListXmpPageEmpty7}{AssociationListXmpPagePatch7}
-\pastebutton{AssociationListXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{al."smokie" := [200,"female"]$Data\free{al4 }\bound{al5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch8}
-\begin{paste}{AssociationListXmpPageFull8}{AssociationListXmpPageEmpty8}
-\pastebutton{AssociationListXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{al\free{al5 }}
-\indentrel{3}\begin{verbatim}
-   (8)
-   table
-      "smokie"= [monthsOld= 200,gender= "female"]
-  ,
-      "katie"= [monthsOld= 24,gender= "female"]
-  ,
-      "judith"= [monthsOld= 366,gender= "female"]
-  ,
-      "bob"= [monthsOld= 407,gender= "male"]
-Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty8}
-\begin{paste}{AssociationListXmpPageEmpty8}{AssociationListXmpPagePatch8}
-\pastebutton{AssociationListXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{al\free{al5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch9}
-\begin{paste}{AssociationListXmpPageFull9}{AssociationListXmpPageEmpty9}
-\pastebutton{AssociationListXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{al."katie" := [23,"female"]$Data\free{al5 }\bound{al6 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [monthsOld= 23,gender= "female"]
-        Type: Record(monthsOld: Integer,gender: String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty9}
-\begin{paste}{AssociationListXmpPageEmpty9}{AssociationListXmpPagePatch9}
-\pastebutton{AssociationListXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{al."katie" := [23,"female"]$Data\free{al5 }\bound{al6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPagePatch10}
-\begin{paste}{AssociationListXmpPageFull10}{AssociationListXmpPageEmpty10}
-\pastebutton{AssociationListXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{delete!(al,1)\free{al6 }\bound{al7 }}
-\indentrel{3}\begin{verbatim}
-   (10)
-   table
-      "katie"= [monthsOld= 23,gender= "female"]
-  ,
-      "judith"= [monthsOld= 366,gender= "female"]
-  ,
-      "bob"= [monthsOld= 407,gender= "male"]
-Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssociationListXmpPageEmpty10}
-\begin{paste}{AssociationListXmpPageEmpty10}{AssociationListXmpPagePatch10}
-\pastebutton{AssociationListXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{delete!(al,1)\free{al6 }\bound{al7 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/anna-es.pht b/books/pages/anna-es.pht
deleted file mode 100644
index 6729473..0000000
--- a/books/pages/anna-es.pht
+++ /dev/null
@@ -1,205 +0,0 @@
-\begin{patch}{UXANNAExPatch1}
-\begin{paste}{UXANNAExFull1}{UXANNAExEmpty1}
-\pastebutton{UXANNAExFull1}{\hidepaste}
-\tab{5}\spadcommand{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [d01ajfAnnaTypeAnswer: Result, abserr: DoubleFloat,
-    method: Result, result: DoubleFloat,
-    explanations: List(String), attributes: List(Any),
-    d01apfAnnaTypeAnswer: Result]
-                                           Type: Result
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAExEmpty1}
-\begin{paste}{UXANNAExEmpty1}{UXANNAExPatch1}
-\pastebutton{UXANNAExEmpty1}{\showpaste}
-\tab{5}\spadcommand{ans := integrate((exp(-X^3)+exp(-3*X^2))/sqrt(X),0.0..\%plusInfinity)\bound{ans }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAExPatch2}
-\begin{paste}{UXANNAExFull2}{UXANNAExEmpty2}
-\pastebutton{UXANNAExFull2}{\hidepaste}
-\tab{5}\spadcommand{ans . 'result\free{ans }}
-\indentrel{3}\begin{verbatim}
-   (2)  3.23287256251958
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAExEmpty2}
-\begin{paste}{UXANNAExEmpty2}{UXANNAExPatch2}
-\pastebutton{UXANNAExEmpty2}{\showpaste}
-\tab{5}\spadcommand{ans . 'result\free{ans }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAExPatch3}
-\begin{paste}{UXANNAExFull3}{UXANNAExEmpty3}
-\pastebutton{UXANNAExFull3}{\hidepaste}
-\tab{5}\spadcommand{ans . 'abserr\free{ans }}
-\indentrel{3}\begin{verbatim}
-   (3)  2.69960156338737e-08
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAExEmpty3}
-\begin{paste}{UXANNAExEmpty3}{UXANNAExPatch3}
-\pastebutton{UXANNAExEmpty3}{\showpaste}
-\tab{5}\spadcommand{ans . 'abserr\free{ans }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Patch1}
-\begin{paste}{UXANNAEx2Full1}{UXANNAEx2Empty1}
-\pastebutton{UXANNAEx2Full1}{\hidepaste}
-\tab{5}\spadcommand{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0, [1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [ifail: Integer, intensityFunctions: List(String),
-    tol: DoubleFloat, result: Matrix(DoubleFloat),
-    y: Matrix(DoubleFloat), method: Result,
-    explanations: List(String), x: DoubleFloat]
-                                           Type: Result
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Empty1}
-\begin{paste}{UXANNAEx2Empty1}{UXANNAEx2Patch1}
-\pastebutton{UXANNAEx2Empty1}{\showpaste}
-\tab{5}\spadcommand{ans2 := solve([Y[2],-1001*Y[2]-1000*Y[1]], 0.0, 10.0, [1.0,-1.0], [2,4,6,8], 1.0e-4)\bound{ans2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Patch2}
-\begin{paste}{UXANNAEx2Full2}{UXANNAEx2Empty2}
-\pastebutton{UXANNAEx2Full2}{\hidepaste}
-\tab{5}\spadcommand{ans2 . 'result\free{ans2 }}
-\indentrel{3}\begin{verbatim}
-        Ú        1.0                   - 1.0         ¿
-        ³                                            ³
-        ³ 0.135329965475963     - 0.135329965475963  ³
-        ³                                            ³
-   (2)  ³ 0.018315370486087     - 0.0183153704860871 ³
-        ³                                            ³
-        ³0.00247869592278824   - 0.00247869592278825 ³
-        ³                                            ³
-        À0.000335497710871914  - 0.000335497710871913Ù
-                               Type: Matrix DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Empty2}
-\begin{paste}{UXANNAEx2Empty2}{UXANNAEx2Patch2}
-\pastebutton{UXANNAEx2Empty2}{\showpaste}
-\tab{5}\spadcommand{ans2 . 'result\free{ans2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Patch3}
-\begin{paste}{UXANNAEx2Full3}{UXANNAEx2Empty3}
-\pastebutton{UXANNAEx2Full3}{\hidepaste}
-\tab{5}\spadcommand{ans2 . 'y\free{ans2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [4.54002176643708e-05  - 4.54002176643708e-05]
-                               Type: Matrix DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx2Empty3}
-\begin{paste}{UXANNAEx2Empty3}{UXANNAEx2Patch3}
-\pastebutton{UXANNAEx2Empty3}{\showpaste}
-\tab{5}\spadcommand{ans2 . 'y\free{ans2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Patch1}
-\begin{paste}{UXANNAEx3Full1}{UXANNAEx3Empty1}
-\pastebutton{UXANNAEx3Full1}{\hidepaste}
-\tab{5}\spadcommand{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + (X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], [3,0,\%plusInfinity,3])\bound{ans3 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [ifail: Integer, bl: Matrix(DoubleFloat),
-    bu: Matrix(DoubleFloat), method: Result,
-    attributes: List(String), explanations: List(String),
-    x: Matrix(DoubleFloat), objf: DoubleFloat]
-                                           Type: Result
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Empty1}
-\begin{paste}{UXANNAEx3Empty1}{UXANNAEx3Patch1}
-\pastebutton{UXANNAEx3Empty1}{\showpaste}
-\tab{5}\spadcommand{ans3 := optimize((X[1]+10*X[2])**2 + 5*(X[3]-X[4])**2 + (X[2]-2*X[3])**4 + 10*(X[1]-X[4])**4, [3,-1,0,1], [1,-2,\%minusInfinity,1], [3,0,\%plusInfinity,3])\bound{ans3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Patch2}
-\begin{paste}{UXANNAEx3Full2}{UXANNAEx3Empty2}
-\pastebutton{UXANNAEx3Full2}{\hidepaste}
-\tab{5}\spadcommand{ans3 . objf\free{ans3 }}
-\indentrel{3}\begin{verbatim}
-   (2)  2.43378751212073
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Empty2}
-\begin{paste}{UXANNAEx3Empty2}{UXANNAEx3Patch2}
-\pastebutton{UXANNAEx3Empty2}{\showpaste}
-\tab{5}\spadcommand{ans3 . objf\free{ans3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Patch3}
-\begin{paste}{UXANNAEx3Full3}{UXANNAEx3Empty3}
-\pastebutton{UXANNAEx3Full3}{\hidepaste}
-\tab{5}\spadcommand{ans3 . x\free{ans3 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [1.0  - 0.0852325900999037  0.409303588204477  1.0]
-                               Type: Matrix DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Empty3}
-\begin{paste}{UXANNAEx3Empty3}{UXANNAEx3Patch3}
-\pastebutton{UXANNAEx3Empty3}{\showpaste}
-\tab{5}\spadcommand{ans3 . x\free{ans3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Patch4}
-\begin{paste}{UXANNAEx3Full4}{UXANNAEx3Empty4}
-\pastebutton{UXANNAEx3Full4}{\hidepaste}
-\tab{5}\spadcommand{ans3 . attributes\free{ans3 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-   ["The object function is non-linear",
-    "There are simple bounds on the variables",
-    "There are no constraint functions"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAEx3Empty4}
-\begin{paste}{UXANNAEx3Empty4}{UXANNAEx3Patch4}
-\pastebutton{UXANNAEx3Empty4}{\showpaste}
-\tab{5}\spadcommand{ans3 . attributes\free{ans3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{UXANNAAgentPatch1}
-\begin{paste}{UXANNAAgentFull1}{UXANNAAgentEmpty1}
-\pastebutton{UXANNAAgentFull1}{\hidepaste}
-\tab{5}\spadcommand{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT\free{lib3 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [1.5707963267948966, 4.7123889803846897,
-    7.8539816339744828, 10.995574287564276,
-    14.137166941154069, 17.27875959474386,
-    20.420352248333657, 23.561944901923447,
-    26.703537555513243, 29.845130209103033, ...]
-                               Type: Stream DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UXANNAAgentEmpty1}
-\begin{paste}{UXANNAAgentEmpty1}{UXANNAAgentPatch1}
-\pastebutton{UXANNAAgentEmpty1}{\showpaste}
-\tab{5}\spadcommand{s := singularitiesOf(tan x,[x],0..12*\%pi)$ESCONT\free{lib3 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/array1.pht b/books/pages/array1.pht
deleted file mode 100644
index 1a2079a..0000000
--- a/books/pages/array1.pht
+++ /dev/null
@@ -1,144 +0,0 @@
-\begin{patch}{OneDimensionalArrayXmpPagePatch1}
-\begin{paste}{OneDimensionalArrayXmpPageFull1}{OneDimensionalArrayXmpPageEmpty1}
-\pastebutton{OneDimensionalArrayXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{oneDimensionalArray [i**2 for i in 1..10]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,4,9,16,25,36,49,64,81,100]
-              Type: OneDimensionalArray PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty1}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty1}{OneDimensionalArrayXmpPagePatch1}
-\pastebutton{OneDimensionalArrayXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{oneDimensionalArray [i**2 for i in 1..10]}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch2}
-\begin{paste}{OneDimensionalArrayXmpPageFull2}{OneDimensionalArrayXmpPageEmpty2}
-\pastebutton{OneDimensionalArrayXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a : ARRAY1 INT := new(10,0)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0,0,0,0,0,0,0,0,0,0]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty2}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty2}{OneDimensionalArrayXmpPagePatch2}
-\pastebutton{OneDimensionalArrayXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a : ARRAY1 INT := new(10,0)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch3}
-\begin{paste}{OneDimensionalArrayXmpPageFull3}{OneDimensionalArrayXmpPageEmpty3}
-\pastebutton{OneDimensionalArrayXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..10 repeat a.i := i; a\bound{a1 }\free{a }}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,2,3,4,5,6,7,8,9,10]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty3}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty3}{OneDimensionalArrayXmpPagePatch3}
-\pastebutton{OneDimensionalArrayXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for i in 1..10 repeat a.i := i; a\bound{a1 }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch4}
-\begin{paste}{OneDimensionalArrayXmpPageFull4}{OneDimensionalArrayXmpPageEmpty4}
-\pastebutton{OneDimensionalArrayXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{map!(i +-> i ** 2,a); a\bound{a3 }\free{a2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,4,9,16,25,36,49,64,81,100]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty4}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty4}{OneDimensionalArrayXmpPagePatch4}
-\pastebutton{OneDimensionalArrayXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{map!(i +-> i ** 2,a); a\bound{a3 }\free{a2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch5}
-\begin{paste}{OneDimensionalArrayXmpPageFull5}{OneDimensionalArrayXmpPageEmpty5}
-\pastebutton{OneDimensionalArrayXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{reverse! a\bound{a4 }\free{a3 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [100,81,64,49,36,25,16,9,4,1]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty5}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty5}{OneDimensionalArrayXmpPagePatch5}
-\pastebutton{OneDimensionalArrayXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{reverse! a\bound{a4 }\free{a3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch6}
-\begin{paste}{OneDimensionalArrayXmpPageFull6}{OneDimensionalArrayXmpPageEmpty6}
-\pastebutton{OneDimensionalArrayXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{swap!(a,4,5); a\bound{a5 }\free{a4 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [100,81,64,36,49,25,16,9,4,1]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty6}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty6}{OneDimensionalArrayXmpPagePatch6}
-\pastebutton{OneDimensionalArrayXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{swap!(a,4,5); a\bound{a5 }\free{a4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch7}
-\begin{paste}{OneDimensionalArrayXmpPageFull7}{OneDimensionalArrayXmpPageEmpty7}
-\pastebutton{OneDimensionalArrayXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{sort! a\bound{a6 }\free{a5 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1,4,9,16,25,36,49,64,81,100]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty7}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty7}{OneDimensionalArrayXmpPagePatch7}
-\pastebutton{OneDimensionalArrayXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{sort! a\bound{a6 }\free{a5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch8}
-\begin{paste}{OneDimensionalArrayXmpPageFull8}{OneDimensionalArrayXmpPageEmpty8}
-\pastebutton{OneDimensionalArrayXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{b := a(6..10)\bound{b }\free{a6 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [36,49,64,81,100]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty8}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty8}{OneDimensionalArrayXmpPagePatch8}
-\pastebutton{OneDimensionalArrayXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{b := a(6..10)\bound{b }\free{a6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPagePatch9}
-\begin{paste}{OneDimensionalArrayXmpPageFull9}{OneDimensionalArrayXmpPageEmpty9}
-\pastebutton{OneDimensionalArrayXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{copyInto!(a,b,1)\free{b }}
-\indentrel{3}\begin{verbatim}
-   (9)  [36,49,64,81,100,36,49,64,81,100]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneDimensionalArrayXmpPageEmpty9}
-\begin{paste}{OneDimensionalArrayXmpPageEmpty9}{OneDimensionalArrayXmpPagePatch9}
-\pastebutton{OneDimensionalArrayXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{copyInto!(a,b,1)\free{b }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/array2.pht b/books/pages/array2.pht
deleted file mode 100644
index bc797ee..0000000
--- a/books/pages/array2.pht
+++ /dev/null
@@ -1,384 +0,0 @@
-\begin{patch}{TwoDimensionalArrayXmpPagePatch1}
-\begin{paste}{TwoDimensionalArrayXmpPageFull1}{TwoDimensionalArrayXmpPageEmpty1}
-\pastebutton{TwoDimensionalArrayXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{arr : ARRAY2 INT := new(5,4,0)\bound{arr }}
-\indentrel{3}\begin{verbatim}
-        Ú0  0  0  0¿
-        ³          ³
-        ³0  0  0  0³
-        ³          ³
-   (1)  ³0  0  0  0³
-        ³          ³
-        ³0  0  0  0³
-        ³          ³
-        À0  0  0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty1}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty1}{TwoDimensionalArrayXmpPagePatch1}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{arr : ARRAY2 INT := new(5,4,0)\bound{arr }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch2}
-\begin{paste}{TwoDimensionalArrayXmpPageFull2}{TwoDimensionalArrayXmpPageEmpty2}
-\pastebutton{TwoDimensionalArrayXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{setelt(arr,1,1,17)\free{arr }\bound{arr1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  17
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty2}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty2}{TwoDimensionalArrayXmpPagePatch2}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{setelt(arr,1,1,17)\free{arr }\bound{arr1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch3}
-\begin{paste}{TwoDimensionalArrayXmpPageFull3}{TwoDimensionalArrayXmpPageEmpty3}
-\pastebutton{TwoDimensionalArrayXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{arr\free{arr1 }}
-\indentrel{3}\begin{verbatim}
-        Ú17  0  0  0¿
-        ³           ³
-        ³0   0  0  0³
-        ³           ³
-   (3)  ³0   0  0  0³
-        ³           ³
-        ³0   0  0  0³
-        ³           ³
-        À0   0  0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty3}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty3}{TwoDimensionalArrayXmpPagePatch3}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{arr\free{arr1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch4}
-\begin{paste}{TwoDimensionalArrayXmpPageFull4}{TwoDimensionalArrayXmpPageEmpty4}
-\pastebutton{TwoDimensionalArrayXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{elt(arr,1,1)\free{arr1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  17
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty4}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty4}{TwoDimensionalArrayXmpPagePatch4}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{elt(arr,1,1)\free{arr1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch5}
-\begin{paste}{TwoDimensionalArrayXmpPageFull5}{TwoDimensionalArrayXmpPageEmpty5}
-\pastebutton{TwoDimensionalArrayXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{arr(3,2) := 15\free{arr1 }\bound{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  15
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty5}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty5}{TwoDimensionalArrayXmpPagePatch5}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{arr(3,2) := 15\free{arr1 }\bound{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch6}
-\begin{paste}{TwoDimensionalArrayXmpPageFull6}{TwoDimensionalArrayXmpPageEmpty6}
-\pastebutton{TwoDimensionalArrayXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{arr(3,2)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  15
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty6}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty6}{TwoDimensionalArrayXmpPagePatch6}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{arr(3,2)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch7}
-\begin{paste}{TwoDimensionalArrayXmpPageFull7}{TwoDimensionalArrayXmpPageEmpty7}
-\pastebutton{TwoDimensionalArrayXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{row(arr,1)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [17,0,0,0]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty7}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty7}{TwoDimensionalArrayXmpPagePatch7}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{row(arr,1)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch8}
-\begin{paste}{TwoDimensionalArrayXmpPageFull8}{TwoDimensionalArrayXmpPageEmpty8}
-\pastebutton{TwoDimensionalArrayXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{column(arr,1)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [17,0,0,0,0]
-                      Type: OneDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty8}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty8}{TwoDimensionalArrayXmpPagePatch8}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{column(arr,1)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch9}
-\begin{paste}{TwoDimensionalArrayXmpPageFull9}{TwoDimensionalArrayXmpPageEmpty9}
-\pastebutton{TwoDimensionalArrayXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{nrows(arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (9)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty9}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty9}{TwoDimensionalArrayXmpPagePatch9}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{nrows(arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch10}
-\begin{paste}{TwoDimensionalArrayXmpPageFull10}{TwoDimensionalArrayXmpPageEmpty10}
-\pastebutton{TwoDimensionalArrayXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{ncols(arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (10)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty10}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty10}{TwoDimensionalArrayXmpPagePatch10}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{ncols(arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch11}
-\begin{paste}{TwoDimensionalArrayXmpPageFull11}{TwoDimensionalArrayXmpPageEmpty11}
-\pastebutton{TwoDimensionalArrayXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{map(-,arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-         Ú- 17   0    0  0¿
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-   (11)  ³ 0    - 15  0  0³
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-         À 0     0    0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty11}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty11}{TwoDimensionalArrayXmpPagePatch11}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{map(-,arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch12}
-\begin{paste}{TwoDimensionalArrayXmpPageFull12}{TwoDimensionalArrayXmpPageEmpty12}
-\pastebutton{TwoDimensionalArrayXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{map((x +-> x + x),arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-         Ú34  0   0  0¿
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-   (12)  ³0   30  0  0³
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-         À0   0   0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty12}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty12}{TwoDimensionalArrayXmpPagePatch12}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{map((x +-> x + x),arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch13}
-\begin{paste}{TwoDimensionalArrayXmpPageFull13}{TwoDimensionalArrayXmpPageEmpty13}
-\pastebutton{TwoDimensionalArrayXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{arrc := copy(arr)\bound{arrc }\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-         Ú17  0   0  0¿
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-   (13)  ³0   15  0  0³
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-         À0   0   0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty13}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty13}{TwoDimensionalArrayXmpPagePatch13}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{arrc := copy(arr)\bound{arrc }\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch14}
-\begin{paste}{TwoDimensionalArrayXmpPageFull14}{TwoDimensionalArrayXmpPageEmpty14}
-\pastebutton{TwoDimensionalArrayXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{map!(-,arrc)\free{arrc }}
-\indentrel{3}\begin{verbatim}
-         Ú- 17   0    0  0¿
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-   (14)  ³ 0    - 15  0  0³
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-         À 0     0    0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty14}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty14}{TwoDimensionalArrayXmpPagePatch14}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{map!(-,arrc)\free{arrc }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch15}
-\begin{paste}{TwoDimensionalArrayXmpPageFull15}{TwoDimensionalArrayXmpPageEmpty15}
-\pastebutton{TwoDimensionalArrayXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{arrc\free{arrc }}
-\indentrel{3}\begin{verbatim}
-         Ú- 17   0    0  0¿
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-   (15)  ³ 0    - 15  0  0³
-         ³                ³
-         ³ 0     0    0  0³
-         ³                ³
-         À 0     0    0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty15}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty15}{TwoDimensionalArrayXmpPagePatch15}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{arrc\free{arrc }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch16}
-\begin{paste}{TwoDimensionalArrayXmpPageFull16}{TwoDimensionalArrayXmpPageEmpty16}
-\pastebutton{TwoDimensionalArrayXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{arr\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-         Ú17  0   0  0¿
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-   (16)  ³0   15  0  0³
-         ³            ³
-         ³0   0   0  0³
-         ³            ³
-         À0   0   0  0Ù
-                      Type: TwoDimensionalArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty16}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty16}{TwoDimensionalArrayXmpPagePatch16}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{arr\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch17}
-\begin{paste}{TwoDimensionalArrayXmpPageFull17}{TwoDimensionalArrayXmpPageEmpty17}
-\pastebutton{TwoDimensionalArrayXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{member?(17,arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (17)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty17}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty17}{TwoDimensionalArrayXmpPagePatch17}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{member?(17,arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch18}
-\begin{paste}{TwoDimensionalArrayXmpPageFull18}{TwoDimensionalArrayXmpPageEmpty18}
-\pastebutton{TwoDimensionalArrayXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{member?(10317,arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (18)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty18}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty18}{TwoDimensionalArrayXmpPagePatch18}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{member?(10317,arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch19}
-\begin{paste}{TwoDimensionalArrayXmpPageFull19}{TwoDimensionalArrayXmpPageEmpty19}
-\pastebutton{TwoDimensionalArrayXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{count(17,arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (19)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty19}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty19}{TwoDimensionalArrayXmpPagePatch19}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{count(17,arr)\free{arr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPagePatch20}
-\begin{paste}{TwoDimensionalArrayXmpPageFull20}{TwoDimensionalArrayXmpPageEmpty20}
-\pastebutton{TwoDimensionalArrayXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{count(0,arr)\free{arr2 }}
-\indentrel{3}\begin{verbatim}
-   (20)  18
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoDimensionalArrayXmpPageEmpty20}
-\begin{paste}{TwoDimensionalArrayXmpPageEmpty20}{TwoDimensionalArrayXmpPagePatch20}
-\pastebutton{TwoDimensionalArrayXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{count(0,arr)\free{arr2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/bbtree.pht b/books/pages/bbtree.pht
deleted file mode 100644
index 2effaf8..0000000
--- a/books/pages/bbtree.pht
+++ /dev/null
@@ -1,160 +0,0 @@
-\begin{patch}{BalancedBinaryTreeXmpPagePatch1}
-\begin{paste}{BalancedBinaryTreeXmpPageFull1}{BalancedBinaryTreeXmpPageEmpty1}
-\pastebutton{BalancedBinaryTreeXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{lm := [3,5,7,11]\bound{lm }}
-\indentrel{3}\begin{verbatim}
-   (1)  [3,5,7,11]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty1}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty1}{BalancedBinaryTreeXmpPagePatch1}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{lm := [3,5,7,11]\bound{lm }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch2}
-\begin{paste}{BalancedBinaryTreeXmpPageFull2}{BalancedBinaryTreeXmpPageEmpty2}
-\pastebutton{BalancedBinaryTreeXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{modTree(12,lm)\free{lm }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0,2,5,1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty2}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty2}{BalancedBinaryTreeXmpPagePatch2}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{modTree(12,lm)\free{lm }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch3}
-\begin{paste}{BalancedBinaryTreeXmpPageFull3}{BalancedBinaryTreeXmpPageEmpty3}
-\pastebutton{BalancedBinaryTreeXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{t := balancedBinaryTree(\#lm, 0)\bound{t }\free{lm }}
-\indentrel{3}\begin{verbatim}
-   (3)  [[0,0,0],0,[0,0,0]]
-            Type: BalancedBinaryTree NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty3}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty3}{BalancedBinaryTreeXmpPagePatch3}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{t := balancedBinaryTree(\#lm, 0)\bound{t }\free{lm }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch4}
-\begin{paste}{BalancedBinaryTreeXmpPageFull4}{BalancedBinaryTreeXmpPageEmpty4}
-\pastebutton{BalancedBinaryTreeXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{setleaves!(t,lm)\bound{t1 }\free{t }}
-\indentrel{3}\begin{verbatim}
-   (4)  [[3,0,5],0,[7,0,11]]
-            Type: BalancedBinaryTree NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty4}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty4}{BalancedBinaryTreeXmpPagePatch4}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{setleaves!(t,lm)\bound{t1 }\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch5}
-\begin{paste}{BalancedBinaryTreeXmpPageFull5}{BalancedBinaryTreeXmpPageEmpty5}
-\pastebutton{BalancedBinaryTreeXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{mapUp!(t,_*)\bound{t2 }\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  1155
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty5}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty5}{BalancedBinaryTreeXmpPagePatch5}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{mapUp!(t,_*)\bound{t2 }\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch6}
-\begin{paste}{BalancedBinaryTreeXmpPageFull6}{BalancedBinaryTreeXmpPageEmpty6}
-\pastebutton{BalancedBinaryTreeXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{t\bound{t3 }\free{t2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [[3,15,5],1155,[7,77,11]]
-            Type: BalancedBinaryTree NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty6}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty6}{BalancedBinaryTreeXmpPagePatch6}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{t\bound{t3 }\free{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch7}
-\begin{paste}{BalancedBinaryTreeXmpPageFull7}{BalancedBinaryTreeXmpPageEmpty7}
-\pastebutton{BalancedBinaryTreeXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{mapDown!(t,12,_rem)\bound{t4 }\free{t3 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [[0,12,2],12,[5,12,1]]
-            Type: BalancedBinaryTree NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty7}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty7}{BalancedBinaryTreeXmpPagePatch7}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{mapDown!(t,12,_rem)\bound{t4 }\free{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch8}
-\begin{paste}{BalancedBinaryTreeXmpPageFull8}{BalancedBinaryTreeXmpPageEmpty8}
-\pastebutton{BalancedBinaryTreeXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{leaves \%\bound{t5 }\free{t4 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0,2,5,1]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty8}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty8}{BalancedBinaryTreeXmpPagePatch8}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{leaves \%\bound{t5 }\free{t4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch9}
-\begin{paste}{BalancedBinaryTreeXmpPageFull9}{BalancedBinaryTreeXmpPageEmpty9}
-\pastebutton{BalancedBinaryTreeXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{squares := [x**2 rem m for x in \% for m in lm]\bound{t6 }\free{t5 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [0,4,4,1]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty9}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty9}{BalancedBinaryTreeXmpPagePatch9}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{squares := [x**2 rem m for x in \% for m in lm]\bound{t6 }\free{t5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPagePatch10}
-\begin{paste}{BalancedBinaryTreeXmpPageFull10}{BalancedBinaryTreeXmpPageEmpty10}
-\pastebutton{BalancedBinaryTreeXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{chineseRemainder(\%,lm)\free{t6 }}
-\indentrel{3}\begin{verbatim}
-   (10)  144
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BalancedBinaryTreeXmpPageEmpty10}
-\begin{paste}{BalancedBinaryTreeXmpPageEmpty10}{BalancedBinaryTreeXmpPagePatch10}
-\pastebutton{BalancedBinaryTreeXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{chineseRemainder(\%,lm)\free{t6 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/binary.pht b/books/pages/binary.pht
deleted file mode 100644
index 8590e7a..0000000
--- a/books/pages/binary.pht
+++ /dev/null
@@ -1,140 +0,0 @@
-\begin{patch}{BinaryExpansionXmpPagePatch1}
-\begin{paste}{BinaryExpansionXmpPageFull1}{BinaryExpansionXmpPageEmpty1}
-\pastebutton{BinaryExpansionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{r := binary(22/7)\bound{r }}
-\indentrel{3}\begin{verbatim}
-           ___
-   (1)  11.001
-                                  Type: BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty1}
-\begin{paste}{BinaryExpansionXmpPageEmpty1}{BinaryExpansionXmpPagePatch1}
-\pastebutton{BinaryExpansionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{r := binary(22/7)\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch2}
-\begin{paste}{BinaryExpansionXmpPageFull2}{BinaryExpansionXmpPageEmpty2}
-\pastebutton{BinaryExpansionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{r + binary(6/7)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (2)  100
-                                  Type: BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty2}
-\begin{paste}{BinaryExpansionXmpPageEmpty2}{BinaryExpansionXmpPagePatch2}
-\pastebutton{BinaryExpansionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{r + binary(6/7)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch3}
-\begin{paste}{BinaryExpansionXmpPageFull3}{BinaryExpansionXmpPageEmpty3}
-\pastebutton{BinaryExpansionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[binary(1/i) for i in 102..106]}
-\indentrel{3}\begin{verbatim}
-   (3)
-       ________
-   [0.000000101,
-      ___________________________________________________
-    0.000000100111110001000101100101111001110010010101001,
-         ____________    ____________
-    0.000000100111011, 0.000000100111,
-
-     0.0
-       OVERBAR
-          00000100110101001000011100111110110010101101111
-            00011
-     ]
-                             Type: List BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty3}
-\begin{paste}{BinaryExpansionXmpPageEmpty3}{BinaryExpansionXmpPagePatch3}
-\pastebutton{BinaryExpansionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[binary(1/i) for i in 102..106]}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch4}
-\begin{paste}{BinaryExpansionXmpPageFull4}{BinaryExpansionXmpPageEmpty4}
-\pastebutton{BinaryExpansionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{binary(1/1007)}
-\indentrel{3}\begin{verbatim}
-   (4)
-   0.
-     OVERBAR
-        0000000001000001000101001001011110000011111100001
-          01111110010110001111101000100111001001100110001
-          10010010101011110110100110000000011000011001111
-          01110001101000101111010010001111011000010101110
-          11100111010101110011001010010111000000011100011
-          11001000000100100100110111001010100111010001101
-          11011010111000100100000110010110110000001011001
-          01111100010100000101010101101011000001101101110
-          10010101111111010111010100110010000101001101100
-          0100110001000100001000011000111010011110001
-                                  Type: BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty4}
-\begin{paste}{BinaryExpansionXmpPageEmpty4}{BinaryExpansionXmpPagePatch4}
-\pastebutton{BinaryExpansionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{binary(1/1007)}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch5}
-\begin{paste}{BinaryExpansionXmpPageFull5}{BinaryExpansionXmpPageEmpty5}
-\pastebutton{BinaryExpansionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)\bound{p }}
-\indentrel{3}\begin{verbatim}
-             2     __      ______
-   (5)  0.01x  + 0.10x + 0.011100
-                       Type: Polynomial BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty5}
-\begin{paste}{BinaryExpansionXmpPageEmpty5}{BinaryExpansionXmpPagePatch5}
-\pastebutton{BinaryExpansionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch6}
-\begin{paste}{BinaryExpansionXmpPageFull6}{BinaryExpansionXmpPageEmpty6}
-\pastebutton{BinaryExpansionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
-\indentrel{3}\begin{verbatim}
-                 __
-   (6)  0.1x + 0.10
-                       Type: Polynomial BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty6}
-\begin{paste}{BinaryExpansionXmpPageEmpty6}{BinaryExpansionXmpPagePatch6}
-\pastebutton{BinaryExpansionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPagePatch7}
-\begin{paste}{BinaryExpansionXmpPageFull7}{BinaryExpansionXmpPageEmpty7}
-\pastebutton{BinaryExpansionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
-\indentrel{3}\begin{verbatim}
-              __
-   (7)  x + 1.01
-                       Type: Polynomial BinaryExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinaryExpansionXmpPageEmpty7}
-\begin{paste}{BinaryExpansionXmpPageEmpty7}{BinaryExpansionXmpPagePatch7}
-\pastebutton{BinaryExpansionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/bop.pht b/books/pages/bop.pht
deleted file mode 100644
index 6156e50..0000000
--- a/books/pages/bop.pht
+++ /dev/null
@@ -1,296 +0,0 @@
-\begin{patch}{BasicOperatorXmpPagePatch1}
-\begin{paste}{BasicOperatorXmpPageFull1}{BasicOperatorXmpPageEmpty1}
-\pastebutton{BasicOperatorXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (1)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty1}
-\begin{paste}{BasicOperatorXmpPageEmpty1}{BasicOperatorXmpPagePatch1}
-\pastebutton{BasicOperatorXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch2}
-\begin{paste}{BasicOperatorXmpPageFull2}{BasicOperatorXmpPageEmpty2}
-\pastebutton{BasicOperatorXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
-\indentrel{3}\begin{verbatim}
-         ,,       ,
-   (2)  y  (x) + y (x) + y(x)= 0
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty2}
-\begin{paste}{BasicOperatorXmpPageEmpty2}{BasicOperatorXmpPagePatch2}
-\pastebutton{BasicOperatorXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch3}
-\begin{paste}{BasicOperatorXmpPageFull3}{BasicOperatorXmpPageEmpty3}
-\pastebutton{BasicOperatorXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [particular= 0,
-                          x     x
-                  ÚÄ¿   - Ä   - Ä      ÚÄ¿
-                x\³3      2     2    x\³3
-    basis= [cos(ÄÄÄÄÄ)%e   ,%e   sin(ÄÄÄÄÄ)]]
-                  2                    2
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty3}
-\begin{paste}{BasicOperatorXmpPageEmpty3}{BasicOperatorXmpPagePatch3}
-\pastebutton{BasicOperatorXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch4}
-\begin{paste}{BasicOperatorXmpPageFull4}{BasicOperatorXmpPageEmpty4}
-\pastebutton{BasicOperatorXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{nary? y\free{y }}
-\indentrel{3}\begin{verbatim}
-   (4)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty4}
-\begin{paste}{BasicOperatorXmpPageEmpty4}{BasicOperatorXmpPagePatch4}
-\pastebutton{BasicOperatorXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{nary? y\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch5}
-\begin{paste}{BasicOperatorXmpPageFull5}{BasicOperatorXmpPageEmpty5}
-\pastebutton{BasicOperatorXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{unary? y\free{y }}
-\indentrel{3}\begin{verbatim}
-   (5)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty5}
-\begin{paste}{BasicOperatorXmpPageEmpty5}{BasicOperatorXmpPagePatch5}
-\pastebutton{BasicOperatorXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{unary? y\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch6}
-\begin{paste}{BasicOperatorXmpPageFull6}{BasicOperatorXmpPageEmpty6}
-\pastebutton{BasicOperatorXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{opOne := operator('opOne, 1)\bound{opOne }}
-\indentrel{3}\begin{verbatim}
-   (6)  opOne
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty6}
-\begin{paste}{BasicOperatorXmpPageEmpty6}{BasicOperatorXmpPagePatch6}
-\pastebutton{BasicOperatorXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{opOne := operator('opOne, 1)\bound{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch7}
-\begin{paste}{BasicOperatorXmpPageFull7}{BasicOperatorXmpPageEmpty7}
-\pastebutton{BasicOperatorXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{nary? opOne\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (7)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty7}
-\begin{paste}{BasicOperatorXmpPageEmpty7}{BasicOperatorXmpPagePatch7}
-\pastebutton{BasicOperatorXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{nary? opOne\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch8}
-\begin{paste}{BasicOperatorXmpPageFull8}{BasicOperatorXmpPageEmpty8}
-\pastebutton{BasicOperatorXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{unary? opOne\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (8)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty8}
-\begin{paste}{BasicOperatorXmpPageEmpty8}{BasicOperatorXmpPagePatch8}
-\pastebutton{BasicOperatorXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{unary? opOne\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch9}
-\begin{paste}{BasicOperatorXmpPageFull9}{BasicOperatorXmpPageEmpty9}
-\pastebutton{BasicOperatorXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{arity opOne\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (9)  1
-                    Type: Union(NonNegativeInteger,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty9}
-\begin{paste}{BasicOperatorXmpPageEmpty9}{BasicOperatorXmpPagePatch9}
-\pastebutton{BasicOperatorXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{arity opOne\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch10}
-\begin{paste}{BasicOperatorXmpPageFull10}{BasicOperatorXmpPageEmpty10}
-\pastebutton{BasicOperatorXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{name opOne\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (10)  opOne
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty10}
-\begin{paste}{BasicOperatorXmpPageEmpty10}{BasicOperatorXmpPagePatch10}
-\pastebutton{BasicOperatorXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{name opOne\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch11}
-\begin{paste}{BasicOperatorXmpPageFull11}{BasicOperatorXmpPageEmpty11}
-\pastebutton{BasicOperatorXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{is?(opOne, 'z2)\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (11)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty11}
-\begin{paste}{BasicOperatorXmpPageEmpty11}{BasicOperatorXmpPagePatch11}
-\pastebutton{BasicOperatorXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{is?(opOne, 'z2)\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch12}
-\begin{paste}{BasicOperatorXmpPageFull12}{BasicOperatorXmpPageEmpty12}
-\pastebutton{BasicOperatorXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{is?(opOne, "opOne")\free{opOne }}
-\indentrel{3}\begin{verbatim}
-   (12)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty12}
-\begin{paste}{BasicOperatorXmpPageEmpty12}{BasicOperatorXmpPagePatch12}
-\pastebutton{BasicOperatorXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{is?(opOne, "opOne")\free{opOne }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch13}
-\begin{paste}{BasicOperatorXmpPageFull13}{BasicOperatorXmpPageEmpty13}
-\pastebutton{BasicOperatorXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{properties y\free{y }}
-\indentrel{3}\begin{verbatim}
-   (13)  table()
-                     Type: AssociationList(String,None)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty13}
-\begin{paste}{BasicOperatorXmpPageEmpty13}{BasicOperatorXmpPagePatch13}
-\pastebutton{BasicOperatorXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{properties y\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch14}
-\begin{paste}{BasicOperatorXmpPageFull14}{BasicOperatorXmpPageEmpty14}
-\pastebutton{BasicOperatorXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{setProperty(y, "use", "unknown function" :: None )\free{y }\bound{spy }}
-\indentrel{3}\begin{verbatim}
-   (14)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty14}
-\begin{paste}{BasicOperatorXmpPageEmpty14}{BasicOperatorXmpPagePatch14}
-\pastebutton{BasicOperatorXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{setProperty(y, "use", "unknown function" :: None )\free{y }\bound{spy }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch15}
-\begin{paste}{BasicOperatorXmpPageFull15}{BasicOperatorXmpPageEmpty15}
-\pastebutton{BasicOperatorXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{properties y\free{y spy }}
-\indentrel{3}\begin{verbatim}
-   (15)  table("use"= NONE)
-                     Type: AssociationList(String,None)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty15}
-\begin{paste}{BasicOperatorXmpPageEmpty15}{BasicOperatorXmpPagePatch15}
-\pastebutton{BasicOperatorXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{properties y\free{y spy }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch16}
-\begin{paste}{BasicOperatorXmpPageFull16}{BasicOperatorXmpPageEmpty16}
-\pastebutton{BasicOperatorXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{property(y, "use") :: None pretend String\free{y spy }}
-\indentrel{3}\begin{verbatim}
-   (16)  "unknown function"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty16}
-\begin{paste}{BasicOperatorXmpPageEmpty16}{BasicOperatorXmpPagePatch16}
-\pastebutton{BasicOperatorXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{property(y, "use") :: None pretend String\free{y spy }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch17}
-\begin{paste}{BasicOperatorXmpPageFull17}{BasicOperatorXmpPageEmpty17}
-\pastebutton{BasicOperatorXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{deleteProperty!(y, "use")\free{y spy }\bound{dpy }}
-\indentrel{3}\begin{verbatim}
-   (17)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty17}
-\begin{paste}{BasicOperatorXmpPageEmpty17}{BasicOperatorXmpPagePatch17}
-\pastebutton{BasicOperatorXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{deleteProperty!(y, "use")\free{y spy }\bound{dpy }}
-\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPagePatch18}
-\begin{paste}{BasicOperatorXmpPageFull18}{BasicOperatorXmpPageEmpty18}
-\pastebutton{BasicOperatorXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{properties y\free{dpy }}
-\indentrel{3}\begin{verbatim}
-   (18)  table()
-                     Type: AssociationList(String,None)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BasicOperatorXmpPageEmpty18}
-\begin{paste}{BasicOperatorXmpPageEmpty18}{BasicOperatorXmpPagePatch18}
-\pastebutton{BasicOperatorXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{properties y\free{dpy }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/bstree.pht b/books/pages/bstree.pht
deleted file mode 100644
index b18379f..0000000
--- a/books/pages/bstree.pht
+++ /dev/null
@@ -1,196 +0,0 @@
-\begin{patch}{BinarySearchTreeXmpPagePatch1}
-\begin{paste}{BinarySearchTreeXmpPageFull1}{BinarySearchTreeXmpPageEmpty1}
-\pastebutton{BinarySearchTreeXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{lv := [8,3,5,4,6,2,1,5,7]\bound{lv }}
-\indentrel{3}\begin{verbatim}
-   (1)  [8,3,5,4,6,2,1,5,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty1}
-\begin{paste}{BinarySearchTreeXmpPageEmpty1}{BinarySearchTreeXmpPagePatch1}
-\pastebutton{BinarySearchTreeXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{lv := [8,3,5,4,6,2,1,5,7]\bound{lv }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch2}
-\begin{paste}{BinarySearchTreeXmpPageFull2}{BinarySearchTreeXmpPageEmpty2}
-\pastebutton{BinarySearchTreeXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t := binarySearchTree lv\free{lv }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (2)  [[[1,2,.],3,[4,5,[5,6,7]]],8,.]
-                 Type: BinarySearchTree PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty2}
-\begin{paste}{BinarySearchTreeXmpPageEmpty2}{BinarySearchTreeXmpPagePatch2}
-\pastebutton{BinarySearchTreeXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t := binarySearchTree lv\free{lv }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch3}
-\begin{paste}{BinarySearchTreeXmpPageFull3}{BinarySearchTreeXmpPageEmpty3}
-\pastebutton{BinarySearchTreeXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{emptybst := empty()$BSTREE(INT)\bound{e }}
-\indentrel{3}\begin{verbatim}
-   (3)  []
-                         Type: BinarySearchTree Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty3}
-\begin{paste}{BinarySearchTreeXmpPageEmpty3}{BinarySearchTreeXmpPagePatch3}
-\pastebutton{BinarySearchTreeXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{emptybst := empty()$BSTREE(INT)\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch4}
-\begin{paste}{BinarySearchTreeXmpPageFull4}{BinarySearchTreeXmpPageEmpty4}
-\pastebutton{BinarySearchTreeXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{t1 := insert!(8,emptybst)\free{e }\bound{t1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  8
-                         Type: BinarySearchTree Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty4}
-\begin{paste}{BinarySearchTreeXmpPageEmpty4}{BinarySearchTreeXmpPagePatch4}
-\pastebutton{BinarySearchTreeXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{t1 := insert!(8,emptybst)\free{e }\bound{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch5}
-\begin{paste}{BinarySearchTreeXmpPageFull5}{BinarySearchTreeXmpPageEmpty5}
-\pastebutton{BinarySearchTreeXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{insert!(3,t1)\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [3,8,.]
-                         Type: BinarySearchTree Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty5}
-\begin{paste}{BinarySearchTreeXmpPageEmpty5}{BinarySearchTreeXmpPagePatch5}
-\pastebutton{BinarySearchTreeXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{insert!(3,t1)\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch6}
-\begin{paste}{BinarySearchTreeXmpPageFull6}{BinarySearchTreeXmpPageEmpty6}
-\pastebutton{BinarySearchTreeXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{leaves t\free{t }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,4,5,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty6}
-\begin{paste}{BinarySearchTreeXmpPageEmpty6}{BinarySearchTreeXmpPagePatch6}
-\pastebutton{BinarySearchTreeXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{leaves t\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch7}
-\begin{paste}{BinarySearchTreeXmpPageFull7}{BinarySearchTreeXmpPageEmpty7}
-\pastebutton{BinarySearchTreeXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{split(3,t)\free{t }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [less= [1,2,.],greater= [[.,3,[4,5,[5,6,7]]],8,.]]
-Type: Record(less: BinarySearchTree PositiveInteger,greater: BinarySearchTree PositiveInteger)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty7}
-\begin{paste}{BinarySearchTreeXmpPageEmpty7}{BinarySearchTreeXmpPagePatch7}
-\pastebutton{BinarySearchTreeXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{split(3,t)\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch8}
-\begin{paste}{BinarySearchTreeXmpPageFull8}{BinarySearchTreeXmpPageEmpty8}
-\pastebutton{BinarySearchTreeXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{insertRoot: (INT,BSTREE INT) -> BSTREE INT\bound{x }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty8}
-\begin{paste}{BinarySearchTreeXmpPageEmpty8}{BinarySearchTreeXmpPagePatch8}
-\pastebutton{BinarySearchTreeXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{insertRoot: (INT,BSTREE INT) -> BSTREE INT\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch9}
-\begin{paste}{BinarySearchTreeXmpPageFull9}{BinarySearchTreeXmpPageEmpty9}
-\pastebutton{BinarySearchTreeXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{insertRoot(x, t) ==
-    a := split(x, t)
-    node(a.less, x, a.greater)
-\bound{x1 }\free{x }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty9}
-\begin{paste}{BinarySearchTreeXmpPageEmpty9}{BinarySearchTreeXmpPagePatch9}
-\pastebutton{BinarySearchTreeXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{insertRoot(x, t) ==
-    a := split(x, t)
-    node(a.less, x, a.greater)
-\bound{x1 }\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch10}
-\begin{paste}{BinarySearchTreeXmpPageFull10}{BinarySearchTreeXmpPageEmpty10}
-\pastebutton{BinarySearchTreeXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{buildFromRoot ls == reduce(insertRoot,ls,emptybst)\bound{x2 }\free{x1 e }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty10}
-\begin{paste}{BinarySearchTreeXmpPageEmpty10}{BinarySearchTreeXmpPagePatch10}
-\pastebutton{BinarySearchTreeXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{buildFromRoot ls == reduce(insertRoot,ls,emptybst)\bound{x2 }\free{x1 e }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch11}
-\begin{paste}{BinarySearchTreeXmpPageFull11}{BinarySearchTreeXmpPageEmpty11}
-\pastebutton{BinarySearchTreeXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{rt := buildFromRoot reverse lv\bound{rt }\free{lv x2 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [[[1,2,.],3,[4,5,[5,6,7]]],8,.]
-                         Type: BinarySearchTree Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty11}
-\begin{paste}{BinarySearchTreeXmpPageEmpty11}{BinarySearchTreeXmpPagePatch11}
-\pastebutton{BinarySearchTreeXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{rt := buildFromRoot reverse lv\bound{rt }\free{lv x2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPagePatch12}
-\begin{paste}{BinarySearchTreeXmpPageFull12}{BinarySearchTreeXmpPageEmpty12}
-\pastebutton{BinarySearchTreeXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{(t = rt)@Boolean\free{rt t }}
-\indentrel{3}\begin{verbatim}
-   (12)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{BinarySearchTreeXmpPageEmpty12}
-\begin{paste}{BinarySearchTreeXmpPageEmpty12}{BinarySearchTreeXmpPagePatch12}
-\pastebutton{BinarySearchTreeXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{(t = rt)@Boolean\free{rt t }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/card.pht b/books/pages/card.pht
deleted file mode 100644
index 887e029..0000000
--- a/books/pages/card.pht
+++ /dev/null
@@ -1,321 +0,0 @@
-\begin{patch}{CardinalNumberXmpPagePatch1}
-\begin{paste}{CardinalNumberXmpPageFull1}{CardinalNumberXmpPageEmpty1}
-\pastebutton{CardinalNumberXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{c0 := 0 :: CardinalNumber\bound{c0 }}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty1}
-\begin{paste}{CardinalNumberXmpPageEmpty1}{CardinalNumberXmpPagePatch1}
-\pastebutton{CardinalNumberXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{c0 := 0 :: CardinalNumber\bound{c0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch2}
-\begin{paste}{CardinalNumberXmpPageFull2}{CardinalNumberXmpPageEmpty2}
-\pastebutton{CardinalNumberXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{c1 := 1 :: CardinalNumber\bound{c1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  1
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty2}
-\begin{paste}{CardinalNumberXmpPageEmpty2}{CardinalNumberXmpPagePatch2}
-\pastebutton{CardinalNumberXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{c1 := 1 :: CardinalNumber\bound{c1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch3}
-\begin{paste}{CardinalNumberXmpPageFull3}{CardinalNumberXmpPageEmpty3}
-\pastebutton{CardinalNumberXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{c2 := 2 :: CardinalNumber\bound{c2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  2
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty3}
-\begin{paste}{CardinalNumberXmpPageEmpty3}{CardinalNumberXmpPagePatch3}
-\pastebutton{CardinalNumberXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{c2 := 2 :: CardinalNumber\bound{c2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch4}
-\begin{paste}{CardinalNumberXmpPageFull4}{CardinalNumberXmpPageEmpty4}
-\pastebutton{CardinalNumberXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{c3 := 3 :: CardinalNumber\bound{c3 }}
-\indentrel{3}\begin{verbatim}
-   (4)  3
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty4}
-\begin{paste}{CardinalNumberXmpPageEmpty4}{CardinalNumberXmpPagePatch4}
-\pastebutton{CardinalNumberXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{c3 := 3 :: CardinalNumber\bound{c3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch5}
-\begin{paste}{CardinalNumberXmpPageFull5}{CardinalNumberXmpPageEmpty5}
-\pastebutton{CardinalNumberXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{A0 := Aleph 0\bound{A0 }}
-\indentrel{3}\begin{verbatim}
-   (5)  Aleph(0)
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty5}
-\begin{paste}{CardinalNumberXmpPageEmpty5}{CardinalNumberXmpPagePatch5}
-\pastebutton{CardinalNumberXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{A0 := Aleph 0\bound{A0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch6}
-\begin{paste}{CardinalNumberXmpPageFull6}{CardinalNumberXmpPageEmpty6}
-\pastebutton{CardinalNumberXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{A1 := Aleph 1\bound{A1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  Aleph(1)
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty6}
-\begin{paste}{CardinalNumberXmpPageEmpty6}{CardinalNumberXmpPagePatch6}
-\pastebutton{CardinalNumberXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{A1 := Aleph 1\bound{A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch7}
-\begin{paste}{CardinalNumberXmpPageFull7}{CardinalNumberXmpPageEmpty7}
-\pastebutton{CardinalNumberXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{finite? c2\free{c2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty7}
-\begin{paste}{CardinalNumberXmpPageEmpty7}{CardinalNumberXmpPagePatch7}
-\pastebutton{CardinalNumberXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{finite? c2\free{c2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch8}
-\begin{paste}{CardinalNumberXmpPageFull8}{CardinalNumberXmpPageEmpty8}
-\pastebutton{CardinalNumberXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{finite? A0\free{A0 }}
-\indentrel{3}\begin{verbatim}
-   (8)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty8}
-\begin{paste}{CardinalNumberXmpPageEmpty8}{CardinalNumberXmpPagePatch8}
-\pastebutton{CardinalNumberXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{finite? A0\free{A0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch9}
-\begin{paste}{CardinalNumberXmpPageFull9}{CardinalNumberXmpPageEmpty9}
-\pastebutton{CardinalNumberXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{countable? c2\free{c2 }}
-\indentrel{3}\begin{verbatim}
-   (9)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty9}
-\begin{paste}{CardinalNumberXmpPageEmpty9}{CardinalNumberXmpPagePatch9}
-\pastebutton{CardinalNumberXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{countable? c2\free{c2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch10}
-\begin{paste}{CardinalNumberXmpPageFull10}{CardinalNumberXmpPageEmpty10}
-\pastebutton{CardinalNumberXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{countable? A0\free{A0 }}
-\indentrel{3}\begin{verbatim}
-   (10)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty10}
-\begin{paste}{CardinalNumberXmpPageEmpty10}{CardinalNumberXmpPagePatch10}
-\pastebutton{CardinalNumberXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{countable? A0\free{A0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch11}
-\begin{paste}{CardinalNumberXmpPageFull11}{CardinalNumberXmpPageEmpty11}
-\pastebutton{CardinalNumberXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{countable? A1\free{A1 }}
-\indentrel{3}\begin{verbatim}
-   (11)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty11}
-\begin{paste}{CardinalNumberXmpPageEmpty11}{CardinalNumberXmpPagePatch11}
-\pastebutton{CardinalNumberXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{countable? A1\free{A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch12}
-\begin{paste}{CardinalNumberXmpPageFull12}{CardinalNumberXmpPageEmpty12}
-\pastebutton{CardinalNumberXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{[c2 + c2, c2 + A1]\free{c2 A1 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [4,Aleph(1)]
-                              Type: List CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty12}
-\begin{paste}{CardinalNumberXmpPageEmpty12}{CardinalNumberXmpPagePatch12}
-\pastebutton{CardinalNumberXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{[c2 + c2, c2 + A1]\free{c2 A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch13}
-\begin{paste}{CardinalNumberXmpPageFull13}{CardinalNumberXmpPageEmpty13}
-\pastebutton{CardinalNumberXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]\free{c0 c1 c2 A0 A1 }}
-\indentrel{3}\begin{verbatim}
-   (13)  [0,2,4,0,Aleph(1),Aleph(1),Aleph(1)]
-                              Type: List CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty13}
-\begin{paste}{CardinalNumberXmpPageEmpty13}{CardinalNumberXmpPagePatch13}
-\pastebutton{CardinalNumberXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{[c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]\free{c0 c1 c2 A0 A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch14}
-\begin{paste}{CardinalNumberXmpPageFull14}{CardinalNumberXmpPageEmpty14}
-\pastebutton{CardinalNumberXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]\free{c0 c1 c2 A1 }}
-\indentrel{3}\begin{verbatim}
-   (14)  [1,2,4,1,Aleph(1),Aleph(1)]
-                              Type: List CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty14}
-\begin{paste}{CardinalNumberXmpPageEmpty14}{CardinalNumberXmpPagePatch14}
-\pastebutton{CardinalNumberXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{[c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]\free{c0 c1 c2 A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch15}
-\begin{paste}{CardinalNumberXmpPageFull15}{CardinalNumberXmpPageEmpty15}
-\pastebutton{CardinalNumberXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]\free{c1 c2 c3 A0 A1 }}
-\indentrel{3}\begin{verbatim}
-   (15)  [1,0,"failed",Aleph(1),Aleph(1),"failed"]
-              Type: List Union(CardinalNumber,"failed")
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty15}
-\begin{paste}{CardinalNumberXmpPageEmpty15}{CardinalNumberXmpPagePatch15}
-\pastebutton{CardinalNumberXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{[c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]\free{c1 c2 c3 A0 A1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch16}
-\begin{paste}{CardinalNumberXmpPageFull16}{CardinalNumberXmpPageEmpty16}
-\pastebutton{CardinalNumberXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{generalizedContinuumHypothesisAssumed true\bound{GCH }}
-\indentrel{3}\begin{verbatim}
-   (16)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty16}
-\begin{paste}{CardinalNumberXmpPageEmpty16}{CardinalNumberXmpPagePatch16}
-\pastebutton{CardinalNumberXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{generalizedContinuumHypothesisAssumed true\bound{GCH }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch17}
-\begin{paste}{CardinalNumberXmpPageFull17}{CardinalNumberXmpPageEmpty17}
-\pastebutton{CardinalNumberXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]\free{c0 c1 c2 A0 A1 GCH }}
-\indentrel{3}\begin{verbatim}
-   (17)
-   [0,1,Aleph(1),Aleph(1),Aleph(2),Aleph(1),Aleph(2)]
-                              Type: List CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty17}
-\begin{paste}{CardinalNumberXmpPageEmpty17}{CardinalNumberXmpPagePatch17}
-\pastebutton{CardinalNumberXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{[c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]\free{c0 c1 c2 A0 A1 GCH }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch18}
-\begin{paste}{CardinalNumberXmpPageFull18}{CardinalNumberXmpPageEmpty18}
-\pastebutton{CardinalNumberXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{a := Aleph 0\free{GCH }\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (18)  Aleph(0)
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty18}
-\begin{paste}{CardinalNumberXmpPageEmpty18}{CardinalNumberXmpPagePatch18}
-\pastebutton{CardinalNumberXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{a := Aleph 0\free{GCH }\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch19}
-\begin{paste}{CardinalNumberXmpPageFull19}{CardinalNumberXmpPageEmpty19}
-\pastebutton{CardinalNumberXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{c := 2**a\free{a }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (19)  Aleph(1)
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty19}
-\begin{paste}{CardinalNumberXmpPageEmpty19}{CardinalNumberXmpPagePatch19}
-\pastebutton{CardinalNumberXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{c := 2**a\free{a }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPagePatch20}
-\begin{paste}{CardinalNumberXmpPageFull20}{CardinalNumberXmpPageEmpty20}
-\pastebutton{CardinalNumberXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{f := 2**c\free{c }\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (20)  Aleph(2)
-                                   Type: CardinalNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CardinalNumberXmpPageEmpty20}
-\begin{paste}{CardinalNumberXmpPageEmpty20}{CardinalNumberXmpPagePatch20}
-\pastebutton{CardinalNumberXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{f := 2**c\free{c }\bound{f }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/carten.pht b/books/pages/carten.pht
deleted file mode 100644
index ed63da8..0000000
--- a/books/pages/carten.pht
+++ /dev/null
@@ -1,846 +0,0 @@
-\begin{patch}{CartesianTensorXmpPagePatch1}
-\begin{paste}{CartesianTensorXmpPageFull1}{CartesianTensorXmpPageEmpty1}
-\pastebutton{CartesianTensorXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{CT := CARTEN(i0 := 1, 2, Integer)\bound{CT i0 }}
-\indentrel{3}\begin{verbatim}
-   (1)  CartesianTensor(1,2,Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty1}
-\begin{paste}{CartesianTensorXmpPageEmpty1}{CartesianTensorXmpPagePatch1}
-\pastebutton{CartesianTensorXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{CT := CARTEN(i0 := 1, 2, Integer)\bound{CT i0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch2}
-\begin{paste}{CartesianTensorXmpPageFull2}{CartesianTensorXmpPageEmpty2}
-\pastebutton{CartesianTensorXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t0: CT := 8\free{CT }\bound{t0 }}
-\indentrel{3}\begin{verbatim}
-   (2)  8
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty2}
-\begin{paste}{CartesianTensorXmpPageEmpty2}{CartesianTensorXmpPagePatch2}
-\pastebutton{CartesianTensorXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t0: CT := 8\free{CT }\bound{t0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch3}
-\begin{paste}{CartesianTensorXmpPageFull3}{CartesianTensorXmpPageEmpty3}
-\pastebutton{CartesianTensorXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{rank t0\free{t0 }}
-\indentrel{3}\begin{verbatim}
-   (3)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty3}
-\begin{paste}{CartesianTensorXmpPageEmpty3}{CartesianTensorXmpPagePatch3}
-\pastebutton{CartesianTensorXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{rank t0\free{t0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch4}
-\begin{paste}{CartesianTensorXmpPageFull4}{CartesianTensorXmpPageEmpty4}
-\pastebutton{CartesianTensorXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{v: DirectProduct(2, Integer) := directProduct [3,4]\bound{v }}
-\indentrel{3}\begin{verbatim}
-   (4)  [3,4]
-                         Type: DirectProduct(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty4}
-\begin{paste}{CartesianTensorXmpPageEmpty4}{CartesianTensorXmpPagePatch4}
-\pastebutton{CartesianTensorXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{v: DirectProduct(2, Integer) := directProduct [3,4]\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch5}
-\begin{paste}{CartesianTensorXmpPageFull5}{CartesianTensorXmpPageEmpty5}
-\pastebutton{CartesianTensorXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{Tv: CT := v\free{v CT }\bound{Tv }}
-\indentrel{3}\begin{verbatim}
-   (5)  [3,4]
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty5}
-\begin{paste}{CartesianTensorXmpPageEmpty5}{CartesianTensorXmpPagePatch5}
-\pastebutton{CartesianTensorXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{Tv: CT := v\free{v CT }\bound{Tv }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch6}
-\begin{paste}{CartesianTensorXmpPageFull6}{CartesianTensorXmpPageEmpty6}
-\pastebutton{CartesianTensorXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m: SquareMatrix(2, Integer) := matrix [[1,2],[4,5]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (6)  ³    ³
-        À4  5Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty6}
-\begin{paste}{CartesianTensorXmpPageEmpty6}{CartesianTensorXmpPagePatch6}
-\pastebutton{CartesianTensorXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m: SquareMatrix(2, Integer) := matrix [[1,2],[4,5]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch7}
-\begin{paste}{CartesianTensorXmpPageFull7}{CartesianTensorXmpPageEmpty7}
-\pastebutton{CartesianTensorXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{Tm: CT := m\bound{Tm }\free{CT m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (7)  ³    ³
-        À4  5Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty7}
-\begin{paste}{CartesianTensorXmpPageEmpty7}{CartesianTensorXmpPagePatch7}
-\pastebutton{CartesianTensorXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{Tm: CT := m\bound{Tm }\free{CT m }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch8}
-\begin{paste}{CartesianTensorXmpPageFull8}{CartesianTensorXmpPageEmpty8}
-\pastebutton{CartesianTensorXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{n: SquareMatrix(2, Integer) := matrix [[2,3],[0,1]]\bound{n }}
-\indentrel{3}\begin{verbatim}
-        Ú2  3¿
-   (8)  ³    ³
-        À0  1Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty8}
-\begin{paste}{CartesianTensorXmpPageEmpty8}{CartesianTensorXmpPagePatch8}
-\pastebutton{CartesianTensorXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{n: SquareMatrix(2, Integer) := matrix [[2,3],[0,1]]\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch9}
-\begin{paste}{CartesianTensorXmpPageFull9}{CartesianTensorXmpPageEmpty9}
-\pastebutton{CartesianTensorXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{Tn: CT := n\bound{Tn }\free{CT n }}
-\indentrel{3}\begin{verbatim}
-        Ú2  3¿
-   (9)  ³    ³
-        À0  1Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty9}
-\begin{paste}{CartesianTensorXmpPageEmpty9}{CartesianTensorXmpPagePatch9}
-\pastebutton{CartesianTensorXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{Tn: CT := n\bound{Tn }\free{CT n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch10}
-\begin{paste}{CartesianTensorXmpPageFull10}{CartesianTensorXmpPageEmpty10}
-\pastebutton{CartesianTensorXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{t1: CT := [2, 3]\free{CT }\bound{t1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [2,3]
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty10}
-\begin{paste}{CartesianTensorXmpPageEmpty10}{CartesianTensorXmpPagePatch10}
-\pastebutton{CartesianTensorXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{t1: CT := [2, 3]\free{CT }\bound{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch11}
-\begin{paste}{CartesianTensorXmpPageFull11}{CartesianTensorXmpPageEmpty11}
-\pastebutton{CartesianTensorXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{rank t1\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (11)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty11}
-\begin{paste}{CartesianTensorXmpPageEmpty11}{CartesianTensorXmpPagePatch11}
-\pastebutton{CartesianTensorXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{rank t1\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch12}
-\begin{paste}{CartesianTensorXmpPageFull12}{CartesianTensorXmpPageEmpty12}
-\pastebutton{CartesianTensorXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{t2: CT := [t1, t1]\free{CT t1 }\bound{t2 }}
-\indentrel{3}\begin{verbatim}
-         Ú2  3¿
-   (12)  ³    ³
-         À2  3Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty12}
-\begin{paste}{CartesianTensorXmpPageEmpty12}{CartesianTensorXmpPagePatch12}
-\pastebutton{CartesianTensorXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{t2: CT := [t1, t1]\free{CT t1 }\bound{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch13}
-\begin{paste}{CartesianTensorXmpPageFull13}{CartesianTensorXmpPageEmpty13}
-\pastebutton{CartesianTensorXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{t3: CT := [t2, t2]\free{CT t2 }\bound{t3 }}
-\indentrel{3}\begin{verbatim}
-          Ú2  3¿ Ú2  3¿
-   (13)  [³    ³,³    ³]
-          À2  3Ù À2  3Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty13}
-\begin{paste}{CartesianTensorXmpPageEmpty13}{CartesianTensorXmpPagePatch13}
-\pastebutton{CartesianTensorXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{t3: CT := [t2, t2]\free{CT t2 }\bound{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch14}
-\begin{paste}{CartesianTensorXmpPageFull14}{CartesianTensorXmpPageEmpty14}
-\pastebutton{CartesianTensorXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{tt: CT := [t3, t3]; tt := [tt, tt]\free{CT t3 }\bound{tt }}
-\indentrel{3}\begin{verbatim}
-          ÚÚ2  3¿  Ú2  3¿¿ ÚÚ2  3¿  Ú2  3¿¿
-          ³³    ³  ³    ³³ ³³    ³  ³    ³³
-          ³À2  3Ù  À2  3Ù³ ³À2  3Ù  À2  3Ù³
-   (14)  [³              ³,³              ³]
-          ³Ú2  3¿  Ú2  3¿³ ³Ú2  3¿  Ú2  3¿³
-          ³³    ³  ³    ³³ ³³    ³  ³    ³³
-          ÀÀ2  3Ù  À2  3ÙÙ ÀÀ2  3Ù  À2  3ÙÙ
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty14}
-\begin{paste}{CartesianTensorXmpPageEmpty14}{CartesianTensorXmpPagePatch14}
-\pastebutton{CartesianTensorXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{tt: CT := [t3, t3]; tt := [tt, tt]\free{CT t3 }\bound{tt }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch15}
-\begin{paste}{CartesianTensorXmpPageFull15}{CartesianTensorXmpPageEmpty15}
-\pastebutton{CartesianTensorXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{rank tt\free{tt }}
-\indentrel{3}\begin{verbatim}
-   (15)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty15}
-\begin{paste}{CartesianTensorXmpPageEmpty15}{CartesianTensorXmpPagePatch15}
-\pastebutton{CartesianTensorXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{rank tt\free{tt }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch16}
-\begin{paste}{CartesianTensorXmpPageFull16}{CartesianTensorXmpPageEmpty16}
-\pastebutton{CartesianTensorXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{Tmn := product(Tm, Tn)\free{Tm Tn }\bound{Tmn }}
-\indentrel{3}\begin{verbatim}
-         ÚÚ2  3¿    Ú4  6¿ ¿
-         ³³    ³    ³    ³ ³
-         ³À0  1Ù    À0  2Ù ³
-   (16)  ³                 ³
-         ³Ú8  12¿  Ú10  15¿³
-         ³³     ³  ³      ³³
-         ÀÀ0  4 Ù  À0   5 ÙÙ
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty16}
-\begin{paste}{CartesianTensorXmpPageEmpty16}{CartesianTensorXmpPagePatch16}
-\pastebutton{CartesianTensorXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{Tmn := product(Tm, Tn)\free{Tm Tn }\bound{Tmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch17}
-\begin{paste}{CartesianTensorXmpPageFull17}{CartesianTensorXmpPageEmpty17}
-\pastebutton{CartesianTensorXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{Tmv := contract(Tm,2,Tv,1)\free{Tm Tv }\bound{Tmv }}
-\indentrel{3}\begin{verbatim}
-   (17)  [11,32]
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty17}
-\begin{paste}{CartesianTensorXmpPageEmpty17}{CartesianTensorXmpPagePatch17}
-\pastebutton{CartesianTensorXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{Tmv := contract(Tm,2,Tv,1)\free{Tm Tv }\bound{Tmv }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch18}
-\begin{paste}{CartesianTensorXmpPageFull18}{CartesianTensorXmpPageEmpty18}
-\pastebutton{CartesianTensorXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{Tm*Tv\free{Tm Tv }}
-\indentrel{3}\begin{verbatim}
-   (18)  [11,32]
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty18}
-\begin{paste}{CartesianTensorXmpPageEmpty18}{CartesianTensorXmpPagePatch18}
-\pastebutton{CartesianTensorXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{Tm*Tv\free{Tm Tv }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch19}
-\begin{paste}{CartesianTensorXmpPageFull19}{CartesianTensorXmpPageEmpty19}
-\pastebutton{CartesianTensorXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{Tmv = m * v\free{Tmv m v }}
-\indentrel{3}\begin{verbatim}
-   (19)  [11,32]= [11,32]
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty19}
-\begin{paste}{CartesianTensorXmpPageEmpty19}{CartesianTensorXmpPagePatch19}
-\pastebutton{CartesianTensorXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{Tmv = m * v\free{Tmv m v }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch20}
-\begin{paste}{CartesianTensorXmpPageFull20}{CartesianTensorXmpPageEmpty20}
-\pastebutton{CartesianTensorXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{t0()\free{t0 }}
-\indentrel{3}\begin{verbatim}
-   (20)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty20}
-\begin{paste}{CartesianTensorXmpPageEmpty20}{CartesianTensorXmpPagePatch20}
-\pastebutton{CartesianTensorXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{t0()\free{t0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch21}
-\begin{paste}{CartesianTensorXmpPageFull21}{CartesianTensorXmpPageEmpty21}
-\pastebutton{CartesianTensorXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{t1(1+1)\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (21)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty21}
-\begin{paste}{CartesianTensorXmpPageEmpty21}{CartesianTensorXmpPagePatch21}
-\pastebutton{CartesianTensorXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{t1(1+1)\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch22}
-\begin{paste}{CartesianTensorXmpPageFull22}{CartesianTensorXmpPageEmpty22}
-\pastebutton{CartesianTensorXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{t2(2,1)\free{t2 }}
-\indentrel{3}\begin{verbatim}
-   (22)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty22}
-\begin{paste}{CartesianTensorXmpPageEmpty22}{CartesianTensorXmpPagePatch22}
-\pastebutton{CartesianTensorXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{t2(2,1)\free{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch23}
-\begin{paste}{CartesianTensorXmpPageFull23}{CartesianTensorXmpPageEmpty23}
-\pastebutton{CartesianTensorXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{t3(2,1,2)\free{t3 }}
-\indentrel{3}\begin{verbatim}
-   (23)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty23}
-\begin{paste}{CartesianTensorXmpPageEmpty23}{CartesianTensorXmpPagePatch23}
-\pastebutton{CartesianTensorXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{t3(2,1,2)\free{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch24}
-\begin{paste}{CartesianTensorXmpPageFull24}{CartesianTensorXmpPageEmpty24}
-\pastebutton{CartesianTensorXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{Tmn(2,1,2,1)\free{Tmn }}
-\indentrel{3}\begin{verbatim}
-   (24)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty24}
-\begin{paste}{CartesianTensorXmpPageEmpty24}{CartesianTensorXmpPagePatch24}
-\pastebutton{CartesianTensorXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{Tmn(2,1,2,1)\free{Tmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch25}
-\begin{paste}{CartesianTensorXmpPageFull25}{CartesianTensorXmpPageEmpty25}
-\pastebutton{CartesianTensorXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{t0[]\free{t0 }}
-\indentrel{3}\begin{verbatim}
-   (25)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty25}
-\begin{paste}{CartesianTensorXmpPageEmpty25}{CartesianTensorXmpPagePatch25}
-\pastebutton{CartesianTensorXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{t0[]\free{t0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch26}
-\begin{paste}{CartesianTensorXmpPageFull26}{CartesianTensorXmpPageEmpty26}
-\pastebutton{CartesianTensorXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{t1[2]\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (26)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty26}
-\begin{paste}{CartesianTensorXmpPageEmpty26}{CartesianTensorXmpPagePatch26}
-\pastebutton{CartesianTensorXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{t1[2]\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch27}
-\begin{paste}{CartesianTensorXmpPageFull27}{CartesianTensorXmpPageEmpty27}
-\pastebutton{CartesianTensorXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{t2[2,1]\free{t2 }}
-\indentrel{3}\begin{verbatim}
-   (27)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty27}
-\begin{paste}{CartesianTensorXmpPageEmpty27}{CartesianTensorXmpPagePatch27}
-\pastebutton{CartesianTensorXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{t2[2,1]\free{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch28}
-\begin{paste}{CartesianTensorXmpPageFull28}{CartesianTensorXmpPageEmpty28}
-\pastebutton{CartesianTensorXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{t3[2,1,2]\free{t3 }}
-\indentrel{3}\begin{verbatim}
-   (28)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty28}
-\begin{paste}{CartesianTensorXmpPageEmpty28}{CartesianTensorXmpPagePatch28}
-\pastebutton{CartesianTensorXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{t3[2,1,2]\free{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch29}
-\begin{paste}{CartesianTensorXmpPageFull29}{CartesianTensorXmpPageEmpty29}
-\pastebutton{CartesianTensorXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{Tmn[2,1,2,1]\free{Tmn }}
-\indentrel{3}\begin{verbatim}
-   (29)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty29}
-\begin{paste}{CartesianTensorXmpPageEmpty29}{CartesianTensorXmpPagePatch29}
-\pastebutton{CartesianTensorXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{Tmn[2,1,2,1]\free{Tmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch30}
-\begin{paste}{CartesianTensorXmpPageFull30}{CartesianTensorXmpPageEmpty30}
-\pastebutton{CartesianTensorXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{cTmn := contract(Tmn,1,2)\free{Tmn }\bound{cTmn }}
-\indentrel{3}\begin{verbatim}
-         Ú12  18¿
-   (30)  ³      ³
-         À0   6 Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty30}
-\begin{paste}{CartesianTensorXmpPageEmpty30}{CartesianTensorXmpPagePatch30}
-\pastebutton{CartesianTensorXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{cTmn := contract(Tmn,1,2)\free{Tmn }\bound{cTmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch31}
-\begin{paste}{CartesianTensorXmpPageFull31}{CartesianTensorXmpPageEmpty31}
-\pastebutton{CartesianTensorXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{trace(m) * n\free{m n }}
-\indentrel{3}\begin{verbatim}
-         Ú12  18¿
-   (31)  ³      ³
-         À0   6 Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty31}
-\begin{paste}{CartesianTensorXmpPageEmpty31}{CartesianTensorXmpPagePatch31}
-\pastebutton{CartesianTensorXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{trace(m) * n\free{m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch32}
-\begin{paste}{CartesianTensorXmpPageFull32}{CartesianTensorXmpPageEmpty32}
-\pastebutton{CartesianTensorXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,1,2) = trace(m) * n\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú12  18¿  Ú12  18¿
-   (32)  ³      ³= ³      ³
-         À0   6 Ù  À0   6 Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty32}
-\begin{paste}{CartesianTensorXmpPageEmpty32}{CartesianTensorXmpPagePatch32}
-\pastebutton{CartesianTensorXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,1,2) = trace(m) * n\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch33}
-\begin{paste}{CartesianTensorXmpPageFull33}{CartesianTensorXmpPageEmpty33}
-\pastebutton{CartesianTensorXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,1,3) = transpose(m) * n\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú2  7 ¿  Ú2  7 ¿
-   (33)  ³     ³= ³     ³
-         À4  11Ù  À4  11Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty33}
-\begin{paste}{CartesianTensorXmpPageEmpty33}{CartesianTensorXmpPagePatch33}
-\pastebutton{CartesianTensorXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,1,3) = transpose(m) * n\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch34}
-\begin{paste}{CartesianTensorXmpPageFull34}{CartesianTensorXmpPageEmpty34}
-\pastebutton{CartesianTensorXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,1,4) = transpose(m) * transpose(n)\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú14  4¿  Ú14  4¿
-   (34)  ³     ³= ³     ³
-         À19  5Ù  À19  5Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty34}
-\begin{paste}{CartesianTensorXmpPageEmpty34}{CartesianTensorXmpPagePatch34}
-\pastebutton{CartesianTensorXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,1,4) = transpose(m) * transpose(n)\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch35}
-\begin{paste}{CartesianTensorXmpPageFull35}{CartesianTensorXmpPageEmpty35}
-\pastebutton{CartesianTensorXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,2,3) = m * n\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú2  5 ¿  Ú2  5 ¿
-   (35)  ³     ³= ³     ³
-         À8  17Ù  À8  17Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty35}
-\begin{paste}{CartesianTensorXmpPageEmpty35}{CartesianTensorXmpPagePatch35}
-\pastebutton{CartesianTensorXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,2,3) = m * n\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch36}
-\begin{paste}{CartesianTensorXmpPageFull36}{CartesianTensorXmpPageEmpty36}
-\pastebutton{CartesianTensorXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,2,4) = m * transpose(n)\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú8   2¿  Ú8   2¿
-   (36)  ³     ³= ³     ³
-         À23  5Ù  À23  5Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty36}
-\begin{paste}{CartesianTensorXmpPageEmpty36}{CartesianTensorXmpPagePatch36}
-\pastebutton{CartesianTensorXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,2,4) = m * transpose(n)\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch37}
-\begin{paste}{CartesianTensorXmpPageFull37}{CartesianTensorXmpPageEmpty37}
-\pastebutton{CartesianTensorXmpPageFull37}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn,3,4) = trace(n) * m\free{Tmn m n }}
-\indentrel{3}\begin{verbatim}
-         Ú3   6 ¿  Ú3   6 ¿
-   (37)  ³      ³= ³      ³
-         À12  15Ù  À12  15Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty37}
-\begin{paste}{CartesianTensorXmpPageEmpty37}{CartesianTensorXmpPagePatch37}
-\pastebutton{CartesianTensorXmpPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn,3,4) = trace(n) * m\free{Tmn m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch38}
-\begin{paste}{CartesianTensorXmpPageFull38}{CartesianTensorXmpPageEmpty38}
-\pastebutton{CartesianTensorXmpPageFull38}{\hidepaste}
-\tab{5}\spadcommand{tTmn := transpose(Tmn,1,3)\free{tTmn }}
-\indentrel{3}\begin{verbatim}
-         ÚÚ2  3 ¿  Ú4   6 ¿¿
-         ³³     ³  ³      ³³
-         ³À8  12Ù  À10  15Ù³
-   (38)  ³                 ³
-         ³Ú0  1¿    Ú0  2¿ ³
-         ³³    ³    ³    ³ ³
-         ÀÀ0  4Ù    À0  5Ù Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty38}
-\begin{paste}{CartesianTensorXmpPageEmpty38}{CartesianTensorXmpPagePatch38}
-\pastebutton{CartesianTensorXmpPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{tTmn := transpose(Tmn,1,3)\free{tTmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch39}
-\begin{paste}{CartesianTensorXmpPageFull39}{CartesianTensorXmpPageEmpty39}
-\pastebutton{CartesianTensorXmpPageFull39}{\hidepaste}
-\tab{5}\spadcommand{transpose Tmn\free{Tmn }}
-\indentrel{3}\begin{verbatim}
-         ÚÚ2  8¿   Ú4  10¿¿
-         ³³    ³   ³     ³³
-         ³À0  0Ù   À0  0 Ù³
-   (39)  ³                ³
-         ³Ú3  12¿  Ú6  15¿³
-         ³³     ³  ³     ³³
-         ÀÀ1  4 Ù  À2  5 ÙÙ
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty39}
-\begin{paste}{CartesianTensorXmpPageEmpty39}{CartesianTensorXmpPagePatch39}
-\pastebutton{CartesianTensorXmpPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{transpose Tmn\free{Tmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch40}
-\begin{paste}{CartesianTensorXmpPageFull40}{CartesianTensorXmpPageEmpty40}
-\pastebutton{CartesianTensorXmpPageFull40}{\hidepaste}
-\tab{5}\spadcommand{transpose Tm = transpose m\free{Tm m }}
-\indentrel{3}\begin{verbatim}
-         Ú1  4¿  Ú1  4¿
-   (40)  ³    ³= ³    ³
-         À2  5Ù  À2  5Ù
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty40}
-\begin{paste}{CartesianTensorXmpPageEmpty40}{CartesianTensorXmpPagePatch40}
-\pastebutton{CartesianTensorXmpPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{transpose Tm = transpose m\free{Tm m }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch41}
-\begin{paste}{CartesianTensorXmpPageFull41}{CartesianTensorXmpPageEmpty41}
-\pastebutton{CartesianTensorXmpPageFull41}{\hidepaste}
-\tab{5}\spadcommand{rTmn := reindex(Tmn, [1,4,2,3])\free{Tmn }\bound{rTmn }}
-\indentrel{3}\begin{verbatim}
-         ÚÚ2  0¿   Ú3  1¿ ¿
-         ³³    ³   ³    ³ ³
-         ³À4  0Ù   À6  2Ù ³
-   (41)  ³                ³
-         ³Ú8   0¿  Ú12  4¿³
-         ³³     ³  ³     ³³
-         ÀÀ10  0Ù  À15  5ÙÙ
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty41}
-\begin{paste}{CartesianTensorXmpPageEmpty41}{CartesianTensorXmpPagePatch41}
-\pastebutton{CartesianTensorXmpPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{rTmn := reindex(Tmn, [1,4,2,3])\free{Tmn }\bound{rTmn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch42}
-\begin{paste}{CartesianTensorXmpPageFull42}{CartesianTensorXmpPageEmpty42}
-\pastebutton{CartesianTensorXmpPageFull42}{\hidepaste}
-\tab{5}\spadcommand{tt := transpose(Tm)*Tn - Tn*transpose(Tm)\free{Tm Tn }\bound{tt2 }}
-\indentrel{3}\begin{verbatim}
-         Ú- 6  - 16¿
-   (42)  ³         ³
-         À 2    6  Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty42}
-\begin{paste}{CartesianTensorXmpPageEmpty42}{CartesianTensorXmpPagePatch42}
-\pastebutton{CartesianTensorXmpPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{tt := transpose(Tm)*Tn - Tn*transpose(Tm)\free{Tm Tn }\bound{tt2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch43}
-\begin{paste}{CartesianTensorXmpPageFull43}{CartesianTensorXmpPageEmpty43}
-\pastebutton{CartesianTensorXmpPageFull43}{\hidepaste}
-\tab{5}\spadcommand{Tv*(tt+Tn)\free{tt2 Tv Tn }}
-\indentrel{3}\begin{verbatim}
-   (43)  [- 4,- 11]
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty43}
-\begin{paste}{CartesianTensorXmpPageEmpty43}{CartesianTensorXmpPagePatch43}
-\pastebutton{CartesianTensorXmpPageEmpty43}{\showpaste}
-\tab{5}\spadcommand{Tv*(tt+Tn)\free{tt2 Tv Tn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch44}
-\begin{paste}{CartesianTensorXmpPageFull44}{CartesianTensorXmpPageEmpty44}
-\pastebutton{CartesianTensorXmpPageFull44}{\hidepaste}
-\tab{5}\spadcommand{reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)\free{Tm Tn }}
-\indentrel{3}\begin{verbatim}
-         ÚÚ46   84 ¿  Ú57   114¿¿
-         ³³        ³  ³        ³³
-         ³À174  212Ù  À228  285Ù³
-   (44)  ³                      ³
-         ³ Ú18  24¿    Ú17  30¿ ³
-         ³ ³      ³    ³      ³ ³
-         À À57  63Ù    À63  76Ù Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty44}
-\begin{paste}{CartesianTensorXmpPageEmpty44}{CartesianTensorXmpPagePatch44}
-\pastebutton{CartesianTensorXmpPageEmpty44}{\showpaste}
-\tab{5}\spadcommand{reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)\free{Tm Tn }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch45}
-\begin{paste}{CartesianTensorXmpPageFull45}{CartesianTensorXmpPageEmpty45}
-\pastebutton{CartesianTensorXmpPageFull45}{\hidepaste}
-\tab{5}\spadcommand{delta: CT := kroneckerDelta()\free{CT }\bound{delta }}
-\indentrel{3}\begin{verbatim}
-         Ú1  0¿
-   (45)  ³    ³
-         À0  1Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty45}
-\begin{paste}{CartesianTensorXmpPageEmpty45}{CartesianTensorXmpPagePatch45}
-\pastebutton{CartesianTensorXmpPageEmpty45}{\showpaste}
-\tab{5}\spadcommand{delta: CT := kroneckerDelta()\free{CT }\bound{delta }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch46}
-\begin{paste}{CartesianTensorXmpPageFull46}{CartesianTensorXmpPageEmpty46}
-\pastebutton{CartesianTensorXmpPageFull46}{\hidepaste}
-\tab{5}\spadcommand{contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])\free{Tmn delta }}
-\indentrel{3}\begin{verbatim}
-         Ú Ú2  4¿   Ú0  0¿¿  Ú Ú2  4¿   Ú0  0¿¿
-         ³ ³    ³   ³    ³³  ³ ³    ³   ³    ³³
-         ³ À3  6Ù   À1  2Ù³  ³ À3  6Ù   À1  2Ù³
-   (46)  ³                ³= ³                ³
-         ³Ú8   10¿  Ú0  0¿³  ³Ú8   10¿  Ú0  0¿³
-         ³³      ³  ³    ³³  ³³      ³  ³    ³³
-         ÀÀ12  15Ù  À4  5ÙÙ  ÀÀ12  15Ù  À4  5ÙÙ
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty46}
-\begin{paste}{CartesianTensorXmpPageEmpty46}{CartesianTensorXmpPagePatch46}
-\pastebutton{CartesianTensorXmpPageEmpty46}{\showpaste}
-\tab{5}\spadcommand{contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])\free{Tmn delta }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch47}
-\begin{paste}{CartesianTensorXmpPageFull47}{CartesianTensorXmpPageEmpty47}
-\pastebutton{CartesianTensorXmpPageFull47}{\hidepaste}
-\tab{5}\spadcommand{epsilon:CT := leviCivitaSymbol()\free{CT }\bound{epsilon }}
-\indentrel{3}\begin{verbatim}
-         Ú 0   1¿
-   (47)  ³      ³
-         À- 1  0Ù
-                     Type: CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty47}
-\begin{paste}{CartesianTensorXmpPageEmpty47}{CartesianTensorXmpPagePatch47}
-\pastebutton{CartesianTensorXmpPageEmpty47}{\showpaste}
-\tab{5}\spadcommand{epsilon:CT := leviCivitaSymbol()\free{CT }\bound{epsilon }}
-\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPagePatch48}
-\begin{paste}{CartesianTensorXmpPageFull48}{CartesianTensorXmpPageEmpty48}
-\pastebutton{CartesianTensorXmpPageFull48}{\hidepaste}
-\tab{5}\spadcommand{contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m\free{epsilon Tm m }}
-\indentrel{3}\begin{verbatim}
-   (48)  - 6= - 6
-            Type: Equation CartesianTensor(1,2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CartesianTensorXmpPageEmpty48}
-\begin{paste}{CartesianTensorXmpPageEmpty48}{CartesianTensorXmpPagePatch48}
-\pastebutton{CartesianTensorXmpPageEmpty48}{\showpaste}
-\tab{5}\spadcommand{contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m\free{epsilon Tm m }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/cclass.pht b/books/pages/cclass.pht
deleted file mode 100644
index d1f1d5e..0000000
--- a/books/pages/cclass.pht
+++ /dev/null
@@ -1,259 +0,0 @@
-\begin{patch}{CharacterClassXmpPagePatch1}
-\begin{paste}{CharacterClassXmpPageFull1}{CharacterClassXmpPageEmpty1}
-\pastebutton{CharacterClassXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char "y"]\bound{cl1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  "aeiouy"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty1}
-\begin{paste}{CharacterClassXmpPageEmpty1}{CharacterClassXmpPagePatch1}
-\pastebutton{CharacterClassXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{cl1 := charClass [char "a", char "e", char "i", char "o", char "u", char "y"]\bound{cl1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch2}
-\begin{paste}{CharacterClassXmpPageFull2}{CharacterClassXmpPageEmpty2}
-\pastebutton{CharacterClassXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{cl2 := charClass "bcdfghjklmnpqrstvwxyz"\bound{cl2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  "bcdfghjklmnpqrstvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty2}
-\begin{paste}{CharacterClassXmpPageEmpty2}{CharacterClassXmpPagePatch2}
-\pastebutton{CharacterClassXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{cl2 := charClass "bcdfghjklmnpqrstvwxyz"\bound{cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch3}
-\begin{paste}{CharacterClassXmpPageFull3}{CharacterClassXmpPageEmpty3}
-\pastebutton{CharacterClassXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{digit()}
-\indentrel{3}\begin{verbatim}
-   (3)  "0123456789"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty3}
-\begin{paste}{CharacterClassXmpPageEmpty3}{CharacterClassXmpPagePatch3}
-\pastebutton{CharacterClassXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{digit()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch4}
-\begin{paste}{CharacterClassXmpPageFull4}{CharacterClassXmpPageEmpty4}
-\pastebutton{CharacterClassXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{hexDigit()}
-\indentrel{3}\begin{verbatim}
-   (4)  "0123456789ABCDEFabcdef"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty4}
-\begin{paste}{CharacterClassXmpPageEmpty4}{CharacterClassXmpPagePatch4}
-\pastebutton{CharacterClassXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{hexDigit()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch5}
-\begin{paste}{CharacterClassXmpPageFull5}{CharacterClassXmpPageEmpty5}
-\pastebutton{CharacterClassXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{upperCase()}
-\indentrel{3}\begin{verbatim}
-   (5)  "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty5}
-\begin{paste}{CharacterClassXmpPageEmpty5}{CharacterClassXmpPagePatch5}
-\pastebutton{CharacterClassXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{upperCase()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch6}
-\begin{paste}{CharacterClassXmpPageFull6}{CharacterClassXmpPageEmpty6}
-\pastebutton{CharacterClassXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{lowerCase()}
-\indentrel{3}\begin{verbatim}
-   (6)  "abcdefghijklmnopqrstuvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty6}
-\begin{paste}{CharacterClassXmpPageEmpty6}{CharacterClassXmpPagePatch6}
-\pastebutton{CharacterClassXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{lowerCase()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch7}
-\begin{paste}{CharacterClassXmpPageFull7}{CharacterClassXmpPageEmpty7}
-\pastebutton{CharacterClassXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{alphabetic()}
-\indentrel{3}\begin{verbatim}
-   (7)
-   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty7}
-\begin{paste}{CharacterClassXmpPageEmpty7}{CharacterClassXmpPagePatch7}
-\pastebutton{CharacterClassXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{alphabetic()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch8}
-\begin{paste}{CharacterClassXmpPageFull8}{CharacterClassXmpPageEmpty8}
-\pastebutton{CharacterClassXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{alphanumeric()}
-\indentrel{3}\begin{verbatim}
-   (8)
-  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr
-  stuvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty8}
-\begin{paste}{CharacterClassXmpPageEmpty8}{CharacterClassXmpPagePatch8}
-\pastebutton{CharacterClassXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{alphanumeric()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch9}
-\begin{paste}{CharacterClassXmpPageFull9}{CharacterClassXmpPageEmpty9}
-\pastebutton{CharacterClassXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{member?(char "a", cl1)\free{cl1 }}
-\indentrel{3}\begin{verbatim}
-   (9)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty9}
-\begin{paste}{CharacterClassXmpPageEmpty9}{CharacterClassXmpPagePatch9}
-\pastebutton{CharacterClassXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{member?(char "a", cl1)\free{cl1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch10}
-\begin{paste}{CharacterClassXmpPageFull10}{CharacterClassXmpPageEmpty10}
-\pastebutton{CharacterClassXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{member?(char "a", cl2)\free{cl2 }}
-\indentrel{3}\begin{verbatim}
-   (10)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty10}
-\begin{paste}{CharacterClassXmpPageEmpty10}{CharacterClassXmpPagePatch10}
-\pastebutton{CharacterClassXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{member?(char "a", cl2)\free{cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch11}
-\begin{paste}{CharacterClassXmpPageFull11}{CharacterClassXmpPageEmpty11}
-\pastebutton{CharacterClassXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{intersect(cl1, cl2)\free{cl1 cl2 }}
-\indentrel{3}\begin{verbatim}
-   (11)  "y"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty11}
-\begin{paste}{CharacterClassXmpPageEmpty11}{CharacterClassXmpPagePatch11}
-\pastebutton{CharacterClassXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{intersect(cl1, cl2)\free{cl1 cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch12}
-\begin{paste}{CharacterClassXmpPageFull12}{CharacterClassXmpPageEmpty12}
-\pastebutton{CharacterClassXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{union(cl1,cl2)\free{cl1 cl2 }}
-\indentrel{3}\begin{verbatim}
-   (12)  "abcdefghijklmnopqrstuvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty12}
-\begin{paste}{CharacterClassXmpPageEmpty12}{CharacterClassXmpPagePatch12}
-\pastebutton{CharacterClassXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{union(cl1,cl2)\free{cl1 cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch13}
-\begin{paste}{CharacterClassXmpPageFull13}{CharacterClassXmpPageEmpty13}
-\pastebutton{CharacterClassXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{difference(cl1,cl2)\free{cl1 cl2 }}
-\indentrel{3}\begin{verbatim}
-   (13)  "aeiou"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty13}
-\begin{paste}{CharacterClassXmpPageEmpty13}{CharacterClassXmpPagePatch13}
-\pastebutton{CharacterClassXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{difference(cl1,cl2)\free{cl1 cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch14}
-\begin{paste}{CharacterClassXmpPageFull14}{CharacterClassXmpPageEmpty14}
-\pastebutton{CharacterClassXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{intersect(complement(cl1),cl2)\free{cl1 cl2 }}
-\indentrel{3}\begin{verbatim}
-   (14)  "bcdfghjklmnpqrstvwxz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty14}
-\begin{paste}{CharacterClassXmpPageEmpty14}{CharacterClassXmpPagePatch14}
-\pastebutton{CharacterClassXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{intersect(complement(cl1),cl2)\free{cl1 cl2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch15}
-\begin{paste}{CharacterClassXmpPageFull15}{CharacterClassXmpPageEmpty15}
-\pastebutton{CharacterClassXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{insert!(char "a", cl2)\free{cl2 }\bound{cl22 }}
-\indentrel{3}\begin{verbatim}
-   (15)  "abcdfghjklmnpqrstvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty15}
-\begin{paste}{CharacterClassXmpPageEmpty15}{CharacterClassXmpPagePatch15}
-\pastebutton{CharacterClassXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{insert!(char "a", cl2)\free{cl2 }\bound{cl22 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPagePatch16}
-\begin{paste}{CharacterClassXmpPageFull16}{CharacterClassXmpPageEmpty16}
-\pastebutton{CharacterClassXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{remove!(char "b", cl2)\free{cl22 }\bound{cl23 }}
-\indentrel{3}\begin{verbatim}
-   (16)  "acdfghjklmnpqrstvwxyz"
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterClassXmpPageEmpty16}
-\begin{paste}{CharacterClassXmpPageEmpty16}{CharacterClassXmpPagePatch16}
-\pastebutton{CharacterClassXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{remove!(char "b", cl2)\free{cl22 }\bound{cl23 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/char.pht b/books/pages/char.pht
deleted file mode 100644
index 2287bc0..0000000
--- a/books/pages/char.pht
+++ /dev/null
@@ -1,208 +0,0 @@
-\begin{patch}{CharacterXmpPagePatch1}
-\begin{paste}{CharacterXmpPageFull1}{CharacterXmpPageEmpty1}
-\pastebutton{CharacterXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{chars := [char "a", char "A", char "X", char "8", char "+"]\bound{chars }}
-\indentrel{3}\begin{verbatim}
-   (1)  [a,A,X,8,+]
-                                   Type: List Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty1}
-\begin{paste}{CharacterXmpPageEmpty1}{CharacterXmpPagePatch1}
-\pastebutton{CharacterXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{chars := [char "a", char "A", char "X", char "8", char "+"]\bound{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch2}
-\begin{paste}{CharacterXmpPageFull2}{CharacterXmpPageEmpty2}
-\pastebutton{CharacterXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{space()}
-\indentrel{3}\begin{verbatim}
-   (2)
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty2}
-\begin{paste}{CharacterXmpPageEmpty2}{CharacterXmpPagePatch2}
-\pastebutton{CharacterXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{space()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch3}
-\begin{paste}{CharacterXmpPageFull3}{CharacterXmpPageEmpty3}
-\pastebutton{CharacterXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{quote()}
-\indentrel{3}\begin{verbatim}
-   (3)  "
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty3}
-\begin{paste}{CharacterXmpPageEmpty3}{CharacterXmpPagePatch3}
-\pastebutton{CharacterXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{quote()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch4}
-\begin{paste}{CharacterXmpPageFull4}{CharacterXmpPageEmpty4}
-\pastebutton{CharacterXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{escape()}
-\indentrel{3}\begin{verbatim}
-   (4)  _
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty4}
-\begin{paste}{CharacterXmpPageEmpty4}{CharacterXmpPagePatch4}
-\pastebutton{CharacterXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{escape()}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch5}
-\begin{paste}{CharacterXmpPageFull5}{CharacterXmpPageEmpty5}
-\pastebutton{CharacterXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[ord c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (5)  [97,65,88,56,43]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty5}
-\begin{paste}{CharacterXmpPageEmpty5}{CharacterXmpPagePatch5}
-\pastebutton{CharacterXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[ord c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch6}
-\begin{paste}{CharacterXmpPageFull6}{CharacterXmpPageEmpty6}
-\pastebutton{CharacterXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[upperCase c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (6)  [A,A,X,8,+]
-                                   Type: List Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty6}
-\begin{paste}{CharacterXmpPageEmpty6}{CharacterXmpPagePatch6}
-\pastebutton{CharacterXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[upperCase c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch7}
-\begin{paste}{CharacterXmpPageFull7}{CharacterXmpPageEmpty7}
-\pastebutton{CharacterXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{[lowerCase c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (7)  [a,a,x,8,+]
-                                   Type: List Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty7}
-\begin{paste}{CharacterXmpPageEmpty7}{CharacterXmpPagePatch7}
-\pastebutton{CharacterXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{[lowerCase c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch8}
-\begin{paste}{CharacterXmpPageFull8}{CharacterXmpPageEmpty8}
-\pastebutton{CharacterXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{[alphabetic? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (8)  [true,true,true,false,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty8}
-\begin{paste}{CharacterXmpPageEmpty8}{CharacterXmpPagePatch8}
-\pastebutton{CharacterXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{[alphabetic? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch9}
-\begin{paste}{CharacterXmpPageFull9}{CharacterXmpPageEmpty9}
-\pastebutton{CharacterXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{[upperCase? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (9)  [false,true,true,false,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty9}
-\begin{paste}{CharacterXmpPageEmpty9}{CharacterXmpPagePatch9}
-\pastebutton{CharacterXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{[upperCase? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch10}
-\begin{paste}{CharacterXmpPageFull10}{CharacterXmpPageEmpty10}
-\pastebutton{CharacterXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{[lowerCase? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (10)  [true,false,false,false,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty10}
-\begin{paste}{CharacterXmpPageEmpty10}{CharacterXmpPagePatch10}
-\pastebutton{CharacterXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{[lowerCase? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch11}
-\begin{paste}{CharacterXmpPageFull11}{CharacterXmpPageEmpty11}
-\pastebutton{CharacterXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[digit? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (11)  [false,false,false,true,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty11}
-\begin{paste}{CharacterXmpPageEmpty11}{CharacterXmpPagePatch11}
-\pastebutton{CharacterXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[digit? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch12}
-\begin{paste}{CharacterXmpPageFull12}{CharacterXmpPageEmpty12}
-\pastebutton{CharacterXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{[hexDigit? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (12)  [true,true,false,true,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty12}
-\begin{paste}{CharacterXmpPageEmpty12}{CharacterXmpPagePatch12}
-\pastebutton{CharacterXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{[hexDigit? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPagePatch13}
-\begin{paste}{CharacterXmpPageFull13}{CharacterXmpPageEmpty13}
-\pastebutton{CharacterXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{[alphanumeric? c for c in chars]\free{chars }}
-\indentrel{3}\begin{verbatim}
-   (13)  [true,true,true,true,false]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CharacterXmpPageEmpty13}
-\begin{paste}{CharacterXmpPageEmpty13}{CharacterXmpPagePatch13}
-\pastebutton{CharacterXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{[alphanumeric? c for c in chars]\free{chars }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/clif.pht b/books/pages/clif.pht
deleted file mode 100644
index 1331d45..0000000
--- a/books/pages/clif.pht
+++ /dev/null
@@ -1,622 +0,0 @@
-\begin{patch}{ugxCliffordDiracPagePatch1}
-\begin{paste}{ugxCliffordDiracPageFull1}{ugxCliffordDiracPageEmpty1}
-\pastebutton{ugxCliffordDiracPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := Fraction Integer\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty1}
-\begin{paste}{ugxCliffordDiracPageEmpty1}{ugxCliffordDiracPagePatch1}
-\pastebutton{ugxCliffordDiracPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := Fraction Integer\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch2}
-\begin{paste}{ugxCliffordDiracPageFull2}{ugxCliffordDiracPageEmpty2}
-\pastebutton{ugxCliffordDiracPageFull2}{\hidepaste}
-\tab{5}\spadcommand{g := matrix [[1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1]]\bound{g }}
-\indentrel{3}\begin{verbatim}
-        Ú1   0    0    0 ¿
-        ³                ³
-        ³0  - 1   0    0 ³
-   (2)  ³                ³
-        ³0   0   - 1   0 ³
-        ³                ³
-        À0   0    0   - 1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty2}
-\begin{paste}{ugxCliffordDiracPageEmpty2}{ugxCliffordDiracPagePatch2}
-\pastebutton{ugxCliffordDiracPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{g := matrix [[1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1]]\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch3}
-\begin{paste}{ugxCliffordDiracPageFull3}{ugxCliffordDiracPageEmpty3}
-\pastebutton{ugxCliffordDiracPageFull3}{\hidepaste}
-\tab{5}\spadcommand{D := CliffordAlgebra(4,K, quadraticForm g)\free{K g }\bound{D }}
-\indentrel{3}\begin{verbatim}
-   (3)  CliffordAlgebra(4,Fraction Integer,MATRIX)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty3}
-\begin{paste}{ugxCliffordDiracPageEmpty3}{ugxCliffordDiracPagePatch3}
-\pastebutton{ugxCliffordDiracPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{D := CliffordAlgebra(4,K, quadraticForm g)\free{K g }\bound{D }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch4}
-\begin{paste}{ugxCliffordDiracPageFull4}{ugxCliffordDiracPageEmpty4}
-\pastebutton{ugxCliffordDiracPageFull4}{\hidepaste}
-\tab{5}\spadcommand{gam := [e(i)$D for i in 1..4]\free{D }\bound{gam }}
-\indentrel{3}\begin{verbatim}
-   (4)  [e ,e ,e ,e ]
-          1  2  3  4
-  Type: List CliffordAlgebra(4,Fraction Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty4}
-\begin{paste}{ugxCliffordDiracPageEmpty4}{ugxCliffordDiracPagePatch4}
-\pastebutton{ugxCliffordDiracPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{gam := [e(i)$D for i in 1..4]\free{D }\bound{gam }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch5}
-\begin{paste}{ugxCliffordDiracPageFull5}{ugxCliffordDiracPageEmpty5}
-\pastebutton{ugxCliffordDiracPageFull5}{\hidepaste}
-\tab{5}\spadcommand{m := 1; n:= 2; r := 3; s := 4;\bound{m n r s }}
-\indentrel{3}\begin{verbatim}
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty5}
-\begin{paste}{ugxCliffordDiracPageEmpty5}{ugxCliffordDiracPagePatch5}
-\pastebutton{ugxCliffordDiracPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{m := 1; n:= 2; r := 3; s := 4;\bound{m n r s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch6}
-\begin{paste}{ugxCliffordDiracPageFull6}{ugxCliffordDiracPageEmpty6}
-\pastebutton{ugxCliffordDiracPageFull6}{\hidepaste}
-\tab{5}\spadcommand{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])\bound{lhs }\free{g gam m n r s }}
-\indentrel{3}\begin{verbatim}
-   (6)  - 4e e e e
-            1 2 3 4
-       Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty6}
-\begin{paste}{ugxCliffordDiracPageEmpty6}{ugxCliffordDiracPagePatch6}
-\pastebutton{ugxCliffordDiracPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{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])\bound{lhs }\free{g gam m n r s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPagePatch7}
-\begin{paste}{ugxCliffordDiracPageFull7}{ugxCliffordDiracPageEmpty7}
-\pastebutton{ugxCliffordDiracPageFull7}{\hidepaste}
-\tab{5}\spadcommand{rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)\bound{rhs }\free{lhs g gam m n r s }}
-\indentrel{3}\begin{verbatim}
-   (7)  - 4e e e e
-            1 2 3 4
-       Type: CliffordAlgebra(4,Fraction Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordDiracPageEmpty7}
-\begin{paste}{ugxCliffordDiracPageEmpty7}{ugxCliffordDiracPagePatch7}
-\pastebutton{ugxCliffordDiracPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)\bound{rhs }\free{lhs g gam m n r s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch1}
-\begin{paste}{ugxCliffordComplexPageFull1}{ugxCliffordComplexPageEmpty1}
-\pastebutton{ugxCliffordComplexPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Polynomial Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty1}
-\begin{paste}{ugxCliffordComplexPageEmpty1}{ugxCliffordComplexPagePatch1}
-\pastebutton{ugxCliffordComplexPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch2}
-\begin{paste}{ugxCliffordComplexPageFull2}{ugxCliffordComplexPageEmpty2}
-\pastebutton{ugxCliffordComplexPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[-1]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (2)  [- 1]
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty2}
-\begin{paste}{ugxCliffordComplexPageEmpty2}{ugxCliffordComplexPagePatch2}
-\pastebutton{ugxCliffordComplexPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[-1]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch3}
-\begin{paste}{ugxCliffordComplexPageFull3}{ugxCliffordComplexPageEmpty3}
-\pastebutton{ugxCliffordComplexPageFull3}{\hidepaste}
-\tab{5}\spadcommand{C := CliffordAlgebra(1, K, quadraticForm m)\free{K m }\bound{C }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty3}
-\begin{paste}{ugxCliffordComplexPageEmpty3}{ugxCliffordComplexPagePatch3}
-\pastebutton{ugxCliffordComplexPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{C := CliffordAlgebra(1, K, quadraticForm m)\free{K m }\bound{C }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch4}
-\begin{paste}{ugxCliffordComplexPageFull4}{ugxCliffordComplexPageEmpty4}
-\pastebutton{ugxCliffordComplexPageFull4}{\hidepaste}
-\tab{5}\spadcommand{i: C := e(1)\bound{i }\free{C }}
-\indentrel{3}\begin{verbatim}
-   (4)  e
-         1
-Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty4}
-\begin{paste}{ugxCliffordComplexPageEmpty4}{ugxCliffordComplexPagePatch4}
-\pastebutton{ugxCliffordComplexPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{i: C := e(1)\bound{i }\free{C }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch5}
-\begin{paste}{ugxCliffordComplexPageFull5}{ugxCliffordComplexPageEmpty5}
-\pastebutton{ugxCliffordComplexPageFull5}{\hidepaste}
-\tab{5}\spadcommand{x := a + b * i\bound{x }\free{i }}
-\indentrel{3}\begin{verbatim}
-   (5)  a + b e
-               1
-Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty5}
-\begin{paste}{ugxCliffordComplexPageEmpty5}{ugxCliffordComplexPagePatch5}
-\pastebutton{ugxCliffordComplexPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{x := a + b * i\bound{x }\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch6}
-\begin{paste}{ugxCliffordComplexPageFull6}{ugxCliffordComplexPageEmpty6}
-\pastebutton{ugxCliffordComplexPageFull6}{\hidepaste}
-\tab{5}\spadcommand{y := c + d * i\bound{y }\free{i }}
-\indentrel{3}\begin{verbatim}
-   (6)  c + d e
-               1
-Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty6}
-\begin{paste}{ugxCliffordComplexPageEmpty6}{ugxCliffordComplexPagePatch6}
-\pastebutton{ugxCliffordComplexPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{y := c + d * i\bound{y }\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPagePatch7}
-\begin{paste}{ugxCliffordComplexPageFull7}{ugxCliffordComplexPageEmpty7}
-\pastebutton{ugxCliffordComplexPageFull7}{\hidepaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (7)  - b d + a c + (a d + b c)e
-                                  1
-Type: CliffordAlgebra(1,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordComplexPageEmpty7}
-\begin{paste}{ugxCliffordComplexPageEmpty7}{ugxCliffordComplexPagePatch7}
-\pastebutton{ugxCliffordComplexPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch1}
-\begin{paste}{ugxCliffordQuaternPageFull1}{ugxCliffordQuaternPageEmpty1}
-\pastebutton{ugxCliffordQuaternPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Polynomial Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty1}
-\begin{paste}{ugxCliffordQuaternPageEmpty1}{ugxCliffordQuaternPagePatch1}
-\pastebutton{ugxCliffordQuaternPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch2}
-\begin{paste}{ugxCliffordQuaternPageFull2}{ugxCliffordQuaternPageEmpty2}
-\pastebutton{ugxCliffordQuaternPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[-1,0],[0,-1]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú- 1   0 ¿
-   (2)  ³        ³
-        À 0   - 1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty2}
-\begin{paste}{ugxCliffordQuaternPageEmpty2}{ugxCliffordQuaternPagePatch2}
-\pastebutton{ugxCliffordQuaternPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[-1,0],[0,-1]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch3}
-\begin{paste}{ugxCliffordQuaternPageFull3}{ugxCliffordQuaternPageEmpty3}
-\pastebutton{ugxCliffordQuaternPageFull3}{\hidepaste}
-\tab{5}\spadcommand{H := CliffordAlgebra(2, K, quadraticForm m)\free{K m }\bound{H }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty3}
-\begin{paste}{ugxCliffordQuaternPageEmpty3}{ugxCliffordQuaternPagePatch3}
-\pastebutton{ugxCliffordQuaternPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{H := CliffordAlgebra(2, K, quadraticForm m)\free{K m }\bound{H }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch4}
-\begin{paste}{ugxCliffordQuaternPageFull4}{ugxCliffordQuaternPageEmpty4}
-\pastebutton{ugxCliffordQuaternPageFull4}{\hidepaste}
-\tab{5}\spadcommand{i: H := e(1)\free{H }\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (4)  e
-         1
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty4}
-\begin{paste}{ugxCliffordQuaternPageEmpty4}{ugxCliffordQuaternPagePatch4}
-\pastebutton{ugxCliffordQuaternPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{i: H := e(1)\free{H }\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch5}
-\begin{paste}{ugxCliffordQuaternPageFull5}{ugxCliffordQuaternPageEmpty5}
-\pastebutton{ugxCliffordQuaternPageFull5}{\hidepaste}
-\tab{5}\spadcommand{j: H := e(2)\free{H }\bound{j }}
-\indentrel{3}\begin{verbatim}
-   (5)  e
-         2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty5}
-\begin{paste}{ugxCliffordQuaternPageEmpty5}{ugxCliffordQuaternPagePatch5}
-\pastebutton{ugxCliffordQuaternPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{j: H := e(2)\free{H }\bound{j }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch6}
-\begin{paste}{ugxCliffordQuaternPageFull6}{ugxCliffordQuaternPageEmpty6}
-\pastebutton{ugxCliffordQuaternPageFull6}{\hidepaste}
-\tab{5}\spadcommand{k: H := i * j\free{H i j }\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (6)  e e
-         1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty6}
-\begin{paste}{ugxCliffordQuaternPageEmpty6}{ugxCliffordQuaternPagePatch6}
-\pastebutton{ugxCliffordQuaternPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{k: H := i * j\free{H i j }\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch7}
-\begin{paste}{ugxCliffordQuaternPageFull7}{ugxCliffordQuaternPageEmpty7}
-\pastebutton{ugxCliffordQuaternPageFull7}{\hidepaste}
-\tab{5}\spadcommand{x := a + b * i + c * j + d * k\free{i j k }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (7)  a + b e  + c e  + d e e
-               1      2      1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty7}
-\begin{paste}{ugxCliffordQuaternPageEmpty7}{ugxCliffordQuaternPagePatch7}
-\pastebutton{ugxCliffordQuaternPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{x := a + b * i + c * j + d * k\free{i j k }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch8}
-\begin{paste}{ugxCliffordQuaternPageFull8}{ugxCliffordQuaternPageEmpty8}
-\pastebutton{ugxCliffordQuaternPageFull8}{\hidepaste}
-\tab{5}\spadcommand{y := e + f * i + g * j + h * k\free{i j k }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (8)  e + f e  + g e  + h e e
-               1      2      1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty8}
-\begin{paste}{ugxCliffordQuaternPageEmpty8}{ugxCliffordQuaternPagePatch8}
-\pastebutton{ugxCliffordQuaternPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{y := e + f * i + g * j + h * k\free{i j k }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch9}
-\begin{paste}{ugxCliffordQuaternPageFull9}{ugxCliffordQuaternPageEmpty9}
-\pastebutton{ugxCliffordQuaternPageFull9}{\hidepaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (9)  e + a + (f + b)e  + (g + c)e  + (h + d)e e
-                        1           2           1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty9}
-\begin{paste}{ugxCliffordQuaternPageEmpty9}{ugxCliffordQuaternPagePatch9}
-\pastebutton{ugxCliffordQuaternPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch10}
-\begin{paste}{ugxCliffordQuaternPageFull10}{ugxCliffordQuaternPageEmpty10}
-\pastebutton{ugxCliffordQuaternPageFull10}{\hidepaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (10)
-     - d h - c g - b f + a e + (c h - d g + a f + b e)e
-                                                       1
-   + 
-     (- b h + a g + d f + c e)e
-                               2
-   + 
-     (a h + b g - c f + d e)e e
-                             1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty10}
-\begin{paste}{ugxCliffordQuaternPageEmpty10}{ugxCliffordQuaternPagePatch10}
-\pastebutton{ugxCliffordQuaternPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPagePatch11}
-\begin{paste}{ugxCliffordQuaternPageFull11}{ugxCliffordQuaternPageEmpty11}
-\pastebutton{ugxCliffordQuaternPageFull11}{\hidepaste}
-\tab{5}\spadcommand{y * x\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (11)
-     - d h - c g - b f + a e + (- c h + d g + a f + b e)e
-                                                         1
-   + 
-   (b h + a g - d f + c e)e  + (a h - b g + c f + d e)e e
-                           2                           1 2
-Type: CliffordAlgebra(2,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordQuaternPageEmpty11}
-\begin{paste}{ugxCliffordQuaternPageEmpty11}{ugxCliffordQuaternPagePatch11}
-\pastebutton{ugxCliffordQuaternPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{y * x\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch1}
-\begin{paste}{ugxCliffordExteriorPageFull1}{ugxCliffordExteriorPageEmpty1}
-\pastebutton{ugxCliffordExteriorPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Polynomial Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty1}
-\begin{paste}{ugxCliffordExteriorPageEmpty1}{ugxCliffordExteriorPagePatch1}
-\pastebutton{ugxCliffordExteriorPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := Fraction Polynomial Integer\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch2}
-\begin{paste}{ugxCliffordExteriorPageFull2}{ugxCliffordExteriorPageEmpty2}
-\pastebutton{ugxCliffordExteriorPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Ext := CliffordAlgebra(3, K, quadraticForm 0)\bound{Ext }\free{K }}
-\indentrel{3}\begin{verbatim}
-   (2)
-   CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty2}
-\begin{paste}{ugxCliffordExteriorPageEmpty2}{ugxCliffordExteriorPagePatch2}
-\pastebutton{ugxCliffordExteriorPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Ext := CliffordAlgebra(3, K, quadraticForm 0)\bound{Ext }\free{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch3}
-\begin{paste}{ugxCliffordExteriorPageFull3}{ugxCliffordExteriorPageEmpty3}
-\pastebutton{ugxCliffordExteriorPageFull3}{\hidepaste}
-\tab{5}\spadcommand{i: Ext := e(1)\free{Ext }\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (3)  e
-         1
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty3}
-\begin{paste}{ugxCliffordExteriorPageEmpty3}{ugxCliffordExteriorPagePatch3}
-\pastebutton{ugxCliffordExteriorPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i: Ext := e(1)\free{Ext }\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch4}
-\begin{paste}{ugxCliffordExteriorPageFull4}{ugxCliffordExteriorPageEmpty4}
-\pastebutton{ugxCliffordExteriorPageFull4}{\hidepaste}
-\tab{5}\spadcommand{j: Ext := e(2)\free{Ext }\bound{j }}
-\indentrel{3}\begin{verbatim}
-   (4)  e
-         2
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty4}
-\begin{paste}{ugxCliffordExteriorPageEmpty4}{ugxCliffordExteriorPagePatch4}
-\pastebutton{ugxCliffordExteriorPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{j: Ext := e(2)\free{Ext }\bound{j }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch5}
-\begin{paste}{ugxCliffordExteriorPageFull5}{ugxCliffordExteriorPageEmpty5}
-\pastebutton{ugxCliffordExteriorPageFull5}{\hidepaste}
-\tab{5}\spadcommand{k: Ext := e(3)\free{Ext }\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (5)  e
-         3
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty5}
-\begin{paste}{ugxCliffordExteriorPageEmpty5}{ugxCliffordExteriorPagePatch5}
-\pastebutton{ugxCliffordExteriorPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{k: Ext := e(3)\free{Ext }\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch6}
-\begin{paste}{ugxCliffordExteriorPageFull6}{ugxCliffordExteriorPageEmpty6}
-\pastebutton{ugxCliffordExteriorPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x := x1*i + x2*j + x3*k\free{i j k }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (6)  x1 e  + x2 e  + x3 e
-            1       2       3
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty6}
-\begin{paste}{ugxCliffordExteriorPageEmpty6}{ugxCliffordExteriorPagePatch6}
-\pastebutton{ugxCliffordExteriorPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x := x1*i + x2*j + x3*k\free{i j k }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch7}
-\begin{paste}{ugxCliffordExteriorPageFull7}{ugxCliffordExteriorPageEmpty7}
-\pastebutton{ugxCliffordExteriorPageFull7}{\hidepaste}
-\tab{5}\spadcommand{y := y1*i + y2*j + y3*k\free{i j k }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (7)  y1 e  + y2 e  + y3 e
-            1       2       3
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty7}
-\begin{paste}{ugxCliffordExteriorPageEmpty7}{ugxCliffordExteriorPagePatch7}
-\pastebutton{ugxCliffordExteriorPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y := y1*i + y2*j + y3*k\free{i j k }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch8}
-\begin{paste}{ugxCliffordExteriorPageFull8}{ugxCliffordExteriorPageEmpty8}
-\pastebutton{ugxCliffordExteriorPageFull8}{\hidepaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (8)  (y1 + x1)e  + (y2 + x2)e  + (y3 + x3)e
-                  1             2             3
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty8}
-\begin{paste}{ugxCliffordExteriorPageEmpty8}{ugxCliffordExteriorPagePatch8}
-\pastebutton{ugxCliffordExteriorPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch9}
-\begin{paste}{ugxCliffordExteriorPageFull9}{ugxCliffordExteriorPageEmpty9}
-\pastebutton{ugxCliffordExteriorPageFull9}{\hidepaste}
-\tab{5}\spadcommand{x * y + y * x\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty9}
-\begin{paste}{ugxCliffordExteriorPageEmpty9}{ugxCliffordExteriorPagePatch9}
-\pastebutton{ugxCliffordExteriorPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{x * y + y * x\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch10}
-\begin{paste}{ugxCliffordExteriorPageFull10}{ugxCliffordExteriorPageEmpty10}
-\pastebutton{ugxCliffordExteriorPageFull10}{\hidepaste}
-\tab{5}\spadcommand{dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k\free{i j k }\bound{dual2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty10}
-\begin{paste}{ugxCliffordExteriorPageEmpty10}{ugxCliffordExteriorPagePatch10}
-\pastebutton{ugxCliffordExteriorPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k\free{i j k }\bound{dual2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPagePatch11}
-\begin{paste}{ugxCliffordExteriorPageFull11}{ugxCliffordExteriorPageEmpty11}
-\pastebutton{ugxCliffordExteriorPageFull11}{\hidepaste}
-\tab{5}\spadcommand{dual2(x*y)\free{x y dual2 }}
-\indentrel{3}\begin{verbatim}
-   (11)
-     (x2 y3 - x3 y2)e  + (- x1 y3 + x3 y1)e
-                     1                     2
-   + 
-     (x1 y2 - x2 y1)e
-                     3
-Type: CliffordAlgebra(3,Fraction Polynomial Integer,MATRIX)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxCliffordExteriorPageEmpty11}
-\begin{paste}{ugxCliffordExteriorPageEmpty11}{ugxCliffordExteriorPagePatch11}
-\pastebutton{ugxCliffordExteriorPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{dual2(x*y)\free{x y dual2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/complex.pht b/books/pages/complex.pht
deleted file mode 100644
index e7c6974..0000000
--- a/books/pages/complex.pht
+++ /dev/null
@@ -1,277 +0,0 @@
-\begin{patch}{ComplexXmpPagePatch1}
-\begin{paste}{ComplexXmpPageFull1}{ComplexXmpPageEmpty1}
-\pastebutton{ComplexXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a := complex(4/3,5/2)\bound{a }}
-\indentrel{3}\begin{verbatim}
-        4   5
-   (1)  Ä + Ä %i
-        3   2
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty1}
-\begin{paste}{ComplexXmpPageEmpty1}{ComplexXmpPagePatch1}
-\pastebutton{ComplexXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a := complex(4/3,5/2)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch2}
-\begin{paste}{ComplexXmpPageFull2}{ComplexXmpPageEmpty2}
-\pastebutton{ComplexXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{b := complex(4/3,-5/2)\bound{b }}
-\indentrel{3}\begin{verbatim}
-        4   5
-   (2)  Ä - Ä %i
-        3   2
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty2}
-\begin{paste}{ComplexXmpPageEmpty2}{ComplexXmpPagePatch2}
-\pastebutton{ComplexXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{b := complex(4/3,-5/2)\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch3}
-\begin{paste}{ComplexXmpPageFull3}{ComplexXmpPageEmpty3}
-\pastebutton{ComplexXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{a + b\free{a b }}
-\indentrel{3}\begin{verbatim}
-        8
-   (3)  Ä
-        3
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty3}
-\begin{paste}{ComplexXmpPageEmpty3}{ComplexXmpPagePatch3}
-\pastebutton{ComplexXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a + b\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch4}
-\begin{paste}{ComplexXmpPageFull4}{ComplexXmpPageEmpty4}
-\pastebutton{ComplexXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{a - b\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (4)  5%i
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty4}
-\begin{paste}{ComplexXmpPageEmpty4}{ComplexXmpPagePatch4}
-\pastebutton{ComplexXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{a - b\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch5}
-\begin{paste}{ComplexXmpPageFull5}{ComplexXmpPageEmpty5}
-\pastebutton{ComplexXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a * b\free{a b }}
-\indentrel{3}\begin{verbatim}
-        289
-   (5)  ÄÄÄ
-         36
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty5}
-\begin{paste}{ComplexXmpPageEmpty5}{ComplexXmpPagePatch5}
-\pastebutton{ComplexXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a * b\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch6}
-\begin{paste}{ComplexXmpPageFull6}{ComplexXmpPageEmpty6}
-\pastebutton{ComplexXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{a / b\free{a b }\bound{adb }}
-\indentrel{3}\begin{verbatim}
-          161   240
-   (6)  - ÄÄÄ + ÄÄÄ %i
-          289   289
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty6}
-\begin{paste}{ComplexXmpPageEmpty6}{ComplexXmpPagePatch6}
-\pastebutton{ComplexXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{a / b\free{a b }\bound{adb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch7}
-\begin{paste}{ComplexXmpPageFull7}{ComplexXmpPageEmpty7}
-\pastebutton{ComplexXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{adb }}
-\indentrel{3}\begin{verbatim}
-        - 15 + 8%i
-   (7)  ÄÄÄÄÄÄÄÄÄÄ
-         15 + 8%i
-                         Type: Fraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty7}
-\begin{paste}{ComplexXmpPageEmpty7}{ComplexXmpPagePatch7}
-\pastebutton{ComplexXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{adb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch8}
-\begin{paste}{ComplexXmpPageFull8}{ComplexXmpPageEmpty8}
-\pastebutton{ComplexXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{3.4 + 6.7 * \%i}
-\indentrel{3}\begin{verbatim}
-   (8)  3.4 + 6.7 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty8}
-\begin{paste}{ComplexXmpPageEmpty8}{ComplexXmpPagePatch8}
-\pastebutton{ComplexXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{3.4 + 6.7 * \%i}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch9}
-\begin{paste}{ComplexXmpPageFull9}{ComplexXmpPageEmpty9}
-\pastebutton{ComplexXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{conjugate a\free{a }}
-\indentrel{3}\begin{verbatim}
-        4   5
-   (9)  Ä - Ä %i
-        3   2
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty9}
-\begin{paste}{ComplexXmpPageEmpty9}{ComplexXmpPagePatch9}
-\pastebutton{ComplexXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{conjugate a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch10}
-\begin{paste}{ComplexXmpPageFull10}{ComplexXmpPageEmpty10}
-\pastebutton{ComplexXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{norm a\free{a }}
-\indentrel{3}\begin{verbatim}
-         289
-   (10)  ÄÄÄ
-          36
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty10}
-\begin{paste}{ComplexXmpPageEmpty10}{ComplexXmpPagePatch10}
-\pastebutton{ComplexXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{norm a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch11}
-\begin{paste}{ComplexXmpPageFull11}{ComplexXmpPageEmpty11}
-\pastebutton{ComplexXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{real a\free{a }}
-\indentrel{3}\begin{verbatim}
-         4
-   (11)  Ä
-         3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty11}
-\begin{paste}{ComplexXmpPageEmpty11}{ComplexXmpPagePatch11}
-\pastebutton{ComplexXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{real a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch12}
-\begin{paste}{ComplexXmpPageFull12}{ComplexXmpPageEmpty12}
-\pastebutton{ComplexXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{imag a\free{a }}
-\indentrel{3}\begin{verbatim}
-         5
-   (12)  Ä
-         2
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty12}
-\begin{paste}{ComplexXmpPageEmpty12}{ComplexXmpPagePatch12}
-\pastebutton{ComplexXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{imag a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch13}
-\begin{paste}{ComplexXmpPageFull13}{ComplexXmpPageEmpty13}
-\pastebutton{ComplexXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{gcd(13 - 13*\%i,31 + 27*\%i)}
-\indentrel{3}\begin{verbatim}
-   (13)  5 + %i
-                                  Type: Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty13}
-\begin{paste}{ComplexXmpPageEmpty13}{ComplexXmpPagePatch13}
-\pastebutton{ComplexXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{gcd(13 - 13*\%i,31 + 27*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch14}
-\begin{paste}{ComplexXmpPageFull14}{ComplexXmpPageEmpty14}
-\pastebutton{ComplexXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lcm(13 - 13*\%i,31 + 27*\%i)}
-\indentrel{3}\begin{verbatim}
-   (14)  143 - 39%i
-                                  Type: Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty14}
-\begin{paste}{ComplexXmpPageEmpty14}{ComplexXmpPagePatch14}
-\pastebutton{ComplexXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lcm(13 - 13*\%i,31 + 27*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch15}
-\begin{paste}{ComplexXmpPageFull15}{ComplexXmpPageEmpty15}
-\pastebutton{ComplexXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{factor(13 - 13*\%i)}
-\indentrel{3}\begin{verbatim}
-   (15)  - (1 + %i)(2 + 3%i)(3 + 2%i)
-                         Type: Factored Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty15}
-\begin{paste}{ComplexXmpPageEmpty15}{ComplexXmpPagePatch15}
-\pastebutton{ComplexXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{factor(13 - 13*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPagePatch16}
-\begin{paste}{ComplexXmpPageFull16}{ComplexXmpPageEmpty16}
-\pastebutton{ComplexXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{factor complex(2,0)}
-\indentrel{3}\begin{verbatim}
-                      2
-   (16)  - %i (1 + %i)
-                         Type: Factored Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ComplexXmpPageEmpty16}
-\begin{paste}{ComplexXmpPageEmpty16}{ComplexXmpPagePatch16}
-\pastebutton{ComplexXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{factor complex(2,0)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/contfrac.pht b/books/pages/contfrac.pht
deleted file mode 100644
index fb95eff..0000000
--- a/books/pages/contfrac.pht
+++ /dev/null
@@ -1,437 +0,0 @@
-\begin{patch}{ContinuedFractionXmpPagePatch1}
-\begin{paste}{ContinuedFractionXmpPageFull1}{ContinuedFractionXmpPageEmpty1}
-\pastebutton{ContinuedFractionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{c := continuedFraction(314159/100000)\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (1)
-           1 ³     1  ³     1 ³     1  ³     1 ³     1 ³
-     3 + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
-         ³ 7     ³ 15     ³ 1     ³ 25     ³ 1     ³ 7
-   + 
-       1 ³
-     ÚÄÄÄÙ
-     ³ 4
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty1}
-\begin{paste}{ContinuedFractionXmpPageEmpty1}{ContinuedFractionXmpPagePatch1}
-\pastebutton{ContinuedFractionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{c := continuedFraction(314159/100000)\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch2}
-\begin{paste}{ContinuedFractionXmpPageFull2}{ContinuedFractionXmpPageEmpty2}
-\pastebutton{ContinuedFractionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{partialQuotients c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (2)  [3,7,15,1,25,1,7,4]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty2}
-\begin{paste}{ContinuedFractionXmpPageEmpty2}{ContinuedFractionXmpPagePatch2}
-\pastebutton{ContinuedFractionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{partialQuotients c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch3}
-\begin{paste}{ContinuedFractionXmpPageFull3}{ContinuedFractionXmpPageEmpty3}
-\pastebutton{ContinuedFractionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{convergents c\free{c }}
-\indentrel{3}\begin{verbatim}
-           22 333 355 9208 9563 76149 314159
-   (3)  [3,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ]
-            7 106 113 2931 3044 24239 100000
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty3}
-\begin{paste}{ContinuedFractionXmpPageEmpty3}{ContinuedFractionXmpPagePatch3}
-\pastebutton{ContinuedFractionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{convergents c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch4}
-\begin{paste}{ContinuedFractionXmpPageFull4}{ContinuedFractionXmpPageEmpty4}
-\pastebutton{ContinuedFractionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{approximants c\free{c }}
-\indentrel{3}\begin{verbatim}
-                                      ______
-           22 333 355 9208 9563 76149 314159
-   (4)  [3,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ]
-            7 106 113 2931 3044 24239 100000
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty4}
-\begin{paste}{ContinuedFractionXmpPageEmpty4}{ContinuedFractionXmpPagePatch4}
-\pastebutton{ContinuedFractionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{approximants c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch5}
-\begin{paste}{ContinuedFractionXmpPageFull5}{ContinuedFractionXmpPageEmpty5}
-\pastebutton{ContinuedFractionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{pq := partialQuotients(1/c)\free{c }\bound{pq }}
-\indentrel{3}\begin{verbatim}
-   (5)  [0,3,7,15,1,25,1,7,4]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty5}
-\begin{paste}{ContinuedFractionXmpPageEmpty5}{ContinuedFractionXmpPagePatch5}
-\pastebutton{ContinuedFractionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{pq := partialQuotients(1/c)\free{c }\bound{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch6}
-\begin{paste}{ContinuedFractionXmpPageFull6}{ContinuedFractionXmpPageEmpty6}
-\pastebutton{ContinuedFractionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{continuedFraction(first pq,repeating [1],rest pq)\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (6)
-       1 ³     1 ³     1  ³     1 ³     1  ³     1 ³
-     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÙ
-     ³ 3     ³ 7     ³ 15     ³ 1     ³ 25     ³ 1
-   + 
-       1 ³     1 ³
-     ÚÄÄÄÙ + ÚÄÄÄÙ
-     ³ 7     ³ 4
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty6}
-\begin{paste}{ContinuedFractionXmpPageEmpty6}{ContinuedFractionXmpPagePatch6}
-\pastebutton{ContinuedFractionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{continuedFraction(first pq,repeating [1],rest pq)\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch7}
-\begin{paste}{ContinuedFractionXmpPageFull7}{ContinuedFractionXmpPageEmpty7}
-\pastebutton{ContinuedFractionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{z:=continuedFraction(3,repeating [1],repeating [3,6])\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (7)
-           1 ³     1 ³     1 ³     1 ³     1 ³     1 ³
-     3 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
-         ³ 3     ³ 6     ³ 3     ³ 6     ³ 3     ³ 6
-   + 
-       1 ³     1 ³     1 ³     1 ³
-     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ...
-     ³ 3     ³ 6     ³ 3     ³ 6
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty7}
-\begin{paste}{ContinuedFractionXmpPageEmpty7}{ContinuedFractionXmpPagePatch7}
-\pastebutton{ContinuedFractionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{z:=continuedFraction(3,repeating [1],repeating [3,6])\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch8}
-\begin{paste}{ContinuedFractionXmpPageFull8}{ContinuedFractionXmpPageEmpty8}
-\pastebutton{ContinuedFractionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{dens:Stream Integer := cons(1,generate((x+->x+4),6))\bound{dens }}
-\indentrel{3}\begin{verbatim}
-   (8)  [1,6,10,14,18,22,26,30,34,38,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty8}
-\begin{paste}{ContinuedFractionXmpPageEmpty8}{ContinuedFractionXmpPagePatch8}
-\pastebutton{ContinuedFractionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{dens:Stream Integer := cons(1,generate((x+->x+4),6))\bound{dens }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch9}
-\begin{paste}{ContinuedFractionXmpPageFull9}{ContinuedFractionXmpPageEmpty9}
-\pastebutton{ContinuedFractionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{cf := continuedFraction(0,repeating [1],dens)\free{dens }\bound{cf }}
-\indentrel{3}\begin{verbatim}
-   (9)
-       1 ³     1 ³     1  ³     1  ³     1  ³     1  ³
-     ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ
-     ³ 1     ³ 6     ³ 10     ³ 14     ³ 18     ³ 22
-   + 
-       1  ³     1  ³     1  ³     1  ³
-     ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ...
-     ³ 26     ³ 30     ³ 34     ³ 38
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty9}
-\begin{paste}{ContinuedFractionXmpPageEmpty9}{ContinuedFractionXmpPagePatch9}
-\pastebutton{ContinuedFractionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{cf := continuedFraction(0,repeating [1],dens)\free{dens }\bound{cf }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch10}
-\begin{paste}{ContinuedFractionXmpPageFull10}{ContinuedFractionXmpPageEmpty10}
-\pastebutton{ContinuedFractionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{ccf := convergents cf\free{cf }\bound{ccf }}
-\indentrel{3}\begin{verbatim}
-   (10)
-          6  61   860  15541  342762   8927353
-   [0, 1, Ä, ÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄ,
-          7  71  1001  18089  398959  10391023
-    268163352   9126481321
-    ÄÄÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄÄÄÄ, ...]
-    312129649  10622799089
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty10}
-\begin{paste}{ContinuedFractionXmpPageEmpty10}{ContinuedFractionXmpPagePatch10}
-\pastebutton{ContinuedFractionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{ccf := convergents cf\free{cf }\bound{ccf }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch11}
-\begin{paste}{ContinuedFractionXmpPageFull11}{ContinuedFractionXmpPageEmpty11}
-\pastebutton{ContinuedFractionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{eConvergents := [2*e + 1 for e in ccf]\bound{ec }\free{ccf }}
-\indentrel{3}\begin{verbatim}
-   (11)
-          19  193  2721  49171  1084483  28245729
-   [1, 3, ÄÄ, ÄÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄ,
-           7   71  1001  18089   398959  10391023
-    848456353  28875761731
-    ÄÄÄÄÄÄÄÄÄ, ÄÄÄÄÄÄÄÄÄÄÄ, ...]
-    312129649  10622799089
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty11}
-\begin{paste}{ContinuedFractionXmpPageEmpty11}{ContinuedFractionXmpPagePatch11}
-\pastebutton{ContinuedFractionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{eConvergents := [2*e + 1 for e in ccf]\bound{ec }\free{ccf }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch12}
-\begin{paste}{ContinuedFractionXmpPageFull12}{ContinuedFractionXmpPageEmpty12}
-\pastebutton{ContinuedFractionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{eConvergents :: Stream Float\free{ec }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [1.0, 3.0, 2.7142857142 857142857,
-    2.7183098591 549295775, 2.7182817182 817182817,
-    2.7182818287 356957267, 2.7182818284 585634113,
-    2.7182818284 590458514, 2.7182818284 590452348,
-    2.7182818284 590452354, ...]
-                                     Type: Stream Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty12}
-\begin{paste}{ContinuedFractionXmpPageEmpty12}{ContinuedFractionXmpPagePatch12}
-\pastebutton{ContinuedFractionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{eConvergents :: Stream Float\free{ec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch13}
-\begin{paste}{ContinuedFractionXmpPageFull13}{ContinuedFractionXmpPageEmpty13}
-\pastebutton{ContinuedFractionXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{exp 1.0}
-\indentrel{3}\begin{verbatim}
-   (13)  2.7182818284 590452354
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty13}
-\begin{paste}{ContinuedFractionXmpPageEmpty13}{ContinuedFractionXmpPagePatch13}
-\pastebutton{ContinuedFractionXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{exp 1.0}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch14}
-\begin{paste}{ContinuedFractionXmpPageFull14}{ContinuedFractionXmpPageEmpty14}
-\pastebutton{ContinuedFractionXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])\bound{cf1 }}
-\indentrel{3}\begin{verbatim}
-   (14)
-           1 ³     9 ³     25 ³     49 ³     81 ³
-     1 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ + ÚÄÄÄÄÙ
-         ³ 2     ³ 2     ³ 2      ³ 2      ³ 2
-   + 
-     121 ³     169 ³     225 ³     289 ³     361 ³
-   ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ÚÄÄÄÄÄÙ + ...
-   ³  2      ³  2      ³  2      ³  2      ³  2
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty14}
-\begin{paste}{ContinuedFractionXmpPageEmpty14}{ContinuedFractionXmpPagePatch14}
-\pastebutton{ContinuedFractionXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])\bound{cf1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch15}
-\begin{paste}{ContinuedFractionXmpPageFull15}{ContinuedFractionXmpPageEmpty15}
-\pastebutton{ContinuedFractionXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{ccf := convergents cf\free{cf1 }\bound{ccf1 }}
-\indentrel{3}\begin{verbatim}
-   (15)
-      3 15 105 315 3465 45045 45045 765765 14549535
-   [1,Ä,ÄÄ,ÄÄÄ,ÄÄÄ,ÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄ,...]
-      2 13  76 263 2578 36979 33976 622637 11064338
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty15}
-\begin{paste}{ContinuedFractionXmpPageEmpty15}{ContinuedFractionXmpPagePatch15}
-\pastebutton{ContinuedFractionXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{ccf := convergents cf\free{cf1 }\bound{ccf1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch16}
-\begin{paste}{ContinuedFractionXmpPageFull16}{ContinuedFractionXmpPageEmpty16}
-\pastebutton{ContinuedFractionXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{piConvergents := [4/p for p in ccf]\bound{piConvergents }\free{ccf1 }}
-\indentrel{3}\begin{verbatim}
-   (16)
-       8  52  304  1052  10312  147916  135904  2490548
-   [4, Ä, ÄÄ, ÄÄÄ, ÄÄÄÄ, ÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄ, ÄÄÄÄÄÄÄ,
-       3  15  105   315   3465   45045   45045   765765
-    44257352
-    ÄÄÄÄÄÄÄÄ, ...]
-    14549535
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty16}
-\begin{paste}{ContinuedFractionXmpPageEmpty16}{ContinuedFractionXmpPagePatch16}
-\pastebutton{ContinuedFractionXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{piConvergents := [4/p for p in ccf]\bound{piConvergents }\free{ccf1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch17}
-\begin{paste}{ContinuedFractionXmpPageFull17}{ContinuedFractionXmpPageEmpty17}
-\pastebutton{ContinuedFractionXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{piConvergents :: Stream Float\free{piConvergents }}
-\indentrel{3}\begin{verbatim}
-   (17)
-   [4.0, 2.6666666666 666666667, 3.4666666666 666666667,
-    2.8952380952 380952381, 3.3396825396 825396825,
-    2.9760461760 461760462, 3.2837384837 384837385,
-    3.0170718170 718170718, 3.2523659347 188758953,
-    3.0418396189 294022111, ...]
-                                     Type: Stream Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty17}
-\begin{paste}{ContinuedFractionXmpPageEmpty17}{ContinuedFractionXmpPagePatch17}
-\pastebutton{ContinuedFractionXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{piConvergents :: Stream Float\free{piConvergents }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch18}
-\begin{paste}{ContinuedFractionXmpPageFull18}{ContinuedFractionXmpPageEmpty18}
-\pastebutton{ContinuedFractionXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{continuedFraction((- 122 + 597*\%i)/(4 - 4*\%i))}
-\indentrel{3}\begin{verbatim}
-                            1    ³         1     ³
-   (18)  - 90 + 59%i + ÚÄÄÄÄÄÄÄÄÄÙ + ÚÄÄÄÄÄÄÄÄÄÄÄÙ
-                       ³ 1 - 2%i     ³ - 1 + 2%i
-                Type: ContinuedFraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty18}
-\begin{paste}{ContinuedFractionXmpPageEmpty18}{ContinuedFractionXmpPagePatch18}
-\pastebutton{ContinuedFractionXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{continuedFraction((- 122 + 597*\%i)/(4 - 4*\%i))}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch19}
-\begin{paste}{ContinuedFractionXmpPageFull19}{ContinuedFractionXmpPageEmpty19}
-\pastebutton{ContinuedFractionXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{r : Fraction UnivariatePolynomial(x,Fraction Integer)\bound{rdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty19}
-\begin{paste}{ContinuedFractionXmpPageEmpty19}{ContinuedFractionXmpPagePatch19}
-\pastebutton{ContinuedFractionXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{r : Fraction UnivariatePolynomial(x,Fraction Integer)\bound{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch20}
-\begin{paste}{ContinuedFractionXmpPageFull20}{ContinuedFractionXmpPageEmpty20}
-\pastebutton{ContinuedFractionXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))\free{rdec }\bound{r }}
-\indentrel{3}\begin{verbatim}
-           2
-          x  - 3x + 2
-   (20)  ÄÄÄÄÄÄÄÄÄÄÄÄ
-          2
-         x  - 7x + 12
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty20}
-\begin{paste}{ContinuedFractionXmpPageEmpty20}{ContinuedFractionXmpPagePatch20}
-\pastebutton{ContinuedFractionXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))\free{rdec }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch21}
-\begin{paste}{ContinuedFractionXmpPageFull21}{ContinuedFractionXmpPageEmpty21}
-\pastebutton{ContinuedFractionXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{continuedFraction r\free{r }}
-\indentrel{3}\begin{verbatim}
-                  1    ³         1     ³
-   (21)  1 + ÚÄÄÄÄÄÄÄÄÄÙ + ÚÄÄÄÄÄÄÄÄÄÄÄÙ
-             ³ 1     9     ³ 16     40
-             ³ Ä x - Ä     ³ ÄÄ x - ÄÄ
-             ³ 4     8     ³  3      3
-Type: ContinuedFraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty21}
-\begin{paste}{ContinuedFractionXmpPageEmpty21}{ContinuedFractionXmpPagePatch21}
-\pastebutton{ContinuedFractionXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{continuedFraction r\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPagePatch22}
-\begin{paste}{ContinuedFractionXmpPageFull22}{ContinuedFractionXmpPageEmpty22}
-\pastebutton{ContinuedFractionXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{[i*i for i in convergents(z) :: Stream Float]\free{z }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [9.0, 11.1111111111 11111111, 10.9944598337 9501385,
-    11.0002777777 77777778, 10.9999860763 98799786,
-    11.0000006979 29731039, 10.9999999650 15834446,
-    11.0000000017 53603304, 10.9999999999 12099531,
-    11.0000000000 04406066, ...]
-                                     Type: Stream Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ContinuedFractionXmpPageEmpty22}
-\begin{paste}{ContinuedFractionXmpPageEmpty22}{ContinuedFractionXmpPagePatch22}
-\pastebutton{ContinuedFractionXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{[i*i for i in convergents(z) :: Stream Float]\free{z }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/coverex.pht b/books/pages/coverex.pht
deleted file mode 100644
index b719826..0000000
--- a/books/pages/coverex.pht
+++ /dev/null
@@ -1,1748 +0,0 @@
-\begin{patch}{MenuexdiffPatch1}
-\begin{paste}{MenuexdiffFull1}{MenuexdiffEmpty1}
-\pastebutton{MenuexdiffFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
-\indentrel{3}\begin{verbatim}
-              2                  2
-             x                  x
-   (1)  2x %e  sin(x) + cos(x)%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty1}
-\begin{paste}{MenuexdiffEmpty1}{MenuexdiffPatch1}
-\pastebutton{MenuexdiffEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch2}
-\begin{paste}{MenuexdiffFull2}{MenuexdiffEmpty2}
-\pastebutton{MenuexdiffFull2}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
-\indentrel{3}\begin{verbatim}
-                         2    2
-        (- 2x sin(x) + (y  + x )cos(x))tan(y)
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                    4     2 2    4
-                   y  + 2x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty2}
-\begin{paste}{MenuexdiffEmpty2}{MenuexdiffPatch2}
-\pastebutton{MenuexdiffEmpty2}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch3}
-\begin{paste}{MenuexdiffFull3}{MenuexdiffEmpty3}
-\pastebutton{MenuexdiffFull3}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
-\indentrel{3}\begin{verbatim}
-   (3)
-         2    2             2
-       (y  + x )sin(x)tan(y)  - 2y sin(x)tan(y)
-     + 
-         2    2
-       (y  + x )sin(x)
-  /
-      4     2 2    4
-     y  + 2x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty3}
-\begin{paste}{MenuexdiffEmpty3}{MenuexdiffPatch3}
-\pastebutton{MenuexdiffEmpty3}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch4}
-\begin{paste}{MenuexdiffFull4}{MenuexdiffEmpty4}
-\pastebutton{MenuexdiffFull4}{\hidepaste}
-\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
-\indentrel{3}\begin{verbatim}
-                             2
-            4      2        x
-   (4)  (16x  + 48x  + 12)%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty4}
-\begin{paste}{MenuexdiffEmpty4}{MenuexdiffPatch4}
-\pastebutton{MenuexdiffEmpty4}{\showpaste}
-\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch5}
-\begin{paste}{MenuexdiffFull5}{MenuexdiffEmpty5}
-\pastebutton{MenuexdiffFull5}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
-\indentrel{3}\begin{verbatim}
-                           3     2
-        8x y sin(x) + (- 2y  - 2x y)cos(x)
-   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               6     2 4     4 2    6
-              y  + 3x y  + 3x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty5}
-\begin{paste}{MenuexdiffEmpty5}{MenuexdiffPatch5}
-\pastebutton{MenuexdiffEmpty5}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch6}
-\begin{paste}{MenuexdiffFull6}{MenuexdiffEmpty6}
-\pastebutton{MenuexdiffFull6}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
-\indentrel{3}\begin{verbatim}
-   (6)
-           2     3             4     2 2     4
-   (- 40x y  + 8x )sin(x) + (6y  + 4x y  - 2x )cos(x)
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              8     2 6     4 4     6 2    8
-             y  + 4x y  + 6x y  + 4x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty6}
-\begin{paste}{MenuexdiffEmpty6}{MenuexdiffPatch6}
-\pastebutton{MenuexdiffEmpty6}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch7}
-\begin{paste}{MenuexdiffFull7}{MenuexdiffEmpty7}
-\pastebutton{MenuexdiffFull7}{\hidepaste}
-\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
-\indentrel{3}\begin{verbatim}
-                    4      3
-            (- 84x y  + 24x y)sin(z)
-   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         12     2 9     4 6     6 3    8
-        y   + 4x y  + 6x y  + 4x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty7}
-\begin{paste}{MenuexdiffEmpty7}{MenuexdiffPatch7}
-\pastebutton{MenuexdiffEmpty7}{\showpaste}
-\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch8}
-\begin{paste}{MenuexdiffFull8}{MenuexdiffEmpty8}
-\pastebutton{MenuexdiffFull8}{\hidepaste}
-\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
-\indentrel{3}\begin{verbatim}
-           t  ÚÄÄÄÄÄÄÄ¿
-         Ú¿   ³  3
-   (8)   ³   \³%N  + 1 d%N
-        ÀÙ
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty8}
-\begin{paste}{MenuexdiffEmpty8}{MenuexdiffPatch8}
-\pastebutton{MenuexdiffEmpty8}{\showpaste}
-\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch9}
-\begin{paste}{MenuexdiffFull9}{MenuexdiffEmpty9}
-\pastebutton{MenuexdiffFull9}{\hidepaste}
-\tab{5}\spadcommand{differentiate(f,t)\free{f }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄ¿
-         ³ 3
-   (9)  \³t  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty9}
-\begin{paste}{MenuexdiffEmpty9}{MenuexdiffPatch9}
-\pastebutton{MenuexdiffEmpty9}{\showpaste}
-\tab{5}\spadcommand{differentiate(f,t)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffPatch10}
-\begin{paste}{MenuexdiffFull10}{MenuexdiffEmpty10}
-\pastebutton{MenuexdiffFull10}{\hidepaste}
-\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
-\indentrel{3}\begin{verbatim}
-              t  ÚÄÄÄÄÄÄÄ¿          ÚÄÄÄÄÄÄ¿
-            Ú¿   ³  3             2 ³ 3
-   (10)  2t ³   \³%N  + 1 d%N  + t \³t  + 1
-           ÀÙ
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexdiffEmpty10}
-\begin{paste}{MenuexdiffEmpty10}{MenuexdiffPatch10}
-\pastebutton{MenuexdiffEmpty10}{\showpaste}
-\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch1}
-\begin{paste}{MenuexlimitFull1}{MenuexlimitEmpty1}
-\pastebutton{MenuexlimitFull1}{\hidepaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\indentrel{3}\begin{verbatim}
-          1
-   (1)  - Ä
-          2
-Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty1}
-\begin{paste}{MenuexlimitEmpty1}{MenuexlimitPatch1}
-\pastebutton{MenuexlimitEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch2}
-\begin{paste}{MenuexlimitFull2}{MenuexlimitEmpty2}
-\pastebutton{MenuexlimitFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-        a
-   (2)  Ä
-        b
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty2}
-\begin{paste}{MenuexlimitEmpty2}{MenuexlimitPatch2}
-\pastebutton{MenuexlimitEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch3}
-\begin{paste}{MenuexlimitFull3}{MenuexlimitEmpty3}
-\pastebutton{MenuexlimitFull3}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\indentrel{3}\begin{verbatim}
-   (3)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty3}
-\begin{paste}{MenuexlimitEmpty3}{MenuexlimitPatch3}
-\pastebutton{MenuexlimitEmpty3}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch4}
-\begin{paste}{MenuexlimitFull4}{MenuexlimitEmpty4}
-\pastebutton{MenuexlimitFull4}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (4)  [leftHandLimit= "failed",rightHandLimit= 0]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty4}
-\begin{paste}{MenuexlimitEmpty4}{MenuexlimitPatch4}
-\pastebutton{MenuexlimitEmpty4}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch5}
-\begin{paste}{MenuexlimitFull5}{MenuexlimitEmpty5}
-\pastebutton{MenuexlimitFull5}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\indentrel{3}\begin{verbatim}
-   (5)  [leftHandLimit= - 1,rightHandLimit= 1]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty5}
-\begin{paste}{MenuexlimitEmpty5}{MenuexlimitPatch5}
-\pastebutton{MenuexlimitEmpty5}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch6}
-\begin{paste}{MenuexlimitFull6}{MenuexlimitEmpty6}
-\pastebutton{MenuexlimitFull6}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\indentrel{3}\begin{verbatim}
-                            1                    1
-   (6)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
-                           ÚÄ¿                  ÚÄ¿
-                          \³2                  \³2
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty6}
-\begin{paste}{MenuexlimitEmpty6}{MenuexlimitPatch6}
-\pastebutton{MenuexlimitEmpty6}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch7}
-\begin{paste}{MenuexlimitFull7}{MenuexlimitEmpty7}
-\pastebutton{MenuexlimitFull7}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-         ÚÄ¿
-        \³3
-   (7)  ÄÄÄÄ
-          5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty7}
-\begin{paste}{MenuexlimitEmpty7}{MenuexlimitPatch7}
-\pastebutton{MenuexlimitEmpty7}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch8}
-\begin{paste}{MenuexlimitFull8}{MenuexlimitEmpty8}
-\pastebutton{MenuexlimitFull8}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\indentrel{3}\begin{verbatim}
-           ÚÄ¿
-          \³3
-   (8)  - ÄÄÄÄ
-            5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty8}
-\begin{paste}{MenuexlimitEmpty8}{MenuexlimitPatch8}
-\pastebutton{MenuexlimitEmpty8}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch9}
-\begin{paste}{MenuexlimitFull9}{MenuexlimitEmpty9}
-\pastebutton{MenuexlimitFull9}{\hidepaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty9}
-\begin{paste}{MenuexlimitEmpty9}{MenuexlimitPatch9}
-\pastebutton{MenuexlimitEmpty9}{\showpaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch10}
-\begin{paste}{MenuexlimitFull10}{MenuexlimitEmpty10}
-\pastebutton{MenuexlimitFull10}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (10)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty10}
-\begin{paste}{MenuexlimitEmpty10}{MenuexlimitPatch10}
-\pastebutton{MenuexlimitEmpty10}{\showpaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch11}
-\begin{paste}{MenuexlimitFull11}{MenuexlimitEmpty11}
-\pastebutton{MenuexlimitFull11}{\hidepaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (11)  - 1
-   Type: OnePointCompletion Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty11}
-\begin{paste}{MenuexlimitEmpty11}{MenuexlimitPatch11}
-\pastebutton{MenuexlimitEmpty11}{\showpaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch12}
-\begin{paste}{MenuexlimitFull12}{MenuexlimitEmpty12}
-\pastebutton{MenuexlimitFull12}{\hidepaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-   (12)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty12}
-\begin{paste}{MenuexlimitEmpty12}{MenuexlimitPatch12}
-\pastebutton{MenuexlimitEmpty12}{\showpaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitPatch13}
-\begin{paste}{MenuexlimitFull13}{MenuexlimitEmpty13}
-\pastebutton{MenuexlimitFull13}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (13)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlimitEmpty13}
-\begin{paste}{MenuexlimitEmpty13}{MenuexlimitPatch13}
-\pastebutton{MenuexlimitEmpty13}{\showpaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dPatch1}
-\begin{paste}{Menuexplot2dFull1}{Menuexplot2dEmpty1}
-\pastebutton{Menuexplot2dFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d1}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dEmpty1}
-\begin{paste}{Menuexplot2dEmpty1}{Menuexplot2dPatch1}
-\pastebutton{Menuexplot2dEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dPatch2}
-\begin{paste}{Menuexplot2dFull2}{Menuexplot2dEmpty2}
-\pastebutton{Menuexplot2dFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d2}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dEmpty2}
-\begin{paste}{Menuexplot2dEmpty2}{Menuexplot2dPatch2}
-\pastebutton{Menuexplot2dEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dPatch3}
-\begin{paste}{Menuexplot2dFull3}{Menuexplot2dEmpty3}
-\pastebutton{Menuexplot2dFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d3}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dEmpty3}
-\begin{paste}{Menuexplot2dEmpty3}{Menuexplot2dPatch3}
-\pastebutton{Menuexplot2dEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dPatch4}
-\begin{paste}{Menuexplot2dFull4}{Menuexplot2dEmpty4}
-\pastebutton{Menuexplot2dFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot2d4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot2d4}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot2dEmpty4}
-\begin{paste}{Menuexplot2dEmpty4}{Menuexplot2dPatch4}
-\pastebutton{Menuexplot2dEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dPatch1}
-\begin{paste}{Menuexplot3dFull1}{Menuexplot3dEmpty1}
-\pastebutton{Menuexplot3dFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d1}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dEmpty1}
-\begin{paste}{Menuexplot3dEmpty1}{Menuexplot3dPatch1}
-\pastebutton{Menuexplot3dEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dPatch2}
-\begin{paste}{Menuexplot3dFull2}{Menuexplot3dEmpty2}
-\pastebutton{Menuexplot3dFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d2}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dEmpty2}
-\begin{paste}{Menuexplot3dEmpty2}{Menuexplot3dPatch2}
-\pastebutton{Menuexplot3dEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dPatch3}
-\begin{paste}{Menuexplot3dFull3}{Menuexplot3dEmpty3}
-\pastebutton{Menuexplot3dFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d3}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dEmpty3}
-\begin{paste}{Menuexplot3dEmpty3}{Menuexplot3dPatch3}
-\pastebutton{Menuexplot3dEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dPatch4}
-\begin{paste}{Menuexplot3dFull4}{Menuexplot3dEmpty4}
-\pastebutton{Menuexplot3dFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d4}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dEmpty4}
-\begin{paste}{Menuexplot3dEmpty4}{Menuexplot3dPatch4}
-\pastebutton{Menuexplot3dEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dPatch5}
-\begin{paste}{Menuexplot3dFull5}{Menuexplot3dEmpty5}
-\pastebutton{Menuexplot3dFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/menuexplot3d5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/menuexplot3d5}}
-\end{paste}\end{patch}
-
-\begin{patch}{Menuexplot3dEmpty5}
-\begin{paste}{Menuexplot3dEmpty5}{Menuexplot3dPatch5}
-\pastebutton{Menuexplot3dEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch1}
-\begin{paste}{MenuexseriesFull1}{MenuexseriesEmpty1}
-\pastebutton{MenuexseriesFull1}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)
-            3        5        7          9
-           a   3    a   5    a    7     a     9
-     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-            6      120      5040      362880
-   + 
-           11
-          a      11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty1}
-\begin{paste}{MenuexseriesEmpty1}{MenuexseriesPatch1}
-\pastebutton{MenuexseriesEmpty1}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch2}
-\begin{paste}{MenuexseriesFull2}{MenuexseriesEmpty2}
-\pastebutton{MenuexseriesFull2}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
-\indentrel{3}\begin{verbatim}
-   (2)
-         %pi x          %pi x      %pi
-     sin(ÄÄÄÄÄ) + x cos(ÄÄÄÄÄ)(a - ÄÄÄ)
-           4              4         4
-   + 
-        2    %pi x                3    %pi x
-       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-               4         %pi 2           4         %pi 3
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-             2            4            6            4
-   + 
-      4    %pi x                5    %pi x
-     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-             4         %pi 4           4         %pi 5
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-          24            4           120           4
-   + 
-        6    %pi x                7    %pi x
-       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-               4         %pi 6           4         %pi 7
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-            720           4          5040           4
-   + 
-      8    %pi x                9    %pi x
-     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-             4         %pi 8           4         %pi 9
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-         40320          4         362880          4
-   + 
-        10    %pi x
-       x  sin(ÄÄÄÄÄ)
-                4         %pi 10          %pi 11
-     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)   + O((a - ÄÄÄ)  )
-          3628800          4               4
-Type: UnivariatePuiseuxSeries(Expression Integer,a,pi/4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty2}
-\begin{paste}{MenuexseriesEmpty2}{MenuexseriesPatch2}
-\pastebutton{MenuexseriesEmpty2}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch3}
-\begin{paste}{MenuexseriesFull3}{MenuexseriesEmpty3}
-\pastebutton{MenuexseriesFull3}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (3)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty3}
-\begin{paste}{MenuexseriesEmpty3}{MenuexseriesPatch3}
-\pastebutton{MenuexseriesEmpty3}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch4}
-\begin{paste}{MenuexseriesFull4}{MenuexseriesEmpty4}
-\pastebutton{MenuexseriesFull4}{\hidepaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\indentrel{3}\begin{verbatim}
-   (4)
-                2     3     4     5     6     7     8
-     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
-   + 
-        9      10      11
-     10x  + 11x   + O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty4}
-\begin{paste}{MenuexseriesEmpty4}{MenuexseriesPatch4}
-\pastebutton{MenuexseriesEmpty4}{\showpaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch5}
-\begin{paste}{MenuexseriesFull5}{MenuexseriesEmpty5}
-\pastebutton{MenuexseriesFull5}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty5}
-\begin{paste}{MenuexseriesEmpty5}{MenuexseriesPatch5}
-\pastebutton{MenuexseriesEmpty5}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch6}
-\begin{paste}{MenuexseriesFull6}{MenuexseriesEmpty6}
-\pastebutton{MenuexseriesFull6}{\hidepaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (6)
-         1  2   1  3   1  4   1  5   1  6   1  7   1  8
-     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
-         2      3      4      5      6      7      8
-   + 
-     1  9    1  10    1  11      12
-     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
-     9      10       11
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty6}
-\begin{paste}{MenuexseriesEmpty6}{MenuexseriesPatch6}
-\pastebutton{MenuexseriesEmpty6}{\showpaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch7}
-\begin{paste}{MenuexseriesFull7}{MenuexseriesEmpty7}
-\pastebutton{MenuexseriesFull7}{\hidepaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (7)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty7}
-\begin{paste}{MenuexseriesEmpty7}{MenuexseriesPatch7}
-\pastebutton{MenuexseriesEmpty7}{\showpaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch8}
-\begin{paste}{MenuexseriesFull8}{MenuexseriesEmpty8}
-\pastebutton{MenuexseriesFull8}{\hidepaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (8)
-             1  2   1  3    1  4    1   5    1   6
-     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
-   5040      40320      362880      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty8}
-\begin{paste}{MenuexseriesEmpty8}{MenuexseriesPatch8}
-\pastebutton{MenuexseriesEmpty8}{\showpaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesPatch9}
-\begin{paste}{MenuexseriesFull9}{MenuexseriesEmpty9}
-\pastebutton{MenuexseriesFull9}{\hidepaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [1.0, 2.0, 2.5, 2.6666666666 666666667,
-    2.7083333333 333333333, 2.7166666666 666666667,
-    2.7180555555 555555556, 2.7182539682 53968254,
-    2.7182787698 412698413, 2.7182815255 731922399, ...]
-                          Type: Stream Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexseriesEmpty9}
-\begin{paste}{MenuexseriesEmpty9}{MenuexseriesPatch9}
-\pastebutton{MenuexseriesEmpty9}{\showpaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch1}
-\begin{paste}{MenuexmatrixFull1}{MenuexmatrixEmpty1}
-\pastebutton{MenuexmatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  - 2   1 ¿
-   (1)  ³           ³
-        À4   2   - 4Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty1}
-\begin{paste}{MenuexmatrixEmpty1}{MenuexmatrixPatch1}
-\pastebutton{MenuexmatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch2}
-\begin{paste}{MenuexmatrixFull2}{MenuexmatrixEmpty2}
-\pastebutton{MenuexmatrixFull2}{\hidepaste}
-\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú1    0    2 ¿
-        ³            ³
-   (2)  ³20  30   10 ³
-        ³            ³
-        À0   200  100Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty2}
-\begin{paste}{MenuexmatrixEmpty2}{MenuexmatrixPatch2}
-\pastebutton{MenuexmatrixEmpty2}{\showpaste}
-\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch3}
-\begin{paste}{MenuexmatrixFull3}{MenuexmatrixEmpty3}
-\pastebutton{MenuexmatrixFull3}{\hidepaste}
-\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2  3¿
-   (3)  ³       ³
-        À2  4  6Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty3}
-\begin{paste}{MenuexmatrixEmpty3}{MenuexmatrixPatch3}
-\pastebutton{MenuexmatrixEmpty3}{\showpaste}
-\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch4}
-\begin{paste}{MenuexmatrixFull4}{MenuexmatrixEmpty4}
-\pastebutton{MenuexmatrixFull4}{\hidepaste}
-\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú2  0  4¿
-   (4)  ³       ³
-        À6  6  2Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty4}
-\begin{paste}{MenuexmatrixEmpty4}{MenuexmatrixPatch4}
-\pastebutton{MenuexmatrixEmpty4}{\showpaste}
-\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch5}
-\begin{paste}{MenuexmatrixFull5}{MenuexmatrixEmpty5}
-\pastebutton{MenuexmatrixFull5}{\hidepaste}
-\tab{5}\spadcommand{100 * m1\free{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú100  - 200   100 ¿
-   (5)  ³                 ³
-        À400   200   - 400Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty5}
-\begin{paste}{MenuexmatrixEmpty5}{MenuexmatrixPatch5}
-\pastebutton{MenuexmatrixEmpty5}{\showpaste}
-\tab{5}\spadcommand{100 * m1\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch6}
-\begin{paste}{MenuexmatrixFull6}{MenuexmatrixEmpty6}
-\pastebutton{MenuexmatrixFull6}{\hidepaste}
-\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú- 39   140    82  ¿
-   (6)  ³                  ³
-        À 44   - 740  - 372Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty6}
-\begin{paste}{MenuexmatrixEmpty6}{MenuexmatrixPatch6}
-\pastebutton{MenuexmatrixEmpty6}{\showpaste}
-\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch7}
-\begin{paste}{MenuexmatrixFull7}{MenuexmatrixEmpty7}
-\pastebutton{MenuexmatrixFull7}{\hidepaste}
-\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú40  662   321¿
-   (7)  ³             ³
-        À78  1318  648Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty7}
-\begin{paste}{MenuexmatrixEmpty7}{MenuexmatrixPatch7}
-\pastebutton{MenuexmatrixEmpty7}{\showpaste}
-\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch8}
-\begin{paste}{MenuexmatrixFull8}{MenuexmatrixEmpty8}
-\pastebutton{MenuexmatrixFull8}{\hidepaste}
-\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [4,8]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty8}
-\begin{paste}{MenuexmatrixEmpty8}{MenuexmatrixPatch8}
-\pastebutton{MenuexmatrixEmpty8}{\showpaste}
-\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch9}
-\begin{paste}{MenuexmatrixFull9}{MenuexmatrixEmpty9}
-\pastebutton{MenuexmatrixFull9}{\hidepaste}
-\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
-\indentrel{3}\begin{verbatim}
-        Ú1  0  0  0  0¿
-        ³             ³
-        ³0  2  0  0  0³
-        ³             ³
-   (9)  ³0  0  3  0  0³
-        ³             ³
-        ³0  0  0  2  0³
-        ³             ³
-        À0  0  0  0  1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty9}
-\begin{paste}{MenuexmatrixEmpty9}{MenuexmatrixPatch9}
-\pastebutton{MenuexmatrixEmpty9}{\showpaste}
-\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch10}
-\begin{paste}{MenuexmatrixFull10}{MenuexmatrixEmpty10}
-\pastebutton{MenuexmatrixFull10}{\hidepaste}
-\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
-\indentrel{3}\begin{verbatim}
-         Ú1   2   3 ¿
-         ³          ³
-   (10)  ³6   7   8 ³
-         ³          ³
-         À11  12  13Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty10}
-\begin{paste}{MenuexmatrixEmpty10}{MenuexmatrixPatch10}
-\pastebutton{MenuexmatrixEmpty10}{\showpaste}
-\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch11}
-\begin{paste}{MenuexmatrixFull11}{MenuexmatrixEmpty11}
-\pastebutton{MenuexmatrixFull11}{\hidepaste}
-\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\indentrel{3}\begin{verbatim}
-         Ú1  2  3  11  12  13¿
-   (11)  ³                   ³
-         À6  7  8  55  77  88Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty11}
-\begin{paste}{MenuexmatrixEmpty11}{MenuexmatrixPatch11}
-\pastebutton{MenuexmatrixEmpty11}{\showpaste}
-\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch12}
-\begin{paste}{MenuexmatrixFull12}{MenuexmatrixEmpty12}
-\pastebutton{MenuexmatrixFull12}{\hidepaste}
-\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\indentrel{3}\begin{verbatim}
-         Ú1   2   3 ¿
-         ³          ³
-         ³6   7   8 ³
-   (12)  ³          ³
-         ³11  12  13³
-         ³          ³
-         À55  77  88Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty12}
-\begin{paste}{MenuexmatrixEmpty12}{MenuexmatrixPatch12}
-\pastebutton{MenuexmatrixEmpty12}{\showpaste}
-\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch13}
-\begin{paste}{MenuexmatrixFull13}{MenuexmatrixEmpty13}
-\pastebutton{MenuexmatrixFull13}{\hidepaste}
-\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
-\indentrel{3}\begin{verbatim}
-         Ú0   1   2   3   4 ¿
-         ³                  ³
-   (13)  ³5   6   7   8   9 ³
-         ³                  ³
-         À10  11  12  13  14Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty13}
-\begin{paste}{MenuexmatrixEmpty13}{MenuexmatrixPatch13}
-\pastebutton{MenuexmatrixEmpty13}{\showpaste}
-\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch14}
-\begin{paste}{MenuexmatrixFull14}{MenuexmatrixEmpty14}
-\pastebutton{MenuexmatrixFull14}{\hidepaste}
-\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
-\indentrel{3}\begin{verbatim}
-         Ú0  5  10  3   4 ¿
-         ³                ³
-   (14)  ³1  6  11  8   9 ³
-         ³                ³
-         À2  7  12  13  14Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty14}
-\begin{paste}{MenuexmatrixEmpty14}{MenuexmatrixPatch14}
-\pastebutton{MenuexmatrixEmpty14}{\showpaste}
-\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch15}
-\begin{paste}{MenuexmatrixFull15}{MenuexmatrixEmpty15}
-\pastebutton{MenuexmatrixFull15}{\hidepaste}
-\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
-\indentrel{3}\begin{verbatim}
-          2        3
-   (15)  z  + y + u  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty15}
-\begin{paste}{MenuexmatrixEmpty15}{MenuexmatrixPatch15}
-\pastebutton{MenuexmatrixEmpty15}{\showpaste}
-\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch16}
-\begin{paste}{MenuexmatrixFull16}{MenuexmatrixEmpty16}
-\pastebutton{MenuexmatrixFull16}{\hidepaste}
-\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
-\indentrel{3}\begin{verbatim}
-   (16)  - 48
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty16}
-\begin{paste}{MenuexmatrixEmpty16}{MenuexmatrixPatch16}
-\pastebutton{MenuexmatrixEmpty16}{\showpaste}
-\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch17}
-\begin{paste}{MenuexmatrixFull17}{MenuexmatrixEmpty17}
-\pastebutton{MenuexmatrixFull17}{\hidepaste}
-\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
-\indentrel{3}\begin{verbatim}
-         Ú  2        5 ¿
-         ³- Ä  - 1   Ä ³
-         ³  7        7 ³
-         ³             ³
-   (17)  ³ 8          6³
-         ³ Ä    1   - Ä³
-         ³ 7          7³
-         ³             ³
-         À- 1  - 1   1 Ù
-               Type: Union(Matrix Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty17}
-\begin{paste}{MenuexmatrixEmpty17}{MenuexmatrixPatch17}
-\pastebutton{MenuexmatrixEmpty17}{\showpaste}
-\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixPatch18}
-\begin{paste}{MenuexmatrixFull18}{MenuexmatrixEmpty18}
-\pastebutton{MenuexmatrixFull18}{\hidepaste}
-\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
-\indentrel{3}\begin{verbatim}
-   (18)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexmatrixEmpty18}
-\begin{paste}{MenuexmatrixEmpty18}{MenuexmatrixPatch18}
-\pastebutton{MenuexmatrixEmpty18}{\showpaste}
-\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch1}
-\begin{paste}{MenuexlapFull1}{MenuexlapEmpty1}
-\pastebutton{MenuexlapFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
-\indentrel{3}\begin{verbatim}
-                            1
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         5       4      2 3      3 2     4     5
-        s  + 5a s  + 10a s  + 10a s  + 5a s + a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty1}
-\begin{paste}{MenuexlapEmpty1}{MenuexlapPatch1}
-\pastebutton{MenuexlapEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch2}
-\begin{paste}{MenuexlapFull2}{MenuexlapEmpty2}
-\pastebutton{MenuexlapFull2}{\hidepaste}
-\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
-\indentrel{3}\begin{verbatim}
-             3
-           4a
-   (2)  ÄÄÄÄÄÄÄÄ
-         4     4
-        s  + 4a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty2}
-\begin{paste}{MenuexlapEmpty2}{MenuexlapPatch2}
-\pastebutton{MenuexlapEmpty2}{\showpaste}
-\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch3}
-\begin{paste}{MenuexlapFull3}{MenuexlapEmpty3}
-\pastebutton{MenuexlapFull3}{\hidepaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\indentrel{3}\begin{verbatim}
-             2    2
-   (3)  log(s  + a ) - 2log(s)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty3}
-\begin{paste}{MenuexlapEmpty3}{MenuexlapPatch3}
-\pastebutton{MenuexlapEmpty3}{\showpaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch4}
-\begin{paste}{MenuexlapFull4}{MenuexlapEmpty4}
-\pastebutton{MenuexlapFull4}{\hidepaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\indentrel{3}\begin{verbatim}
-   (4)  - log(s - a) + log(s - b)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty4}
-\begin{paste}{MenuexlapEmpty4}{MenuexlapPatch4}
-\pastebutton{MenuexlapEmpty4}{\showpaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch5}
-\begin{paste}{MenuexlapFull5}{MenuexlapEmpty5}
-\pastebutton{MenuexlapFull5}{\hidepaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\indentrel{3}\begin{verbatim}
-          b    s + c - a
-        %e log(ÄÄÄÄÄÄÄÄÄ)
-                   c
-   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              s - a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty5}
-\begin{paste}{MenuexlapEmpty5}{MenuexlapPatch5}
-\pastebutton{MenuexlapEmpty5}{\showpaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapPatch6}
-\begin{paste}{MenuexlapFull6}{MenuexlapEmpty6}
-\pastebutton{MenuexlapFull6}{\hidepaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\indentrel{3}\begin{verbatim}
-               2    2
-              s  + b             d
-        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
-                  2              s
-                 b
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                     2s
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexlapEmpty6}
-\begin{paste}{MenuexlapEmpty6}{MenuexlapPatch6}
-\pastebutton{MenuexlapEmpty6}{\showpaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch1}
-\begin{paste}{MenuexintFull1}{MenuexintEmpty1}
-\pastebutton{MenuexintFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\indentrel{3}\begin{verbatim}
-              3     2
-        atan(x  + 3x  + 3x + 1)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   3
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty1}
-\begin{paste}{MenuexintEmpty1}{MenuexintPatch1}
-\pastebutton{MenuexintEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch2}
-\begin{paste}{MenuexintFull2}{MenuexintEmpty2}
-\pastebutton{MenuexintFull2}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (2)
-           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-           ³         2
-           ³- 93%%CE0  + 12
-         ( ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%CE0)
-          \³       31
-      *
-         log
-                             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-                             ³         2
-                             ³- 93%%CE0  + 12           2
-              (62%%CE0 + 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%CE0
-                            \³       31
-            + 
-              - 31%%CE0 + 18x - 4
-     + 
-             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-             ³         2
-             ³- 93%%CE0  + 12
-         (-  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%CE0)
-            \³       31
-      *
-         log
-                               ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-                               ³         2
-                               ³- 93%%CE0  + 12
-              (- 62%%CE0 - 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                              \³       31
-            + 
-                     2
-              62%%CE0  - 31%%CE0 + 18x - 4
-     + 
-                           2
-       2%%CE0 log(- 62%%CE0  + 31%%CE0 + 9x + 4)
-  /
-     2
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty2}
-\begin{paste}{MenuexintEmpty2}{MenuexintPatch2}
-\pastebutton{MenuexintEmpty2}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch3}
-\begin{paste}{MenuexintFull3}{MenuexintEmpty3}
-\pastebutton{MenuexintFull3}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
-\indentrel{3}\begin{verbatim}
-               3
-        31%%CE0  - 3%%CE0 - 1
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                  31
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty3}
-\begin{paste}{MenuexintEmpty3}{MenuexintPatch3}
-\pastebutton{MenuexintEmpty3}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch4}
-\begin{paste}{MenuexintFull4}{MenuexintEmpty4}
-\pastebutton{MenuexintFull4}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-               2      ÚÄÄÄ¿
-             (x  - a)\³- a  + 2a x         ÚÄ¿
-         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
-                      2             atan(ÄÄÄÄÄ)
-                     x  + a                a
-   (4)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
-                     ÚÄÄÄ¿               ÚÄ¿
-                   2\³- a               \³a
-               Type: Union(List Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty4}
-\begin{paste}{MenuexintEmpty4}{MenuexintPatch4}
-\pastebutton{MenuexintEmpty4}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch5}
-\begin{paste}{MenuexintFull5}{MenuexintEmpty5}
-\pastebutton{MenuexintFull5}{\hidepaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-              ÚÄÄÄ¿              ÚÄÄÄ¿
-            x\³- a  + a        x\³- a  - a
-        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄ¿              ÚÄÄÄ¿
-               \³- a              \³- a
-   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                        ÚÄÄÄ¿
-                      2\³- a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty5}
-\begin{paste}{MenuexintEmpty5}{MenuexintPatch5}
-\pastebutton{MenuexintEmpty5}{\showpaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch6}
-\begin{paste}{MenuexintFull6}{MenuexintEmpty6}
-\pastebutton{MenuexintFull6}{\hidepaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\indentrel{3}\begin{verbatim}
-   (6)
-        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
-   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                              4
-                          440b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty6}
-\begin{paste}{MenuexintEmpty6}{MenuexintPatch6}
-\pastebutton{MenuexintEmpty6}{\showpaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch7}
-\begin{paste}{MenuexintFull7}{MenuexintEmpty7}
-\pastebutton{MenuexintFull7}{\hidepaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\indentrel{3}\begin{verbatim}
-   (7)
-       -
-              2 2 ÚÄ¿
-            2b x \³3
-         *
-                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-            log(\³a \³b x + a   + \³a   \³b x + a + a)
-     + 
-         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-       4b x \³3 log(\³a   \³b x + a - a)
-     + 
-                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
-          2 2     2\³3 \³a   \³b x + a + a\³3
-       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                               3a
-     + 
-                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
-       (12b x - 9a)\³3 \³a \³b x + a
-  /
-        2 2 ÚÄ¿3ÚÄ¿
-     18a x \³3 \³a
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty7}
-\begin{paste}{MenuexintEmpty7}{MenuexintPatch7}
-\pastebutton{MenuexintEmpty7}{\showpaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch8}
-\begin{paste}{MenuexintFull8}{MenuexintEmpty8}
-\pastebutton{MenuexintFull8}{\hidepaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\indentrel{3}\begin{verbatim}
-           x      ÚÄÄÄÄÄÄÄÄ¿
-         Ú¿  log(\³b + %N a  + 1)
-   (8)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%N
-        ÀÙ            %N
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty8}
-\begin{paste}{MenuexintEmpty8}{MenuexintPatch8}
-\pastebutton{MenuexintEmpty8}{\showpaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch9}
-\begin{paste}{MenuexintFull9}{MenuexintEmpty9}
-\pastebutton{MenuexintFull9}{\hidepaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
-\indentrel{3}\begin{verbatim}
-   (9)
-                          ÚÄÄÄÄÄ¿
-                 - 2cosh(\³x + b  + 1) - 2x
-     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
-          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
-   + 
-         ÚÄÄÄÄÄ¿
-     - 2\³x + b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty9}
-\begin{paste}{MenuexintEmpty9}{MenuexintPatch9}
-\pastebutton{MenuexintEmpty9}{\showpaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch10}
-\begin{paste}{MenuexintFull10}{MenuexintEmpty10}
-\pastebutton{MenuexintFull10}{\hidepaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\indentrel{3}\begin{verbatim}
-   (10)
-                 atan(x) 2             atan(x) 2
-       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
-                    3                     3
-     + 
-               atan(x)
-       18x tan(ÄÄÄÄÄÄÄ)
-                  3
-  /
-     18
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty10}
-\begin{paste}{MenuexintEmpty10}{MenuexintPatch10}
-\pastebutton{MenuexintEmpty10}{\showpaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch11}
-\begin{paste}{MenuexintFull11}{MenuexintEmpty11}
-\pastebutton{MenuexintFull11}{\hidepaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
-\indentrel{3}\begin{verbatim}
-             ÚÄÄÄÄÄÄÄÄÄÄ¿
-           2\³log(x) + x
-   (11)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-             log(x) + x
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty11}
-\begin{paste}{MenuexintEmpty11}{MenuexintPatch11}
-\pastebutton{MenuexintEmpty11}{\showpaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexintPatch12}
-\begin{paste}{MenuexintFull12}{MenuexintEmpty12}
-\pastebutton{MenuexintFull12}{\hidepaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\indentrel{3}\begin{verbatim}
-                      ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
-         (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
-                               erf(x) + 1
-   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                         8erf(x) - 8
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexintEmpty12}
-\begin{paste}{MenuexintEmpty12}{MenuexintPatch12}
-\pastebutton{MenuexintEmpty12}{\showpaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch1}
-\begin{paste}{MenuexsumFull1}{MenuexsumEmpty1}
-\pastebutton{MenuexsumFull1}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1..15]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty1}
-\begin{paste}{MenuexsumEmpty1}{MenuexsumPatch1}
-\pastebutton{MenuexsumEmpty1}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1..15]}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch2}
-\begin{paste}{MenuexsumFull2}{MenuexsumEmpty2}
-\pastebutton{MenuexsumFull2}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
-\indentrel{3}\begin{verbatim}
-   (2)  120
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty2}
-\begin{paste}{MenuexsumEmpty2}{MenuexsumPatch2}
-\pastebutton{MenuexsumEmpty2}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch3}
-\begin{paste}{MenuexsumFull3}{MenuexsumEmpty3}
-\pastebutton{MenuexsumFull3}{\hidepaste}
-\tab{5}\spadcommand{[n**2 for n in 5..20]}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
-    256, 289, 324, 361, 400]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty3}
-\begin{paste}{MenuexsumEmpty3}{MenuexsumPatch3}
-\pastebutton{MenuexsumEmpty3}{\showpaste}
-\tab{5}\spadcommand{[n**2 for n in 5..20]}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch4}
-\begin{paste}{MenuexsumFull4}{MenuexsumEmpty4}
-\pastebutton{MenuexsumFull4}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
-\indentrel{3}\begin{verbatim}
-   (4)  2840
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty4}
-\begin{paste}{MenuexsumEmpty4}{MenuexsumPatch4}
-\pastebutton{MenuexsumEmpty4}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch5}
-\begin{paste}{MenuexsumFull5}{MenuexsumEmpty5}
-\pastebutton{MenuexsumFull5}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
-\indentrel{3}\begin{verbatim}
-   (5)  2.7182818284 590452354
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty5}
-\begin{paste}{MenuexsumEmpty5}{MenuexsumPatch5}
-\pastebutton{MenuexsumEmpty5}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch6}
-\begin{paste}{MenuexsumFull6}{MenuexsumEmpty6}
-\pastebutton{MenuexsumFull6}{\hidepaste}
-\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
-\indentrel{3}\begin{verbatim}
-          3     2         3     2
-        2b  + 3b  + b - 2a  + 3a  - a
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                      6
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty6}
-\begin{paste}{MenuexsumEmpty6}{MenuexsumPatch6}
-\pastebutton{MenuexsumEmpty6}{\showpaste}
-\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch7}
-\begin{paste}{MenuexsumFull7}{MenuexsumEmpty7}
-\pastebutton{MenuexsumFull7}{\hidepaste}
-\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
-\indentrel{3}\begin{verbatim}
-   (7)  5525
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty7}
-\begin{paste}{MenuexsumEmpty7}{MenuexsumPatch7}
-\pastebutton{MenuexsumEmpty7}{\showpaste}
-\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch8}
-\begin{paste}{MenuexsumFull8}{MenuexsumEmpty8}
-\pastebutton{MenuexsumFull8}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
-\indentrel{3}\begin{verbatim}
-   (8)  5525
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty8}
-\begin{paste}{MenuexsumEmpty8}{MenuexsumPatch8}
-\pastebutton{MenuexsumEmpty8}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch9}
-\begin{paste}{MenuexsumFull9}{MenuexsumEmpty9}
-\pastebutton{MenuexsumFull9}{\hidepaste}
-\tab{5}\spadcommand{sum(k**3,k = 1..n)}
-\indentrel{3}\begin{verbatim}
-         4     3    2
-        n  + 2n  + n
-   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              4
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty9}
-\begin{paste}{MenuexsumEmpty9}{MenuexsumPatch9}
-\pastebutton{MenuexsumEmpty9}{\showpaste}
-\tab{5}\spadcommand{sum(k**3,k = 1..n)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch10}
-\begin{paste}{MenuexsumFull10}{MenuexsumEmpty10}
-\pastebutton{MenuexsumFull10}{\hidepaste}
-\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
-\indentrel{3}\begin{verbatim}
-          4     3    2
-         n  + 2n  + n
-   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               4
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty10}
-\begin{paste}{MenuexsumEmpty10}{MenuexsumPatch10}
-\pastebutton{MenuexsumEmpty10}{\showpaste}
-\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch11}
-\begin{paste}{MenuexsumFull11}{MenuexsumEmpty11}
-\pastebutton{MenuexsumFull11}{\hidepaste}
-\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
-\indentrel{3}\begin{verbatim}
-   (11)
-            3      2           3      2
-       (128b  + 48b  + 4b - 54a  + 27a  - 3a)d
-     + 
-            2             2        2       2             2
-       (192b  + 48b - 108a  + 36a)c  + 192b  + 48b - 108a
-     + 
-       36a
-  /
-        2
-     (2c  + 2)d
-           Type: Union(Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty11}
-\begin{paste}{MenuexsumEmpty11}{MenuexsumPatch11}
-\pastebutton{MenuexsumEmpty11}{\showpaste}
-\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch12}
-\begin{paste}{MenuexsumFull12}{MenuexsumEmpty12}
-\pastebutton{MenuexsumFull12}{\hidepaste}
-\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
-\indentrel{3}\begin{verbatim}
-             2               n
-         (n x  + (- n - 1)x)x  + x
-   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 2
-                x  - 2x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty12}
-\begin{paste}{MenuexsumEmpty12}{MenuexsumPatch12}
-\pastebutton{MenuexsumEmpty12}{\showpaste}
-\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
-\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumPatch13}
-\begin{paste}{MenuexsumFull13}{MenuexsumEmpty13}
-\pastebutton{MenuexsumFull13}{\hidepaste}
-\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-         3
-   (13)  Ä
-         4
-Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MenuexsumEmpty13}
-\begin{paste}{MenuexsumEmpty13}{MenuexsumPatch13}
-\pastebutton{MenuexsumEmpty13}{\showpaste}
-\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/cycles.pht b/books/pages/cycles.pht
deleted file mode 100644
index 65fc1f3..0000000
--- a/books/pages/cycles.pht
+++ /dev/null
@@ -1,855 +0,0 @@
-\begin{patch}{CycleIndicatorsXmpPagePatch1}
-\begin{paste}{CycleIndicatorsXmpPageFull1}{CycleIndicatorsXmpPageEmpty1}
-\pastebutton{CycleIndicatorsXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)expose EVALCYC}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty1}
-\begin{paste}{CycleIndicatorsXmpPageEmpty1}{CycleIndicatorsXmpPagePatch1}
-\pastebutton{CycleIndicatorsXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)expose EVALCYC}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch2}
-\begin{paste}{CycleIndicatorsXmpPageFull2}{CycleIndicatorsXmpPageEmpty2}
-\pastebutton{CycleIndicatorsXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{complete 1}
-\indentrel{3}\begin{verbatim}
-   (1)  (1)
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty2}
-\begin{paste}{CycleIndicatorsXmpPageEmpty2}{CycleIndicatorsXmpPagePatch2}
-\pastebutton{CycleIndicatorsXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{complete 1}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch3}
-\begin{paste}{CycleIndicatorsXmpPageFull3}{CycleIndicatorsXmpPageEmpty3}
-\pastebutton{CycleIndicatorsXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{complete 2}
-\indentrel{3}\begin{verbatim}
-        1       1   2
-   (2)  Ä (2) + Ä (1 )
-        2       2
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty3}
-\begin{paste}{CycleIndicatorsXmpPageEmpty3}{CycleIndicatorsXmpPagePatch3}
-\pastebutton{CycleIndicatorsXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{complete 2}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch4}
-\begin{paste}{CycleIndicatorsXmpPageFull4}{CycleIndicatorsXmpPageEmpty4}
-\pastebutton{CycleIndicatorsXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{complete 3}
-\indentrel{3}\begin{verbatim}
-        1       1         1   3
-   (3)  Ä (3) + Ä (2 1) + Ä (1 )
-        3       2         6
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty4}
-\begin{paste}{CycleIndicatorsXmpPageEmpty4}{CycleIndicatorsXmpPagePatch4}
-\pastebutton{CycleIndicatorsXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{complete 3}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch5}
-\begin{paste}{CycleIndicatorsXmpPageFull5}{CycleIndicatorsXmpPageEmpty5}
-\pastebutton{CycleIndicatorsXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{complete 7}
-\indentrel{3}\begin{verbatim}
-   (4)
-     1       1          1          1     2     1
-     Ä (7) + Ä (6 1) + ÄÄ (5 2) + ÄÄ (5 1 ) + ÄÄ (4 3)
-     7       6         10         10          12
-   + 
-     1            1     3     1   2      1     2
-     Ä (4 2 1) + ÄÄ (4 1 ) + ÄÄ (3 1) + ÄÄ (3 2 )
-     8           24          18         24
-   + 
-      1       2     1     4     1   3      1   2 3
-     ÄÄ (3 2 1 ) + ÄÄ (3 1 ) + ÄÄ (2 1) + ÄÄ (2 1 )
-     12            72          48         48
-   + 
-      1      5      1    7
-     ÄÄÄ (2 1 ) + ÄÄÄÄ (1 )
-     240          5040
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty5}
-\begin{paste}{CycleIndicatorsXmpPageEmpty5}{CycleIndicatorsXmpPagePatch5}
-\pastebutton{CycleIndicatorsXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{complete 7}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch6}
-\begin{paste}{CycleIndicatorsXmpPageFull6}{CycleIndicatorsXmpPageEmpty6}
-\pastebutton{CycleIndicatorsXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{elementary 7}
-\indentrel{3}\begin{verbatim}
-   (5)
-     1       1          1          1     2     1
-     Ä (7) - Ä (6 1) - ÄÄ (5 2) + ÄÄ (5 1 ) - ÄÄ (4 3)
-     7       6         10         10          12
-   + 
-     1            1     3     1   2      1     2
-     Ä (4 2 1) - ÄÄ (4 1 ) + ÄÄ (3 1) + ÄÄ (3 2 )
-     8           24          18         24
-   + 
-        1       2     1     4     1   3      1   2 3
-     - ÄÄ (3 2 1 ) + ÄÄ (3 1 ) - ÄÄ (2 1) + ÄÄ (2 1 )
-       12            72          48         48
-   + 
-        1      5      1    7
-     - ÄÄÄ (2 1 ) + ÄÄÄÄ (1 )
-       240          5040
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty6}
-\begin{paste}{CycleIndicatorsXmpPageEmpty6}{CycleIndicatorsXmpPagePatch6}
-\pastebutton{CycleIndicatorsXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{elementary 7}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch7}
-\begin{paste}{CycleIndicatorsXmpPageFull7}{CycleIndicatorsXmpPageEmpty7}
-\pastebutton{CycleIndicatorsXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{alternating 7}
-\indentrel{3}\begin{verbatim}
-   (6)
-     2       1     2    1           1   2      1     2
-     Ä (7) + Ä (5 1 ) + Ä (4 2 1) + Ä (3 1) + ÄÄ (3 2 )
-     7       5          4           9         12
-   + 
-      1     4     1   2 3      1    7
-     ÄÄ (3 1 ) + ÄÄ (2 1 ) + ÄÄÄÄ (1 )
-     36          24          2520
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty7}
-\begin{paste}{CycleIndicatorsXmpPageEmpty7}{CycleIndicatorsXmpPagePatch7}
-\pastebutton{CycleIndicatorsXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{alternating 7}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch8}
-\begin{paste}{CycleIndicatorsXmpPageFull8}{CycleIndicatorsXmpPageEmpty8}
-\pastebutton{CycleIndicatorsXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{cyclic 7}
-\indentrel{3}\begin{verbatim}
-        6       1   7
-   (7)  Ä (7) + Ä (1 )
-        7       7
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty8}
-\begin{paste}{CycleIndicatorsXmpPageEmpty8}{CycleIndicatorsXmpPagePatch8}
-\pastebutton{CycleIndicatorsXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{cyclic 7}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch9}
-\begin{paste}{CycleIndicatorsXmpPageFull9}{CycleIndicatorsXmpPageEmpty9}
-\pastebutton{CycleIndicatorsXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{dihedral 7}
-\indentrel{3}\begin{verbatim}
-        3       1   3      1   7
-   (8)  Ä (7) + Ä (2 1) + ÄÄ (1 )
-        7       2         14
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty9}
-\begin{paste}{CycleIndicatorsXmpPageEmpty9}{CycleIndicatorsXmpPagePatch9}
-\pastebutton{CycleIndicatorsXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{dihedral 7}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch10}
-\begin{paste}{CycleIndicatorsXmpPageFull10}{CycleIndicatorsXmpPageEmpty10}
-\pastebutton{CycleIndicatorsXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{graphs 5}
-\indentrel{3}\begin{verbatim}
-   (9)
-     1           1   2    1   2     1   3     1   4 2
-     Ä (6 3 1) + Ä (5 ) + Ä (4 2) + Ä (3 1) + Ä (2 1 )
-     6           5        4         6         8
-   + 
-      1   3 4     1    10
-     ÄÄ (2 1 ) + ÄÄÄ (1  )
-     12          120
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty10}
-\begin{paste}{CycleIndicatorsXmpPageEmpty10}{CycleIndicatorsXmpPagePatch10}
-\pastebutton{CycleIndicatorsXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{graphs 5}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch11}
-\begin{paste}{CycleIndicatorsXmpPageFull11}{CycleIndicatorsXmpPageEmpty11}
-\pastebutton{CycleIndicatorsXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**2, complete 2*complete 1**2)}
-\indentrel{3}\begin{verbatim}
-   (10)  4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty11}
-\begin{paste}{CycleIndicatorsXmpPageEmpty11}{CycleIndicatorsXmpPagePatch11}
-\pastebutton{CycleIndicatorsXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**2, complete 2*complete 1**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch12}
-\begin{paste}{CycleIndicatorsXmpPageFull12}{CycleIndicatorsXmpPageEmpty12}
-\pastebutton{CycleIndicatorsXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{cap(elementary 2**2, complete 2*complete 1**2)}
-\indentrel{3}\begin{verbatim}
-   (11)  2
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty12}
-\begin{paste}{CycleIndicatorsXmpPageEmpty12}{CycleIndicatorsXmpPagePatch12}
-\pastebutton{CycleIndicatorsXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{cap(elementary 2**2, complete 2*complete 1**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch13}
-\begin{paste}{CycleIndicatorsXmpPageFull13}{CycleIndicatorsXmpPageEmpty13}
-\pastebutton{CycleIndicatorsXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)}
-\indentrel{3}\begin{verbatim}
-   (12)  24
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty13}
-\begin{paste}{CycleIndicatorsXmpPageEmpty13}{CycleIndicatorsXmpPagePatch13}
-\pastebutton{CycleIndicatorsXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2*complete 1,complete 2**2*complete 1**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch14}
-\begin{paste}{CycleIndicatorsXmpPageFull14}{CycleIndicatorsXmpPageEmpty14}
-\pastebutton{CycleIndicatorsXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)}
-\indentrel{3}\begin{verbatim}
-   (13)  8
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty14}
-\begin{paste}{CycleIndicatorsXmpPageEmpty14}{CycleIndicatorsXmpPagePatch14}
-\pastebutton{CycleIndicatorsXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{cap(elementary 3*elementary 2*elementary 1,complete 2**2*complete 1**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch15}
-\begin{paste}{CycleIndicatorsXmpPageFull15}{CycleIndicatorsXmpPageEmpty15}
-\pastebutton{CycleIndicatorsXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)}
-\indentrel{3}\begin{verbatim}
-   (14)  8
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty15}
-\begin{paste}{CycleIndicatorsXmpPageEmpty15}{CycleIndicatorsXmpPagePatch15}
-\pastebutton{CycleIndicatorsXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2*complete 1,elementary 2**2*elementary 1**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch16}
-\begin{paste}{CycleIndicatorsXmpPageFull16}{CycleIndicatorsXmpPageEmpty16}
-\pastebutton{CycleIndicatorsXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{eval(cup(complete 3*complete 2*complete 1, cup(complete 2**2*complete 1**2,complete 2**3)))}
-\indentrel{3}\begin{verbatim}
-   (15)  1500
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty16}
-\begin{paste}{CycleIndicatorsXmpPageEmpty16}{CycleIndicatorsXmpPagePatch16}
-\pastebutton{CycleIndicatorsXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{eval(cup(complete 3*complete 2*complete 1, cup(complete 2**2*complete 1**2,complete 2**3)))}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch17}
-\begin{paste}{CycleIndicatorsXmpPageFull17}{CycleIndicatorsXmpPageEmpty17}
-\pastebutton{CycleIndicatorsXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{square:=dihedral 4}
-\indentrel{3}\begin{verbatim}
-         1       3   2    1     2    1   4
-   (16)  Ä (4) + Ä (2 ) + Ä (2 1 ) + Ä (1 )
-         4       8        4          8
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty17}
-\begin{paste}{CycleIndicatorsXmpPageEmpty17}{CycleIndicatorsXmpPagePatch17}
-\pastebutton{CycleIndicatorsXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{square:=dihedral 4}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch18}
-\begin{paste}{CycleIndicatorsXmpPageFull18}{CycleIndicatorsXmpPageEmpty18}
-\pastebutton{CycleIndicatorsXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**2,square)}
-\indentrel{3}\begin{verbatim}
-   (17)  2
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty18}
-\begin{paste}{CycleIndicatorsXmpPageEmpty18}{CycleIndicatorsXmpPagePatch18}
-\pastebutton{CycleIndicatorsXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**2,square)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch19}
-\begin{paste}{CycleIndicatorsXmpPageFull19}{CycleIndicatorsXmpPageEmpty19}
-\pastebutton{CycleIndicatorsXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2**2,dihedral 7)}
-\indentrel{3}\begin{verbatim}
-   (18)  18
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty19}
-\begin{paste}{CycleIndicatorsXmpPageEmpty19}{CycleIndicatorsXmpPagePatch19}
-\pastebutton{CycleIndicatorsXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{cap(complete 3*complete 2**2,dihedral 7)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch20}
-\begin{paste}{CycleIndicatorsXmpPageFull20}{CycleIndicatorsXmpPageEmpty20}
-\pastebutton{CycleIndicatorsXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{cap(graphs 5,complete 7*complete 3)}
-\indentrel{3}\begin{verbatim}
-   (19)  4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty20}
-\begin{paste}{CycleIndicatorsXmpPageEmpty20}{CycleIndicatorsXmpPagePatch20}
-\pastebutton{CycleIndicatorsXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{cap(graphs 5,complete 7*complete 3)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch21}
-\begin{paste}{CycleIndicatorsXmpPageFull21}{CycleIndicatorsXmpPageEmpty21}
-\pastebutton{CycleIndicatorsXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{s(x) == powerSum(x)}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty21}
-\begin{paste}{CycleIndicatorsXmpPageEmpty21}{CycleIndicatorsXmpPagePatch21}
-\pastebutton{CycleIndicatorsXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{s(x) == powerSum(x)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch22}
-\begin{paste}{CycleIndicatorsXmpPageFull22}{CycleIndicatorsXmpPageEmpty22}
-\pastebutton{CycleIndicatorsXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)}
-\indentrel{3}\begin{verbatim}
-         1   2    1   2 2    3   4     1   8
-   (21)  Ä (4 ) + Ä (3 1 ) + Ä (2 ) + ÄÄ (1 )
-         4        3          8        24
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty22}
-\begin{paste}{CycleIndicatorsXmpPageEmpty22}{CycleIndicatorsXmpPagePatch22}
-\pastebutton{CycleIndicatorsXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{cube:=(1/24)*(s 1**8+9*s 2**4 + 8*s 3**2*s 1**2+6*s 4**2)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch23}
-\begin{paste}{CycleIndicatorsXmpPageFull23}{CycleIndicatorsXmpPageEmpty23}
-\pastebutton{CycleIndicatorsXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 4**2,cube)}
-\indentrel{3}\begin{verbatim}
-   (22)  7
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty23}
-\begin{paste}{CycleIndicatorsXmpPageEmpty23}{CycleIndicatorsXmpPagePatch23}
-\pastebutton{CycleIndicatorsXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{cap(complete 4**2,cube)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch24}
-\begin{paste}{CycleIndicatorsXmpPageFull24}{CycleIndicatorsXmpPageEmpty24}
-\pastebutton{CycleIndicatorsXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
-\indentrel{3}\begin{verbatim}
-   (23)  7
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty24}
-\begin{paste}{CycleIndicatorsXmpPageEmpty24}{CycleIndicatorsXmpPagePatch24}
-\pastebutton{CycleIndicatorsXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(elementary 4,elementary 2))}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch25}
-\begin{paste}{CycleIndicatorsXmpPageFull25}{CycleIndicatorsXmpPageEmpty25}
-\pastebutton{CycleIndicatorsXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
-\indentrel{3}\begin{verbatim}
-   (24)  17
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty25}
-\begin{paste}{CycleIndicatorsXmpPageEmpty25}{CycleIndicatorsXmpPagePatch25}
-\pastebutton{CycleIndicatorsXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(elementary 4,complete 2))}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch26}
-\begin{paste}{CycleIndicatorsXmpPageFull26}{CycleIndicatorsXmpPageEmpty26}
-\pastebutton{CycleIndicatorsXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))}
-\indentrel{3}\begin{verbatim}
-   (25)  10
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty26}
-\begin{paste}{CycleIndicatorsXmpPageEmpty26}{CycleIndicatorsXmpPagePatch26}
-\pastebutton{CycleIndicatorsXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(complete 4,elementary 2))}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch27}
-\begin{paste}{CycleIndicatorsXmpPageFull27}{CycleIndicatorsXmpPageEmpty27}
-\pastebutton{CycleIndicatorsXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))}
-\indentrel{3}\begin{verbatim}
-   (26)  23
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty27}
-\begin{paste}{CycleIndicatorsXmpPageEmpty27}{CycleIndicatorsXmpPagePatch27}
-\pastebutton{CycleIndicatorsXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{cap(complete 2**3*complete 1**2,wreath(complete 4,complete 2))}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch28}
-\begin{paste}{CycleIndicatorsXmpPageFull28}{CycleIndicatorsXmpPageEmpty28}
-\pastebutton{CycleIndicatorsXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{x: ULS(FRAC INT,'x,0) := 'x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (27)  x
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty28}
-\begin{paste}{CycleIndicatorsXmpPageEmpty28}{CycleIndicatorsXmpPagePatch28}
-\pastebutton{CycleIndicatorsXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{x: ULS(FRAC INT,'x,0) := 'x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch29}
-\begin{paste}{CycleIndicatorsXmpPageFull29}{CycleIndicatorsXmpPageEmpty29}
-\pastebutton{CycleIndicatorsXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0)\bound{zodec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty29}
-\begin{paste}{CycleIndicatorsXmpPageEmpty29}{CycleIndicatorsXmpPagePatch29}
-\pastebutton{CycleIndicatorsXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{ZeroOrOne: INT -> ULS(FRAC INT, 'x, 0)\bound{zodec }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch30}
-\begin{paste}{CycleIndicatorsXmpPageFull30}{CycleIndicatorsXmpPageEmpty30}
-\pastebutton{CycleIndicatorsXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{Integers: INT -> ULS(FRAC INT, 'x, 0)\bound{idec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty30}
-\begin{paste}{CycleIndicatorsXmpPageEmpty30}{CycleIndicatorsXmpPagePatch30}
-\pastebutton{CycleIndicatorsXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{Integers: INT -> ULS(FRAC INT, 'x, 0)\bound{idec }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch31}
-\begin{paste}{CycleIndicatorsXmpPageFull31}{CycleIndicatorsXmpPageEmpty31}
-\pastebutton{CycleIndicatorsXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{ZeroOrOne n == 1+x**n\free{x zodec }\bound{zo }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty31}
-\begin{paste}{CycleIndicatorsXmpPageEmpty31}{CycleIndicatorsXmpPagePatch31}
-\pastebutton{CycleIndicatorsXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{ZeroOrOne n == 1+x**n\free{x zodec }\bound{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch32}
-\begin{paste}{CycleIndicatorsXmpPageFull32}{CycleIndicatorsXmpPageEmpty32}
-\pastebutton{CycleIndicatorsXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{ZeroOrOne 5\free{zo }}
-\indentrel{3}\begin{verbatim}
-              5
-   (31)  1 + x
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty32}
-\begin{paste}{CycleIndicatorsXmpPageEmpty32}{CycleIndicatorsXmpPagePatch32}
-\pastebutton{CycleIndicatorsXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{ZeroOrOne 5\free{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch33}
-\begin{paste}{CycleIndicatorsXmpPageFull33}{CycleIndicatorsXmpPageEmpty33}
-\pastebutton{CycleIndicatorsXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{Integers n == 1/(1-x**n)\free{x idec }\bound{i }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty33}
-\begin{paste}{CycleIndicatorsXmpPageEmpty33}{CycleIndicatorsXmpPagePatch33}
-\pastebutton{CycleIndicatorsXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{Integers n == 1/(1-x**n)\free{x idec }\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch34}
-\begin{paste}{CycleIndicatorsXmpPageFull34}{CycleIndicatorsXmpPageEmpty34}
-\pastebutton{CycleIndicatorsXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{Integers 5\free{i }}
-\indentrel{3}\begin{verbatim}
-              5    10      11
-   (33)  1 + x  + x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty34}
-\begin{paste}{CycleIndicatorsXmpPageEmpty34}{CycleIndicatorsXmpPagePatch34}
-\pastebutton{CycleIndicatorsXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{Integers 5\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch35}
-\begin{paste}{CycleIndicatorsXmpPageFull35}{CycleIndicatorsXmpPageEmpty35}
-\pastebutton{CycleIndicatorsXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{eval(ZeroOrOne, graphs 5)\free{zo }}
-\indentrel{3}\begin{verbatim}
-   (34)
-               2     3     4     5     6     7     8    9
-     1 + x + 2x  + 4x  + 6x  + 6x  + 6x  + 4x  + 2x  + x
-   + 
-      10      11
-     x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty35}
-\begin{paste}{CycleIndicatorsXmpPageEmpty35}{CycleIndicatorsXmpPagePatch35}
-\pastebutton{CycleIndicatorsXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{eval(ZeroOrOne, graphs 5)\free{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch36}
-\begin{paste}{CycleIndicatorsXmpPageFull36}{CycleIndicatorsXmpPageEmpty36}
-\pastebutton{CycleIndicatorsXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{eval(ZeroOrOne,dihedral 8)\free{zo }}
-\indentrel{3}\begin{verbatim}
-                   2     3     4     5     6    7    8
-   (35)  1 + x + 4x  + 5x  + 8x  + 5x  + 4x  + x  + x
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty36}
-\begin{paste}{CycleIndicatorsXmpPageEmpty36}{CycleIndicatorsXmpPagePatch36}
-\pastebutton{CycleIndicatorsXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{eval(ZeroOrOne,dihedral 8)\free{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch37}
-\begin{paste}{CycleIndicatorsXmpPageFull37}{CycleIndicatorsXmpPageEmpty37}
-\pastebutton{CycleIndicatorsXmpPageFull37}{\hidepaste}
-\tab{5}\spadcommand{eval(Integers,complete 4)\free{i }}
-\indentrel{3}\begin{verbatim}
-   (36)
-               2     3     4     5     6      7      8
-     1 + x + 2x  + 3x  + 5x  + 6x  + 9x  + 11x  + 15x
-   + 
-        9      10      11
-     18x  + 23x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty37}
-\begin{paste}{CycleIndicatorsXmpPageEmpty37}{CycleIndicatorsXmpPagePatch37}
-\pastebutton{CycleIndicatorsXmpPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{eval(Integers,complete 4)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch38}
-\begin{paste}{CycleIndicatorsXmpPageFull38}{CycleIndicatorsXmpPageEmpty38}
-\pastebutton{CycleIndicatorsXmpPageFull38}{\hidepaste}
-\tab{5}\spadcommand{eval(Integers,elementary 4)\free{i }}
-\indentrel{3}\begin{verbatim}
-   (37)
-      6    7     8     9     10     11     12      13
-     x  + x  + 2x  + 3x  + 5x   + 6x   + 9x   + 11x
-   + 
-        14      15      16      17
-     15x   + 18x   + 23x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty38}
-\begin{paste}{CycleIndicatorsXmpPageEmpty38}{CycleIndicatorsXmpPagePatch38}
-\pastebutton{CycleIndicatorsXmpPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{eval(Integers,elementary 4)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch39}
-\begin{paste}{CycleIndicatorsXmpPageFull39}{CycleIndicatorsXmpPageEmpty39}
-\pastebutton{CycleIndicatorsXmpPageFull39}{\hidepaste}
-\tab{5}\spadcommand{eval(ZeroOrOne,cube)\free{zo }}
-\indentrel{3}\begin{verbatim}
-                   2     3     4     5     6    7    8
-   (38)  1 + x + 3x  + 3x  + 7x  + 3x  + 3x  + x  + x
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty39}
-\begin{paste}{CycleIndicatorsXmpPageEmpty39}{CycleIndicatorsXmpPagePatch39}
-\pastebutton{CycleIndicatorsXmpPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{eval(ZeroOrOne,cube)\free{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch40}
-\begin{paste}{CycleIndicatorsXmpPageFull40}{CycleIndicatorsXmpPageEmpty40}
-\pastebutton{CycleIndicatorsXmpPageFull40}{\hidepaste}
-\tab{5}\spadcommand{eval(Integers,cube)\free{i }}
-\indentrel{3}\begin{verbatim}
-   (39)
-               2     3      4      5      6       7
-     1 + x + 4x  + 7x  + 21x  + 37x  + 85x  + 151x
-   + 
-         8       9       10      11
-     292x  + 490x  + 848x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty40}
-\begin{paste}{CycleIndicatorsXmpPageEmpty40}{CycleIndicatorsXmpPagePatch40}
-\pastebutton{CycleIndicatorsXmpPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{eval(Integers,cube)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch41}
-\begin{paste}{CycleIndicatorsXmpPageFull41}{CycleIndicatorsXmpPageEmpty41}
-\pastebutton{CycleIndicatorsXmpPageFull41}{\hidepaste}
-\tab{5}\spadcommand{eval(Integers,graphs 5)\free{i }}
-\indentrel{3}\begin{verbatim}
-   (40)
-               2     3      4      5      6       7
-     1 + x + 3x  + 7x  + 17x  + 35x  + 76x  + 149x
-   + 
-         8       9       10      11
-     291x  + 539x  + 974x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty41}
-\begin{paste}{CycleIndicatorsXmpPageEmpty41}{CycleIndicatorsXmpPagePatch41}
-\pastebutton{CycleIndicatorsXmpPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{eval(Integers,graphs 5)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch42}
-\begin{paste}{CycleIndicatorsXmpPageFull42}{CycleIndicatorsXmpPageEmpty42}
-\pastebutton{CycleIndicatorsXmpPageFull42}{\hidepaste}
-\tab{5}\spadcommand{eval(ZeroOrOne ,graphs 15)\free{zo }}
-\indentrel{3}\begin{verbatim}
-   (41)
-               2     3      4      5      6       7
-     1 + x + 2x  + 5x  + 11x  + 26x  + 68x  + 177x
-   + 
-         8        9        10      11
-     496x  + 1471x  + 4583x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty42}
-\begin{paste}{CycleIndicatorsXmpPageEmpty42}{CycleIndicatorsXmpPagePatch42}
-\pastebutton{CycleIndicatorsXmpPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{eval(ZeroOrOne ,graphs 15)\free{zo }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch43}
-\begin{paste}{CycleIndicatorsXmpPageFull43}{CycleIndicatorsXmpPageEmpty43}
-\pastebutton{CycleIndicatorsXmpPageFull43}{\hidepaste}
-\tab{5}\spadcommand{cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)}
-\indentrel{3}\begin{verbatim}
-   (42)  49958972383320
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty43}
-\begin{paste}{CycleIndicatorsXmpPageEmpty43}{CycleIndicatorsXmpPagePatch43}
-\pastebutton{CycleIndicatorsXmpPageEmpty43}{\showpaste}
-\tab{5}\spadcommand{cap(dihedral 30,complete 7*complete 8*complete 5*complete 10)}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch44}
-\begin{paste}{CycleIndicatorsXmpPageFull44}{CycleIndicatorsXmpPageEmpty44}
-\pastebutton{CycleIndicatorsXmpPageFull44}{\hidepaste}
-\tab{5}\spadcommand{sf3221:= SFunction [3,2,2,1]\bound{sf3221 }}
-\indentrel{3}\begin{verbatim}
-   (43)
-      1          1     2     1   2     1
-     ÄÄ (6 2) - ÄÄ (6 1 ) - ÄÄ (4 ) + ÄÄ (4 3 1)
-     12         12          16        12
-   + 
-      1     4     1   2      1   2 2     1     2
-     ÄÄ (4 1 ) - ÄÄ (3 2) + ÄÄ (3 1 ) - ÄÄ (3 2 1)
-     24          36         36          24
-   + 
-        1       3     1     5     1    4     1   3 2
-     - ÄÄ (3 2 1 ) - ÄÄ (3 1 ) - ÄÄÄ (2 ) + ÄÄ (2 1 )
-       36            72          192        48
-   + 
-      1   2 4     1      6     1    8
-     ÄÄ (2 1 ) - ÄÄÄ (2 1 ) + ÄÄÄ (1 )
-     96          144          576
-             Type: SymmetricPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty44}
-\begin{paste}{CycleIndicatorsXmpPageEmpty44}{CycleIndicatorsXmpPagePatch44}
-\pastebutton{CycleIndicatorsXmpPageEmpty44}{\showpaste}
-\tab{5}\spadcommand{sf3221:= SFunction [3,2,2,1]\bound{sf3221 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch45}
-\begin{paste}{CycleIndicatorsXmpPageFull45}{CycleIndicatorsXmpPageEmpty45}
-\pastebutton{CycleIndicatorsXmpPageFull45}{\hidepaste}
-\tab{5}\spadcommand{cap(sf3221,complete 2**4)\free{sf3221 }}
-\indentrel{3}\begin{verbatim}
-   (44)  3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty45}
-\begin{paste}{CycleIndicatorsXmpPageEmpty45}{CycleIndicatorsXmpPagePatch45}
-\pastebutton{CycleIndicatorsXmpPageEmpty45}{\showpaste}
-\tab{5}\spadcommand{cap(sf3221,complete 2**4)\free{sf3221 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch46}
-\begin{paste}{CycleIndicatorsXmpPageFull46}{CycleIndicatorsXmpPageEmpty46}
-\pastebutton{CycleIndicatorsXmpPageFull46}{\hidepaste}
-\tab{5}\spadcommand{cap(sf3221, powerSum 1**8)\free{sf3221 }}
-\indentrel{3}\begin{verbatim}
-   (45)  70
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty46}
-\begin{paste}{CycleIndicatorsXmpPageEmpty46}{CycleIndicatorsXmpPagePatch46}
-\pastebutton{CycleIndicatorsXmpPageEmpty46}{\showpaste}
-\tab{5}\spadcommand{cap(sf3221, powerSum 1**8)\free{sf3221 }}
-\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPagePatch47}
-\begin{paste}{CycleIndicatorsXmpPageFull47}{CycleIndicatorsXmpPageEmpty47}
-\pastebutton{CycleIndicatorsXmpPageFull47}{\hidepaste}
-\tab{5}\spadcommand{eval(Integers, sf3221)\free{i sf3221 }}
-\indentrel{3}\begin{verbatim}
-   (46)
-      9     10     11      12      13      14      15
-     x  + 3x   + 7x   + 14x   + 27x   + 47x   + 79x
-   + 
-         16       17       18       19      20
-     126x   + 196x   + 294x   + 432x   + O(x  )
-    Type: UnivariateLaurentSeries(Fraction Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{CycleIndicatorsXmpPageEmpty47}
-\begin{paste}{CycleIndicatorsXmpPageEmpty47}{CycleIndicatorsXmpPagePatch47}
-\pastebutton{CycleIndicatorsXmpPageEmpty47}{\showpaste}
-\tab{5}\spadcommand{eval(Integers, sf3221)\free{i sf3221 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/decimal.pht b/books/pages/decimal.pht
deleted file mode 100644
index 38c32de..0000000
--- a/books/pages/decimal.pht
+++ /dev/null
@@ -1,136 +0,0 @@
-\begin{patch}{DecimalExpansionXmpPagePatch1}
-\begin{paste}{DecimalExpansionXmpPageFull1}{DecimalExpansionXmpPageEmpty1}
-\pastebutton{DecimalExpansionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{r := decimal(22/7)\bound{r }}
-\indentrel{3}\begin{verbatim}
-          ______
-   (1)  3.142857
-                                 Type: DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty1}
-\begin{paste}{DecimalExpansionXmpPageEmpty1}{DecimalExpansionXmpPagePatch1}
-\pastebutton{DecimalExpansionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{r := decimal(22/7)\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch2}
-\begin{paste}{DecimalExpansionXmpPageFull2}{DecimalExpansionXmpPageEmpty2}
-\pastebutton{DecimalExpansionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{r + decimal(6/7)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (2)  4
-                                 Type: DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty2}
-\begin{paste}{DecimalExpansionXmpPageEmpty2}{DecimalExpansionXmpPagePatch2}
-\pastebutton{DecimalExpansionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{r + decimal(6/7)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch3}
-\begin{paste}{DecimalExpansionXmpPageFull3}{DecimalExpansionXmpPageEmpty3}
-\pastebutton{DecimalExpansionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[decimal(1/i) for i in 350..354]}
-\indentrel{3}\begin{verbatim}
-   (3)
-        ______    ______         __
-   [0.00285714, 0.002849, 0.0028409,
-      ________________________________
-    0.00283286118980169971671388101983,
-
-     0.0
-       OVERBAR
-          02824858757062146892655367231638418079096045197
-            74011299435
-     ]
-                            Type: List DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty3}
-\begin{paste}{DecimalExpansionXmpPageEmpty3}{DecimalExpansionXmpPagePatch3}
-\pastebutton{DecimalExpansionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[decimal(1/i) for i in 350..354]}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch4}
-\begin{paste}{DecimalExpansionXmpPageFull4}{DecimalExpansionXmpPageEmpty4}
-\pastebutton{DecimalExpansionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{decimal(1/2049)}
-\indentrel{3}\begin{verbatim}
-   (4)
-   0.
-     OVERBAR
-        0004880429477794045876037091264031234748657881893
-          60663738408979990239141044411908247925817471937
-          53050268423621278672523182040019521717911176183
-          50414836505612493899463152757442654953635919960
-          95656417764763299170326988775012201073694485114
-          69009272816007808687164470473401659346022449975
-          59785261102977061981454367984382625671059053196
-          6813079551
-                                 Type: DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty4}
-\begin{paste}{DecimalExpansionXmpPageEmpty4}{DecimalExpansionXmpPagePatch4}
-\pastebutton{DecimalExpansionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{decimal(1/2049)}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch5}
-\begin{paste}{DecimalExpansionXmpPageFull5}{DecimalExpansionXmpPageEmpty5}
-\pastebutton{DecimalExpansionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)\bound{p }}
-\indentrel{3}\begin{verbatim}
-             2     _      _
-   (5)  0.25x  + 0.6x + 0.4
-                      Type: Polynomial DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty5}
-\begin{paste}{DecimalExpansionXmpPageEmpty5}{DecimalExpansionXmpPagePatch5}
-\pastebutton{DecimalExpansionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch6}
-\begin{paste}{DecimalExpansionXmpPageFull6}{DecimalExpansionXmpPageEmpty6}
-\pastebutton{DecimalExpansionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q := differentiate(p, x)\free{p }\bound{q }}
-\indentrel{3}\begin{verbatim}
-                 _
-   (6)  0.5x + 0.6
-                      Type: Polynomial DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty6}
-\begin{paste}{DecimalExpansionXmpPageEmpty6}{DecimalExpansionXmpPagePatch6}
-\pastebutton{DecimalExpansionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q := differentiate(p, x)\free{p }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPagePatch7}
-\begin{paste}{DecimalExpansionXmpPageFull7}{DecimalExpansionXmpPageEmpty7}
-\pastebutton{DecimalExpansionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
-\indentrel{3}\begin{verbatim}
-              _
-   (7)  x + 1.3
-                      Type: Polynomial DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DecimalExpansionXmpPageEmpty7}
-\begin{paste}{DecimalExpansionXmpPageEmpty7}{DecimalExpansionXmpPagePatch7}
-\pastebutton{DecimalExpansionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p q }\bound{g }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/derham.pht b/books/pages/derham.pht
deleted file mode 100644
index 8342214..0000000
--- a/books/pages/derham.pht
+++ /dev/null
@@ -1,591 +0,0 @@
-\begin{patch}{DeRhamComplexXmpPagePatch1}
-\begin{paste}{DeRhamComplexXmpPageFull1}{DeRhamComplexXmpPageEmpty1}
-\pastebutton{DeRhamComplexXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{coefRing := Integer\bound{coefRing }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty1}
-\begin{paste}{DeRhamComplexXmpPageEmpty1}{DeRhamComplexXmpPagePatch1}
-\pastebutton{DeRhamComplexXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{coefRing := Integer\bound{coefRing }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch2}
-\begin{paste}{DeRhamComplexXmpPageFull2}{DeRhamComplexXmpPageEmpty2}
-\pastebutton{DeRhamComplexXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{lv : List Symbol := [x,y,z]\bound{lv }}
-\indentrel{3}\begin{verbatim}
-   (2)  [x,y,z]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty2}
-\begin{paste}{DeRhamComplexXmpPageEmpty2}{DeRhamComplexXmpPagePatch2}
-\pastebutton{DeRhamComplexXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{lv : List Symbol := [x,y,z]\bound{lv }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch3}
-\begin{paste}{DeRhamComplexXmpPageFull3}{DeRhamComplexXmpPageEmpty3}
-\pastebutton{DeRhamComplexXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{der := DERHAM(coefRing,lv)\free{coefRing }\free{lv }\bound{der }}
-\indentrel{3}\begin{verbatim}
-   (3)  DeRhamComplex(Integer,[x,y,z])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty3}
-\begin{paste}{DeRhamComplexXmpPageEmpty3}{DeRhamComplexXmpPagePatch3}
-\pastebutton{DeRhamComplexXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{der := DERHAM(coefRing,lv)\free{coefRing }\free{lv }\bound{der }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch4}
-\begin{paste}{DeRhamComplexXmpPageFull4}{DeRhamComplexXmpPageEmpty4}
-\pastebutton{DeRhamComplexXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{R := Expression coefRing\free{coefRing }\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (4)  Expression Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty4}
-\begin{paste}{DeRhamComplexXmpPageEmpty4}{DeRhamComplexXmpPagePatch4}
-\pastebutton{DeRhamComplexXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{R := Expression coefRing\free{coefRing }\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch5}
-\begin{paste}{DeRhamComplexXmpPageFull5}{DeRhamComplexXmpPageEmpty5}
-\pastebutton{DeRhamComplexXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f : R := x**2*y*z-5*x**3*y**2*z**5\free{R }\bound{f }}
-\indentrel{3}\begin{verbatim}
-            3 2 5    2
-   (5)  - 5x y z  + x y z
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty5}
-\begin{paste}{DeRhamComplexXmpPageEmpty5}{DeRhamComplexXmpPagePatch5}
-\pastebutton{DeRhamComplexXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f : R := x**2*y*z-5*x**3*y**2*z**5\free{R }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch6}
-\begin{paste}{DeRhamComplexXmpPageFull6}{DeRhamComplexXmpPageEmpty6}
-\pastebutton{DeRhamComplexXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2\free{R }\bound{g }}
-\indentrel{3}\begin{verbatim}
-            2     3 2       2
-   (6)  - 7z sin(x y ) + y z cos(z)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty6}
-\begin{paste}{DeRhamComplexXmpPageEmpty6}{DeRhamComplexXmpPagePatch6}
-\pastebutton{DeRhamComplexXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2\free{R }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch7}
-\begin{paste}{DeRhamComplexXmpPageFull7}{DeRhamComplexXmpPageEmpty7}
-\pastebutton{DeRhamComplexXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{h : R :=x*y*z-2*x**3*y*z**2\free{R }\bound{h }}
-\indentrel{3}\begin{verbatim}
-            3   2
-   (7)  - 2x y z  + x y z
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty7}
-\begin{paste}{DeRhamComplexXmpPageEmpty7}{DeRhamComplexXmpPagePatch7}
-\pastebutton{DeRhamComplexXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{h : R :=x*y*z-2*x**3*y*z**2\free{R }\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch8}
-\begin{paste}{DeRhamComplexXmpPageFull8}{DeRhamComplexXmpPageEmpty8}
-\pastebutton{DeRhamComplexXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{dx : der := generator(1)\free{der }\bound{dx }}
-\indentrel{3}\begin{verbatim}
-   (8)  dx
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty8}
-\begin{paste}{DeRhamComplexXmpPageEmpty8}{DeRhamComplexXmpPagePatch8}
-\pastebutton{DeRhamComplexXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{dx : der := generator(1)\free{der }\bound{dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch9}
-\begin{paste}{DeRhamComplexXmpPageFull9}{DeRhamComplexXmpPageEmpty9}
-\pastebutton{DeRhamComplexXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{dy : der := generator(2)\free{der }\bound{dy }}
-\indentrel{3}\begin{verbatim}
-   (9)  dy
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty9}
-\begin{paste}{DeRhamComplexXmpPageEmpty9}{DeRhamComplexXmpPagePatch9}
-\pastebutton{DeRhamComplexXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{dy : der := generator(2)\free{der }\bound{dy }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch10}
-\begin{paste}{DeRhamComplexXmpPageFull10}{DeRhamComplexXmpPageEmpty10}
-\pastebutton{DeRhamComplexXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{dz : der := generator(3)\free{der }\bound{dz }}
-\indentrel{3}\begin{verbatim}
-   (10)  dz
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty10}
-\begin{paste}{DeRhamComplexXmpPageEmpty10}{DeRhamComplexXmpPagePatch10}
-\pastebutton{DeRhamComplexXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{dz : der := generator(3)\free{der }\bound{dz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch11}
-\begin{paste}{DeRhamComplexXmpPageFull11}{DeRhamComplexXmpPageEmpty11}
-\pastebutton{DeRhamComplexXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[dx,dy,dz] := [generator(i)$der for i in 1..3]\free{der }\bound{dxyz }}
-\indentrel{3}\begin{verbatim}
-   (11)  [dx,dy,dz]
-              Type: List DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty11}
-\begin{paste}{DeRhamComplexXmpPageEmpty11}{DeRhamComplexXmpPagePatch11}
-\pastebutton{DeRhamComplexXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[dx,dy,dz] := [generator(i)$der for i in 1..3]\free{der }\bound{dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch12}
-\begin{paste}{DeRhamComplexXmpPageFull12}{DeRhamComplexXmpPageEmpty12}
-\pastebutton{DeRhamComplexXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{alpha : der := f*dx + g*dy + h*dz\bound{alpha }\free{der f g h dxyz }}
-\indentrel{3}\begin{verbatim}
-   (12)
-          3   2
-     (- 2x y z  + x y z)dz
-   + 
-        2     3 2       2                 3 2 5    2
-   (- 7z sin(x y ) + y z cos(z))dy + (- 5x y z  + x y z)dx
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty12}
-\begin{paste}{DeRhamComplexXmpPageEmpty12}{DeRhamComplexXmpPagePatch12}
-\pastebutton{DeRhamComplexXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{alpha : der := f*dx + g*dy + h*dz\bound{alpha }\free{der f g h dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch13}
-\begin{paste}{DeRhamComplexXmpPageFull13}{DeRhamComplexXmpPageEmpty13}
-\pastebutton{DeRhamComplexXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{beta : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy\bound{beta }\free{der f g h dxyz }}
-\indentrel{3}\begin{verbatim}
-   (13)  x dy + cos(tan(x y z) + x y z)dx
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty13}
-\begin{paste}{DeRhamComplexXmpPageEmpty13}{DeRhamComplexXmpPagePatch13}
-\pastebutton{DeRhamComplexXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{beta : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy\bound{beta }\free{der f g h dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch14}
-\begin{paste}{DeRhamComplexXmpPageFull14}{DeRhamComplexXmpPageEmpty14}
-\pastebutton{DeRhamComplexXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential alpha;\free{alpha }\bound{ed }}
-\indentrel{3}\begin{verbatim}
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty14}
-\begin{paste}{DeRhamComplexXmpPageEmpty14}{DeRhamComplexXmpPagePatch14}
-\pastebutton{DeRhamComplexXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential alpha;\free{alpha }\bound{ed }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch15}
-\begin{paste}{DeRhamComplexXmpPageFull15}{DeRhamComplexXmpPageEmpty15}
-\pastebutton{DeRhamComplexXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential \%\free{ed }}
-\indentrel{3}\begin{verbatim}
-   (15)  0
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty15}
-\begin{paste}{DeRhamComplexXmpPageEmpty15}{DeRhamComplexXmpPagePatch15}
-\pastebutton{DeRhamComplexXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential \%\free{ed }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch16}
-\begin{paste}{DeRhamComplexXmpPageFull16}{DeRhamComplexXmpPageEmpty16}
-\pastebutton{DeRhamComplexXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{gamma := alpha * beta\bound{gamma }\free{alpha }\free{beta }}
-\indentrel{3}\begin{verbatim}
-   (16)
-        4   2    2
-     (2x y z  - x y z)dy dz
-   + 
-        3   2
-     (2x y z  - x y z)cos(tan(x y z) + x y z)dx dz
-   + 
-              2     3 2       2
-           (7z sin(x y ) - y z cos(z))
-        *
-           cos(tan(x y z) + x y z)
-       + 
-             4 2 5    3
-         - 5x y z  + x y z
-    *
-       dx dy
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty16}
-\begin{paste}{DeRhamComplexXmpPageEmpty16}{DeRhamComplexXmpPagePatch16}
-\pastebutton{DeRhamComplexXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{gamma := alpha * beta\bound{gamma }\free{alpha }\free{beta }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch17}
-\begin{paste}{DeRhamComplexXmpPageFull17}{DeRhamComplexXmpPageEmpty17}
-\pastebutton{DeRhamComplexXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta))\free{alpha beta gamma }}
-\indentrel{3}\begin{verbatim}
-   (17)  0
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty17}
-\begin{paste}{DeRhamComplexXmpPageEmpty17}{DeRhamComplexXmpPagePatch17}
-\pastebutton{DeRhamComplexXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - alpha * exteriorDifferential(beta))\free{alpha beta gamma }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch18}
-\begin{paste}{DeRhamComplexXmpPageFull18}{DeRhamComplexXmpPageEmpty18}
-\pastebutton{DeRhamComplexXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{a : BOP := operator('a)\bound{ao }}
-\indentrel{3}\begin{verbatim}
-   (18)  a
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty18}
-\begin{paste}{DeRhamComplexXmpPageEmpty18}{DeRhamComplexXmpPagePatch18}
-\pastebutton{DeRhamComplexXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{a : BOP := operator('a)\bound{ao }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch19}
-\begin{paste}{DeRhamComplexXmpPageFull19}{DeRhamComplexXmpPageEmpty19}
-\pastebutton{DeRhamComplexXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{b : BOP := operator('b)\bound{bo }}
-\indentrel{3}\begin{verbatim}
-   (19)  b
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty19}
-\begin{paste}{DeRhamComplexXmpPageEmpty19}{DeRhamComplexXmpPagePatch19}
-\pastebutton{DeRhamComplexXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{b : BOP := operator('b)\bound{bo }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch20}
-\begin{paste}{DeRhamComplexXmpPageFull20}{DeRhamComplexXmpPageEmpty20}
-\pastebutton{DeRhamComplexXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{c : BOP := operator('c)\bound{co }}
-\indentrel{3}\begin{verbatim}
-   (20)  c
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty20}
-\begin{paste}{DeRhamComplexXmpPageEmpty20}{DeRhamComplexXmpPagePatch20}
-\pastebutton{DeRhamComplexXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{c : BOP := operator('c)\bound{co }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch21}
-\begin{paste}{DeRhamComplexXmpPageFull21}{DeRhamComplexXmpPageEmpty21}
-\pastebutton{DeRhamComplexXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz\bound{sigma }\free{ao bo co dxyz }}
-\indentrel{3}\begin{verbatim}
-   (21)  c(x,y,z)dz + b(x,y,z)dy + a(x,y,z)dx
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty21}
-\begin{paste}{DeRhamComplexXmpPageEmpty21}{DeRhamComplexXmpPagePatch21}
-\pastebutton{DeRhamComplexXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz\bound{sigma }\free{ao bo co dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch22}
-\begin{paste}{DeRhamComplexXmpPageFull22}{DeRhamComplexXmpPageEmpty22}
-\pastebutton{DeRhamComplexXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz\bound{theta }\free{ao bo co dxyz }}
-\indentrel{3}\begin{verbatim}
-   (22)  c(x,y,z)dy dz + b(x,y,z)dx dz + a(x,y,z)dx dy
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty22}
-\begin{paste}{DeRhamComplexXmpPageEmpty22}{DeRhamComplexXmpPagePatch22}
-\pastebutton{DeRhamComplexXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz\bound{theta }\free{ao bo co dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch23}
-\begin{paste}{DeRhamComplexXmpPageFull23}{DeRhamComplexXmpPageEmpty23}
-\pastebutton{DeRhamComplexXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{totalDifferential(a(x,y,z))$der\free{ao der }}
-\indentrel{3}\begin{verbatim}
-   (23)  a  (x,y,z)dz + a  (x,y,z)dy + a  (x,y,z)dx
-          ,3             ,2             ,1
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty23}
-\begin{paste}{DeRhamComplexXmpPageEmpty23}{DeRhamComplexXmpPagePatch23}
-\pastebutton{DeRhamComplexXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{totalDifferential(a(x,y,z))$der\free{ao der }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch24}
-\begin{paste}{DeRhamComplexXmpPageFull24}{DeRhamComplexXmpPageEmpty24}
-\pastebutton{DeRhamComplexXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential sigma\free{sigma }}
-\indentrel{3}\begin{verbatim}
-   (24)
-     (c  (x,y,z) - b  (x,y,z))dy dz
-       ,2           ,3
-   + 
-     (c  (x,y,z) - a  (x,y,z))dx dz
-       ,1           ,3
-   + 
-     (b  (x,y,z) - a  (x,y,z))dx dy
-       ,1           ,2
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty24}
-\begin{paste}{DeRhamComplexXmpPageEmpty24}{DeRhamComplexXmpPagePatch24}
-\pastebutton{DeRhamComplexXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential sigma\free{sigma }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch25}
-\begin{paste}{DeRhamComplexXmpPageFull25}{DeRhamComplexXmpPageEmpty25}
-\pastebutton{DeRhamComplexXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential theta\free{theta }}
-\indentrel{3}\begin{verbatim}
-   (25)  (c  (x,y,z) - b  (x,y,z) + a  (x,y,z))dx dy dz
-           ,1           ,2           ,3
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty25}
-\begin{paste}{DeRhamComplexXmpPageEmpty25}{DeRhamComplexXmpPagePatch25}
-\pastebutton{DeRhamComplexXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential theta\free{theta }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch26}
-\begin{paste}{DeRhamComplexXmpPageFull26}{DeRhamComplexXmpPageEmpty26}
-\pastebutton{DeRhamComplexXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{one : der := 1\bound{one }\free{der }}
-\indentrel{3}\begin{verbatim}
-   (26)  1
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty26}
-\begin{paste}{DeRhamComplexXmpPageEmpty26}{DeRhamComplexXmpPagePatch26}
-\pastebutton{DeRhamComplexXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{one : der := 1\bound{one }\free{der }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch27}
-\begin{paste}{DeRhamComplexXmpPageFull27}{DeRhamComplexXmpPageEmpty27}
-\pastebutton{DeRhamComplexXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{g1 : der := a([x,t,y,u,v,z,e]) * one\free{der one ao }\bound{g1 }}
-\indentrel{3}\begin{verbatim}
-   (27)  a(x,t,y,u,v,z,e)
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty27}
-\begin{paste}{DeRhamComplexXmpPageEmpty27}{DeRhamComplexXmpPagePatch27}
-\pastebutton{DeRhamComplexXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{g1 : der := a([x,t,y,u,v,z,e]) * one\free{der one ao }\bound{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch28}
-\begin{paste}{DeRhamComplexXmpPageFull28}{DeRhamComplexXmpPageEmpty28}
-\pastebutton{DeRhamComplexXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one\free{der one ao }\bound{h1 }}
-\indentrel{3}\begin{verbatim}
-   (28)  a(x,y,x,t,x,z,y,r,u,x)
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty28}
-\begin{paste}{DeRhamComplexXmpPageEmpty28}{DeRhamComplexXmpPagePatch28}
-\pastebutton{DeRhamComplexXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one\free{der one ao }\bound{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch29}
-\begin{paste}{DeRhamComplexXmpPageFull29}{DeRhamComplexXmpPageEmpty29}
-\pastebutton{DeRhamComplexXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential g1\free{g1 }}
-\indentrel{3}\begin{verbatim}
-   (29)
-     a  (x,t,y,u,v,z,e)dz + a  (x,t,y,u,v,z,e)dy
-      ,6                     ,3
-   + 
-     a  (x,t,y,u,v,z,e)dx
-      ,1
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty29}
-\begin{paste}{DeRhamComplexXmpPageEmpty29}{DeRhamComplexXmpPagePatch29}
-\pastebutton{DeRhamComplexXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential g1\free{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch30}
-\begin{paste}{DeRhamComplexXmpPageFull30}{DeRhamComplexXmpPageEmpty30}
-\pastebutton{DeRhamComplexXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{exteriorDifferential h1\free{h1 }}
-\indentrel{3}\begin{verbatim}
-   (30)
-     a  (x,y,x,t,x,z,y,r,u,x)dz
-      ,6
-   + 
-           a  (x,y,x,t,x,z,y,r,u,x)
-            ,7
-         + 
-           a  (x,y,x,t,x,z,y,r,u,x)
-            ,2
-    *
-       dy
-   + 
-         a   (x,y,x,t,x,z,y,r,u,x)
-          ,10
-       + 
-         a  (x,y,x,t,x,z,y,r,u,x)
-          ,5
-       + 
-       a  (x,y,x,t,x,z,y,r,u,x) + a  (x,y,x,t,x,z,y,r,u,x)
-        ,3                         ,1
-    *
-       dx
-                   Type: DeRhamComplex(Integer,[x,y,z])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty30}
-\begin{paste}{DeRhamComplexXmpPageEmpty30}{DeRhamComplexXmpPagePatch30}
-\pastebutton{DeRhamComplexXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{exteriorDifferential h1\free{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch31}
-\begin{paste}{DeRhamComplexXmpPageFull31}{DeRhamComplexXmpPageEmpty31}
-\pastebutton{DeRhamComplexXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{coefficient(gamma, dx*dy)\free{gamma dxyz }}
-\indentrel{3}\begin{verbatim}
-   (31)
-        2     3 2       2
-     (7z sin(x y ) - y z cos(z))cos(tan(x y z) + x y z)
-   + 
-         4 2 5    3
-     - 5x y z  + x y z
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty31}
-\begin{paste}{DeRhamComplexXmpPageEmpty31}{DeRhamComplexXmpPagePatch31}
-\pastebutton{DeRhamComplexXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{coefficient(gamma, dx*dy)\free{gamma dxyz }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch32}
-\begin{paste}{DeRhamComplexXmpPageFull32}{DeRhamComplexXmpPageEmpty32}
-\pastebutton{DeRhamComplexXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{coefficient(gamma, one)\free{gamma one }}
-\indentrel{3}\begin{verbatim}
-   (32)  0
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty32}
-\begin{paste}{DeRhamComplexXmpPageEmpty32}{DeRhamComplexXmpPagePatch32}
-\pastebutton{DeRhamComplexXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{coefficient(gamma, one)\free{gamma one }}
-\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPagePatch33}
-\begin{paste}{DeRhamComplexXmpPageFull33}{DeRhamComplexXmpPageEmpty33}
-\pastebutton{DeRhamComplexXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{coefficient(g1,one)\free{g1 one }}
-\indentrel{3}\begin{verbatim}
-   (33)  a(x,t,y,u,v,z,e)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DeRhamComplexXmpPageEmpty33}
-\begin{paste}{DeRhamComplexXmpPageEmpty33}{DeRhamComplexXmpPagePatch33}
-\pastebutton{DeRhamComplexXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{coefficient(g1,one)\free{g1 one }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/dfloat.pht b/books/pages/dfloat.pht
deleted file mode 100644
index 5dbc76b..0000000
--- a/books/pages/dfloat.pht
+++ /dev/null
@@ -1,164 +0,0 @@
-\begin{patch}{DoubleFloatXmpPagePatch1}
-\begin{paste}{DoubleFloatXmpPageFull1}{DoubleFloatXmpPageEmpty1}
-\pastebutton{DoubleFloatXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{2.71828}
-\indentrel{3}\begin{verbatim}
-   (1)  2.71828
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty1}
-\begin{paste}{DoubleFloatXmpPageEmpty1}{DoubleFloatXmpPagePatch1}
-\pastebutton{DoubleFloatXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{2.71828}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch2}
-\begin{paste}{DoubleFloatXmpPageFull2}{DoubleFloatXmpPageEmpty2}
-\pastebutton{DoubleFloatXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{2.71828@DoubleFloat}
-\indentrel{3}\begin{verbatim}
-   (2)  2.71828
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty2}
-\begin{paste}{DoubleFloatXmpPageEmpty2}{DoubleFloatXmpPagePatch2}
-\pastebutton{DoubleFloatXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{2.71828@DoubleFloat}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch3}
-\begin{paste}{DoubleFloatXmpPageFull3}{DoubleFloatXmpPageEmpty3}
-\pastebutton{DoubleFloatXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{2.71828 :: DoubleFloat}
-\indentrel{3}\begin{verbatim}
-   (3)  2.71828
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty3}
-\begin{paste}{DoubleFloatXmpPageEmpty3}{DoubleFloatXmpPagePatch3}
-\pastebutton{DoubleFloatXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{2.71828 :: DoubleFloat}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch4}
-\begin{paste}{DoubleFloatXmpPageFull4}{DoubleFloatXmpPageEmpty4}
-\pastebutton{DoubleFloatXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{eApprox : DoubleFloat := 2.71828\bound{eApprox }}
-\indentrel{3}\begin{verbatim}
-   (4)  2.71828
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty4}
-\begin{paste}{DoubleFloatXmpPageEmpty4}{DoubleFloatXmpPagePatch4}
-\pastebutton{DoubleFloatXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{eApprox : DoubleFloat := 2.71828\bound{eApprox }}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch5}
-\begin{paste}{DoubleFloatXmpPageFull5}{DoubleFloatXmpPageEmpty5}
-\pastebutton{DoubleFloatXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{avg : List DoubleFloat -> DoubleFloat\bound{avgDec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty5}
-\begin{paste}{DoubleFloatXmpPageEmpty5}{DoubleFloatXmpPagePatch5}
-\pastebutton{DoubleFloatXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{avg : List DoubleFloat -> DoubleFloat\bound{avgDec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch6}
-\begin{paste}{DoubleFloatXmpPageFull6}{DoubleFloatXmpPageEmpty6}
-\pastebutton{DoubleFloatXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{avg l ==
-  empty? l => 0 :: DoubleFloat
-  reduce(_+,l) / \#l
-\bound{avg }\free{avgDec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty6}
-\begin{paste}{DoubleFloatXmpPageEmpty6}{DoubleFloatXmpPagePatch6}
-\pastebutton{DoubleFloatXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{avg l ==
-  empty? l => 0 :: DoubleFloat
-  reduce(_+,l) / \#l
-\bound{avg }\free{avgDec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch7}
-\begin{paste}{DoubleFloatXmpPageFull7}{DoubleFloatXmpPageEmpty7}
-\pastebutton{DoubleFloatXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{avg []\free{avg }}
-\indentrel{3}\begin{verbatim}
-   (7)  0.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty7}
-\begin{paste}{DoubleFloatXmpPageEmpty7}{DoubleFloatXmpPagePatch7}
-\pastebutton{DoubleFloatXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{avg []\free{avg }}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch8}
-\begin{paste}{DoubleFloatXmpPageFull8}{DoubleFloatXmpPageEmpty8}
-\pastebutton{DoubleFloatXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{avg [3.4,9.7,-6.8]\free{avg }}
-\indentrel{3}\begin{verbatim}
-   (8)  2.1
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty8}
-\begin{paste}{DoubleFloatXmpPageEmpty8}{DoubleFloatXmpPagePatch8}
-\pastebutton{DoubleFloatXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{avg [3.4,9.7,-6.8]\free{avg }}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch9}
-\begin{paste}{DoubleFloatXmpPageFull9}{DoubleFloatXmpPageEmpty9}
-\pastebutton{DoubleFloatXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{cos(3.1415926)$DoubleFloat}
-\indentrel{3}\begin{verbatim}
-   (9)  - 0.999999999999999
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty9}
-\begin{paste}{DoubleFloatXmpPageEmpty9}{DoubleFloatXmpPagePatch9}
-\pastebutton{DoubleFloatXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{cos(3.1415926)$DoubleFloat}
-\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPagePatch10}
-\begin{paste}{DoubleFloatXmpPageFull10}{DoubleFloatXmpPageEmpty10}
-\pastebutton{DoubleFloatXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{cos(3.1415926 :: DoubleFloat)}
-\indentrel{3}\begin{verbatim}
-   (10)  - 0.999999999999999
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DoubleFloatXmpPageEmpty10}
-\begin{paste}{DoubleFloatXmpPageEmpty10}{DoubleFloatXmpPagePatch10}
-\pastebutton{DoubleFloatXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{cos(3.1415926 :: DoubleFloat)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/dmp.pht b/books/pages/dmp.pht
deleted file mode 100644
index 75cf5a4..0000000
--- a/books/pages/dmp.pht
+++ /dev/null
@@ -1,163 +0,0 @@
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch1}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull1}{DistributedMultivariatePolynomialXmpPageEmpty1}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(d1,d2,d3) : DMP([z,y,x],FRAC INT)\bound{d1dec d2dec d3dec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty1}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty1}{DistributedMultivariatePolynomialXmpPagePatch1}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(d1,d2,d3) : DMP([z,y,x],FRAC INT)\bound{d1dec d2dec d3dec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch2}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull2}{DistributedMultivariatePolynomialXmpPageEmpty2}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{d1 := -4*z + 4*y**2*x + 16*x**2 + 1\bound{d1 }\free{d1dec }}
-\indentrel{3}\begin{verbatim}
-                 2       2
-   (2)  - 4z + 4y x + 16x  + 1
-Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty2}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty2}{DistributedMultivariatePolynomialXmpPagePatch2}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{d1 := -4*z + 4*y**2*x + 16*x**2 + 1\bound{d1 }\free{d1dec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch3}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull3}{DistributedMultivariatePolynomialXmpPageEmpty3}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{d2 := 2*z*y**2 + 4*x + 1\bound{d2 }\free{d2dec }}
-\indentrel{3}\begin{verbatim}
-            2
-   (3)  2z y  + 4x + 1
-Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty3}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty3}{DistributedMultivariatePolynomialXmpPagePatch3}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{d2 := 2*z*y**2 + 4*x + 1\bound{d2 }\free{d2dec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch4}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull4}{DistributedMultivariatePolynomialXmpPageEmpty4}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{d3 := 2*z*x**2 - 2*y**2 - x\bound{d3 }\free{d3dec }}
-\indentrel{3}\begin{verbatim}
-            2     2
-   (4)  2z x  - 2y  - x
-Type: DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty4}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty4}{DistributedMultivariatePolynomialXmpPagePatch4}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{d3 := 2*z*x**2 - 2*y**2 - x\bound{d3 }\free{d3dec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch5}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull5}{DistributedMultivariatePolynomialXmpPageEmpty5}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{groebner [d1,d2,d3]\free{d1 d2 d3 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-   [
-           1568  6   1264  5    6   4   182  3   2047  2
-       z - ÄÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x
-           2745       305      305      549       610
-     + 
-          103      2857
-       - ÄÄÄÄ x - ÄÄÄÄÄ
-         2745     10980
-     ,
-
-        2    112  6    84  5   1264  4    13  3    84  2
-       y  + ÄÄÄÄ x  - ÄÄÄ x  - ÄÄÄÄ x  - ÄÄÄ x  + ÄÄÄ x
-            2745      305       305      549      305
-     + 
-       1772       2
-       ÄÄÄÄ x + ÄÄÄÄ
-       2745     2745
-     ,
-     7   29  6   17  4   11  3    1  2   15     1
-    x  + ÄÄ x  - ÄÄ x  - ÄÄ x  + ÄÄ x  + ÄÄ x + Ä]
-          4      16       8      32      16     4
-Type: List DistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty5}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty5}{DistributedMultivariatePolynomialXmpPagePatch5}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{groebner [d1,d2,d3]\free{d1 d2 d3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch6}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull6}{DistributedMultivariatePolynomialXmpPageEmpty6}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{(n1,n2,n3) : HDMP([z,y,x],FRAC INT)\bound{ndec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty6}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty6}{DistributedMultivariatePolynomialXmpPagePatch6}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{(n1,n2,n3) : HDMP([z,y,x],FRAC INT)\bound{ndec }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch7}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull7}{DistributedMultivariatePolynomialXmpPageEmpty7}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{(n1,n2,n3) := (d1,d2,d3)\free{ndec }\bound{n }\free{d1 d2 d3 }}
-\indentrel{3}\begin{verbatim}
-            2     2
-   (7)  2z x  - 2y  - x
-Type: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty7}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty7}{DistributedMultivariatePolynomialXmpPagePatch7}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{(n1,n2,n3) := (d1,d2,d3)\free{ndec }\bound{n }\free{d1 d2 d3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPagePatch8}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageFull8}{DistributedMultivariatePolynomialXmpPageEmpty8}
-\pastebutton{DistributedMultivariatePolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{groebner [n1,n2,n3]\free{n }}
-\indentrel{3}\begin{verbatim}
-   (8)
-     4     3   3  2   1     1
-   [y  + 2x  - Ä x  + Ä z - Ä,
-               2      2     8
-     4   29  3   1  2   7        9     1     2        1
-    x  + ÄÄ x  - Ä y  - Ä z x - ÄÄ x - Ä, z y  + 2x + Ä,
-          4      8      4       16     4              2
-     2      2       1     2    2   1
-    y x + 4x  - z + Ä, z x  - y  - Ä x,
-                    4              2
-     2     2     2   1     3
-    z  - 4y  + 2x  - Ä z - Ä x]
-                     4     2
-Type: List HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{DistributedMultivariatePolynomialXmpPageEmpty8}
-\begin{paste}{DistributedMultivariatePolynomialXmpPageEmpty8}{DistributedMultivariatePolynomialXmpPagePatch8}
-\pastebutton{DistributedMultivariatePolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{groebner [n1,n2,n3]\free{n }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/eq.pht b/books/pages/eq.pht
deleted file mode 100644
index d232a8e..0000000
--- a/books/pages/eq.pht
+++ /dev/null
@@ -1,194 +0,0 @@
-\begin{patch}{EquationXmpPagePatch1}
-\begin{paste}{EquationXmpPageFull1}{EquationXmpPageEmpty1}
-\pastebutton{EquationXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{eq1 := 3*x + 4*y = 5\bound{eq1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  4y + 3x= 5
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty1}
-\begin{paste}{EquationXmpPageEmpty1}{EquationXmpPagePatch1}
-\pastebutton{EquationXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{eq1 := 3*x + 4*y = 5\bound{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch2}
-\begin{paste}{EquationXmpPageFull2}{EquationXmpPageEmpty2}
-\pastebutton{EquationXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{eq2 := 2*x + 2*y = 3\bound{eq2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  2y + 2x= 3
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty2}
-\begin{paste}{EquationXmpPageEmpty2}{EquationXmpPagePatch2}
-\pastebutton{EquationXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eq2 := 2*x + 2*y = 3\bound{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch3}
-\begin{paste}{EquationXmpPageFull3}{EquationXmpPageEmpty3}
-\pastebutton{EquationXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{lhs eq1\free{eq1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  4y + 3x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty3}
-\begin{paste}{EquationXmpPageEmpty3}{EquationXmpPagePatch3}
-\pastebutton{EquationXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{lhs eq1\free{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch4}
-\begin{paste}{EquationXmpPageFull4}{EquationXmpPageEmpty4}
-\pastebutton{EquationXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{rhs eq1\free{eq1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  5
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty4}
-\begin{paste}{EquationXmpPageEmpty4}{EquationXmpPagePatch4}
-\pastebutton{EquationXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{rhs eq1\free{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch5}
-\begin{paste}{EquationXmpPageFull5}{EquationXmpPageEmpty5}
-\pastebutton{EquationXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{eq1 + eq2\free{eq1 eq2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  6y + 5x= 8
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty5}
-\begin{paste}{EquationXmpPageEmpty5}{EquationXmpPagePatch5}
-\pastebutton{EquationXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{eq1 + eq2\free{eq1 eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch6}
-\begin{paste}{EquationXmpPageFull6}{EquationXmpPageEmpty6}
-\pastebutton{EquationXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{eq1 * eq2\free{eq1 eq2 }}
-\indentrel{3}\begin{verbatim}
-          2             2
-   (6)  8y  + 14x y + 6x = 15
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty6}
-\begin{paste}{EquationXmpPageEmpty6}{EquationXmpPagePatch6}
-\pastebutton{EquationXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{eq1 * eq2\free{eq1 eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch7}
-\begin{paste}{EquationXmpPageFull7}{EquationXmpPageEmpty7}
-\pastebutton{EquationXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{2*eq2 - eq1\free{eq1 eq2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  x= 1
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty7}
-\begin{paste}{EquationXmpPageEmpty7}{EquationXmpPagePatch7}
-\pastebutton{EquationXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{2*eq2 - eq1\free{eq1 eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch8}
-\begin{paste}{EquationXmpPageFull8}{EquationXmpPageEmpty8}
-\pastebutton{EquationXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{eq1**2\free{eq1 }}
-\indentrel{3}\begin{verbatim}
-           2             2
-   (8)  16y  + 24x y + 9x = 25
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty8}
-\begin{paste}{EquationXmpPageEmpty8}{EquationXmpPagePatch8}
-\pastebutton{EquationXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{eq1**2\free{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch9}
-\begin{paste}{EquationXmpPageFull9}{EquationXmpPageEmpty9}
-\pastebutton{EquationXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{if x+1 = y then "equal" else "unequal"}
-\indentrel{3}\begin{verbatim}
-   (9)  "unequal"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty9}
-\begin{paste}{EquationXmpPageEmpty9}{EquationXmpPagePatch9}
-\pastebutton{EquationXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{if x+1 = y then "equal" else "unequal"}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch10}
-\begin{paste}{EquationXmpPageFull10}{EquationXmpPageEmpty10}
-\pastebutton{EquationXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{eqpol := x+1 = y\bound{eqpol }}
-\indentrel{3}\begin{verbatim}
-   (10)  x + 1= y
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty10}
-\begin{paste}{EquationXmpPageEmpty10}{EquationXmpPagePatch10}
-\pastebutton{EquationXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{eqpol := x+1 = y\bound{eqpol }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch11}
-\begin{paste}{EquationXmpPageFull11}{EquationXmpPageEmpty11}
-\pastebutton{EquationXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{if eqpol then "equal" else "unequal"\free{eqpol }}
-\indentrel{3}\begin{verbatim}
-   (11)  "unequal"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty11}
-\begin{paste}{EquationXmpPageEmpty11}{EquationXmpPagePatch11}
-\pastebutton{EquationXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{if eqpol then "equal" else "unequal"\free{eqpol }}
-\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPagePatch12}
-\begin{paste}{EquationXmpPageFull12}{EquationXmpPageEmpty12}
-\pastebutton{EquationXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{eqpol::Boolean\free{eqpol }}
-\indentrel{3}\begin{verbatim}
-   (12)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EquationXmpPageEmpty12}
-\begin{paste}{EquationXmpPageEmpty12}{EquationXmpPagePatch12}
-\pastebutton{EquationXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{eqpol::Boolean\free{eqpol }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/eqtbl.pht b/books/pages/eqtbl.pht
deleted file mode 100644
index c73987b..0000000
--- a/books/pages/eqtbl.pht
+++ /dev/null
@@ -1,96 +0,0 @@
-\begin{patch}{EqTableXmpPagePatch1}
-\begin{paste}{EqTableXmpPageFull1}{EqTableXmpPageEmpty1}
-\pastebutton{EqTableXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{e: EqTable(List Integer, Integer) := table()\bound{e }}
-\indentrel{3}\begin{verbatim}
-   (1)  table()
-                    Type: EqTable(List Integer,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty1}
-\begin{paste}{EqTableXmpPageEmpty1}{EqTableXmpPagePatch1}
-\pastebutton{EqTableXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{e: EqTable(List Integer, Integer) := table()\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPagePatch2}
-\begin{paste}{EqTableXmpPageFull2}{EqTableXmpPageEmpty2}
-\pastebutton{EqTableXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{l1 := [1,2,3]\bound{l1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty2}
-\begin{paste}{EqTableXmpPageEmpty2}{EqTableXmpPagePatch2}
-\pastebutton{EqTableXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{l1 := [1,2,3]\bound{l1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPagePatch3}
-\begin{paste}{EqTableXmpPageFull3}{EqTableXmpPageEmpty3}
-\pastebutton{EqTableXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{l2 := [1,2,3]\bound{l2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty3}
-\begin{paste}{EqTableXmpPageEmpty3}{EqTableXmpPagePatch3}
-\pastebutton{EqTableXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{l2 := [1,2,3]\bound{l2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPagePatch4}
-\begin{paste}{EqTableXmpPageFull4}{EqTableXmpPageEmpty4}
-\pastebutton{EqTableXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{e.l1 := 111\free{e l1 }\bound{e1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  111
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty4}
-\begin{paste}{EqTableXmpPageEmpty4}{EqTableXmpPagePatch4}
-\pastebutton{EqTableXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{e.l1 := 111\free{e l1 }\bound{e1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPagePatch5}
-\begin{paste}{EqTableXmpPageFull5}{EqTableXmpPageEmpty5}
-\pastebutton{EqTableXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{e.l2 := 222\free{e1 l2 }\bound{e2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  222
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty5}
-\begin{paste}{EqTableXmpPageEmpty5}{EqTableXmpPagePatch5}
-\pastebutton{EqTableXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{e.l2 := 222\free{e1 l2 }\bound{e2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPagePatch6}
-\begin{paste}{EqTableXmpPageFull6}{EqTableXmpPageEmpty6}
-\pastebutton{EqTableXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{e.l1\free{e2 l1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  111
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{EqTableXmpPageEmpty6}
-\begin{paste}{EqTableXmpPageEmpty6}{EqTableXmpPagePatch6}
-\pastebutton{EqTableXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{e.l1\free{e2 l1 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/evalex.pht b/books/pages/evalex.pht
deleted file mode 100644
index c44d271..0000000
--- a/books/pages/evalex.pht
+++ /dev/null
@@ -1,32 +0,0 @@
-\begin{patch}{PrefixEvalPatch1}
-\begin{paste}{PrefixEvalFull1}{PrefixEvalEmpty1}
-\pastebutton{PrefixEvalFull1}{\hidepaste}
-\tab{5}\spadcommand{cos(2)}
-\indentrel{3}\begin{verbatim}
-   (1)  cos(2)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PrefixEvalEmpty1}
-\begin{paste}{PrefixEvalEmpty1}{PrefixEvalPatch1}
-\pastebutton{PrefixEvalEmpty1}{\showpaste}
-\tab{5}\spadcommand{cos(2)}
-\end{paste}\end{patch}
-
-\begin{patch}{InfixEvalPatch1}
-\begin{paste}{InfixEvalFull1}{InfixEvalEmpty1}
-\pastebutton{InfixEvalFull1}{\hidepaste}
-\tab{5}\spadcommand{2 + 3.4}
-\indentrel{3}\begin{verbatim}
-   (1)  5.4
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{InfixEvalEmpty1}
-\begin{paste}{InfixEvalEmpty1}{InfixEvalPatch1}
-\pastebutton{InfixEvalEmpty1}{\showpaste}
-\tab{5}\spadcommand{2 + 3.4}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exdiff.pht b/books/pages/exdiff.pht
deleted file mode 100644
index f8f5ca5..0000000
--- a/books/pages/exdiff.pht
+++ /dev/null
@@ -1,197 +0,0 @@
-\begin{patch}{ExDiffBasicPatch1}
-\begin{paste}{ExDiffBasicFull1}{ExDiffBasicEmpty1}
-\pastebutton{ExDiffBasicFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
-\indentrel{3}\begin{verbatim}
-              2                  2
-             x                  x
-   (1)  2x %e  sin(x) + cos(x)%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffBasicEmpty1}
-\begin{paste}{ExDiffBasicEmpty1}{ExDiffBasicPatch1}
-\pastebutton{ExDiffBasicEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * exp(x**2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffSeveralVariablesPatch1}
-\begin{paste}{ExDiffSeveralVariablesFull1}{ExDiffSeveralVariablesEmpty1}
-\pastebutton{ExDiffSeveralVariablesFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
-\indentrel{3}\begin{verbatim}
-                         2    2
-        (- 2x sin(x) + (y  + x )cos(x))tan(y)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                    4     2 2    4
-                   y  + 2x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffSeveralVariablesEmpty1}
-\begin{paste}{ExDiffSeveralVariablesEmpty1}{ExDiffSeveralVariablesPatch1}
-\pastebutton{ExDiffSeveralVariablesEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffSeveralVariablesPatch2}
-\begin{paste}{ExDiffSeveralVariablesFull2}{ExDiffSeveralVariablesEmpty2}
-\pastebutton{ExDiffSeveralVariablesFull2}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
-\indentrel{3}\begin{verbatim}
-   (2)
-         2    2             2
-       (y  + x )sin(x)tan(y)  - 2y sin(x)tan(y)
-     + 
-         2    2
-       (y  + x )sin(x)
-  /
-      4     2 2    4
-     y  + 2x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffSeveralVariablesEmpty2}
-\begin{paste}{ExDiffSeveralVariablesEmpty2}{ExDiffSeveralVariablesPatch2}
-\pastebutton{ExDiffSeveralVariablesEmpty2}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x) * tan(y)/(x**2 + y**2),y)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIPatch1}
-\begin{paste}{ExDiffMultipleIFull1}{ExDiffMultipleIEmpty1}
-\pastebutton{ExDiffMultipleIFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
-\indentrel{3}\begin{verbatim}
-                           3     2
-        8x y sin(x) + (- 2y  - 2x y)cos(x)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               6     2 4     4 2    6
-              y  + 3x y  + 3x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIEmpty1}
-\begin{paste}{ExDiffMultipleIEmpty1}{ExDiffMultipleIPatch1}
-\pastebutton{ExDiffMultipleIEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIPatch2}
-\begin{paste}{ExDiffMultipleIFull2}{ExDiffMultipleIEmpty2}
-\pastebutton{ExDiffMultipleIFull2}{\hidepaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
-\indentrel{3}\begin{verbatim}
-   (2)
-           2     3             4     2 2     4
-   (- 40x y  + 8x )sin(x) + (6y  + 4x y  - 2x )cos(x)
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              8     2 6     4 4     6 2    8
-             y  + 4x y  + 6x y  + 4x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIEmpty2}
-\begin{paste}{ExDiffMultipleIEmpty2}{ExDiffMultipleIPatch2}
-\pastebutton{ExDiffMultipleIEmpty2}{\showpaste}
-\tab{5}\spadcommand{differentiate(sin(x)/(x**2 + y**2),[x,y,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIIPatch1}
-\begin{paste}{ExDiffMultipleIIFull1}{ExDiffMultipleIIEmpty1}
-\pastebutton{ExDiffMultipleIIFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
-\indentrel{3}\begin{verbatim}
-                    4      3
-            (- 84x y  + 24x y)sin(z)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         12     2 9     4 6     6 3    8
-        y   + 4x y  + 6x y  + 4x y  + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffMultipleIIEmpty1}
-\begin{paste}{ExDiffMultipleIIEmpty1}{ExDiffMultipleIIPatch1}
-\pastebutton{ExDiffMultipleIIEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(cos(z)/(x**2 + y**3),[x,y,z],[1,2,3])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffHigherOrderPatch1}
-\begin{paste}{ExDiffHigherOrderFull1}{ExDiffHigherOrderEmpty1}
-\pastebutton{ExDiffHigherOrderFull1}{\hidepaste}
-\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
-\indentrel{3}\begin{verbatim}
-                             2
-            4      2        x
-   (1)  (16x  + 48x  + 12)%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffHigherOrderEmpty1}
-\begin{paste}{ExDiffHigherOrderEmpty1}{ExDiffHigherOrderPatch1}
-\pastebutton{ExDiffHigherOrderEmpty1}{\showpaste}
-\tab{5}\spadcommand{differentiate(exp(x**2),x,4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralPatch1}
-\begin{paste}{ExDiffFormalIntegralFull1}{ExDiffFormalIntegralEmpty1}
-\pastebutton{ExDiffFormalIntegralFull1}{\hidepaste}
-\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
-\indentrel{3}\begin{verbatim}
-           t  ÚÄÄÄÄÄÄÄ¿
-         Ú¿   ³  3
-   (1)   ³   \³%N  + 1 d%N
-        ÀÙ
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralEmpty1}
-\begin{paste}{ExDiffFormalIntegralEmpty1}{ExDiffFormalIntegralPatch1}
-\pastebutton{ExDiffFormalIntegralEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := integrate(sqrt(1 + t**3),t)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralPatch2}
-\begin{paste}{ExDiffFormalIntegralFull2}{ExDiffFormalIntegralEmpty2}
-\pastebutton{ExDiffFormalIntegralFull2}{\hidepaste}
-\tab{5}\spadcommand{differentiate(f,t)\free{f }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄ¿
-         ³ 3
-   (2)  \³t  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralEmpty2}
-\begin{paste}{ExDiffFormalIntegralEmpty2}{ExDiffFormalIntegralPatch2}
-\pastebutton{ExDiffFormalIntegralEmpty2}{\showpaste}
-\tab{5}\spadcommand{differentiate(f,t)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralPatch3}
-\begin{paste}{ExDiffFormalIntegralFull3}{ExDiffFormalIntegralEmpty3}
-\pastebutton{ExDiffFormalIntegralFull3}{\hidepaste}
-\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
-\indentrel{3}\begin{verbatim}
-             t  ÚÄÄÄÄÄÄÄ¿          ÚÄÄÄÄÄÄ¿
-           Ú¿   ³  3             2 ³ 3
-   (3)  2t ³   \³%N  + 1 d%N  + t \³t  + 1
-          ÀÙ
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDiffFormalIntegralEmpty3}
-\begin{paste}{ExDiffFormalIntegralEmpty3}{ExDiffFormalIntegralPatch3}
-\pastebutton{ExDiffFormalIntegralEmpty3}{\showpaste}
-\tab{5}\spadcommand{differentiate(f * t**2,t)\free{f }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exint.pht b/books/pages/exint.pht
deleted file mode 100644
index 401aab1..0000000
--- a/books/pages/exint.pht
+++ /dev/null
@@ -1,298 +0,0 @@
-\begin{patch}{ExIntRationalWithRealParameterPatch1}
-\begin{paste}{ExIntRationalWithRealParameterFull1}{ExIntRationalWithRealParameterEmpty1}
-\pastebutton{ExIntRationalWithRealParameterFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-               2      ÚÄÄÄ¿
-             (x  - a)\³- a  + 2a x         ÚÄ¿
-         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
-                      2             atan(ÄÄÄÄÄ)
-                     x  + a                a
-   (1)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
-                     ÚÄÄÄ¿               ÚÄ¿
-                   2\³- a               \³a
-               Type: Union(List Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalWithRealParameterEmpty1}
-\begin{paste}{ExIntRationalWithRealParameterEmpty1}{ExIntRationalWithRealParameterPatch1}
-\pastebutton{ExIntRationalWithRealParameterEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionPatch1}
-\begin{paste}{ExIntRationalFunctionFull1}{ExIntRationalFunctionEmpty1}
-\pastebutton{ExIntRationalFunctionFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\indentrel{3}\begin{verbatim}
-              3     2
-        atan(x  + 3x  + 3x + 1)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   3
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionEmpty1}
-\begin{paste}{ExIntRationalFunctionEmpty1}{ExIntRationalFunctionPatch1}
-\pastebutton{ExIntRationalFunctionEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionPatch2}
-\begin{paste}{ExIntRationalFunctionFull2}{ExIntRationalFunctionEmpty2}
-\pastebutton{ExIntRationalFunctionFull2}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (2)
-           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-           ³        2
-           ³- 93%%H0  + 12
-         ( ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%H0)
-          \³      31
-      *
-         log
-                            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-                            ³        2
-                            ³- 93%%H0  + 12          2
-              (62%%H0 + 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%H0
-                           \³      31
-            + 
-              - 31%%H0 + 18x - 4
-     + 
-             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-             ³        2
-             ³- 93%%H0  + 12
-         (-  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  - %%H0)
-            \³      31
-      *
-         log
-                              ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-                              ³        2
-                              ³- 93%%H0  + 12          2
-              (- 62%%H0 - 31) ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ  + 62%%H0
-                             \³      31
-            + 
-              - 31%%H0 + 18x - 4
-     + 
-                         2
-       2%%H0 log(- 62%%H0  + 31%%H0 + 9x + 4)
-  /
-     2
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionEmpty2}
-\begin{paste}{ExIntRationalFunctionEmpty2}{ExIntRationalFunctionPatch2}
-\pastebutton{ExIntRationalFunctionEmpty2}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**3+x+1),x)\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionPatch3}
-\begin{paste}{ExIntRationalFunctionFull3}{ExIntRationalFunctionEmpty3}
-\pastebutton{ExIntRationalFunctionFull3}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
-\indentrel{3}\begin{verbatim}
-              3
-        31%%H0  - 3%%H0 - 1
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 31
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalFunctionEmpty3}
-\begin{paste}{ExIntRationalFunctionEmpty3}{ExIntRationalFunctionPatch3}
-\pastebutton{ExIntRationalFunctionEmpty3}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial(tower(\%).2::EXPR INT)\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntAlgebraicRelationPatch1}
-\begin{paste}{ExIntAlgebraicRelationFull1}{ExIntAlgebraicRelationEmpty1}
-\pastebutton{ExIntAlgebraicRelationFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\indentrel{3}\begin{verbatim}
-   (1)
-                 atan(x) 2             atan(x) 2
-       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
-                    3                     3
-     + 
-               atan(x)
-       18x tan(ÄÄÄÄÄÄÄ)
-                  3
-  /
-     18
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntAlgebraicRelationEmpty1}
-\begin{paste}{ExIntAlgebraicRelationEmpty1}{ExIntAlgebraicRelationPatch1}
-\pastebutton{ExIntAlgebraicRelationEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalWithComplexParameterPatch1}
-\begin{paste}{ExIntRationalWithComplexParameterFull1}{ExIntRationalWithComplexParameterEmpty1}
-\pastebutton{ExIntRationalWithComplexParameterFull1}{\hidepaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-              ÚÄÄÄ¿              ÚÄÄÄ¿
-            x\³- a  + a        x\³- a  - a
-        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄ¿              ÚÄÄÄ¿
-               \³- a              \³- a
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                        ÚÄÄÄ¿
-                      2\³- a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRationalWithComplexParameterEmpty1}
-\begin{paste}{ExIntRationalWithComplexParameterEmpty1}{ExIntRationalWithComplexParameterPatch1}
-\pastebutton{ExIntRationalWithComplexParameterEmpty1}{\showpaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntNoSolutionPatch1}
-\begin{paste}{ExIntNoSolutionFull1}{ExIntNoSolutionEmpty1}
-\pastebutton{ExIntNoSolutionFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\indentrel{3}\begin{verbatim}
-           x      ÚÄÄÄÄÄÄÄÄ¿
-         Ú¿  log(\³b + %T a  + 1)
-   (1)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%T
-        ÀÙ            %T
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntNoSolutionEmpty1}
-\begin{paste}{ExIntNoSolutionEmpty1}{ExIntNoSolutionPatch1}
-\pastebutton{ExIntNoSolutionEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntTwoSimilarIntegrandsPatch1}
-\begin{paste}{ExIntTwoSimilarIntegrandsFull1}{ExIntTwoSimilarIntegrandsEmpty1}
-\pastebutton{ExIntTwoSimilarIntegrandsFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\indentrel{3}\begin{verbatim}
-   (1)
-        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
-   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                              4
-                          440b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntTwoSimilarIntegrandsEmpty1}
-\begin{paste}{ExIntTwoSimilarIntegrandsEmpty1}{ExIntTwoSimilarIntegrandsPatch1}
-\pastebutton{ExIntTwoSimilarIntegrandsEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntTwoSimilarIntegrandsPatch2}
-\begin{paste}{ExIntTwoSimilarIntegrandsFull2}{ExIntTwoSimilarIntegrandsEmpty2}
-\pastebutton{ExIntTwoSimilarIntegrandsFull2}{\hidepaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\indentrel{3}\begin{verbatim}
-   (2)
-       -
-              2 2 ÚÄ¿
-            2b x \³3
-         *
-                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-            log(\³a \³b x + a   + \³a   \³b x + a + a)
-     + 
-         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-       4b x \³3 log(\³a   \³b x + a - a)
-     + 
-                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
-          2 2     2\³3 \³a   \³b x + a + a\³3
-       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                               3a
-     + 
-                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
-       (12b x - 9a)\³3 \³a \³b x + a
-  /
-        2 2 ÚÄ¿3ÚÄ¿
-     18a x \³3 \³a
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntTwoSimilarIntegrandsEmpty2}
-\begin{paste}{ExIntTwoSimilarIntegrandsEmpty2}{ExIntTwoSimilarIntegrandsPatch2}
-\pastebutton{ExIntTwoSimilarIntegrandsEmpty2}{\showpaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntRadicalOfTranscendentalPatch1}
-\begin{paste}{ExIntRadicalOfTranscendentalFull1}{ExIntRadicalOfTranscendentalEmpty1}
-\pastebutton{ExIntRadicalOfTranscendentalFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄÄÄÄÄÄÄ¿
-          2\³log(x) + x
-   (1)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-            log(x) + x
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntRadicalOfTranscendentalEmpty1}
-\begin{paste}{ExIntRadicalOfTranscendentalEmpty1}{ExIntRadicalOfTranscendentalPatch1}
-\pastebutton{ExIntRadicalOfTranscendentalEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x * (x + log x)**(3/2)),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntNonElementaryPatch1}
-\begin{paste}{ExIntNonElementaryFull1}{ExIntNonElementaryEmpty1}
-\pastebutton{ExIntNonElementaryFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\indentrel{3}\begin{verbatim}
-                     ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
-        (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
-                              erf(x) + 1
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                        8erf(x) - 8
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntNonElementaryEmpty1}
-\begin{paste}{ExIntNonElementaryEmpty1}{ExIntNonElementaryPatch1}
-\pastebutton{ExIntNonElementaryEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExIntTrigPatch1}
-\begin{paste}{ExIntTrigFull1}{ExIntTrigEmpty1}
-\pastebutton{ExIntTrigFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
-\indentrel{3}\begin{verbatim}
-   (1)
-                          ÚÄÄÄÄÄ¿
-                 - 2cosh(\³x + b  + 1) - 2x
-     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
-          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
-   + 
-         ÚÄÄÄÄÄ¿
-     - 2\³x + b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExIntTrigEmpty1}
-\begin{paste}{ExIntTrigEmpty1}{ExIntTrigPatch1}
-\pastebutton{ExIntTrigEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b))/(sqrt(x+b)*(x+cosh(1+sqrt(x+b)))),x)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exit.pht b/books/pages/exit.pht
deleted file mode 100644
index c8a261d..0000000
--- a/books/pages/exit.pht
+++ /dev/null
@@ -1,106 +0,0 @@
-\begin{patch}{ExitXmpPagePatch1}
-\begin{paste}{ExitXmpPageFull1}{ExitXmpPageEmpty1}
-\pastebutton{ExitXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{n := 0\bound{n }}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty1}
-\begin{paste}{ExitXmpPageEmpty1}{ExitXmpPagePatch1}
-\pastebutton{ExitXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{n := 0\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPagePatch2}
-\begin{paste}{ExitXmpPageFull2}{ExitXmpPageEmpty2}
-\pastebutton{ExitXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{gasp(): Exit ==
-    free n
-    n := n + 1
-    error "Oh no!"
-\bound{gasp }\free{n }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty2}
-\begin{paste}{ExitXmpPageEmpty2}{ExitXmpPagePatch2}
-\pastebutton{ExitXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{gasp(): Exit ==
-    free n
-    n := n + 1
-    error "Oh no!"
-\bound{gasp }\free{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPagePatch3}
-\begin{paste}{ExitXmpPageFull3}{ExitXmpPageEmpty3}
-\pastebutton{ExitXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{half(k) ==
-  if odd? k then gasp()
-  else k quo 2
-\bound{half }\free{gasp }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty3}
-\begin{paste}{ExitXmpPageEmpty3}{ExitXmpPagePatch3}
-\pastebutton{ExitXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{half(k) ==
-  if odd? k then gasp()
-  else k quo 2
-\bound{half }\free{gasp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPagePatch4}
-\begin{paste}{ExitXmpPageFull4}{ExitXmpPageEmpty4}
-\pastebutton{ExitXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{half 4\free{half }\bound{app1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty4}
-\begin{paste}{ExitXmpPageEmpty4}{ExitXmpPagePatch4}
-\pastebutton{ExitXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{half 4\free{half }\bound{app1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPagePatch5}
-\begin{paste}{ExitXmpPageFull5}{ExitXmpPageEmpty5}
-\pastebutton{ExitXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{half 3\free{half app1 }\bound{app2 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty5}
-\begin{paste}{ExitXmpPageEmpty5}{ExitXmpPagePatch5}
-\pastebutton{ExitXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{half 3\free{half app1 }\bound{app2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPagePatch6}
-\begin{paste}{ExitXmpPageFull6}{ExitXmpPageEmpty6}
-\pastebutton{ExitXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{n\free{app2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  1
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExitXmpPageEmpty6}
-\begin{paste}{ExitXmpPageEmpty6}{ExitXmpPagePatch6}
-\pastebutton{ExitXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{n\free{app2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exlap.pht b/books/pages/exlap.pht
deleted file mode 100644
index d7a965e..0000000
--- a/books/pages/exlap.pht
+++ /dev/null
@@ -1,114 +0,0 @@
-\begin{patch}{ExLapDefIntPatch1}
-\begin{paste}{ExLapDefIntFull1}{ExLapDefIntEmpty1}
-\pastebutton{ExLapDefIntFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\indentrel{3}\begin{verbatim}
-             2    2
-   (1)  log(s  + a ) - 2log(s)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapDefIntEmpty1}
-\begin{paste}{ExLapDefIntEmpty1}{ExLapDefIntPatch1}
-\pastebutton{ExLapDefIntEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLapExpExpPatch1}
-\begin{paste}{ExLapExpExpFull1}{ExLapExpExpEmpty1}
-\pastebutton{ExLapExpExpFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\indentrel{3}\begin{verbatim}
-   (1)  - log(s - a) + log(s - b)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapExpExpEmpty1}
-\begin{paste}{ExLapExpExpEmpty1}{ExLapExpExpPatch1}
-\pastebutton{ExLapExpExpEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLapSpecial1Patch1}
-\begin{paste}{ExLapSpecial1Full1}{ExLapSpecial1Empty1}
-\pastebutton{ExLapSpecial1Full1}{\hidepaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\indentrel{3}\begin{verbatim}
-          b    s + c - a
-        %e log(ÄÄÄÄÄÄÄÄÄ)
-                   c
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              s - a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapSpecial1Empty1}
-\begin{paste}{ExLapSpecial1Empty1}{ExLapSpecial1Patch1}
-\pastebutton{ExLapSpecial1Empty1}{\showpaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLapSpecial2Patch1}
-\begin{paste}{ExLapSpecial2Full1}{ExLapSpecial2Empty1}
-\pastebutton{ExLapSpecial2Full1}{\hidepaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\indentrel{3}\begin{verbatim}
-               2    2
-              s  + b             d
-        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
-                  2              s
-                 b
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                     2s
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapSpecial2Empty1}
-\begin{paste}{ExLapSpecial2Empty1}{ExLapSpecial2Patch1}
-\pastebutton{ExLapSpecial2Empty1}{\showpaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLapTrigTrighPatch1}
-\begin{paste}{ExLapTrigTrighFull1}{ExLapTrigTrighEmpty1}
-\pastebutton{ExLapTrigTrighFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
-\indentrel{3}\begin{verbatim}
-             3
-           4a
-   (1)  ÄÄÄÄÄÄÄÄ
-         4     4
-        s  + 4a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapTrigTrighEmpty1}
-\begin{paste}{ExLapTrigTrighEmpty1}{ExLapTrigTrighPatch1}
-\pastebutton{ExLapTrigTrighEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace(sin(a*t) * cosh(a*t) - cos(a*t) * sinh(a*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLapSimplePolePatch1}
-\begin{paste}{ExLapSimplePoleFull1}{ExLapSimplePoleEmpty1}
-\pastebutton{ExLapSimplePoleFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
-\indentrel{3}\begin{verbatim}
-                            1
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         5       4      2 3      3 2     4     5
-        s  + 5a s  + 10a s  + 10a s  + 5a s + a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLapSimplePoleEmpty1}
-\begin{paste}{ExLapSimplePoleEmpty1}{ExLapSimplePolePatch1}
-\pastebutton{ExLapSimplePoleEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace(t**4 * exp(-a*t) / factorial(4), t, s)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exlimit.pht b/books/pages/exlimit.pht
deleted file mode 100644
index d15d79f..0000000
--- a/books/pages/exlimit.pht
+++ /dev/null
@@ -1,221 +0,0 @@
-\begin{patch}{ExLimitBasicPatch1}
-\begin{paste}{ExLimitBasicFull1}{ExLimitBasicEmpty1}
-\pastebutton{ExLimitBasicFull1}{\hidepaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\indentrel{3}\begin{verbatim}
-          1
-   (1)  - Ä
-          2
-Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitBasicEmpty1}
-\begin{paste}{ExLimitBasicEmpty1}{ExLimitBasicPatch1}
-\pastebutton{ExLimitBasicEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfinitePatch1}
-\begin{paste}{ExLimitComplexInfiniteFull1}{ExLimitComplexInfiniteEmpty1}
-\pastebutton{ExLimitComplexInfiniteFull1}{\hidepaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (1)  - 1
-   Type: OnePointCompletion Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfiniteEmpty1}
-\begin{paste}{ExLimitComplexInfiniteEmpty1}{ExLimitComplexInfinitePatch1}
-\pastebutton{ExLimitComplexInfiniteEmpty1}{\showpaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfinitePatch2}
-\begin{paste}{ExLimitComplexInfiniteFull2}{ExLimitComplexInfiniteEmpty2}
-\pastebutton{ExLimitComplexInfiniteFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-   (2)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfiniteEmpty2}
-\begin{paste}{ExLimitComplexInfiniteEmpty2}{ExLimitComplexInfinitePatch2}
-\pastebutton{ExLimitComplexInfiniteEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfinitePatch3}
-\begin{paste}{ExLimitComplexInfiniteFull3}{ExLimitComplexInfiniteEmpty3}
-\pastebutton{ExLimitComplexInfiniteFull3}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (3)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitComplexInfiniteEmpty3}
-\begin{paste}{ExLimitComplexInfiniteEmpty3}{ExLimitComplexInfinitePatch3}
-\pastebutton{ExLimitComplexInfiniteEmpty3}{\showpaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitOneSidedPatch1}
-\begin{paste}{ExLimitOneSidedFull1}{ExLimitOneSidedEmpty1}
-\pastebutton{ExLimitOneSidedFull1}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitOneSidedEmpty1}
-\begin{paste}{ExLimitOneSidedEmpty1}{ExLimitOneSidedPatch1}
-\pastebutton{ExLimitOneSidedEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitOneSidedPatch2}
-\begin{paste}{ExLimitOneSidedFull2}{ExLimitOneSidedEmpty2}
-\pastebutton{ExLimitOneSidedFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (2)  [leftHandLimit= "failed",rightHandLimit= 0]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitOneSidedEmpty2}
-\begin{paste}{ExLimitOneSidedEmpty2}{ExLimitOneSidedPatch2}
-\pastebutton{ExLimitOneSidedEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitTwoSidedPatch1}
-\begin{paste}{ExLimitTwoSidedFull1}{ExLimitTwoSidedEmpty1}
-\pastebutton{ExLimitTwoSidedFull1}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)  [leftHandLimit= - 1,rightHandLimit= 1]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitTwoSidedEmpty1}
-\begin{paste}{ExLimitTwoSidedEmpty1}{ExLimitTwoSidedPatch1}
-\pastebutton{ExLimitTwoSidedEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitTwoSidedPatch2}
-\begin{paste}{ExLimitTwoSidedFull2}{ExLimitTwoSidedEmpty2}
-\pastebutton{ExLimitTwoSidedFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\indentrel{3}\begin{verbatim}
-                            1                    1
-   (2)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
-                           ÚÄ¿                  ÚÄ¿
-                          \³2                  \³2
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitTwoSidedEmpty2}
-\begin{paste}{ExLimitTwoSidedEmpty2}{ExLimitTwoSidedPatch2}
-\pastebutton{ExLimitTwoSidedEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitInfinitePatch1}
-\begin{paste}{ExLimitInfiniteFull1}{ExLimitInfiniteEmpty1}
-\pastebutton{ExLimitInfiniteFull1}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-         ÚÄ¿
-        \³3
-   (1)  ÄÄÄÄ
-          5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitInfiniteEmpty1}
-\begin{paste}{ExLimitInfiniteEmpty1}{ExLimitInfinitePatch1}
-\pastebutton{ExLimitInfiniteEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitInfinitePatch2}
-\begin{paste}{ExLimitInfiniteFull2}{ExLimitInfiniteEmpty2}
-\pastebutton{ExLimitInfiniteFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\indentrel{3}\begin{verbatim}
-           ÚÄ¿
-          \³3
-   (2)  - ÄÄÄÄ
-            5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitInfiniteEmpty2}
-\begin{paste}{ExLimitInfiniteEmpty2}{ExLimitInfinitePatch2}
-\pastebutton{ExLimitInfiniteEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitParameterPatch1}
-\begin{paste}{ExLimitParameterFull1}{ExLimitParameterEmpty1}
-\pastebutton{ExLimitParameterFull1}{\hidepaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-        a
-   (1)  Ä
-        b
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitParameterEmpty1}
-\begin{paste}{ExLimitParameterEmpty1}{ExLimitParameterPatch1}
-\pastebutton{ExLimitParameterEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitRealComplexPatch1}
-\begin{paste}{ExLimitRealComplexFull1}{ExLimitRealComplexEmpty1}
-\pastebutton{ExLimitRealComplexFull1}{\hidepaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitRealComplexEmpty1}
-\begin{paste}{ExLimitRealComplexEmpty1}{ExLimitRealComplexPatch1}
-\pastebutton{ExLimitRealComplexEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExLimitRealComplexPatch2}
-\begin{paste}{ExLimitRealComplexFull2}{ExLimitRealComplexEmpty2}
-\pastebutton{ExLimitRealComplexFull2}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (2)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExLimitRealComplexEmpty2}
-\begin{paste}{ExLimitRealComplexEmpty2}{ExLimitRealComplexPatch2}
-\pastebutton{ExLimitRealComplexEmpty2}{\showpaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exmatrix.pht b/books/pages/exmatrix.pht
deleted file mode 100644
index 2ce8a79..0000000
--- a/books/pages/exmatrix.pht
+++ /dev/null
@@ -1,341 +0,0 @@
-\begin{patch}{ExMatrixBasicFunctionPatch1}
-\begin{paste}{ExMatrixBasicFunctionFull1}{ExMatrixBasicFunctionEmpty1}
-\pastebutton{ExMatrixBasicFunctionFull1}{\hidepaste}
-\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  - 2   1 ¿
-   (1)  ³           ³
-        À4   2   - 4Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty1}
-\begin{paste}{ExMatrixBasicFunctionEmpty1}{ExMatrixBasicFunctionPatch1}
-\pastebutton{ExMatrixBasicFunctionEmpty1}{\showpaste}
-\tab{5}\spadcommand{m1 := matrix([[1,-2,1],[4,2,-4]])\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch2}
-\begin{paste}{ExMatrixBasicFunctionFull2}{ExMatrixBasicFunctionEmpty2}
-\pastebutton{ExMatrixBasicFunctionFull2}{\hidepaste}
-\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú1    0    2 ¿
-        ³            ³
-   (2)  ³20  30   10 ³
-        ³            ³
-        À0   200  100Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty2}
-\begin{paste}{ExMatrixBasicFunctionEmpty2}{ExMatrixBasicFunctionPatch2}
-\pastebutton{ExMatrixBasicFunctionEmpty2}{\showpaste}
-\tab{5}\spadcommand{m2 := matrix([[1,0,2],[20,30,10],[0,200,100]])\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch3}
-\begin{paste}{ExMatrixBasicFunctionFull3}{ExMatrixBasicFunctionEmpty3}
-\pastebutton{ExMatrixBasicFunctionFull3}{\hidepaste}
-\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2  3¿
-   (3)  ³       ³
-        À2  4  6Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty3}
-\begin{paste}{ExMatrixBasicFunctionEmpty3}{ExMatrixBasicFunctionPatch3}
-\pastebutton{ExMatrixBasicFunctionEmpty3}{\showpaste}
-\tab{5}\spadcommand{m3 := matrix([[1,2,3],[2,4,6]])\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch4}
-\begin{paste}{ExMatrixBasicFunctionFull4}{ExMatrixBasicFunctionEmpty4}
-\pastebutton{ExMatrixBasicFunctionFull4}{\hidepaste}
-\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú2  0  4¿
-   (4)  ³       ³
-        À6  6  2Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty4}
-\begin{paste}{ExMatrixBasicFunctionEmpty4}{ExMatrixBasicFunctionPatch4}
-\pastebutton{ExMatrixBasicFunctionEmpty4}{\showpaste}
-\tab{5}\spadcommand{m1 + m3\free{m1 }\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch5}
-\begin{paste}{ExMatrixBasicFunctionFull5}{ExMatrixBasicFunctionEmpty5}
-\pastebutton{ExMatrixBasicFunctionFull5}{\hidepaste}
-\tab{5}\spadcommand{100 * m1\free{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú100  - 200   100 ¿
-   (5)  ³                 ³
-        À400   200   - 400Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty5}
-\begin{paste}{ExMatrixBasicFunctionEmpty5}{ExMatrixBasicFunctionPatch5}
-\pastebutton{ExMatrixBasicFunctionEmpty5}{\showpaste}
-\tab{5}\spadcommand{100 * m1\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch6}
-\begin{paste}{ExMatrixBasicFunctionFull6}{ExMatrixBasicFunctionEmpty6}
-\pastebutton{ExMatrixBasicFunctionFull6}{\hidepaste}
-\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú- 39   140    82  ¿
-   (6)  ³                  ³
-        À 44   - 740  - 372Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty6}
-\begin{paste}{ExMatrixBasicFunctionEmpty6}{ExMatrixBasicFunctionPatch6}
-\pastebutton{ExMatrixBasicFunctionEmpty6}{\showpaste}
-\tab{5}\spadcommand{m1 * m2\free{m1 }\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch7}
-\begin{paste}{ExMatrixBasicFunctionFull7}{ExMatrixBasicFunctionEmpty7}
-\pastebutton{ExMatrixBasicFunctionFull7}{\hidepaste}
-\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú40  662   321¿
-   (7)  ³             ³
-        À78  1318  648Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty7}
-\begin{paste}{ExMatrixBasicFunctionEmpty7}{ExMatrixBasicFunctionPatch7}
-\pastebutton{ExMatrixBasicFunctionEmpty7}{\showpaste}
-\tab{5}\spadcommand{-m1 + m3 * m2\free{m1 }\free{m2 }\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionPatch8}
-\begin{paste}{ExMatrixBasicFunctionFull8}{ExMatrixBasicFunctionEmpty8}
-\pastebutton{ExMatrixBasicFunctionFull8}{\hidepaste}
-\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [4,8]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExMatrixBasicFunctionEmpty8}
-\begin{paste}{ExMatrixBasicFunctionEmpty8}{ExMatrixBasicFunctionPatch8}
-\pastebutton{ExMatrixBasicFunctionEmpty8}{\showpaste}
-\tab{5}\spadcommand{m3 *vector([1,0,1])\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExRankMatrixPatch1}
-\begin{paste}{ExRankMatrixFull1}{ExRankMatrixEmpty1}
-\pastebutton{ExRankMatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
-\indentrel{3}\begin{verbatim}
-   (1)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExRankMatrixEmpty1}
-\begin{paste}{ExRankMatrixEmpty1}{ExRankMatrixPatch1}
-\pastebutton{ExRankMatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{rank(matrix([[0,4,1],[5,3,-7],[-5,5,9]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExTraceMatrixPatch1}
-\begin{paste}{ExTraceMatrixFull1}{ExTraceMatrixEmpty1}
-\pastebutton{ExTraceMatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
-\indentrel{3}\begin{verbatim}
-         2        3
-   (1)  z  + y + u  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExTraceMatrixEmpty1}
-\begin{paste}{ExTraceMatrixEmpty1}{ExTraceMatrixPatch1}
-\pastebutton{ExTraceMatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{trace( matrix([[1,x,x**2,x**3],[1,y,y**2,y**3],[1,z,z**2,z**3],[1,u,u**2,u**3]]) )}
-\end{paste}\end{patch}
-
-\begin{patch}{ExInverseMatrixPatch1}
-\begin{paste}{ExInverseMatrixFull1}{ExInverseMatrixEmpty1}
-\pastebutton{ExInverseMatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
-\indentrel{3}\begin{verbatim}
-        Ú  2        5 ¿
-        ³- Ä  - 1   Ä ³
-        ³  7        7 ³
-        ³             ³
-   (1)  ³ 8          6³
-        ³ Ä    1   - Ä³
-        ³ 7          7³
-        ³             ³
-        À- 1  - 1   1 Ù
-               Type: Union(Matrix Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExInverseMatrixEmpty1}
-\begin{paste}{ExInverseMatrixEmpty1}{ExInverseMatrixPatch1}
-\pastebutton{ExInverseMatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{inverse(matrix([[1,2,1],[-2,3,4],[-1,5,6]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch1}
-\begin{paste}{ExConstructMatrixFull1}{ExConstructMatrixEmpty1}
-\pastebutton{ExConstructMatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
-\indentrel{3}\begin{verbatim}
-        Ú1  0  0  0  0¿
-        ³             ³
-        ³0  2  0  0  0³
-        ³             ³
-   (1)  ³0  0  3  0  0³
-        ³             ³
-        ³0  0  0  2  0³
-        ³             ³
-        À0  0  0  0  1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty1}
-\begin{paste}{ExConstructMatrixEmpty1}{ExConstructMatrixPatch1}
-\pastebutton{ExConstructMatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{diagonalMatrix([1,2,3,2,1])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch2}
-\begin{paste}{ExConstructMatrixFull2}{ExConstructMatrixEmpty2}
-\pastebutton{ExConstructMatrixFull2}{\hidepaste}
-\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
-\indentrel{3}\begin{verbatim}
-        Ú1   2   3 ¿
-        ³          ³
-   (2)  ³6   7   8 ³
-        ³          ³
-        À11  12  13Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty2}
-\begin{paste}{ExConstructMatrixEmpty2}{ExConstructMatrixPatch2}
-\pastebutton{ExConstructMatrixEmpty2}{\showpaste}
-\tab{5}\spadcommand{subMatrix(matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]), 1,3,2,4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch3}
-\begin{paste}{ExConstructMatrixFull3}{ExConstructMatrixEmpty3}
-\pastebutton{ExConstructMatrixFull3}{\hidepaste}
-\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\indentrel{3}\begin{verbatim}
-        Ú1  2  3  11  12  13¿
-   (3)  ³                   ³
-        À6  7  8  55  77  88Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty3}
-\begin{paste}{ExConstructMatrixEmpty3}{ExConstructMatrixPatch3}
-\pastebutton{ExConstructMatrixEmpty3}{\showpaste}
-\tab{5}\spadcommand{horizConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch4}
-\begin{paste}{ExConstructMatrixFull4}{ExConstructMatrixEmpty4}
-\pastebutton{ExConstructMatrixFull4}{\hidepaste}
-\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\indentrel{3}\begin{verbatim}
-        Ú1   2   3 ¿
-        ³          ³
-        ³6   7   8 ³
-   (4)  ³          ³
-        ³11  12  13³
-        ³          ³
-        À55  77  88Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty4}
-\begin{paste}{ExConstructMatrixEmpty4}{ExConstructMatrixPatch4}
-\pastebutton{ExConstructMatrixEmpty4}{\showpaste}
-\tab{5}\spadcommand{vertConcat(matrix([[1,2,3],[6,7,8]]),matrix([[11,12,13],[55,77,88]]))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch5}
-\begin{paste}{ExConstructMatrixFull5}{ExConstructMatrixEmpty5}
-\pastebutton{ExConstructMatrixFull5}{\hidepaste}
-\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
-\indentrel{3}\begin{verbatim}
-        Ú0   1   2   3   4 ¿
-        ³                  ³
-   (5)  ³5   6   7   8   9 ³
-        ³                  ³
-        À10  11  12  13  14Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty5}
-\begin{paste}{ExConstructMatrixEmpty5}{ExConstructMatrixPatch5}
-\pastebutton{ExConstructMatrixEmpty5}{\showpaste}
-\tab{5}\spadcommand{b:=matrix([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]])\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixPatch6}
-\begin{paste}{ExConstructMatrixFull6}{ExConstructMatrixEmpty6}
-\pastebutton{ExConstructMatrixFull6}{\hidepaste}
-\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
-\indentrel{3}\begin{verbatim}
-        Ú0  5  10  3   4 ¿
-        ³                ³
-   (6)  ³1  6  11  8   9 ³
-        ³                ³
-        À2  7  12  13  14Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExConstructMatrixEmpty6}
-\begin{paste}{ExConstructMatrixEmpty6}{ExConstructMatrixPatch6}
-\pastebutton{ExConstructMatrixEmpty6}{\showpaste}
-\tab{5}\spadcommand{setsubMatrix!(b,1,1,transpose(subMatrix(b,1,3,1,3)))\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExDeterminantMatrixPatch1}
-\begin{paste}{ExDeterminantMatrixFull1}{ExDeterminantMatrixEmpty1}
-\pastebutton{ExDeterminantMatrixFull1}{\hidepaste}
-\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
-\indentrel{3}\begin{verbatim}
-   (1)  - 48
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExDeterminantMatrixEmpty1}
-\begin{paste}{ExDeterminantMatrixEmpty1}{ExDeterminantMatrixPatch1}
-\pastebutton{ExDeterminantMatrixEmpty1}{\showpaste}
-\tab{5}\spadcommand{determinant(matrix([[1,2,3,4],[2,3,2,5],[3,4,5,6],[4,1,6,7]]))}
-\end{paste}\end{patch}
-
diff --git a/books/pages/explot2d.pht b/books/pages/explot2d.pht
deleted file mode 100644
index c8c7cdb..0000000
--- a/books/pages/explot2d.pht
+++ /dev/null
@@ -1,52 +0,0 @@
-\begin{patch}{ExPlot2DPolarPatch1}
-\begin{paste}{ExPlot2DPolarFull1}{ExPlot2DPolarEmpty1}
-\pastebutton{ExPlot2DPolarFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dpolar1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dpolar1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DPolarEmpty1}
-\begin{paste}{ExPlot2DPolarEmpty1}{ExPlot2DPolarPatch1}
-\pastebutton{ExPlot2DPolarEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(4*t/7),t = 0..14*\%pi,coordinates == polar)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DAlgebraicPatch1}
-\begin{paste}{ExPlot2DAlgebraicFull1}{ExPlot2DAlgebraicEmpty1}
-\pastebutton{ExPlot2DAlgebraicFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dalgebraic1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dalgebraic1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DAlgebraicEmpty1}
-\begin{paste}{ExPlot2DAlgebraicEmpty1}{ExPlot2DAlgebraicPatch1}
-\pastebutton{ExPlot2DAlgebraicEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DFunctionsPatch1}
-\begin{paste}{ExPlot2DFunctionsFull1}{ExPlot2DFunctionsEmpty1}
-\pastebutton{ExPlot2DFunctionsFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dfunctions1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dfunctions1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DFunctionsEmpty1}
-\begin{paste}{ExPlot2DFunctionsEmpty1}{ExPlot2DFunctionsPatch1}
-\pastebutton{ExPlot2DFunctionsEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DParametricPatch1}
-\begin{paste}{ExPlot2DParametricFull1}{ExPlot2DParametricEmpty1}
-\pastebutton{ExPlot2DParametricFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot2dparametric1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot2dparametric1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot2DParametricEmpty1}
-\begin{paste}{ExPlot2DParametricEmpty1}{ExPlot2DParametricPatch1}
-\pastebutton{ExPlot2DParametricEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(9 * sin(3*t/4),8 * sin(t)),t = -4*\%pi..4*\%pi)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/explot3d.pht b/books/pages/explot3d.pht
deleted file mode 100644
index f2235c4..0000000
--- a/books/pages/explot3d.pht
+++ /dev/null
@@ -1,65 +0,0 @@
-\begin{patch}{ExPlot3DParametricCurvePatch1}
-\begin{paste}{ExPlot3DParametricCurveFull1}{ExPlot3DParametricCurveEmpty1}
-\pastebutton{ExPlot3DParametricCurveFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametriccurve1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametriccurve1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricCurveEmpty1}
-\begin{paste}{ExPlot3DParametricCurveEmpty1}{ExPlot3DParametricCurvePatch1}
-\pastebutton{ExPlot3DParametricCurveEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t),t=0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricCurvePatch2}
-\begin{paste}{ExPlot3DParametricCurveFull2}{ExPlot3DParametricCurveEmpty2}
-\pastebutton{ExPlot3DParametricCurveFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametriccurve2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametriccurve2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricCurveEmpty2}
-\begin{paste}{ExPlot3DParametricCurveEmpty2}{ExPlot3DParametricCurvePatch2}
-\pastebutton{ExPlot3DParametricCurveEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(curve(t,t**2,t**3),t=-3..3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricSurfacePatch1}
-\begin{paste}{ExPlot3DParametricSurfaceFull1}{ExPlot3DParametricSurfaceEmpty1}
-\pastebutton{ExPlot3DParametricSurfaceFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametricsurface1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametricsurface1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricSurfaceEmpty1}
-\begin{paste}{ExPlot3DParametricSurfaceEmpty1}{ExPlot3DParametricSurfacePatch1}
-\pastebutton{ExPlot3DParametricSurfaceEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(surface(5*sin(u)*cos(v),4*sin(u)*sin(v),3*cos(u)),u=0..\%pi,v=0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricSurfacePatch2}
-\begin{paste}{ExPlot3DParametricSurfaceFull2}{ExPlot3DParametricSurfaceEmpty2}
-\pastebutton{ExPlot3DParametricSurfaceFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dparametricsurface2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dparametricsurface2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DParametricSurfaceEmpty2}
-\begin{paste}{ExPlot3DParametricSurfaceEmpty2}{ExPlot3DParametricSurfacePatch2}
-\pastebutton{ExPlot3DParametricSurfaceEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v),u*sin(v),u),u=0..4,v=0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DFunctionsPatch1}
-\begin{paste}{ExPlot3DFunctionsFull1}{ExPlot3DFunctionsEmpty1}
-\pastebutton{ExPlot3DFunctionsFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/explot3dfunctions1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/explot3dfunctions1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ExPlot3DFunctionsEmpty1}
-\begin{paste}{ExPlot3DFunctionsEmpty1}{ExPlot3DFunctionsPatch1}
-\pastebutton{ExPlot3DFunctionsEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x = -3..3,y = -3..3)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/expr.pht b/books/pages/expr.pht
deleted file mode 100644
index 9d571eb..0000000
--- a/books/pages/expr.pht
+++ /dev/null
@@ -1,423 +0,0 @@
-\begin{patch}{ExpressionXmpPagePatch1}
-\begin{paste}{ExpressionXmpPageFull1}{ExpressionXmpPageEmpty1}
-\pastebutton{ExpressionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{sin(x) + 3*cos(x)**2}
-\indentrel{3}\begin{verbatim}
-                        2
-   (1)  sin(x) + 3cos(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty1}
-\begin{paste}{ExpressionXmpPageEmpty1}{ExpressionXmpPagePatch1}
-\pastebutton{ExpressionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{sin(x) + 3*cos(x)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch2}
-\begin{paste}{ExpressionXmpPageFull2}{ExpressionXmpPageEmpty2}
-\pastebutton{ExpressionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{tan(x) - 3.45*x}
-\indentrel{3}\begin{verbatim}
-   (2)  tan(x) - 3.45 x
-                                 Type: Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty2}
-\begin{paste}{ExpressionXmpPageEmpty2}{ExpressionXmpPagePatch2}
-\pastebutton{ExpressionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{tan(x) - 3.45*x}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch3}
-\begin{paste}{ExpressionXmpPageFull3}{ExpressionXmpPageEmpty3}
-\pastebutton{ExpressionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))}
-\indentrel{3}\begin{verbatim}
-   (3)
-          ÚÄ¿ 2         ÚÄÄ¿      ÚÄ¿         ÚÄÄ¿ 2
-   - tan(\³7 )  + 2sin(\³11 )tan(\³7 ) - sin(\³11 )
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                     cos(y - x) - 4
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty3}
-\begin{paste}{ExpressionXmpPageEmpty3}{ExpressionXmpPagePatch3}
-\pastebutton{ExpressionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch4}
-\begin{paste}{ExpressionXmpPageFull4}{ExpressionXmpPageEmpty4}
-\pastebutton{ExpressionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{log(exp x)@Expression(Integer)}
-\indentrel{3}\begin{verbatim}
-   (4)  x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty4}
-\begin{paste}{ExpressionXmpPageEmpty4}{ExpressionXmpPagePatch4}
-\pastebutton{ExpressionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{log(exp x)@Expression(Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch5}
-\begin{paste}{ExpressionXmpPageFull5}{ExpressionXmpPageEmpty5}
-\pastebutton{ExpressionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{log(exp x)@Expression(Complex Integer)}
-\indentrel{3}\begin{verbatim}
-              x
-   (5)  log(%e )
-                       Type: Expression Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty5}
-\begin{paste}{ExpressionXmpPageEmpty5}{ExpressionXmpPagePatch5}
-\pastebutton{ExpressionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{log(exp x)@Expression(Complex Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch6}
-\begin{paste}{ExpressionXmpPageFull6}{ExpressionXmpPageEmpty6}
-\pastebutton{ExpressionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{sqrt 3 + sqrt(2 + sqrt(-5))\bound{algnum1 }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄÄÄÄÄ¿
-         ³ ÚÄÄÄ¿         ÚÄ¿
-   (6)  \³\³- 5  + 2  + \³3
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty6}
-\begin{paste}{ExpressionXmpPageEmpty6}{ExpressionXmpPagePatch6}
-\pastebutton{ExpressionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{sqrt 3 + sqrt(2 + sqrt(-5))\bound{algnum1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch7}
-\begin{paste}{ExpressionXmpPageFull7}{ExpressionXmpPageEmpty7}
-\pastebutton{ExpressionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{\% :: Expression Integer\free{algnum1 }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄÄÄÄÄ¿
-         ³ ÚÄÄÄ¿         ÚÄ¿
-   (7)  \³\³- 5  + 2  + \³3
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty7}
-\begin{paste}{ExpressionXmpPageEmpty7}{ExpressionXmpPagePatch7}
-\pastebutton{ExpressionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{\% :: Expression Integer\free{algnum1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch8}
-\begin{paste}{ExpressionXmpPageFull8}{ExpressionXmpPageEmpty8}
-\pastebutton{ExpressionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{height mainKernel sin(x + 4)}
-\indentrel{3}\begin{verbatim}
-   (8)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty8}
-\begin{paste}{ExpressionXmpPageEmpty8}{ExpressionXmpPagePatch8}
-\pastebutton{ExpressionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{height mainKernel sin(x + 4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch9}
-\begin{paste}{ExpressionXmpPageFull9}{ExpressionXmpPageEmpty9}
-\pastebutton{ExpressionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) )\bound{e }}
-\indentrel{3}\begin{verbatim}
-                2
-        - sin(x)  + 8sin(x) - 16
-   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 ÚÄÄÄ¿
-              2y\³- y  - 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty9}
-\begin{paste}{ExpressionXmpPageEmpty9}{ExpressionXmpPagePatch9}
-\pastebutton{ExpressionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) )\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch10}
-\begin{paste}{ExpressionXmpPageFull10}{ExpressionXmpPageEmpty10}
-\pastebutton{ExpressionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{numer e\free{e }}
-\indentrel{3}\begin{verbatim}
-                 2
-   (10)  - sin(x)  + 8sin(x) - 16
-Type: SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty10}
-\begin{paste}{ExpressionXmpPageEmpty10}{ExpressionXmpPagePatch10}
-\pastebutton{ExpressionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{numer e\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch11}
-\begin{paste}{ExpressionXmpPageFull11}{ExpressionXmpPageEmpty11}
-\pastebutton{ExpressionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{denom e\free{e }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄ¿
-   (11)  2y\³- y  - 1
-Type: SparseMultivariatePolynomial(Integer,Kernel Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty11}
-\begin{paste}{ExpressionXmpPageEmpty11}{ExpressionXmpPagePatch11}
-\pastebutton{ExpressionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{denom e\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch12}
-\begin{paste}{ExpressionXmpPageFull12}{ExpressionXmpPageEmpty12}
-\pastebutton{ExpressionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{D(e, x)\free{e }}
-\indentrel{3}\begin{verbatim}
-   (12)
-                                      ÚÄÄÄ¿
-       (4y cos(x)sin(x) - 16y cos(x))\³- y
-     + 
-       - 2cos(x)sin(x) + 8cos(x)
-  /
-        ÚÄÄÄ¿     3
-     4y\³- y  + 4y  - 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty12}
-\begin{paste}{ExpressionXmpPageEmpty12}{ExpressionXmpPagePatch12}
-\pastebutton{ExpressionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{D(e, x)\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch13}
-\begin{paste}{ExpressionXmpPageFull13}{ExpressionXmpPageEmpty13}
-\pastebutton{ExpressionXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{D(e, [x, y], [1, 2])\free{e }}
-\indentrel{3}\begin{verbatim}
-   (13)
-                   7       4
-           (- 2304y  + 960y )cos(x)sin(x)
-         + 
-                 7        4
-           (9216y  - 3840y )cos(x)
-      *
-          ÚÄÄÄ¿
-         \³- y
-     + 
-              9        6       3
-       (- 960y  + 2160y  - 180y  - 3)cos(x)sin(x)
-     + 
-             9        6       3
-       (3840y  - 8640y  + 720y  + 12)cos(x)
-  /
-            12        9        6       3      ÚÄÄÄ¿
-       (256y   - 1792y  + 1120y  - 112y  + 1)\³- y
-     + 
-              11        8       5      2
-       - 1024y   + 1792y  - 448y  + 16y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty13}
-\begin{paste}{ExpressionXmpPageEmpty13}{ExpressionXmpPagePatch13}
-\pastebutton{ExpressionXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{D(e, [x, y], [1, 2])\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch14}
-\begin{paste}{ExpressionXmpPageFull14}{ExpressionXmpPageEmpty14}
-\pastebutton{ExpressionXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{complexNumeric(cos(2 - 3*\%i))}
-\indentrel{3}\begin{verbatim}
-   (14)
-   - 4.1896256909 688072301 + 9.1092278937 55336598 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty14}
-\begin{paste}{ExpressionXmpPageEmpty14}{ExpressionXmpPagePatch14}
-\pastebutton{ExpressionXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{complexNumeric(cos(2 - 3*\%i))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch15}
-\begin{paste}{ExpressionXmpPageFull15}{ExpressionXmpPageEmpty15}
-\pastebutton{ExpressionXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{numeric(tan 3.8)}
-\indentrel{3}\begin{verbatim}
-   (15)  0.7735560905 0312607286
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty15}
-\begin{paste}{ExpressionXmpPageEmpty15}{ExpressionXmpPagePatch15}
-\pastebutton{ExpressionXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{numeric(tan 3.8)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch16}
-\begin{paste}{ExpressionXmpPageFull16}{ExpressionXmpPageEmpty16}
-\pastebutton{ExpressionXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{e2 := cos(x**2 - y + 3)\bound{e2 }}
-\indentrel{3}\begin{verbatim}
-                  2
-   (16)  cos(y - x  - 3)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty16}
-\begin{paste}{ExpressionXmpPageEmpty16}{ExpressionXmpPagePatch16}
-\pastebutton{ExpressionXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{e2 := cos(x**2 - y + 3)\bound{e2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch17}
-\begin{paste}{ExpressionXmpPageFull17}{ExpressionXmpPageEmpty17}
-\pastebutton{ExpressionXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{e3 := asin(e2) - \%pi/2\free{e2 }\bound{e3 }}
-\indentrel{3}\begin{verbatim}
-                2
-   (17)  - y + x  + 3
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty17}
-\begin{paste}{ExpressionXmpPageEmpty17}{ExpressionXmpPagePatch17}
-\pastebutton{ExpressionXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{e3 := asin(e2) - \%pi/2\free{e2 }\bound{e3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch18}
-\begin{paste}{ExpressionXmpPageFull18}{ExpressionXmpPageEmpty18}
-\pastebutton{ExpressionXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{e3 :: Polynomial Integer\free{e3 }}
-\indentrel{3}\begin{verbatim}
-                2
-   (18)  - y + x  + 3
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty18}
-\begin{paste}{ExpressionXmpPageEmpty18}{ExpressionXmpPagePatch18}
-\pastebutton{ExpressionXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{e3 :: Polynomial Integer\free{e3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch19}
-\begin{paste}{ExpressionXmpPageFull19}{ExpressionXmpPageEmpty19}
-\pastebutton{ExpressionXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{e3 :: DMP([x, y], Integer)\free{e3 }}
-\indentrel{3}\begin{verbatim}
-          2
-   (19)  x  - y + 3
- Type: DistributedMultivariatePolynomial([x,y],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty19}
-\begin{paste}{ExpressionXmpPageEmpty19}{ExpressionXmpPagePatch19}
-\pastebutton{ExpressionXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{e3 :: DMP([x, y], Integer)\free{e3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch20}
-\begin{paste}{ExpressionXmpPageFull20}{ExpressionXmpPageEmpty20}
-\pastebutton{ExpressionXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{sin \%pi}
-\indentrel{3}\begin{verbatim}
-   (20)  0
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty20}
-\begin{paste}{ExpressionXmpPageEmpty20}{ExpressionXmpPagePatch20}
-\pastebutton{ExpressionXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{sin \%pi}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch21}
-\begin{paste}{ExpressionXmpPageFull21}{ExpressionXmpPageEmpty21}
-\pastebutton{ExpressionXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{cos(\%pi / 4)}
-\indentrel{3}\begin{verbatim}
-          ÚÄ¿
-         \³2
-   (21)  ÄÄÄÄ
-           2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty21}
-\begin{paste}{ExpressionXmpPageEmpty21}{ExpressionXmpPagePatch21}
-\pastebutton{ExpressionXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{cos(\%pi / 4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch22}
-\begin{paste}{ExpressionXmpPageFull22}{ExpressionXmpPageEmpty22}
-\pastebutton{ExpressionXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1\bound{tan6 }}
-\indentrel{3}\begin{verbatim}
-               6          4          2
-   (22)  tan(x)  + 3tan(x)  + 3tan(x)  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty22}
-\begin{paste}{ExpressionXmpPageEmpty22}{ExpressionXmpPagePatch22}
-\pastebutton{ExpressionXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1\bound{tan6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPagePatch23}
-\begin{paste}{ExpressionXmpPageFull23}{ExpressionXmpPageEmpty23}
-\pastebutton{ExpressionXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{simplify \%\free{tan6 }}
-\indentrel{3}\begin{verbatim}
-            1
-   (23)  ÄÄÄÄÄÄÄ
-               6
-         cos(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExpressionXmpPageEmpty23}
-\begin{paste}{ExpressionXmpPageEmpty23}{ExpressionXmpPagePatch23}
-\pastebutton{ExpressionXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{simplify \%\free{tan6 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exseries.pht b/books/pages/exseries.pht
deleted file mode 100644
index df10df9..0000000
--- a/books/pages/exseries.pht
+++ /dev/null
@@ -1,224 +0,0 @@
-\begin{patch}{ExSeriesSubstitutionPatch1}
-\begin{paste}{ExSeriesSubstitutionFull1}{ExSeriesSubstitutionEmpty1}
-\pastebutton{ExSeriesSubstitutionFull1}{\hidepaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-             1  2   1  3    1  4    1   5    1   6
-     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
-   5040      40320      362880      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesSubstitutionEmpty1}
-\begin{paste}{ExSeriesSubstitutionEmpty1}{ExSeriesSubstitutionPatch1}
-\pastebutton{ExSeriesSubstitutionEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesSubstitutionPatch2}
-\begin{paste}{ExSeriesSubstitutionFull2}{ExSeriesSubstitutionEmpty2}
-\pastebutton{ExSeriesSubstitutionFull2}{\hidepaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (2)
-   [1.0, 2.0, 2.5, 2.6666666666 666666667,
-    2.7083333333 333333333, 2.7166666666 666666667,
-    2.7180555555 555555556, 2.7182539682 53968254,
-    2.7182787698 412698413, 2.7182815255 731922399, ...]
-                          Type: Stream Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesSubstitutionEmpty2}
-\begin{paste}{ExSeriesSubstitutionEmpty2}{ExSeriesSubstitutionPatch2}
-\pastebutton{ExSeriesSubstitutionEmpty2}{\showpaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesConvertPatch1}
-\begin{paste}{ExSeriesConvertFull1}{ExSeriesConvertEmpty1}
-\pastebutton{ExSeriesConvertFull1}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)
-            3        5        7          9
-           a   3    a   5    a    7     a     9
-     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-            6      120      5040      362880
-   + 
-           11
-          a      11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesConvertEmpty1}
-\begin{paste}{ExSeriesConvertEmpty1}{ExSeriesConvertPatch1}
-\pastebutton{ExSeriesConvertEmpty1}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesConvertPatch2}
-\begin{paste}{ExSeriesConvertFull2}{ExSeriesConvertEmpty2}
-\pastebutton{ExSeriesConvertFull2}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
-\indentrel{3}\begin{verbatim}
-   (2)
-         %pi x          %pi x      %pi
-     sin(ÄÄÄÄÄ) + x cos(ÄÄÄÄÄ)(a - ÄÄÄ)
-           4              4         4
-   + 
-        2    %pi x                3    %pi x
-       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-               4         %pi 2           4         %pi 3
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-             2            4            6            4
-   + 
-      4    %pi x                5    %pi x
-     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-             4         %pi 4           4         %pi 5
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-          24            4           120           4
-   + 
-        6    %pi x                7    %pi x
-       x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-               4         %pi 6           4         %pi 7
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-            720           4          5040           4
-   + 
-      8    %pi x                9    %pi x
-     x sin(ÄÄÄÄÄ)              x cos(ÄÄÄÄÄ)
-             4         %pi 8           4         %pi 9
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)
-         40320          4         362880          4
-   + 
-        10    %pi x
-       x  sin(ÄÄÄÄÄ)
-                4         %pi 10          %pi 11
-     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (a - ÄÄÄ)   + O((a - ÄÄÄ)  )
-          3628800          4               4
-Type: UnivariatePuiseuxSeries(Expression Integer,a,pi/4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesConvertEmpty2}
-\begin{paste}{ExSeriesConvertEmpty2}{ExSeriesConvertPatch2}
-\pastebutton{ExSeriesConvertEmpty2}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),a = \%pi/4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsPatch1}
-\begin{paste}{ExSeriesFunctionsFull1}{ExSeriesFunctionsEmpty1}
-\pastebutton{ExSeriesFunctionsFull1}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsEmpty1}
-\begin{paste}{ExSeriesFunctionsEmpty1}{ExSeriesFunctionsPatch1}
-\pastebutton{ExSeriesFunctionsEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsPatch2}
-\begin{paste}{ExSeriesFunctionsFull2}{ExSeriesFunctionsEmpty2}
-\pastebutton{ExSeriesFunctionsFull2}{\hidepaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (2)
-         1  2   1  3   1  4   1  5   1  6   1  7   1  8
-     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
-         2      3      4      5      6      7      8
-   + 
-     1  9    1  10    1  11      12
-     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
-     9      10       11
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsEmpty2}
-\begin{paste}{ExSeriesFunctionsEmpty2}{ExSeriesFunctionsPatch2}
-\pastebutton{ExSeriesFunctionsEmpty2}{\showpaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsPatch3}
-\begin{paste}{ExSeriesFunctionsFull3}{ExSeriesFunctionsEmpty3}
-\pastebutton{ExSeriesFunctionsFull3}{\hidepaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (3)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesFunctionsEmpty3}
-\begin{paste}{ExSeriesFunctionsEmpty3}{ExSeriesFunctionsPatch3}
-\pastebutton{ExSeriesFunctionsEmpty3}{\showpaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesManipulatePatch1}
-\begin{paste}{ExSeriesManipulateFull1}{ExSeriesManipulateEmpty1}
-\pastebutton{ExSeriesManipulateFull1}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (1)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesManipulateEmpty1}
-\begin{paste}{ExSeriesManipulateEmpty1}{ExSeriesManipulatePatch1}
-\pastebutton{ExSeriesManipulateEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesManipulatePatch2}
-\begin{paste}{ExSeriesManipulateFull2}{ExSeriesManipulateEmpty2}
-\pastebutton{ExSeriesManipulateFull2}{\hidepaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\indentrel{3}\begin{verbatim}
-   (2)
-                2     3     4     5     6     7     8
-     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
-   + 
-        9      10      11
-     10x  + 11x   + O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSeriesManipulateEmpty2}
-\begin{paste}{ExSeriesManipulateEmpty2}{ExSeriesManipulatePatch2}
-\pastebutton{ExSeriesManipulateEmpty2}{\showpaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/exsum.pht b/books/pages/exsum.pht
deleted file mode 100644
index 7d6c765..0000000
--- a/books/pages/exsum.pht
+++ /dev/null
@@ -1,235 +0,0 @@
-\begin{patch}{ExSumGeneralFunctionPatch1}
-\begin{paste}{ExSumGeneralFunctionFull1}{ExSumGeneralFunctionEmpty1}
-\pastebutton{ExSumGeneralFunctionFull1}{\hidepaste}
-\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
-\indentrel{3}\begin{verbatim}
-            2               n
-        (n x  + (- n - 1)x)x  + x
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                2
-               x  - 2x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumGeneralFunctionEmpty1}
-\begin{paste}{ExSumGeneralFunctionEmpty1}{ExSumGeneralFunctionPatch1}
-\pastebutton{ExSumGeneralFunctionEmpty1}{\showpaste}
-\tab{5}\spadcommand{sum(k * x**k,k = 1..n)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumInfinitePatch1}
-\begin{paste}{ExSumInfiniteFull1}{ExSumInfiniteEmpty1}
-\pastebutton{ExSumInfiniteFull1}{\hidepaste}
-\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-        3
-   (1)  Ä
-        4
-Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumInfiniteEmpty1}
-\begin{paste}{ExSumInfiniteEmpty1}{ExSumInfinitePatch1}
-\pastebutton{ExSumInfiniteEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit( sum(1/(k * (k + 2)),k = 1..n) ,n = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormPatch1}
-\begin{paste}{ExSumClosedFormFull1}{ExSumClosedFormEmpty1}
-\pastebutton{ExSumClosedFormFull1}{\hidepaste}
-\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
-\indentrel{3}\begin{verbatim}
-          3     2         3     2
-        2b  + 3b  + b - 2a  + 3a  - a
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                      6
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormEmpty1}
-\begin{paste}{ExSumClosedFormEmpty1}{ExSumClosedFormPatch1}
-\pastebutton{ExSumClosedFormEmpty1}{\showpaste}
-\tab{5}\spadcommand{s := sum(k**2,k = a..b)\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormPatch2}
-\begin{paste}{ExSumClosedFormFull2}{ExSumClosedFormEmpty2}
-\pastebutton{ExSumClosedFormFull2}{\hidepaste}
-\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
-\indentrel{3}\begin{verbatim}
-   (2)  5525
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormEmpty2}
-\begin{paste}{ExSumClosedFormEmpty2}{ExSumClosedFormPatch2}
-\pastebutton{ExSumClosedFormEmpty2}{\showpaste}
-\tab{5}\spadcommand{eval(s,[a,b],[1,25])\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormPatch3}
-\begin{paste}{ExSumClosedFormFull3}{ExSumClosedFormEmpty3}
-\pastebutton{ExSumClosedFormFull3}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
-\indentrel{3}\begin{verbatim}
-   (3)  5525
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumClosedFormEmpty3}
-\begin{paste}{ExSumClosedFormEmpty3}{ExSumClosedFormPatch3}
-\pastebutton{ExSumClosedFormEmpty3}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[i**2 for i in 1..25])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumPolynomialPatch1}
-\begin{paste}{ExSumPolynomialFull1}{ExSumPolynomialEmpty1}
-\pastebutton{ExSumPolynomialFull1}{\hidepaste}
-\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
-\indentrel{3}\begin{verbatim}
-   (1)
-            3      2           3      2
-       (128b  + 48b  + 4b - 54a  + 27a  - 3a)d
-     + 
-            2             2        2       2             2
-       (192b  + 48b - 108a  + 36a)c  + 192b  + 48b - 108a
-     + 
-       36a
-  /
-        2
-     (2c  + 2)d
-           Type: Union(Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumPolynomialEmpty1}
-\begin{paste}{ExSumPolynomialEmpty1}{ExSumPolynomialPatch1}
-\pastebutton{ExSumPolynomialEmpty1}{\showpaste}
-\tab{5}\spadcommand{sum(3*k**2/(c**2 + 1) + 12*k/d,k = (3*a)..(4*b))}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIPatch1}
-\begin{paste}{ExSumListEntriesIFull1}{ExSumListEntriesIEmpty1}
-\pastebutton{ExSumListEntriesIFull1}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1..15]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIEmpty1}
-\begin{paste}{ExSumListEntriesIEmpty1}{ExSumListEntriesIPatch1}
-\pastebutton{ExSumListEntriesIEmpty1}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1..15]}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIPatch2}
-\begin{paste}{ExSumListEntriesIFull2}{ExSumListEntriesIEmpty2}
-\pastebutton{ExSumListEntriesIFull2}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
-\indentrel{3}\begin{verbatim}
-   (2)  120
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIEmpty2}
-\begin{paste}{ExSumListEntriesIEmpty2}{ExSumListEntriesIPatch2}
-\pastebutton{ExSumListEntriesIEmpty2}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[i for i in 1..15])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumApproximateEPatch1}
-\begin{paste}{ExSumApproximateEFull1}{ExSumApproximateEEmpty1}
-\pastebutton{ExSumApproximateEFull1}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
-\indentrel{3}\begin{verbatim}
-   (1)  2.7182818284 590452354
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumApproximateEEmpty1}
-\begin{paste}{ExSumApproximateEEmpty1}{ExSumApproximateEPatch1}
-\pastebutton{ExSumApproximateEEmpty1}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[1.0/factorial(n) for n in 0..20])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIIPatch1}
-\begin{paste}{ExSumListEntriesIIFull1}{ExSumListEntriesIIEmpty1}
-\pastebutton{ExSumListEntriesIIFull1}{\hidepaste}
-\tab{5}\spadcommand{[n**2 for n in 5..20]}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225,
-    256, 289, 324, 361, 400]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIIEmpty1}
-\begin{paste}{ExSumListEntriesIIEmpty1}{ExSumListEntriesIIPatch1}
-\pastebutton{ExSumListEntriesIIEmpty1}{\showpaste}
-\tab{5}\spadcommand{[n**2 for n in 5..20]}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIIPatch2}
-\begin{paste}{ExSumListEntriesIIFull2}{ExSumListEntriesIIEmpty2}
-\pastebutton{ExSumListEntriesIIFull2}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
-\indentrel{3}\begin{verbatim}
-   (2)  2840
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumListEntriesIIEmpty2}
-\begin{paste}{ExSumListEntriesIIEmpty2}{ExSumListEntriesIIPatch2}
-\pastebutton{ExSumListEntriesIIEmpty2}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[n**2 for n in 5..20])}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumCubesPatch1}
-\begin{paste}{ExSumCubesFull1}{ExSumCubesEmpty1}
-\pastebutton{ExSumCubesFull1}{\hidepaste}
-\tab{5}\spadcommand{sum(k**3,k = 1..n)}
-\indentrel{3}\begin{verbatim}
-         4     3    2
-        n  + 2n  + n
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              4
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumCubesEmpty1}
-\begin{paste}{ExSumCubesEmpty1}{ExSumCubesPatch1}
-\pastebutton{ExSumCubesEmpty1}{\showpaste}
-\tab{5}\spadcommand{sum(k**3,k = 1..n)}
-\end{paste}\end{patch}
-
-\begin{patch}{ExSumCubesPatch2}
-\begin{paste}{ExSumCubesFull2}{ExSumCubesEmpty2}
-\pastebutton{ExSumCubesFull2}{\hidepaste}
-\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
-\indentrel{3}\begin{verbatim}
-         4     3    2
-        n  + 2n  + n
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              4
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ExSumCubesEmpty2}
-\begin{paste}{ExSumCubesEmpty2}{ExSumCubesPatch2}
-\pastebutton{ExSumCubesEmpty2}{\showpaste}
-\tab{5}\spadcommand{sum(k,k = 1..n) ** 2}
-\end{paste}\end{patch}
-
diff --git a/books/pages/farray.pht b/books/pages/farray.pht
deleted file mode 100644
index 5346e3e..0000000
--- a/books/pages/farray.pht
+++ /dev/null
@@ -1,258 +0,0 @@
-\begin{patch}{FlexibleArrayXmpPagePatch1}
-\begin{paste}{FlexibleArrayXmpPageFull1}{FlexibleArrayXmpPageEmpty1}
-\pastebutton{FlexibleArrayXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{flexibleArray [i for i in 1..6]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3,4,5,6]
-                    Type: FlexibleArray PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty1}
-\begin{paste}{FlexibleArrayXmpPageEmpty1}{FlexibleArrayXmpPagePatch1}
-\pastebutton{FlexibleArrayXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{flexibleArray [i for i in 1..6]}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch2}
-\begin{paste}{FlexibleArrayXmpPageFull2}{FlexibleArrayXmpPageEmpty2}
-\pastebutton{FlexibleArrayXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f : FARRAY INT := new(6,0)\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0,0,0,0,0,0]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty2}
-\begin{paste}{FlexibleArrayXmpPageEmpty2}{FlexibleArrayXmpPagePatch2}
-\pastebutton{FlexibleArrayXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f : FARRAY INT := new(6,0)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch3}
-\begin{paste}{FlexibleArrayXmpPageFull3}{FlexibleArrayXmpPageEmpty3}
-\pastebutton{FlexibleArrayXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..6 repeat f.i := i; f\bound{f1 }\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,2,3,4,5,6]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty3}
-\begin{paste}{FlexibleArrayXmpPageEmpty3}{FlexibleArrayXmpPagePatch3}
-\pastebutton{FlexibleArrayXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for i in 1..6 repeat f.i := i; f\bound{f1 }\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch4}
-\begin{paste}{FlexibleArrayXmpPageFull4}{FlexibleArrayXmpPageEmpty4}
-\pastebutton{FlexibleArrayXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{physicalLength f\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty4}
-\begin{paste}{FlexibleArrayXmpPageEmpty4}{FlexibleArrayXmpPagePatch4}
-\pastebutton{FlexibleArrayXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{physicalLength f\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch5}
-\begin{paste}{FlexibleArrayXmpPageFull5}{FlexibleArrayXmpPageEmpty5}
-\pastebutton{FlexibleArrayXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{concat!(f,11)\bound{f2 }\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1,2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty5}
-\begin{paste}{FlexibleArrayXmpPageEmpty5}{FlexibleArrayXmpPagePatch5}
-\pastebutton{FlexibleArrayXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{concat!(f,11)\bound{f2 }\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch6}
-\begin{paste}{FlexibleArrayXmpPageFull6}{FlexibleArrayXmpPageEmpty6}
-\pastebutton{FlexibleArrayXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{physicalLength f\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty6}
-\begin{paste}{FlexibleArrayXmpPageEmpty6}{FlexibleArrayXmpPagePatch6}
-\pastebutton{FlexibleArrayXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{physicalLength f\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch7}
-\begin{paste}{FlexibleArrayXmpPageFull7}{FlexibleArrayXmpPageEmpty7}
-\pastebutton{FlexibleArrayXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{physicalLength!(f,15)\bound{f3 }\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1,2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty7}
-\begin{paste}{FlexibleArrayXmpPageEmpty7}{FlexibleArrayXmpPagePatch7}
-\pastebutton{FlexibleArrayXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{physicalLength!(f,15)\bound{f3 }\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch8}
-\begin{paste}{FlexibleArrayXmpPageFull8}{FlexibleArrayXmpPageEmpty8}
-\pastebutton{FlexibleArrayXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{concat!(f,f)\bound{f4 }\free{f3 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [1,2,3,4,5,6,11,1,2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty8}
-\begin{paste}{FlexibleArrayXmpPageEmpty8}{FlexibleArrayXmpPagePatch8}
-\pastebutton{FlexibleArrayXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{concat!(f,f)\bound{f4 }\free{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch9}
-\begin{paste}{FlexibleArrayXmpPageFull9}{FlexibleArrayXmpPageEmpty9}
-\pastebutton{FlexibleArrayXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{insert!(22,f,1)\bound{f5 }\free{f4 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [22,1,2,3,4,5,6,11,1,2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty9}
-\begin{paste}{FlexibleArrayXmpPageEmpty9}{FlexibleArrayXmpPagePatch9}
-\pastebutton{FlexibleArrayXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{insert!(22,f,1)\bound{f5 }\free{f4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch10}
-\begin{paste}{FlexibleArrayXmpPageFull10}{FlexibleArrayXmpPageEmpty10}
-\pastebutton{FlexibleArrayXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{g := f(10..)\bound{g }\free{f5 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty10}
-\begin{paste}{FlexibleArrayXmpPageEmpty10}{FlexibleArrayXmpPagePatch10}
-\pastebutton{FlexibleArrayXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{g := f(10..)\bound{g }\free{f5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch11}
-\begin{paste}{FlexibleArrayXmpPageFull11}{FlexibleArrayXmpPageEmpty11}
-\pastebutton{FlexibleArrayXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{insert!(g,f,1)\bound{g1 }\free{g f5 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [2,3,4,5,6,11,22,1,2,3,4,5,6,11,1,2,3,4,5,6,11]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty11}
-\begin{paste}{FlexibleArrayXmpPageEmpty11}{FlexibleArrayXmpPagePatch11}
-\pastebutton{FlexibleArrayXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{insert!(g,f,1)\bound{g1 }\free{g f5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch12}
-\begin{paste}{FlexibleArrayXmpPageFull12}{FlexibleArrayXmpPageEmpty12}
-\pastebutton{FlexibleArrayXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{merge!(sort! f, sort! g)\bound{f6 }\free{g f5 }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5,
-    6, 6, 6, 6, 11, 11, 11, 11, 22]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty12}
-\begin{paste}{FlexibleArrayXmpPageEmpty12}{FlexibleArrayXmpPagePatch12}
-\pastebutton{FlexibleArrayXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{merge!(sort! f, sort! g)\bound{f6 }\free{g f5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch13}
-\begin{paste}{FlexibleArrayXmpPageFull13}{FlexibleArrayXmpPageEmpty13}
-\pastebutton{FlexibleArrayXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{removeDuplicates! f\bound{f7 }\free{f6 }}
-\indentrel{3}\begin{verbatim}
-   (13)  [1,2,3,4,5,6,11,22]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty13}
-\begin{paste}{FlexibleArrayXmpPageEmpty13}{FlexibleArrayXmpPagePatch13}
-\pastebutton{FlexibleArrayXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{removeDuplicates! f\bound{f7 }\free{f6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch14}
-\begin{paste}{FlexibleArrayXmpPageFull14}{FlexibleArrayXmpPageEmpty14}
-\pastebutton{FlexibleArrayXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{select!(i +-> even? i,f)\bound{f8 }\free{f7 }}
-\indentrel{3}\begin{verbatim}
-   (14)  [2,4,6,22]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty14}
-\begin{paste}{FlexibleArrayXmpPageEmpty14}{FlexibleArrayXmpPagePatch14}
-\pastebutton{FlexibleArrayXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{select!(i +-> even? i,f)\bound{f8 }\free{f7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch15}
-\begin{paste}{FlexibleArrayXmpPageFull15}{FlexibleArrayXmpPageEmpty15}
-\pastebutton{FlexibleArrayXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{physicalLength f\free{b8 }}
-\indentrel{3}\begin{verbatim}
-   (15)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty15}
-\begin{paste}{FlexibleArrayXmpPageEmpty15}{FlexibleArrayXmpPagePatch15}
-\pastebutton{FlexibleArrayXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{physicalLength f\free{b8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPagePatch16}
-\begin{paste}{FlexibleArrayXmpPageFull16}{FlexibleArrayXmpPageEmpty16}
-\pastebutton{FlexibleArrayXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{shrinkable(false)$FlexibleArray(Integer)}
-\indentrel{3}\begin{verbatim}
-   (16)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FlexibleArrayXmpPageEmpty16}
-\begin{paste}{FlexibleArrayXmpPageEmpty16}{FlexibleArrayXmpPagePatch16}
-\pastebutton{FlexibleArrayXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{shrinkable(false)$FlexibleArray(Integer)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/file.pht b/books/pages/file.pht
deleted file mode 100644
index 19cd4b2..0000000
--- a/books/pages/file.pht
+++ /dev/null
@@ -1,206 +0,0 @@
-\begin{patch}{FileXmpPagePatch1}
-\begin{paste}{FileXmpPageFull1}{FileXmpPageEmpty1}
-\pastebutton{FileXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ifile:File List Integer:=open("/tmp/jazz1","output")\bound{ifile }}
-\indentrel{3}\begin{verbatim}
-   (1)  "/tmp/jazz1"
-                                Type: File List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty1}
-\begin{paste}{FileXmpPageEmpty1}{FileXmpPagePatch1}
-\pastebutton{FileXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ifile:File List Integer:=open("/tmp/jazz1","output")\bound{ifile }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch2}
-\begin{paste}{FileXmpPageFull2}{FileXmpPageEmpty2}
-\pastebutton{FileXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{write!(ifile, [-1,2,3])\free{ifile }\bound{ifile1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [- 1,2,3]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty2}
-\begin{paste}{FileXmpPageEmpty2}{FileXmpPagePatch2}
-\pastebutton{FileXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{write!(ifile, [-1,2,3])\free{ifile }\bound{ifile1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch3}
-\begin{paste}{FileXmpPageFull3}{FileXmpPageEmpty3}
-\pastebutton{FileXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{write!(ifile, [10,-10,0,111])\free{ifile1 }\bound{ifile2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [10,- 10,0,111]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty3}
-\begin{paste}{FileXmpPageEmpty3}{FileXmpPagePatch3}
-\pastebutton{FileXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{write!(ifile, [10,-10,0,111])\free{ifile1 }\bound{ifile2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch4}
-\begin{paste}{FileXmpPageFull4}{FileXmpPageEmpty4}
-\pastebutton{FileXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{write!(ifile, [7])\free{ifile2 }\bound{ifile3 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [7]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty4}
-\begin{paste}{FileXmpPageEmpty4}{FileXmpPagePatch4}
-\pastebutton{FileXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{write!(ifile, [7])\free{ifile2 }\bound{ifile3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch5}
-\begin{paste}{FileXmpPageFull5}{FileXmpPageEmpty5}
-\pastebutton{FileXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{reopen!(ifile, "input")\free{ifile3 }\bound{ifile4 }}
-\indentrel{3}\begin{verbatim}
-   (5)  "/tmp/jazz1"
-                                Type: File List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty5}
-\begin{paste}{FileXmpPageEmpty5}{FileXmpPagePatch5}
-\pastebutton{FileXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{reopen!(ifile, "input")\free{ifile3 }\bound{ifile4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch6}
-\begin{paste}{FileXmpPageFull6}{FileXmpPageEmpty6}
-\pastebutton{FileXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{read! ifile\free{ifile4 }\bound{ifile5 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [- 1,2,3]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty6}
-\begin{paste}{FileXmpPageEmpty6}{FileXmpPagePatch6}
-\pastebutton{FileXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{read! ifile\free{ifile4 }\bound{ifile5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch7}
-\begin{paste}{FileXmpPageFull7}{FileXmpPageEmpty7}
-\pastebutton{FileXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{read! ifile\free{ifile5 }\bound{ifile6 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [10,- 10,0,111]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty7}
-\begin{paste}{FileXmpPageEmpty7}{FileXmpPagePatch7}
-\pastebutton{FileXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{read! ifile\free{ifile5 }\bound{ifile6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch8}
-\begin{paste}{FileXmpPageFull8}{FileXmpPageEmpty8}
-\pastebutton{FileXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{readIfCan! ifile\free{ifile6 }\bound{ifile7 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [7]
-                          Type: Union(List Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty8}
-\begin{paste}{FileXmpPageEmpty8}{FileXmpPagePatch8}
-\pastebutton{FileXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{readIfCan! ifile\free{ifile6 }\bound{ifile7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch9}
-\begin{paste}{FileXmpPageFull9}{FileXmpPageEmpty9}
-\pastebutton{FileXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{readIfCan! ifile\free{ifile7 }\bound{ifile8 }}
-\indentrel{3}\begin{verbatim}
-   (9)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty9}
-\begin{paste}{FileXmpPageEmpty9}{FileXmpPagePatch9}
-\pastebutton{FileXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{readIfCan! ifile\free{ifile7 }\bound{ifile8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch10}
-\begin{paste}{FileXmpPageFull10}{FileXmpPageEmpty10}
-\pastebutton{FileXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{iomode ifile\free{ifile }}
-\indentrel{3}\begin{verbatim}
-   (10)  "input"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty10}
-\begin{paste}{FileXmpPageEmpty10}{FileXmpPagePatch10}
-\pastebutton{FileXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{iomode ifile\free{ifile }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch11}
-\begin{paste}{FileXmpPageFull11}{FileXmpPageEmpty11}
-\pastebutton{FileXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{name ifile\free{ifile }}
-\indentrel{3}\begin{verbatim}
-   (11)  "/tmp/jazz1"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty11}
-\begin{paste}{FileXmpPageEmpty11}{FileXmpPagePatch11}
-\pastebutton{FileXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{name ifile\free{ifile }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch12}
-\begin{paste}{FileXmpPageFull12}{FileXmpPageEmpty12}
-\pastebutton{FileXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{close! ifile\free{ifile }\bound{ifileA }}
-\indentrel{3}\begin{verbatim}
-   (12)  "/tmp/jazz1"
-                                Type: File List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty12}
-\begin{paste}{FileXmpPageEmpty12}{FileXmpPagePatch12}
-\pastebutton{FileXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{close! ifile\free{ifile }\bound{ifileA }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPagePatch13}
-\begin{paste}{FileXmpPageFull13}{FileXmpPageEmpty13}
-\pastebutton{FileXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{)system rm /tmp/jazz1\free{ifileA }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileXmpPageEmpty13}
-\begin{paste}{FileXmpPageEmpty13}{FileXmpPagePatch13}
-\pastebutton{FileXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{)system rm /tmp/jazz1\free{ifileA }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/float.pht b/books/pages/float.pht
deleted file mode 100644
index d1181af..0000000
--- a/books/pages/float.pht
+++ /dev/null
@@ -1,645 +0,0 @@
-\begin{patch}{ugxFloatIntroPagePatch1}
-\begin{paste}{ugxFloatIntroPageFull1}{ugxFloatIntroPageEmpty1}
-\pastebutton{ugxFloatIntroPageFull1}{\hidepaste}
-\tab{5}\spadcommand{1.234}
-\indentrel{3}\begin{verbatim}
-   (1)  1.234
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatIntroPageEmpty1}
-\begin{paste}{ugxFloatIntroPageEmpty1}{ugxFloatIntroPagePatch1}
-\pastebutton{ugxFloatIntroPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{1.234}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatIntroPagePatch2}
-\begin{paste}{ugxFloatIntroPageFull2}{ugxFloatIntroPageEmpty2}
-\pastebutton{ugxFloatIntroPageFull2}{\hidepaste}
-\tab{5}\spadcommand{1.234E2}
-\indentrel{3}\begin{verbatim}
-   (2)  123.4
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatIntroPageEmpty2}
-\begin{paste}{ugxFloatIntroPageEmpty2}{ugxFloatIntroPagePatch2}
-\pastebutton{ugxFloatIntroPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{1.234E2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatIntroPagePatch3}
-\begin{paste}{ugxFloatIntroPageFull3}{ugxFloatIntroPageEmpty3}
-\pastebutton{ugxFloatIntroPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sqrt(1.2 + 2.3 / 3.4 ** 4.5)}
-\indentrel{3}\begin{verbatim}
-   (3)  1.0996972790 671286226
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatIntroPageEmpty3}
-\begin{paste}{ugxFloatIntroPageEmpty3}{ugxFloatIntroPagePatch3}
-\pastebutton{ugxFloatIntroPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sqrt(1.2 + 2.3 / 3.4 ** 4.5)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch1}
-\begin{paste}{ugxFloatOutputPageFull1}{ugxFloatOutputPageEmpty1}
-\pastebutton{ugxFloatOutputPageFull1}{\hidepaste}
-\tab{5}\spadcommand{outputSpacing 0; x := sqrt 0.2\bound{x }\bound{os0 }}
-\indentrel{3}\begin{verbatim}
-   (1)  0.44721359549995793928
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty1}
-\begin{paste}{ugxFloatOutputPageEmpty1}{ugxFloatOutputPagePatch1}
-\pastebutton{ugxFloatOutputPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{outputSpacing 0; x := sqrt 0.2\bound{x }\bound{os0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch2}
-\begin{paste}{ugxFloatOutputPageFull2}{ugxFloatOutputPageEmpty2}
-\pastebutton{ugxFloatOutputPageFull2}{\hidepaste}
-\tab{5}\spadcommand{outputSpacing 5; x\bound{os5 }\free{x }}
-\indentrel{3}\begin{verbatim}
-   (2)  0.44721 35954 99957 93928
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty2}
-\begin{paste}{ugxFloatOutputPageEmpty2}{ugxFloatOutputPagePatch2}
-\pastebutton{ugxFloatOutputPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{outputSpacing 5; x\bound{os5 }\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch3}
-\begin{paste}{ugxFloatOutputPageFull3}{ugxFloatOutputPageEmpty3}
-\pastebutton{ugxFloatOutputPageFull3}{\hidepaste}
-\tab{5}\spadcommand{y := x/10**10\bound{y }\free{x os5 }}
-\indentrel{3}\begin{verbatim}
-   (3)  0.44721 35954 99957 93928 E -10
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty3}
-\begin{paste}{ugxFloatOutputPageEmpty3}{ugxFloatOutputPagePatch3}
-\pastebutton{ugxFloatOutputPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{y := x/10**10\bound{y }\free{x os5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch4}
-\begin{paste}{ugxFloatOutputPageFull4}{ugxFloatOutputPageEmpty4}
-\pastebutton{ugxFloatOutputPageFull4}{\hidepaste}
-\tab{5}\spadcommand{outputFloating(); x\bound{of }\free{os5 x }}
-\indentrel{3}\begin{verbatim}
-   (4)  0.44721 35954 99957 93928 E 0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty4}
-\begin{paste}{ugxFloatOutputPageEmpty4}{ugxFloatOutputPagePatch4}
-\pastebutton{ugxFloatOutputPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{outputFloating(); x\bound{of }\free{os5 x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch5}
-\begin{paste}{ugxFloatOutputPageFull5}{ugxFloatOutputPageEmpty5}
-\pastebutton{ugxFloatOutputPageFull5}{\hidepaste}
-\tab{5}\spadcommand{outputFixed(); y\bound{ox }\free{os5 y }}
-\indentrel{3}\begin{verbatim}
-   (5)  0.00000 00000 44721 35954 99957 93928
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty5}
-\begin{paste}{ugxFloatOutputPageEmpty5}{ugxFloatOutputPagePatch5}
-\pastebutton{ugxFloatOutputPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{outputFixed(); y\bound{ox }\free{os5 y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch6}
-\begin{paste}{ugxFloatOutputPageFull6}{ugxFloatOutputPageEmpty6}
-\pastebutton{ugxFloatOutputPageFull6}{\hidepaste}
-\tab{5}\spadcommand{outputFloating 2; y\bound{of2 }\free{os5 y }}
-\indentrel{3}\begin{verbatim}
-   (6)  0.45 E -10
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty6}
-\begin{paste}{ugxFloatOutputPageEmpty6}{ugxFloatOutputPagePatch6}
-\pastebutton{ugxFloatOutputPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{outputFloating 2; y\bound{of2 }\free{os5 y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch7}
-\begin{paste}{ugxFloatOutputPageFull7}{ugxFloatOutputPageEmpty7}
-\pastebutton{ugxFloatOutputPageFull7}{\hidepaste}
-\tab{5}\spadcommand{outputFixed 2; x\bound{ox2 }\free{os5 x }}
-\indentrel{3}\begin{verbatim}
-   (7)  0.45
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty7}
-\begin{paste}{ugxFloatOutputPageEmpty7}{ugxFloatOutputPagePatch7}
-\pastebutton{ugxFloatOutputPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{outputFixed 2; x\bound{ox2 }\free{os5 x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPagePatch8}
-\begin{paste}{ugxFloatOutputPageFull8}{ugxFloatOutputPageEmpty8}
-\pastebutton{ugxFloatOutputPageFull8}{\hidepaste}
-\tab{5}\spadcommand{outputGeneral()}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatOutputPageEmpty8}
-\begin{paste}{ugxFloatOutputPageEmpty8}{ugxFloatOutputPagePatch8}
-\pastebutton{ugxFloatOutputPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{outputGeneral()}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch1}
-\begin{paste}{ugxFloatHilbertPageFull1}{ugxFloatHilbertPageEmpty1}
-\pastebutton{ugxFloatHilbertPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a: Matrix Fraction Integer := matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]\bound{a }}
-\indentrel{3}\begin{verbatim}
-        Ú    1   1   1   1   1   1   1   1    1¿
-        ³1   Ä   Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ³
-        ³    2   3   4   5   6   7   8   9   10³
-        ³                                      ³
-        ³1   1   1   1   1   1   1   1    1   1³
-        ³Ä   Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ³
-        ³2   3   4   5   6   7   8   9   10  11³
-        ³                                      ³
-        ³1   1   1   1   1   1   1    1   1   1³
-        ³Ä   Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ³
-        ³3   4   5   6   7   8   9   10  11  12³
-        ³                                      ³
-        ³1   1   1   1   1   1    1   1   1   1³
-        ³Ä   Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³4   5   6   7   8   9   10  11  12  13³
-        ³                                      ³
-        ³1   1   1   1   1    1   1   1   1   1³
-        ³Ä   Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³5   6   7   8   9   10  11  12  13  14³
-   (1)  ³                                      ³
-        ³1   1   1   1    1   1   1   1   1   1³
-        ³Ä   Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³6   7   8   9   10  11  12  13  14  15³
-        ³                                      ³
-        ³1   1   1    1   1   1   1   1   1   1³
-        ³Ä   Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³7   8   9   10  11  12  13  14  15  16³
-        ³                                      ³
-        ³1   1    1   1   1   1   1   1   1   1³
-        ³Ä   Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³8   9   10  11  12  13  14  15  16  17³
-        ³                                      ³
-        ³1    1   1   1   1   1   1   1   1   1³
-        ³Ä   ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        ³9   10  11  12  13  14  15  16  17  18³
-        ³                                      ³
-        ³ 1   1   1   1   1   1   1   1   1   1³
-        ³ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ  ÄÄ³
-        À10  11  12  13  14  15  16  17  18  19Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty1}
-\begin{paste}{ugxFloatHilbertPageEmpty1}{ugxFloatHilbertPagePatch1}
-\pastebutton{ugxFloatHilbertPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a: Matrix Fraction Integer := matrix [[1/(i+j+1) for j in 0..9] for i in 0..9]\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch2}
-\begin{paste}{ugxFloatHilbertPageFull2}{ugxFloatHilbertPageEmpty2}
-\pastebutton{ugxFloatHilbertPageFull2}{\hidepaste}
-\tab{5}\spadcommand{d:= determinant a\free{a }\bound{d }}
-\indentrel{3}\begin{verbatim}
-   (2)
-                             1
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-   46206893947914691316295628839036278726983680000000000
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty2}
-\begin{paste}{ugxFloatHilbertPageEmpty2}{ugxFloatHilbertPagePatch2}
-\pastebutton{ugxFloatHilbertPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{d:= determinant a\free{a }\bound{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch3}
-\begin{paste}{ugxFloatHilbertPageFull3}{ugxFloatHilbertPageEmpty3}
-\pastebutton{ugxFloatHilbertPageFull3}{\hidepaste}
-\tab{5}\spadcommand{d :: Float\free{d }}
-\indentrel{3}\begin{verbatim}
-   (3)  0.21641 79226 43149 18691 E -52
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty3}
-\begin{paste}{ugxFloatHilbertPageEmpty3}{ugxFloatHilbertPagePatch3}
-\pastebutton{ugxFloatHilbertPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{d :: Float\free{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch4}
-\begin{paste}{ugxFloatHilbertPageFull4}{ugxFloatHilbertPageEmpty4}
-\pastebutton{ugxFloatHilbertPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b: Matrix DoubleFloat := matrix [[1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9];\bound{b }}
-\indentrel{3}\begin{verbatim}
-                               Type: Matrix DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty4}
-\begin{paste}{ugxFloatHilbertPageEmpty4}{ugxFloatHilbertPagePatch4}
-\pastebutton{ugxFloatHilbertPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b: Matrix DoubleFloat := matrix [[1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9];\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch5}
-\begin{paste}{ugxFloatHilbertPageFull5}{ugxFloatHilbertPageEmpty5}
-\pastebutton{ugxFloatHilbertPageFull5}{\hidepaste}
-\tab{5}\spadcommand{determinant b\free{b }}
-\indentrel{3}\begin{verbatim}
-   (5)  2.1643677945721411e-53
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty5}
-\begin{paste}{ugxFloatHilbertPageEmpty5}{ugxFloatHilbertPagePatch5}
-\pastebutton{ugxFloatHilbertPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{determinant b\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch6}
-\begin{paste}{ugxFloatHilbertPageFull6}{ugxFloatHilbertPageEmpty6}
-\pastebutton{ugxFloatHilbertPageFull6}{\hidepaste}
-\tab{5}\spadcommand{digits 40\bound{d40 }}
-\indentrel{3}\begin{verbatim}
-   (6)  20
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty6}
-\begin{paste}{ugxFloatHilbertPageEmpty6}{ugxFloatHilbertPagePatch6}
-\pastebutton{ugxFloatHilbertPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{digits 40\bound{d40 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch7}
-\begin{paste}{ugxFloatHilbertPageFull7}{ugxFloatHilbertPageEmpty7}
-\pastebutton{ugxFloatHilbertPageFull7}{\hidepaste}
-\tab{5}\spadcommand{c: Matrix Float := matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9];\free{d40 }\bound{c }}
-\indentrel{3}\begin{verbatim}
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty7}
-\begin{paste}{ugxFloatHilbertPageEmpty7}{ugxFloatHilbertPagePatch7}
-\pastebutton{ugxFloatHilbertPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{c: Matrix Float := matrix [[1/(i+j+1$Float) for j in 0..9] for i in 0..9];\free{d40 }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch8}
-\begin{paste}{ugxFloatHilbertPageFull8}{ugxFloatHilbertPageEmpty8}
-\pastebutton{ugxFloatHilbertPageFull8}{\hidepaste}
-\tab{5}\spadcommand{determinant c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (8)
-   0.21641 79226 43149 18690 60594 98362 26174 36159 E -52
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty8}
-\begin{paste}{ugxFloatHilbertPageEmpty8}{ugxFloatHilbertPagePatch8}
-\pastebutton{ugxFloatHilbertPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{determinant c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPagePatch9}
-\begin{paste}{ugxFloatHilbertPageFull9}{ugxFloatHilbertPageEmpty9}
-\pastebutton{ugxFloatHilbertPageFull9}{\hidepaste}
-\tab{5}\spadcommand{digits 20}
-\indentrel{3}\begin{verbatim}
-   (9)  40
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatHilbertPageEmpty9}
-\begin{paste}{ugxFloatHilbertPageEmpty9}{ugxFloatHilbertPagePatch9}
-\pastebutton{ugxFloatHilbertPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{digits 20}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch1}
-\begin{paste}{ugxFloatConvertPageFull1}{ugxFloatConvertPageEmpty1}
-\pastebutton{ugxFloatConvertPageFull1}{\hidepaste}
-\tab{5}\spadcommand{i := 3 :: Float\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (1)  3.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty1}
-\begin{paste}{ugxFloatConvertPageEmpty1}{ugxFloatConvertPagePatch1}
-\pastebutton{ugxFloatConvertPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{i := 3 :: Float\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch2}
-\begin{paste}{ugxFloatConvertPageFull2}{ugxFloatConvertPageEmpty2}
-\pastebutton{ugxFloatConvertPageFull2}{\hidepaste}
-\tab{5}\spadcommand{i :: Integer\free{i }}
-\indentrel{3}\begin{verbatim}
-   (2)  3
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty2}
-\begin{paste}{ugxFloatConvertPageEmpty2}{ugxFloatConvertPagePatch2}
-\pastebutton{ugxFloatConvertPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{i :: Integer\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch3}
-\begin{paste}{ugxFloatConvertPageFull3}{ugxFloatConvertPageEmpty3}
-\pastebutton{ugxFloatConvertPageFull3}{\hidepaste}
-\tab{5}\spadcommand{i :: Fraction Integer\free{i }}
-\indentrel{3}\begin{verbatim}
-   (3)  3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty3}
-\begin{paste}{ugxFloatConvertPageEmpty3}{ugxFloatConvertPagePatch3}
-\pastebutton{ugxFloatConvertPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i :: Fraction Integer\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch4}
-\begin{paste}{ugxFloatConvertPageFull4}{ugxFloatConvertPageEmpty4}
-\pastebutton{ugxFloatConvertPageFull4}{\hidepaste}
-\tab{5}\spadcommand{r := 3/7 :: Float\bound{r }}
-\indentrel{3}\begin{verbatim}
-   (4)  0.42857 14285 71428 57143
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty4}
-\begin{paste}{ugxFloatConvertPageEmpty4}{ugxFloatConvertPagePatch4}
-\pastebutton{ugxFloatConvertPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{r := 3/7 :: Float\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch5}
-\begin{paste}{ugxFloatConvertPageFull5}{ugxFloatConvertPageEmpty5}
-\pastebutton{ugxFloatConvertPageFull5}{\hidepaste}
-\tab{5}\spadcommand{r :: Fraction Integer\free{r }}
-\indentrel{3}\begin{verbatim}
-        3
-   (5)  Ä
-        7
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty5}
-\begin{paste}{ugxFloatConvertPageEmpty5}{ugxFloatConvertPagePatch5}
-\pastebutton{ugxFloatConvertPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{r :: Fraction Integer\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch6}
-\begin{paste}{ugxFloatConvertPageFull6}{ugxFloatConvertPageEmpty6}
-\pastebutton{ugxFloatConvertPageFull6}{\hidepaste}
-\tab{5}\spadcommand{r :: Integer\free{r }}
-\indentrel{3}\begin{verbatim}
-   0.42857 14285 71428 57143
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty6}
-\begin{paste}{ugxFloatConvertPageEmpty6}{ugxFloatConvertPagePatch6}
-\pastebutton{ugxFloatConvertPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{r :: Integer\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch7}
-\begin{paste}{ugxFloatConvertPageFull7}{ugxFloatConvertPageEmpty7}
-\pastebutton{ugxFloatConvertPageFull7}{\hidepaste}
-\tab{5}\spadcommand{truncate 3.6}
-\indentrel{3}\begin{verbatim}
-   (6)  3.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty7}
-\begin{paste}{ugxFloatConvertPageEmpty7}{ugxFloatConvertPagePatch7}
-\pastebutton{ugxFloatConvertPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{truncate 3.6}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch8}
-\begin{paste}{ugxFloatConvertPageFull8}{ugxFloatConvertPageEmpty8}
-\pastebutton{ugxFloatConvertPageFull8}{\hidepaste}
-\tab{5}\spadcommand{round 3.6}
-\indentrel{3}\begin{verbatim}
-   (7)  4.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty8}
-\begin{paste}{ugxFloatConvertPageEmpty8}{ugxFloatConvertPagePatch8}
-\pastebutton{ugxFloatConvertPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{round 3.6}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch9}
-\begin{paste}{ugxFloatConvertPageFull9}{ugxFloatConvertPageEmpty9}
-\pastebutton{ugxFloatConvertPageFull9}{\hidepaste}
-\tab{5}\spadcommand{truncate(-3.6)}
-\indentrel{3}\begin{verbatim}
-   (8)  - 3.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty9}
-\begin{paste}{ugxFloatConvertPageEmpty9}{ugxFloatConvertPagePatch9}
-\pastebutton{ugxFloatConvertPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{truncate(-3.6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch10}
-\begin{paste}{ugxFloatConvertPageFull10}{ugxFloatConvertPageEmpty10}
-\pastebutton{ugxFloatConvertPageFull10}{\hidepaste}
-\tab{5}\spadcommand{round(-3.6)}
-\indentrel{3}\begin{verbatim}
-   (9)  - 4.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty10}
-\begin{paste}{ugxFloatConvertPageEmpty10}{ugxFloatConvertPagePatch10}
-\pastebutton{ugxFloatConvertPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{round(-3.6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch11}
-\begin{paste}{ugxFloatConvertPageFull11}{ugxFloatConvertPageEmpty11}
-\pastebutton{ugxFloatConvertPageFull11}{\hidepaste}
-\tab{5}\spadcommand{fractionPart 3.6}
-\indentrel{3}\begin{verbatim}
-   (10)  0.6
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty11}
-\begin{paste}{ugxFloatConvertPageEmpty11}{ugxFloatConvertPagePatch11}
-\pastebutton{ugxFloatConvertPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{fractionPart 3.6}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch12}
-\begin{paste}{ugxFloatConvertPageFull12}{ugxFloatConvertPageEmpty12}
-\pastebutton{ugxFloatConvertPageFull12}{\hidepaste}
-\tab{5}\spadcommand{digits 40\bound{d40 }}
-\indentrel{3}\begin{verbatim}
-   (11)  20
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty12}
-\begin{paste}{ugxFloatConvertPageEmpty12}{ugxFloatConvertPagePatch12}
-\pastebutton{ugxFloatConvertPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{digits 40\bound{d40 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch13}
-\begin{paste}{ugxFloatConvertPageFull13}{ugxFloatConvertPageEmpty13}
-\pastebutton{ugxFloatConvertPageFull13}{\hidepaste}
-\tab{5}\spadcommand{sqrt 0.2}
-\indentrel{3}\begin{verbatim}
-   (12)
-   0.44721 35954 99957 93928 18347 33746 25524 70881
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty13}
-\begin{paste}{ugxFloatConvertPageEmpty13}{ugxFloatConvertPagePatch13}
-\pastebutton{ugxFloatConvertPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{sqrt 0.2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch14}
-\begin{paste}{ugxFloatConvertPageFull14}{ugxFloatConvertPageEmpty14}
-\pastebutton{ugxFloatConvertPageFull14}{\hidepaste}
-\tab{5}\spadcommand{pi()$Float\free{d40 }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   3.14159 26535 89793 23846 26433 83279 50288 4197
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty14}
-\begin{paste}{ugxFloatConvertPageEmpty14}{ugxFloatConvertPagePatch14}
-\pastebutton{ugxFloatConvertPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{pi()$Float\free{d40 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch15}
-\begin{paste}{ugxFloatConvertPageFull15}{ugxFloatConvertPageEmpty15}
-\pastebutton{ugxFloatConvertPageFull15}{\hidepaste}
-\tab{5}\spadcommand{digits 500\bound{d1000 }}
-\indentrel{3}\begin{verbatim}
-   (14)  40
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty15}
-\begin{paste}{ugxFloatConvertPageEmpty15}{ugxFloatConvertPagePatch15}
-\pastebutton{ugxFloatConvertPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{digits 500\bound{d1000 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch16}
-\begin{paste}{ugxFloatConvertPageFull16}{ugxFloatConvertPageEmpty16}
-\pastebutton{ugxFloatConvertPageFull16}{\hidepaste}
-\tab{5}\spadcommand{pi()$Float\free{d1000 }}
-\indentrel{3}\begin{verbatim}
-   (15)
-  3.14159 26535 89793 23846 26433 83279 50288 41971 69399
-   37510 58209 74944 59230 78164 06286 20899 86280 34825 
-  34211 70679 82148 08651 32823 06647 09384 46095 50582 2
-  3172 53594 08128 48111 74502 84102 70193 85211 05559 64
-  462 29489 54930 38196 44288 10975 66593 34461 28475 648
-  23 37867 83165 27120 19091 45648 56692 34603 48610 4543
-  2 66482 13393 60726 02491 41273 72458 70066 06315 58817
-   48815 20920 96282 92540 91715 36436 78925 90360 01133 
-  05305 48820 46652 13841 46951 94151 16094 33057 27036 5
-  7595 91953 09218 61173 81932 61179 31051 18548 07446 23
-  799 62749 56735 18857 52724 89122 79381 83011 9491
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty16}
-\begin{paste}{ugxFloatConvertPageEmpty16}{ugxFloatConvertPagePatch16}
-\pastebutton{ugxFloatConvertPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{pi()$Float\free{d1000 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPagePatch17}
-\begin{paste}{ugxFloatConvertPageFull17}{ugxFloatConvertPageEmpty17}
-\pastebutton{ugxFloatConvertPageFull17}{\hidepaste}
-\tab{5}\spadcommand{digits 20}
-\indentrel{3}\begin{verbatim}
-   (16)  500
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFloatConvertPageEmpty17}
-\begin{paste}{ugxFloatConvertPageEmpty17}{ugxFloatConvertPagePatch17}
-\pastebutton{ugxFloatConvertPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{digits 20}
-\end{paste}\end{patch}
-
diff --git a/books/pages/fname.pht b/books/pages/fname.pht
deleted file mode 100644
index 06831d3..0000000
--- a/books/pages/fname.pht
+++ /dev/null
@@ -1,287 +0,0 @@
-\begin{patch}{FileNameXmpPagePatch1}
-\begin{paste}{FileNameXmpPageFull1}{FileNameXmpPageEmpty1}
-\pastebutton{FileNameXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{fn: FileName\bound{fndecl }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty1}
-\begin{paste}{FileNameXmpPageEmpty1}{FileNameXmpPagePatch1}
-\pastebutton{FileNameXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{fn: FileName\bound{fndecl }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch2}
-\begin{paste}{FileNameXmpPageFull2}{FileNameXmpPageEmpty2}
-\pastebutton{FileNameXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }}
-\indentrel{3}\begin{verbatim}
-   (2)  "/spad/src/input/fname.input"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty2}
-\begin{paste}{FileNameXmpPageEmpty2}{FileNameXmpPagePatch2}
-\pastebutton{FileNameXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch3}
-\begin{paste}{FileNameXmpPageFull3}{FileNameXmpPageEmpty3}
-\pastebutton{FileNameXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{directory fn\free{fn }}
-\indentrel{3}\begin{verbatim}
-   (3)  "/spad/src/input"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty3}
-\begin{paste}{FileNameXmpPageEmpty3}{FileNameXmpPagePatch3}
-\pastebutton{FileNameXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{directory fn\free{fn }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch4}
-\begin{paste}{FileNameXmpPageFull4}{FileNameXmpPageEmpty4}
-\pastebutton{FileNameXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{name fn\free{fn }}
-\indentrel{3}\begin{verbatim}
-   (4)  "fname"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty4}
-\begin{paste}{FileNameXmpPageEmpty4}{FileNameXmpPagePatch4}
-\pastebutton{FileNameXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{name fn\free{fn }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch5}
-\begin{paste}{FileNameXmpPageFull5}{FileNameXmpPageEmpty5}
-\pastebutton{FileNameXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{extension fn\free{fn }}
-\indentrel{3}\begin{verbatim}
-   (5)  "input"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty5}
-\begin{paste}{FileNameXmpPageEmpty5}{FileNameXmpPagePatch5}
-\pastebutton{FileNameXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{extension fn\free{fn }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch6}
-\begin{paste}{FileNameXmpPageFull6}{FileNameXmpPageEmpty6}
-\pastebutton{FileNameXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  "/u/smwatt/work/fname.input"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty6}
-\begin{paste}{FileNameXmpPageEmpty6}{FileNameXmpPagePatch6}
-\pastebutton{FileNameXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch7}
-\begin{paste}{FileNameXmpPageFull7}{FileNameXmpPageEmpty7}
-\pastebutton{FileNameXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }}
-\indentrel{3}\begin{verbatim}
-   (7)  "/tmp"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty7}
-\begin{paste}{FileNameXmpPageEmpty7}{FileNameXmpPagePatch7}
-\pastebutton{FileNameXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch8}
-\begin{paste}{FileNameXmpPageFull8}{FileNameXmpPageEmpty8}
-\pastebutton{FileNameXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }}
-\indentrel{3}\begin{verbatim}
-   (8)  "/tmp/table.spad"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty8}
-\begin{paste}{FileNameXmpPageEmpty8}{FileNameXmpPagePatch8}
-\pastebutton{FileNameXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch9}
-\begin{paste}{FileNameXmpPageFull9}{FileNameXmpPageEmpty9}
-\pastebutton{FileNameXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }}
-\indentrel{3}\begin{verbatim}
-   (9)  "letter"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty9}
-\begin{paste}{FileNameXmpPageEmpty9}{FileNameXmpPagePatch9}
-\pastebutton{FileNameXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch10}
-\begin{paste}{FileNameXmpPageFull10}{FileNameXmpPageEmpty10}
-\pastebutton{FileNameXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{exists? "/etc/passwd"}
-\indentrel{3}\begin{verbatim}
-   (10)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty10}
-\begin{paste}{FileNameXmpPageEmpty10}{FileNameXmpPagePatch10}
-\pastebutton{FileNameXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{exists? "/etc/passwd"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch11}
-\begin{paste}{FileNameXmpPageFull11}{FileNameXmpPageEmpty11}
-\pastebutton{FileNameXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{readable? "/etc/passwd"}
-\indentrel{3}\begin{verbatim}
-   (11)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty11}
-\begin{paste}{FileNameXmpPageEmpty11}{FileNameXmpPagePatch11}
-\pastebutton{FileNameXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{readable? "/etc/passwd"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch12}
-\begin{paste}{FileNameXmpPageFull12}{FileNameXmpPageEmpty12}
-\pastebutton{FileNameXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{readable? "/etc/security/passwd"}
-\indentrel{3}\begin{verbatim}
-   (12)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty12}
-\begin{paste}{FileNameXmpPageEmpty12}{FileNameXmpPagePatch12}
-\pastebutton{FileNameXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{readable? "/etc/security/passwd"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch13}
-\begin{paste}{FileNameXmpPageFull13}{FileNameXmpPageEmpty13}
-\pastebutton{FileNameXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{readable? "/ect/passwd"}
-\indentrel{3}\begin{verbatim}
-   (13)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty13}
-\begin{paste}{FileNameXmpPageEmpty13}{FileNameXmpPagePatch13}
-\pastebutton{FileNameXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{readable? "/ect/passwd"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch14}
-\begin{paste}{FileNameXmpPageFull14}{FileNameXmpPageEmpty14}
-\pastebutton{FileNameXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{writable? "/etc/passwd"}
-\indentrel{3}\begin{verbatim}
-   (14)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty14}
-\begin{paste}{FileNameXmpPageEmpty14}{FileNameXmpPagePatch14}
-\pastebutton{FileNameXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{writable? "/etc/passwd"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch15}
-\begin{paste}{FileNameXmpPageFull15}{FileNameXmpPageEmpty15}
-\pastebutton{FileNameXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{writable? "/dev/null"}
-\indentrel{3}\begin{verbatim}
-   (15)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty15}
-\begin{paste}{FileNameXmpPageEmpty15}{FileNameXmpPagePatch15}
-\pastebutton{FileNameXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{writable? "/dev/null"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch16}
-\begin{paste}{FileNameXmpPageFull16}{FileNameXmpPageEmpty16}
-\pastebutton{FileNameXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{writable? "/etc/DoesNotExist"}
-\indentrel{3}\begin{verbatim}
-   (16)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty16}
-\begin{paste}{FileNameXmpPageEmpty16}{FileNameXmpPagePatch16}
-\pastebutton{FileNameXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{writable? "/etc/DoesNotExist"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch17}
-\begin{paste}{FileNameXmpPageFull17}{FileNameXmpPageEmpty17}
-\pastebutton{FileNameXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{writable? "/tmp/DoesNotExist"}
-\indentrel{3}\begin{verbatim}
-   (17)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty17}
-\begin{paste}{FileNameXmpPageEmpty17}{FileNameXmpPagePatch17}
-\pastebutton{FileNameXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{writable? "/tmp/DoesNotExist"}
-\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPagePatch18}
-\begin{paste}{FileNameXmpPageFull18}{FileNameXmpPageEmpty18}
-\pastebutton{FileNameXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }}
-\indentrel{3}\begin{verbatim}
-   (18)  "/tmp/xxx82222.yy"
-                                         Type: FileName
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FileNameXmpPageEmpty18}
-\begin{paste}{FileNameXmpPageEmpty18}{FileNameXmpPagePatch18}
-\pastebutton{FileNameXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/fparfrac.pht b/books/pages/fparfrac.pht
deleted file mode 100644
index 805d673..0000000
--- a/books/pages/fparfrac.pht
+++ /dev/null
@@ -1,411 +0,0 @@
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch1}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull1}{FullPartialFractionExpansionXmpPageEmpty1}
-\pastebutton{FullPartialFractionExpansionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Fx := FRAC UP(x, FRAC INT)\bound{Fx }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   Fraction UnivariatePolynomial(x,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty1}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty1}{FullPartialFractionExpansionXmpPagePatch1}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Fx := FRAC UP(x, FRAC INT)\bound{Fx }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch2}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull2}{FullPartialFractionExpansionXmpPageEmpty2}
-\pastebutton{FullPartialFractionExpansionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2)\bound{f }\free{Fx }}
-\indentrel{3}\begin{verbatim}
-                     36
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         5     4     3     2
-        x  - 2x  - 2x  + 4x  + x - 2
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty2}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty2}{FullPartialFractionExpansionXmpPagePatch2}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2)\bound{f }\free{Fx }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch3}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull3}{FullPartialFractionExpansionXmpPageEmpty3}
-\pastebutton{FullPartialFractionExpansionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\bound{g }\free{f }}
-\indentrel{3}\begin{verbatim}
-          4       4        ÄÄ¿      - 3%A - 6
-   (3)  ÄÄÄÄÄ - ÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄ
-        x - 2   x + 1      ÄÄÙ              2
-                          2         (x - %A)
-                        %A  - 1= 0
-Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty3}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty3}{FullPartialFractionExpansionXmpPagePatch3}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\bound{g }\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch4}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull4}{FullPartialFractionExpansionXmpPageEmpty4}
-\pastebutton{FullPartialFractionExpansionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g :: Fx\free{g }}
-\indentrel{3}\begin{verbatim}
-                     36
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         5     4     3     2
-        x  - 2x  - 2x  + 4x  + x - 2
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty4}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty4}{FullPartialFractionExpansionXmpPagePatch4}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g :: Fx\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch5}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull5}{FullPartialFractionExpansionXmpPageEmpty5}
-\pastebutton{FullPartialFractionExpansionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{g5 := D(g, 5)\free{g }\bound{g5 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-        480        480        ÄÄ¿      2160%A + 4320
-   - ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-            6          6      ÄÄÙ                7
-     (x - 2)    (x + 1)      2           (x - %A)
-                           %A  - 1= 0
-Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty5}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty5}{FullPartialFractionExpansionXmpPagePatch5}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{g5 := D(g, 5)\free{g }\bound{g5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch6}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull6}{FullPartialFractionExpansionXmpPageEmpty6}
-\pastebutton{FullPartialFractionExpansionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{f5 := D(f, 5)\free{f }\bound{f5 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-                10           9            8            7
-       - 544320x   + 4354560x  - 14696640x  + 28615680x
-     + 
-                  6            5            4            3
-       - 40085280x  + 46656000x  - 39411360x  + 18247680x
-     + 
-                 2
-       - 5870880x  + 3317760x + 246240
-  /
-        20      19      18      17       16       15
-       x   - 12x   + 53x   - 76x   - 159x   + 676x
-     + 
-             14        13        12        11        10
-       - 391x   - 1596x   + 2527x   + 1148x   - 4977x
-     + 
-            9        8        7        6        5       4
-       1372x  + 4907x  - 3444x  - 2381x  + 2924x  + 276x
-     + 
-              3       2
-       - 1184x  + 208x  + 192x - 64
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty6}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty6}{FullPartialFractionExpansionXmpPagePatch6}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{f5 := D(f, 5)\free{f }\bound{f5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch7}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull7}{FullPartialFractionExpansionXmpPageEmpty7}
-\pastebutton{FullPartialFractionExpansionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g5::Fx - f5\free{Fx g5 f5 }}
-\indentrel{3}\begin{verbatim}
-   (7)  0
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty7}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty7}{FullPartialFractionExpansionXmpPagePatch7}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g5::Fx - f5\free{Fx g5 f5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch8}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull8}{FullPartialFractionExpansionXmpPageEmpty8}
-\pastebutton{FullPartialFractionExpansionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)\free{Fx }\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-                       6    5
-                      x  - x
-   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         7     6     5     3     2
-        x  - 4x  + 3x  + 9x  - 6x  - 4x - 8
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty8}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty8}{FullPartialFractionExpansionXmpPagePatch8}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)\free{Fx }\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch9}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull9}{FullPartialFractionExpansionXmpPageEmpty9}
-\pastebutton{FullPartialFractionExpansionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f2 }\bound{g2 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-      1952       464        32
-      ÄÄÄÄ       ÄÄÄ        ÄÄ
-      2401       343        49
-     ÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
-      x - 2          2          3
-              (x - 2)    (x - 2)
-   + 
-                         179       135
-                      - ÄÄÄÄ %A + ÄÄÄÄ
-           ÄÄ¿          2401      2401
-           >          ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-           ÄÄÙ             x - %A
-       2
-     %A  + %A + 1= 0
-   + 
-                       37        20
-                      ÄÄÄÄ %A + ÄÄÄÄ
-           ÄÄ¿        1029      1029
-           >          ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-           ÄÄÙ                   2
-       2                 (x - %A)
-     %A  + %A + 1= 0
-Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty9}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty9}{FullPartialFractionExpansionXmpPagePatch9}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f2 }\bound{g2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch10}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull10}{FullPartialFractionExpansionXmpPageEmpty10}
-\pastebutton{FullPartialFractionExpansionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f2 g2 Fx }}
-\indentrel{3}\begin{verbatim}
-   (10)  0
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty10}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty10}{FullPartialFractionExpansionXmpPagePatch10}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f2 g2 Fx }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch11}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull11}{FullPartialFractionExpansionXmpPageEmpty11}
-\pastebutton{FullPartialFractionExpansionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{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)\free{Fx }\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-             7     5      3
-           2x  - 7x  + 26x  + 8x
-   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-          8     6     4     2
-         x  - 5x  + 6x  + 4x  - 8
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty11}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty11}{FullPartialFractionExpansionXmpPagePatch11}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{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)\free{Fx }\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch12}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull12}{FullPartialFractionExpansionXmpPageEmpty12}
-\pastebutton{FullPartialFractionExpansionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f3 }\bound{g3 }}
-\indentrel{3}\begin{verbatim}
-   (12)
-                    1
-                    Ä
-        ÄÄ¿         2        ÄÄ¿          1
-        >        ÄÄÄÄÄÄ +    >        ÄÄÄÄÄÄÄÄÄ
-        ÄÄÙ      x - %A      ÄÄÙ              3
-       2                    2         (x - %A)
-     %A  - 2= 0           %A  - 2= 0
-   + 
-                    1
-                    Ä
-        ÄÄ¿         2
-        >        ÄÄÄÄÄÄ
-        ÄÄÙ      x - %A
-       2
-     %A  + 1= 0
-Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty12}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty12}{FullPartialFractionExpansionXmpPagePatch12}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f3 }\bound{g3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch13}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull13}{FullPartialFractionExpansionXmpPageEmpty13}
-\pastebutton{FullPartialFractionExpansionXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f3 g3 Fx }}
-\indentrel{3}\begin{verbatim}
-   (13)  0
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty13}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty13}{FullPartialFractionExpansionXmpPagePatch13}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f3 g3 Fx }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch14}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull14}{FullPartialFractionExpansionXmpPageEmpty14}
-\pastebutton{FullPartialFractionExpansionXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{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)\free{Fx }\bound{f4 }}
-\indentrel{3}\begin{verbatim}
-   (14)
-      3
-     x
-  /
-        21     20     19     18      17      16      15
-       x   + 2x   + 4x   + 7x   + 10x   + 17x   + 22x
-     + 
-          14      13      12      11      10      9      8
-       30x   + 36x   + 40x   + 47x   + 46x   + 49x  + 43x
-     + 
-          7      6      5      4      3     2
-       38x  + 32x  + 23x  + 19x  + 10x  + 7x  + 2x + 1
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty14}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty14}{FullPartialFractionExpansionXmpPagePatch14}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{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)\free{Fx }\bound{f4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch15}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull15}{FullPartialFractionExpansionXmpPageEmpty15}
-\pastebutton{FullPartialFractionExpansionXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f4 }\bound{g4 }}
-\indentrel{3}\begin{verbatim}
-   (15)
-                  1                        1      19
-                  Ä %A                     Ä %A - ÄÄ
-        ÄÄ¿       2             ÄÄ¿        9      27
-        >        ÄÄÄÄÄÄ +       >          ÄÄÄÄÄÄÄÄÄ
-        ÄÄÙ      x - %A         ÄÄÙ          x - %A
-       2                    2
-     %A  + 1= 0           %A  + %A + 1= 0
-   + 
-                       1       1
-                      ÄÄ %A - ÄÄ
-           ÄÄ¿        27      27
-           >          ÄÄÄÄÄÄÄÄÄÄ
-           ÄÄÙ                 2
-       2               (x - %A)
-     %A  + %A + 1= 0
-   + 
-     SIGMA
-          5     2
-        %A  + %A  + 1= 0
-    ,
-               96556567040   4   420961732891   3
-            - ÄÄÄÄÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄÄÄÄÄ %A
-              912390759099       912390759099
-          + 
-               59101056149   2   373545875923
-            - ÄÄÄÄÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄÄÄÄÄ %A
-              912390759099       912390759099
-          + 
-            529673492498
-            ÄÄÄÄÄÄÄÄÄÄÄÄ
-            912390759099
-       /
-          x - %A
-   + 
-     SIGMA
-          5     2
-        %A  + %A  + 1= 0
-    ,
-               5580868   4    2024443   3    4321919   2
-            - ÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄ %A
-              94070601       94070601       94070601
-          + 
-               84614        5070620
-            - ÄÄÄÄÄÄÄ %A - ÄÄÄÄÄÄÄÄ
-              1542141      94070601
-       /
-                  2
-          (x - %A)
-   + 
-     SIGMA
-          5     2
-        %A  + %A  + 1= 0
-    ,
-             1610957   4    2763014   3    2016775   2
-            ÄÄÄÄÄÄÄÄ %A  + ÄÄÄÄÄÄÄÄ %A  - ÄÄÄÄÄÄÄÄ %A
-            94070601       94070601       94070601
-          + 
-             266953        4529359
-            ÄÄÄÄÄÄÄÄ %A + ÄÄÄÄÄÄÄÄ
-            94070601      94070601
-       /
-                  3
-          (x - %A)
-Type: FullPartialFractionExpansion(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty15}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty15}{FullPartialFractionExpansionXmpPagePatch15}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{g := fullPartialFraction f\free{f4 }\bound{g4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPagePatch16}
-\begin{paste}{FullPartialFractionExpansionXmpPageFull16}{FullPartialFractionExpansionXmpPageEmpty16}
-\pastebutton{FullPartialFractionExpansionXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f4 g4 Fx }}
-\indentrel{3}\begin{verbatim}
-   (16)  0
-Type: Fraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FullPartialFractionExpansionXmpPageEmpty16}
-\begin{paste}{FullPartialFractionExpansionXmpPageEmpty16}{FullPartialFractionExpansionXmpPagePatch16}
-\pastebutton{FullPartialFractionExpansionXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{g :: Fx - f\free{f4 g4 Fx }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/fr.pht b/books/pages/fr.pht
deleted file mode 100644
index c72f4e0..0000000
--- a/books/pages/fr.pht
+++ /dev/null
@@ -1,633 +0,0 @@
-\begin{patch}{ugxFactoredArithPagePatch1}
-\begin{paste}{ugxFactoredArithPageFull1}{ugxFactoredArithPageEmpty1}
-\pastebutton{ugxFactoredArithPageFull1}{\hidepaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (1)  2 7 11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty1}
-\begin{paste}{ugxFactoredArithPageEmpty1}{ugxFactoredArithPagePatch1}
-\pastebutton{ugxFactoredArithPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch2}
-\begin{paste}{ugxFactoredArithPageFull2}{ugxFactoredArithPageEmpty2}
-\pastebutton{ugxFactoredArithPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := factor(246960)\bound{f }}
-\indentrel{3}\begin{verbatim}
-         4 2   3
-   (2)  2 3 5 7
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty2}
-\begin{paste}{ugxFactoredArithPageEmpty2}{ugxFactoredArithPagePatch2}
-\pastebutton{ugxFactoredArithPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := factor(246960)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch3}
-\begin{paste}{ugxFactoredArithPageFull3}{ugxFactoredArithPageEmpty3}
-\pastebutton{ugxFactoredArithPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f * g\free{f g }}
-\indentrel{3}\begin{verbatim}
-         7 2   5
-   (3)  2 3 5 7 11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty3}
-\begin{paste}{ugxFactoredArithPageEmpty3}{ugxFactoredArithPagePatch3}
-\pastebutton{ugxFactoredArithPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f * g\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch4}
-\begin{paste}{ugxFactoredArithPageFull4}{ugxFactoredArithPageEmpty4}
-\pastebutton{ugxFactoredArithPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f**500\free{f }}
-\indentrel{3}\begin{verbatim}
-         2000 1000 500 1500
-   (4)  2    3    5   7
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty4}
-\begin{paste}{ugxFactoredArithPageEmpty4}{ugxFactoredArithPagePatch4}
-\pastebutton{ugxFactoredArithPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f**500\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch5}
-\begin{paste}{ugxFactoredArithPageFull5}{ugxFactoredArithPageEmpty5}
-\pastebutton{ugxFactoredArithPageFull5}{\hidepaste}
-\tab{5}\spadcommand{gcd(f,g)\free{f g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (5)  2 7
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty5}
-\begin{paste}{ugxFactoredArithPageEmpty5}{ugxFactoredArithPagePatch5}
-\pastebutton{ugxFactoredArithPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{gcd(f,g)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch6}
-\begin{paste}{ugxFactoredArithPageFull6}{ugxFactoredArithPageEmpty6}
-\pastebutton{ugxFactoredArithPageFull6}{\hidepaste}
-\tab{5}\spadcommand{lcm(f,g)\free{f g }}
-\indentrel{3}\begin{verbatim}
-         4 2   3
-   (6)  2 3 5 7 11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty6}
-\begin{paste}{ugxFactoredArithPageEmpty6}{ugxFactoredArithPagePatch6}
-\pastebutton{ugxFactoredArithPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{lcm(f,g)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch7}
-\begin{paste}{ugxFactoredArithPageFull7}{ugxFactoredArithPageEmpty7}
-\pastebutton{ugxFactoredArithPageFull7}{\hidepaste}
-\tab{5}\spadcommand{f + g\free{f g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (7)  2 7 641
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty7}
-\begin{paste}{ugxFactoredArithPageEmpty7}{ugxFactoredArithPagePatch7}
-\pastebutton{ugxFactoredArithPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f + g\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch8}
-\begin{paste}{ugxFactoredArithPageFull8}{ugxFactoredArithPageEmpty8}
-\pastebutton{ugxFactoredArithPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f - g\free{f g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (8)  2 7 619
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty8}
-\begin{paste}{ugxFactoredArithPageEmpty8}{ugxFactoredArithPagePatch8}
-\pastebutton{ugxFactoredArithPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f - g\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch9}
-\begin{paste}{ugxFactoredArithPageFull9}{ugxFactoredArithPageEmpty9}
-\pastebutton{ugxFactoredArithPageFull9}{\hidepaste}
-\tab{5}\spadcommand{zero?(factor(0))}
-\indentrel{3}\begin{verbatim}
-   (9)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty9}
-\begin{paste}{ugxFactoredArithPageEmpty9}{ugxFactoredArithPagePatch9}
-\pastebutton{ugxFactoredArithPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{zero?(factor(0))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch10}
-\begin{paste}{ugxFactoredArithPageFull10}{ugxFactoredArithPageEmpty10}
-\pastebutton{ugxFactoredArithPageFull10}{\hidepaste}
-\tab{5}\spadcommand{zero?(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (10)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty10}
-\begin{paste}{ugxFactoredArithPageEmpty10}{ugxFactoredArithPagePatch10}
-\pastebutton{ugxFactoredArithPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{zero?(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch11}
-\begin{paste}{ugxFactoredArithPageFull11}{ugxFactoredArithPageEmpty11}
-\pastebutton{ugxFactoredArithPageFull11}{\hidepaste}
-\tab{5}\spadcommand{one?(factor(1))}
-\indentrel{3}\begin{verbatim}
-   (11)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty11}
-\begin{paste}{ugxFactoredArithPageEmpty11}{ugxFactoredArithPagePatch11}
-\pastebutton{ugxFactoredArithPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{one?(factor(1))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch12}
-\begin{paste}{ugxFactoredArithPageFull12}{ugxFactoredArithPageEmpty12}
-\pastebutton{ugxFactoredArithPageFull12}{\hidepaste}
-\tab{5}\spadcommand{one?(f)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (12)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty12}
-\begin{paste}{ugxFactoredArithPageEmpty12}{ugxFactoredArithPagePatch12}
-\pastebutton{ugxFactoredArithPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{one?(f)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch13}
-\begin{paste}{ugxFactoredArithPageFull13}{ugxFactoredArithPageEmpty13}
-\pastebutton{ugxFactoredArithPageFull13}{\hidepaste}
-\tab{5}\spadcommand{0$Factored(Integer)}
-\indentrel{3}\begin{verbatim}
-   (13)  0
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty13}
-\begin{paste}{ugxFactoredArithPageEmpty13}{ugxFactoredArithPagePatch13}
-\pastebutton{ugxFactoredArithPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{0$Factored(Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPagePatch14}
-\begin{paste}{ugxFactoredArithPageFull14}{ugxFactoredArithPageEmpty14}
-\pastebutton{ugxFactoredArithPageFull14}{\hidepaste}
-\tab{5}\spadcommand{1$Factored(Integer)}
-\indentrel{3}\begin{verbatim}
-   (14)  1
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredArithPageEmpty14}
-\begin{paste}{ugxFactoredArithPageEmpty14}{ugxFactoredArithPagePatch14}
-\pastebutton{ugxFactoredArithPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{1$Factored(Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch1}
-\begin{paste}{ugxFactoredDecompPageFull1}{ugxFactoredDecompPageEmpty1}
-\pastebutton{ugxFactoredDecompPageFull1}{\hidepaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (1)  2 7 11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty1}
-\begin{paste}{ugxFactoredDecompPageEmpty1}{ugxFactoredDecompPagePatch1}
-\pastebutton{ugxFactoredDecompPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch2}
-\begin{paste}{ugxFactoredDecompPageFull2}{ugxFactoredDecompPageEmpty2}
-\pastebutton{ugxFactoredDecompPageFull2}{\hidepaste}
-\tab{5}\spadcommand{unit(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (2)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty2}
-\begin{paste}{ugxFactoredDecompPageEmpty2}{ugxFactoredDecompPagePatch2}
-\pastebutton{ugxFactoredDecompPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{unit(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch3}
-\begin{paste}{ugxFactoredDecompPageFull3}{ugxFactoredDecompPageEmpty3}
-\pastebutton{ugxFactoredDecompPageFull3}{\hidepaste}
-\tab{5}\spadcommand{numberOfFactors(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (3)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty3}
-\begin{paste}{ugxFactoredDecompPageEmpty3}{ugxFactoredDecompPagePatch3}
-\pastebutton{ugxFactoredDecompPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{numberOfFactors(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch4}
-\begin{paste}{ugxFactoredDecompPageFull4}{ugxFactoredDecompPageEmpty4}
-\pastebutton{ugxFactoredDecompPageFull4}{\hidepaste}
-\tab{5}\spadcommand{[nthFactor(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\indentrel{3}\begin{verbatim}
-   (4)  [2,7,11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty4}
-\begin{paste}{ugxFactoredDecompPageEmpty4}{ugxFactoredDecompPagePatch4}
-\pastebutton{ugxFactoredDecompPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{[nthFactor(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch5}
-\begin{paste}{ugxFactoredDecompPageFull5}{ugxFactoredDecompPageEmpty5}
-\pastebutton{ugxFactoredDecompPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[nthExponent(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\indentrel{3}\begin{verbatim}
-   (5)  [3,2,1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty5}
-\begin{paste}{ugxFactoredDecompPageEmpty5}{ugxFactoredDecompPagePatch5}
-\pastebutton{ugxFactoredDecompPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[nthExponent(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch6}
-\begin{paste}{ugxFactoredDecompPageFull6}{ugxFactoredDecompPageEmpty6}
-\pastebutton{ugxFactoredDecompPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[nthFlag(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\indentrel{3}\begin{verbatim}
-   (6)  ["prime","prime","prime"]
-         Type: List Union("nil","sqfr","irred","prime")
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty6}
-\begin{paste}{ugxFactoredDecompPageEmpty6}{ugxFactoredDecompPagePatch6}
-\pastebutton{ugxFactoredDecompPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[nthFlag(g,i) for i in 1..numberOfFactors(g)]\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch7}
-\begin{paste}{ugxFactoredDecompPageFull7}{ugxFactoredDecompPageEmpty7}
-\pastebutton{ugxFactoredDecompPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factorList(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [[flg= "prime",fctr= 2,xpnt= 3],
-    [flg= "prime",fctr= 7,xpnt= 2],
-    [flg= "prime",fctr= 11,xpnt= 1]]
-Type: List Record(flg: Union("nil","sqfr","irred","prime"),fctr: Integer,xpnt: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty7}
-\begin{paste}{ugxFactoredDecompPageEmpty7}{ugxFactoredDecompPagePatch7}
-\pastebutton{ugxFactoredDecompPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factorList(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch8}
-\begin{paste}{ugxFactoredDecompPageFull8}{ugxFactoredDecompPageEmpty8}
-\pastebutton{ugxFactoredDecompPageFull8}{\hidepaste}
-\tab{5}\spadcommand{factors(g)\free{g }\bound{prev1 }}
-\indentrel{3}\begin{verbatim}
-   (8)
-   [[factor= 2,exponent= 3], [factor= 7,exponent= 2],
-    [factor= 11,exponent= 1]]
-   Type: List Record(factor: Integer,exponent: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty8}
-\begin{paste}{ugxFactoredDecompPageEmpty8}{ugxFactoredDecompPagePatch8}
-\pastebutton{ugxFactoredDecompPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{factors(g)\free{g }\bound{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPagePatch9}
-\begin{paste}{ugxFactoredDecompPageFull9}{ugxFactoredDecompPageEmpty9}
-\pastebutton{ugxFactoredDecompPageFull9}{\hidepaste}
-\tab{5}\spadcommand{first(\%).factor\free{prev1 }}
-\indentrel{3}\begin{verbatim}
-   (9)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredDecompPageEmpty9}
-\begin{paste}{ugxFactoredDecompPageEmpty9}{ugxFactoredDecompPagePatch9}
-\pastebutton{ugxFactoredDecompPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{first(\%).factor\free{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPagePatch1}
-\begin{paste}{ugxFactoredExpandPageFull1}{ugxFactoredExpandPageEmpty1}
-\pastebutton{ugxFactoredExpandPageFull1}{\hidepaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (1)  2 7 11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPageEmpty1}
-\begin{paste}{ugxFactoredExpandPageEmpty1}{ugxFactoredExpandPagePatch1}
-\pastebutton{ugxFactoredExpandPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{g := factor(4312)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPagePatch2}
-\begin{paste}{ugxFactoredExpandPageFull2}{ugxFactoredExpandPageEmpty2}
-\pastebutton{ugxFactoredExpandPageFull2}{\hidepaste}
-\tab{5}\spadcommand{expand(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (2)  4312
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPageEmpty2}
-\begin{paste}{ugxFactoredExpandPageEmpty2}{ugxFactoredExpandPagePatch2}
-\pastebutton{ugxFactoredExpandPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{expand(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPagePatch3}
-\begin{paste}{ugxFactoredExpandPageFull3}{ugxFactoredExpandPageEmpty3}
-\pastebutton{ugxFactoredExpandPageFull3}{\hidepaste}
-\tab{5}\spadcommand{reduce(*,[t.factor for t in factors(g)])\free{g }}
-\indentrel{3}\begin{verbatim}
-   (3)  154
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredExpandPageEmpty3}
-\begin{paste}{ugxFactoredExpandPageEmpty3}{ugxFactoredExpandPagePatch3}
-\pastebutton{ugxFactoredExpandPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{reduce(*,[t.factor for t in factors(g)])\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPagePatch1}
-\begin{paste}{ugxFactoredVarPageFull1}{ugxFactoredVarPageEmpty1}
-\pastebutton{ugxFactoredVarPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (1)
-      2            2      2                  2
-   (4x  - 12x + 9)y  + (4x  - 12x + 9)y + 28x  - 84x + 63
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPageEmpty1}
-\begin{paste}{ugxFactoredVarPageEmpty1}{ugxFactoredVarPagePatch1}
-\pastebutton{ugxFactoredVarPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPagePatch2}
-\begin{paste}{ugxFactoredVarPageFull2}{ugxFactoredVarPageEmpty2}
-\pastebutton{ugxFactoredVarPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fp := factor(p)\free{p }\bound{fp }}
-\indentrel{3}\begin{verbatim}
-                2  2
-   (2)  (2x - 3) (y  + y + 7)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPageEmpty2}
-\begin{paste}{ugxFactoredVarPageEmpty2}{ugxFactoredVarPagePatch2}
-\pastebutton{ugxFactoredVarPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fp := factor(p)\free{p }\bound{fp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPagePatch3}
-\begin{paste}{ugxFactoredVarPageFull3}{ugxFactoredVarPageEmpty3}
-\pastebutton{ugxFactoredVarPageFull3}{\hidepaste}
-\tab{5}\spadcommand{D(p,x)\free{p }}
-\indentrel{3}\begin{verbatim}
-                  2
-   (3)  (8x - 12)y  + (8x - 12)y + 56x - 84
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPageEmpty3}
-\begin{paste}{ugxFactoredVarPageEmpty3}{ugxFactoredVarPagePatch3}
-\pastebutton{ugxFactoredVarPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{D(p,x)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPagePatch4}
-\begin{paste}{ugxFactoredVarPageFull4}{ugxFactoredVarPageEmpty4}
-\pastebutton{ugxFactoredVarPageFull4}{\hidepaste}
-\tab{5}\spadcommand{D(fp,x)\free{fp }\bound{prev1 }}
-\indentrel{3}\begin{verbatim}
-                   2
-   (4)  4(2x - 3)(y  + y + 7)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPageEmpty4}
-\begin{paste}{ugxFactoredVarPageEmpty4}{ugxFactoredVarPagePatch4}
-\pastebutton{ugxFactoredVarPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{D(fp,x)\free{fp }\bound{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPagePatch5}
-\begin{paste}{ugxFactoredVarPageFull5}{ugxFactoredVarPageEmpty5}
-\pastebutton{ugxFactoredVarPageFull5}{\hidepaste}
-\tab{5}\spadcommand{numberOfFactors(\%)\free{prev1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredVarPageEmpty5}
-\begin{paste}{ugxFactoredVarPageEmpty5}{ugxFactoredVarPagePatch5}
-\pastebutton{ugxFactoredVarPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{numberOfFactors(\%)\free{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch1}
-\begin{paste}{ugxFactoredNewPageFull1}{ugxFactoredNewPageEmpty1}
-\pastebutton{ugxFactoredNewPageFull1}{\hidepaste}
-\tab{5}\spadcommand{nilFactor(24,2)\bound{prev2 }}
-\indentrel{3}\begin{verbatim}
-          2
-   (1)  24
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty1}
-\begin{paste}{ugxFactoredNewPageEmpty1}{ugxFactoredNewPagePatch1}
-\pastebutton{ugxFactoredNewPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{nilFactor(24,2)\bound{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch2}
-\begin{paste}{ugxFactoredNewPageFull2}{ugxFactoredNewPageEmpty2}
-\pastebutton{ugxFactoredNewPageFull2}{\hidepaste}
-\tab{5}\spadcommand{nthFlag(\%,1)\free{prev2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  "nil"
-                                 Type: Union("nil",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty2}
-\begin{paste}{ugxFactoredNewPageEmpty2}{ugxFactoredNewPagePatch2}
-\pastebutton{ugxFactoredNewPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{nthFlag(\%,1)\free{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch3}
-\begin{paste}{ugxFactoredNewPageFull3}{ugxFactoredNewPageEmpty3}
-\pastebutton{ugxFactoredNewPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sqfrFactor(30,2)\bound{prev3 }}
-\indentrel{3}\begin{verbatim}
-          2
-   (3)  30
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty3}
-\begin{paste}{ugxFactoredNewPageEmpty3}{ugxFactoredNewPagePatch3}
-\pastebutton{ugxFactoredNewPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sqfrFactor(30,2)\bound{prev3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch4}
-\begin{paste}{ugxFactoredNewPageFull4}{ugxFactoredNewPageEmpty4}
-\pastebutton{ugxFactoredNewPageFull4}{\hidepaste}
-\tab{5}\spadcommand{irreducibleFactor(13,10)\bound{prev4 }}
-\indentrel{3}\begin{verbatim}
-          10
-   (4)  13
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty4}
-\begin{paste}{ugxFactoredNewPageEmpty4}{ugxFactoredNewPagePatch4}
-\pastebutton{ugxFactoredNewPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{irreducibleFactor(13,10)\bound{prev4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch5}
-\begin{paste}{ugxFactoredNewPageFull5}{ugxFactoredNewPageEmpty5}
-\pastebutton{ugxFactoredNewPageFull5}{\hidepaste}
-\tab{5}\spadcommand{primeFactor(11,5)\bound{prev5 }}
-\indentrel{3}\begin{verbatim}
-          5
-   (5)  11
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty5}
-\begin{paste}{ugxFactoredNewPageEmpty5}{ugxFactoredNewPagePatch5}
-\pastebutton{ugxFactoredNewPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{primeFactor(11,5)\bound{prev5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch6}
-\begin{paste}{ugxFactoredNewPageFull6}{ugxFactoredNewPageEmpty6}
-\pastebutton{ugxFactoredNewPageFull6}{\hidepaste}
-\tab{5}\spadcommand{h := factor(-720)\bound{h }}
-\indentrel{3}\begin{verbatim}
-           4 2
-   (6)  - 2 3 5
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty6}
-\begin{paste}{ugxFactoredNewPageEmpty6}{ugxFactoredNewPagePatch6}
-\pastebutton{ugxFactoredNewPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{h := factor(-720)\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPagePatch7}
-\begin{paste}{ugxFactoredNewPageFull7}{ugxFactoredNewPageEmpty7}
-\pastebutton{ugxFactoredNewPageFull7}{\hidepaste}
-\tab{5}\spadcommand{h - makeFR(unit(h),factorList(h))\free{h }}
-\indentrel{3}\begin{verbatim}
-   (7)  0
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxFactoredNewPageEmpty7}
-\begin{paste}{ugxFactoredNewPageEmpty7}{ugxFactoredNewPagePatch7}
-\pastebutton{ugxFactoredNewPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{h - makeFR(unit(h),factorList(h))\free{h }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/fr2.pht b/books/pages/fr2.pht
deleted file mode 100644
index 5b26c40..0000000
--- a/books/pages/fr2.pht
+++ /dev/null
@@ -1,97 +0,0 @@
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch1}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull1}{FactoredFunctionsTwoXmpPageEmpty1}
-\pastebutton{FactoredFunctionsTwoXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{double(x) == x + x\bound{double }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty1}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty1}{FactoredFunctionsTwoXmpPagePatch1}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{double(x) == x + x\bound{double }}
-\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch2}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull2}{FactoredFunctionsTwoXmpPageEmpty2}
-\pastebutton{FactoredFunctionsTwoXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := factor(720)\bound{f }}
-\indentrel{3}\begin{verbatim}
-         4 2
-   (2)  2 3 5
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty2}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty2}{FactoredFunctionsTwoXmpPagePatch2}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := factor(720)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch3}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull3}{FactoredFunctionsTwoXmpPageEmpty3}
-\pastebutton{FactoredFunctionsTwoXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{map(double,f)\free{f }\free{double }}
-\indentrel{3}\begin{verbatim}
-           4 2
-   (3)  2 4 6 10
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty3}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty3}{FactoredFunctionsTwoXmpPagePatch3}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{map(double,f)\free{f }\free{double }}
-\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch4}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull4}{FactoredFunctionsTwoXmpPageEmpty4}
-\pastebutton{FactoredFunctionsTwoXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{makePoly(b) == x + b\bound{makePoly }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty4}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty4}{FactoredFunctionsTwoXmpPagePatch4}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{makePoly(b) == x + b\bound{makePoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch5}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull5}{FactoredFunctionsTwoXmpPageEmpty5}
-\pastebutton{FactoredFunctionsTwoXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{g := map(makePoly,f)\free{f }\free{makePoly }\bound{g }}
-\indentrel{3}\begin{verbatim}
-                      4       2
-   (5)  (x + 1)(x + 2) (x + 3) (x + 5)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty5}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty5}{FactoredFunctionsTwoXmpPagePatch5}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{g := map(makePoly,f)\free{f }\free{makePoly }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPagePatch6}
-\begin{paste}{FactoredFunctionsTwoXmpPageFull6}{FactoredFunctionsTwoXmpPageEmpty6}
-\pastebutton{FactoredFunctionsTwoXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{nthFlag(g,1)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (6)  "nil"
-                                 Type: Union("nil",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FactoredFunctionsTwoXmpPageEmpty6}
-\begin{paste}{FactoredFunctionsTwoXmpPageEmpty6}{FactoredFunctionsTwoXmpPagePatch6}
-\pastebutton{FactoredFunctionsTwoXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{nthFlag(g,1)\free{g }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/frac.pht b/books/pages/frac.pht
deleted file mode 100644
index f5fa2f8..0000000
--- a/books/pages/frac.pht
+++ /dev/null
@@ -1,219 +0,0 @@
-\begin{patch}{FractionXmpPagePatch1}
-\begin{paste}{FractionXmpPageFull1}{FractionXmpPageEmpty1}
-\pastebutton{FractionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a := 11/12\bound{a }}
-\indentrel{3}\begin{verbatim}
-        11
-   (1)  ÄÄ
-        12
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty1}
-\begin{paste}{FractionXmpPageEmpty1}{FractionXmpPagePatch1}
-\pastebutton{FractionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a := 11/12\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch2}
-\begin{paste}{FractionXmpPageFull2}{FractionXmpPageEmpty2}
-\pastebutton{FractionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{b := 23/24\bound{b }}
-\indentrel{3}\begin{verbatim}
-        23
-   (2)  ÄÄ
-        24
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty2}
-\begin{paste}{FractionXmpPageEmpty2}{FractionXmpPagePatch2}
-\pastebutton{FractionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{b := 23/24\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch3}
-\begin{paste}{FractionXmpPageFull3}{FractionXmpPageEmpty3}
-\pastebutton{FractionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{3 - a*b**2 + a + b/a\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-        313271
-   (3)  ÄÄÄÄÄÄ
-         76032
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty3}
-\begin{paste}{FractionXmpPageEmpty3}{FractionXmpPagePatch3}
-\pastebutton{FractionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{3 - a*b**2 + a + b/a\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch4}
-\begin{paste}{FractionXmpPageFull4}{FractionXmpPageEmpty4}
-\pastebutton{FractionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{numer(a)\free{a }}
-\indentrel{3}\begin{verbatim}
-   (4)  11
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty4}
-\begin{paste}{FractionXmpPageEmpty4}{FractionXmpPagePatch4}
-\pastebutton{FractionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{numer(a)\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch5}
-\begin{paste}{FractionXmpPageFull5}{FractionXmpPageEmpty5}
-\pastebutton{FractionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{denom(b)\free{b }}
-\indentrel{3}\begin{verbatim}
-   (5)  24
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty5}
-\begin{paste}{FractionXmpPageEmpty5}{FractionXmpPagePatch5}
-\pastebutton{FractionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{denom(b)\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch6}
-\begin{paste}{FractionXmpPageFull6}{FractionXmpPageEmpty6}
-\pastebutton{FractionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)\bound{r }}
-\indentrel{3}\begin{verbatim}
-         2
-        x  + 2x + 1
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄ
-         2
-        x  - 2x + 1
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty6}
-\begin{paste}{FractionXmpPageEmpty6}{FractionXmpPagePatch6}
-\pastebutton{FractionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch7}
-\begin{paste}{FractionXmpPageFull7}{FractionXmpPageEmpty7}
-\pastebutton{FractionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factor(r)\free{r }}
-\indentrel{3}\begin{verbatim}
-         2
-        x  + 2x + 1
-   (7)  ÄÄÄÄÄÄÄÄÄÄÄ
-         2
-        x  - 2x + 1
-             Type: Factored Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty7}
-\begin{paste}{FractionXmpPageEmpty7}{FractionXmpPagePatch7}
-\pastebutton{FractionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factor(r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch8}
-\begin{paste}{FractionXmpPageFull8}{FractionXmpPageEmpty8}
-\pastebutton{FractionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{map(factor,r)\free{r }}
-\indentrel{3}\begin{verbatim}
-               2
-        (x + 1)
-   (8)  ÄÄÄÄÄÄÄÄ
-               2
-        (x - 1)
-             Type: Fraction Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty8}
-\begin{paste}{FractionXmpPageEmpty8}{FractionXmpPagePatch8}
-\pastebutton{FractionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{map(factor,r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch9}
-\begin{paste}{FractionXmpPageFull9}{FractionXmpPageEmpty9}
-\pastebutton{FractionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{continuedFraction(7/12)}
-\indentrel{3}\begin{verbatim}
-          1 ³     1 ³     1 ³     1 ³
-   (9)  ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
-        ³ 1     ³ 1     ³ 2     ³ 2
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty9}
-\begin{paste}{FractionXmpPageEmpty9}{FractionXmpPagePatch9}
-\pastebutton{FractionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{continuedFraction(7/12)}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch10}
-\begin{paste}{FractionXmpPageFull10}{FractionXmpPageEmpty10}
-\pastebutton{FractionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{partialFraction(7,12)}
-\indentrel{3}\begin{verbatim}
-              3   1
-   (10)  1 - ÄÄ + Ä
-              2   3
-             2
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty10}
-\begin{paste}{FractionXmpPageEmpty10}{FractionXmpPagePatch10}
-\pastebutton{FractionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{partialFraction(7,12)}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch11}
-\begin{paste}{FractionXmpPageFull11}{FractionXmpPageEmpty11}
-\pastebutton{FractionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{g := 2/3 + 4/5*\%i\bound{g }}
-\indentrel{3}\begin{verbatim}
-         2   4
-   (11)  Ä + Ä %i
-         3   5
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty11}
-\begin{paste}{FractionXmpPageEmpty11}{FractionXmpPagePatch11}
-\pastebutton{FractionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{g := 2/3 + 4/5*\%i\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPagePatch12}
-\begin{paste}{FractionXmpPageFull12}{FractionXmpPageEmpty12}
-\pastebutton{FractionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{g :: FRAC COMPLEX INT\free{g }}
-\indentrel{3}\begin{verbatim}
-         10 + 12%i
-   (12)  ÄÄÄÄÄÄÄÄÄ
-             15
-                         Type: Fraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionXmpPageEmpty12}
-\begin{paste}{FractionXmpPageEmpty12}{FractionXmpPagePatch12}
-\pastebutton{FractionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{g :: FRAC COMPLEX INT\free{g }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/function.pht b/books/pages/function.pht
deleted file mode 100644
index eeb51b2..0000000
--- a/books/pages/function.pht
+++ /dev/null
@@ -1,506 +0,0 @@
-\begin{patch}{RationatFunctionPagePatch1}
-\begin{paste}{RationatFunctionPageFull1}{RationatFunctionPageEmpty1}
-\pastebutton{RationatFunctionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := (x - y) / (x + y)\bound{f }}
-\indentrel{3}\begin{verbatim}
-        - y + x
-   (1)  ÄÄÄÄÄÄÄ
-         y + x
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPageEmpty1}
-\begin{paste}{RationatFunctionPageEmpty1}{RationatFunctionPagePatch1}
-\pastebutton{RationatFunctionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := (x - y) / (x + y)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPagePatch2}
-\begin{paste}{RationatFunctionPageFull2}{RationatFunctionPageEmpty2}
-\pastebutton{RationatFunctionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{numer f\free{f }}
-\indentrel{3}\begin{verbatim}
-   (2)  - y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPageEmpty2}
-\begin{paste}{RationatFunctionPageEmpty2}{RationatFunctionPagePatch2}
-\pastebutton{RationatFunctionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{numer f\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPagePatch3}
-\begin{paste}{RationatFunctionPageFull3}{RationatFunctionPageEmpty3}
-\pastebutton{RationatFunctionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{denom f\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPageEmpty3}
-\begin{paste}{RationatFunctionPageEmpty3}{RationatFunctionPagePatch3}
-\pastebutton{RationatFunctionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{denom f\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPagePatch4}
-\begin{paste}{RationatFunctionPageFull4}{RationatFunctionPageEmpty4}
-\pastebutton{RationatFunctionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{eval(f, x = 1/x)\free{f }}
-\indentrel{3}\begin{verbatim}
-        - x y + 1
-   (4)  ÄÄÄÄÄÄÄÄÄ
-         x y + 1
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPageEmpty4}
-\begin{paste}{RationatFunctionPageEmpty4}{RationatFunctionPagePatch4}
-\pastebutton{RationatFunctionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{eval(f, x = 1/x)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPagePatch5}
-\begin{paste}{RationatFunctionPageFull5}{RationatFunctionPageEmpty5}
-\pastebutton{RationatFunctionPageFull5}{\hidepaste}
-\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
-\indentrel{3}\begin{verbatim}
-        y - x
-   (5)  ÄÄÄÄÄ
-        y + x
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationatFunctionPageEmpty5}
-\begin{paste}{RationatFunctionPageEmpty5}{RationatFunctionPagePatch5}
-\pastebutton{RationatFunctionPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch1}
-\begin{paste}{AlgebraicFunctionPageFull1}{AlgebraicFunctionPageEmpty1}
-\pastebutton{AlgebraicFunctionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := sqrt(1 + x ** (1/3))\bound{f }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄÄÄ¿
-         ³3ÚÄ¿
-   (1)  \³\³x  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty1}
-\begin{paste}{AlgebraicFunctionPageEmpty1}{AlgebraicFunctionPagePatch1}
-\pastebutton{AlgebraicFunctionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := sqrt(1 + x ** (1/3))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch2}
-\begin{paste}{AlgebraicFunctionPageFull2}{AlgebraicFunctionPageEmpty2}
-\pastebutton{AlgebraicFunctionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{y := rootOf(y**3 + y**2 - x*y + x**3 - 1, y)\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (2)  y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty2}
-\begin{paste}{AlgebraicFunctionPageEmpty2}{AlgebraicFunctionPagePatch2}
-\pastebutton{AlgebraicFunctionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{y := rootOf(y**3 + y**2 - x*y + x**3 - 1, y)\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch3}
-\begin{paste}{AlgebraicFunctionPageFull3}{AlgebraicFunctionPageEmpty3}
-\pastebutton{AlgebraicFunctionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{differentiate(y, x)\free{y }}
-\indentrel{3}\begin{verbatim}
-                 2
-           y - 3x
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄ
-          2
-        3y  + 2y - x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty3}
-\begin{paste}{AlgebraicFunctionPageEmpty3}{AlgebraicFunctionPagePatch3}
-\pastebutton{AlgebraicFunctionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{differentiate(y, x)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch4}
-\begin{paste}{AlgebraicFunctionPageFull4}{AlgebraicFunctionPageEmpty4}
-\pastebutton{AlgebraicFunctionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(y + 1) ** 3\free{y }}
-\indentrel{3}\begin{verbatim}
-          2               3
-   (4)  2y  + (x + 3)y - x  + 2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty4}
-\begin{paste}{AlgebraicFunctionPageEmpty4}{AlgebraicFunctionPagePatch4}
-\pastebutton{AlgebraicFunctionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(y + 1) ** 3\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch5}
-\begin{paste}{AlgebraicFunctionPageFull5}{AlgebraicFunctionPageEmpty5}
-\pastebutton{AlgebraicFunctionPageFull5}{\hidepaste}
-\tab{5}\spadcommand{g := inv f\bound{g }\free{y }}
-\indentrel{3}\begin{verbatim}
-             1
-   (5)  ÄÄÄÄÄÄÄÄÄÄÄ
-         ÚÄÄÄÄÄÄÄÄ¿
-         ³3ÚÄ¿
-        \³\³x  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty5}
-\begin{paste}{AlgebraicFunctionPageEmpty5}{AlgebraicFunctionPagePatch5}
-\pastebutton{AlgebraicFunctionPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{g := inv f\bound{g }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPagePatch6}
-\begin{paste}{AlgebraicFunctionPageFull6}{AlgebraicFunctionPageEmpty6}
-\pastebutton{AlgebraicFunctionPageFull6}{\hidepaste}
-\tab{5}\spadcommand{ratDenom g\free{g }}
-\indentrel{3}\begin{verbatim}
-                           ÚÄÄÄÄÄÄÄÄ¿
-         3ÚÄ¿2   3ÚÄ¿      ³3ÚÄ¿
-        (\³x   - \³x  + 1)\³\³x  + 1
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                    x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AlgebraicFunctionPageEmpty6}
-\begin{paste}{AlgebraicFunctionPageEmpty6}{AlgebraicFunctionPagePatch6}
-\pastebutton{AlgebraicFunctionPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{ratDenom g\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPagePatch1}
-\begin{paste}{ElementaryFunctionPageFull1}{ElementaryFunctionPageEmpty1}
-\pastebutton{ElementaryFunctionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := x * log y * sin(1/(x+y))\bound{f }}
-\indentrel{3}\begin{verbatim}
-                      1
-   (1)  x log(y)sin(ÄÄÄÄÄ)
-                    y + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPageEmpty1}
-\begin{paste}{ElementaryFunctionPageEmpty1}{ElementaryFunctionPagePatch1}
-\pastebutton{ElementaryFunctionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := x * log y * sin(1/(x+y))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPagePatch2}
-\begin{paste}{ElementaryFunctionPageFull2}{ElementaryFunctionPageEmpty2}
-\pastebutton{ElementaryFunctionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
-\indentrel{3}\begin{verbatim}
-                      1
-   (2)  y log(x)sin(ÄÄÄÄÄ)
-                    y + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPageEmpty2}
-\begin{paste}{ElementaryFunctionPageEmpty2}{ElementaryFunctionPagePatch2}
-\pastebutton{ElementaryFunctionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eval(f, [x = y, y = x])\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPagePatch3}
-\begin{paste}{ElementaryFunctionPageFull3}{ElementaryFunctionPageEmpty3}
-\pastebutton{ElementaryFunctionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{eval(f, log y = acosh(x + sqrt y))\free{f }}
-\indentrel{3}\begin{verbatim}
-                1          ÚÄ¿
-   (3)  x sin(ÄÄÄÄÄ)acosh(\³y  + x)
-              y + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ElementaryFunctionPageEmpty3}
-\begin{paste}{ElementaryFunctionPageEmpty3}{ElementaryFunctionPagePatch3}
-\pastebutton{ElementaryFunctionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{eval(f, log y = acosh(x + sqrt y))\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch1}
-\begin{paste}{FunctionSimplificationPageFull1}{FunctionSimplificationPageEmpty1}
-\pastebutton{FunctionSimplificationPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := cos(x)/sec(x) * log(sin(x)**2/(cos(x)**2+sin(x)**2))\bound{f }}
-\indentrel{3}\begin{verbatim}
-                             2
-                       sin(x)
-        cos(x)log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                        2         2
-                  sin(x)  + cos(x)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   sec(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty1}
-\begin{paste}{FunctionSimplificationPageEmpty1}{FunctionSimplificationPagePatch1}
-\pastebutton{FunctionSimplificationPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := cos(x)/sec(x) * log(sin(x)**2/(cos(x)**2+sin(x)**2))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch2}
-\begin{paste}{FunctionSimplificationPageFull2}{FunctionSimplificationPageEmpty2}
-\pastebutton{FunctionSimplificationPageFull2}{\hidepaste}
-\tab{5}\spadcommand{g := simplify f\bound{g }\free{f }}
-\indentrel{3}\begin{verbatim}
-              2            2
-   (2)  cos(x) log(- cos(x)  + 1)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty2}
-\begin{paste}{FunctionSimplificationPageEmpty2}{FunctionSimplificationPagePatch2}
-\pastebutton{FunctionSimplificationPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{g := simplify f\bound{g }\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch3}
-\begin{paste}{FunctionSimplificationPageFull3}{FunctionSimplificationPageEmpty3}
-\pastebutton{FunctionSimplificationPageFull3}{\hidepaste}
-\tab{5}\spadcommand{h := sin2csc cos2sec g\bound{h }\free{g }}
-\indentrel{3}\begin{verbatim}
-                  2
-            sec(x)  - 1
-        log(ÄÄÄÄÄÄÄÄÄÄÄ)
-                    2
-              sec(x)
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   2
-             sec(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty3}
-\begin{paste}{FunctionSimplificationPageEmpty3}{FunctionSimplificationPagePatch3}
-\pastebutton{FunctionSimplificationPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{h := sin2csc cos2sec g\bound{h }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch4}
-\begin{paste}{FunctionSimplificationPageFull4}{FunctionSimplificationPageEmpty4}
-\pastebutton{FunctionSimplificationPageFull4}{\hidepaste}
-\tab{5}\spadcommand{expandLog h\free{h }}
-\indentrel{3}\begin{verbatim}
-                  2
-        log(sec(x)  - 1) - 2log(sec(x))
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                          2
-                    sec(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty4}
-\begin{paste}{FunctionSimplificationPageEmpty4}{FunctionSimplificationPagePatch4}
-\pastebutton{FunctionSimplificationPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{expandLog h\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch5}
-\begin{paste}{FunctionSimplificationPageFull5}{FunctionSimplificationPageEmpty5}
-\pastebutton{FunctionSimplificationPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f1 := sqrt((x+1)**3)\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-         ³ 3     2
-   (5)  \³x  + 3x  + 3x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty5}
-\begin{paste}{FunctionSimplificationPageEmpty5}{FunctionSimplificationPagePatch5}
-\pastebutton{FunctionSimplificationPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f1 := sqrt((x+1)**3)\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch6}
-\begin{paste}{FunctionSimplificationPageFull6}{FunctionSimplificationPageEmpty6}
-\pastebutton{FunctionSimplificationPageFull6}{\hidepaste}
-\tab{5}\spadcommand{rootSimp f1\free{f1 }}
-\indentrel{3}\begin{verbatim}
-                ÚÄÄÄÄÄ¿
-   (6)  (x + 1)\³x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty6}
-\begin{paste}{FunctionSimplificationPageEmpty6}{FunctionSimplificationPagePatch6}
-\pastebutton{FunctionSimplificationPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{rootSimp f1\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch7}
-\begin{paste}{FunctionSimplificationPageFull7}{FunctionSimplificationPageEmpty7}
-\pastebutton{FunctionSimplificationPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g1 := sin(x + cos x)\bound{g1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  sin(cos(x) + x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty7}
-\begin{paste}{FunctionSimplificationPageEmpty7}{FunctionSimplificationPagePatch7}
-\pastebutton{FunctionSimplificationPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g1 := sin(x + cos x)\bound{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch8}
-\begin{paste}{FunctionSimplificationPageFull8}{FunctionSimplificationPageEmpty8}
-\pastebutton{FunctionSimplificationPageFull8}{\hidepaste}
-\tab{5}\spadcommand{g2 := complexElementary g1\bound{g2 }\free{g1 }}
-\indentrel{3}\begin{verbatim}
-   (8)
-       -
-             ÚÄÄÄ¿
-            \³- 1
-         *
-                %e
-             **
-                               ÚÄÄÄ¿ 2               ÚÄÄÄ¿
-                     ÚÄÄÄ¿   x\³- 1         ÚÄÄÄ¿  x\³- 1
-                    \³- 1 (%e       )  + 2x\³- 1 %e
-                  + 
-                     ÚÄÄÄ¿
-                    \³- 1
-               /
-                       ÚÄÄÄ¿
-                     x\³- 1
-                  2%e
-           **
-              2
-     + 
-        ÚÄÄÄ¿
-       \³- 1
-  /
-                   ÚÄÄÄ¿ 2               ÚÄÄÄ¿
-         ÚÄÄÄ¿   x\³- 1         ÚÄÄÄ¿  x\³- 1     ÚÄÄÄ¿
-        \³- 1 (%e       )  + 2x\³- 1 %e        + \³- 1
-        ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                                ÚÄÄÄ¿
-                              x\³- 1
-                           2%e
-     2%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty8}
-\begin{paste}{FunctionSimplificationPageEmpty8}{FunctionSimplificationPagePatch8}
-\pastebutton{FunctionSimplificationPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g2 := complexElementary g1\bound{g2 }\free{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch9}
-\begin{paste}{FunctionSimplificationPageFull9}{FunctionSimplificationPageEmpty9}
-\pastebutton{FunctionSimplificationPageFull9}{\hidepaste}
-\tab{5}\spadcommand{trigs g2\free{g2 }}
-\indentrel{3}\begin{verbatim}
-   (9)  sin(cos(x) + x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty9}
-\begin{paste}{FunctionSimplificationPageEmpty9}{FunctionSimplificationPagePatch9}
-\pastebutton{FunctionSimplificationPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{trigs g2\free{g2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch10}
-\begin{paste}{FunctionSimplificationPageFull10}{FunctionSimplificationPageEmpty10}
-\pastebutton{FunctionSimplificationPageFull10}{\hidepaste}
-\tab{5}\spadcommand{h1 := sinh(x + cosh x)\bound{h1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  sinh(cosh(x) + x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty10}
-\begin{paste}{FunctionSimplificationPageEmpty10}{FunctionSimplificationPagePatch10}
-\pastebutton{FunctionSimplificationPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{h1 := sinh(x + cosh x)\bound{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch11}
-\begin{paste}{FunctionSimplificationPageFull11}{FunctionSimplificationPageEmpty11}
-\pastebutton{FunctionSimplificationPageFull11}{\hidepaste}
-\tab{5}\spadcommand{h2 := realElementary h1\bound{h2 }\free{h1 }}
-\indentrel{3}\begin{verbatim}
-               x 2        x     2
-            (%e )  + 2x %e  + 1
-            ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                       x
-                    2%e
-         (%e                   )  - 1
-   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                  x 2        x
-               (%e )  + 2x %e  + 1
-               ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                          x
-                       2%e
-            2%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty11}
-\begin{paste}{FunctionSimplificationPageEmpty11}{FunctionSimplificationPagePatch11}
-\pastebutton{FunctionSimplificationPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{h2 := realElementary h1\bound{h2 }\free{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPagePatch12}
-\begin{paste}{FunctionSimplificationPageFull12}{FunctionSimplificationPageEmpty12}
-\pastebutton{FunctionSimplificationPageFull12}{\hidepaste}
-\tab{5}\spadcommand{htrigs h2\free{h2 }}
-\indentrel{3}\begin{verbatim}
-   (12)  sinh(cosh(x) + x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FunctionSimplificationPageEmpty12}
-\begin{paste}{FunctionSimplificationPageEmpty12}{FunctionSimplificationPagePatch12}
-\pastebutton{FunctionSimplificationPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{htrigs h2\free{h2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/gbf.pht b/books/pages/gbf.pht
deleted file mode 100644
index ea39b58..0000000
--- a/books/pages/gbf.pht
+++ /dev/null
@@ -1,110 +0,0 @@
-\begin{patch}{GroebnerFactorizationPackageXmpPagePatch1}
-\begin{paste}{GroebnerFactorizationPackageXmpPageFull1}{GroebnerFactorizationPackageXmpPageEmpty1}
-\pastebutton{GroebnerFactorizationPackageXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{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]]\bound{mfzn }}
-\indentrel{3}\begin{verbatim}
-        Ú0  1  1  1  1  1¿
-        ³                ³
-        ³         8     8³
-        ³1  0  1  Ä  x  Ä³
-        ³         3     3³
-        ³                ³
-        ³            8   ³
-        ³1  1  0  1  Ä  y³
-        ³            3   ³
-        ³                ³
-   (1)  ³   8           8³
-        ³1  Ä  1  0  1  Ä³
-        ³   3           3³
-        ³                ³
-        ³      8         ³
-        ³1  x  Ä  1  0  1³
-        ³      3         ³
-        ³                ³
-        ³   8     8      ³
-        ³1  Ä  y  Ä  1  0³
-        À   3     3      Ù
-Type: SquareMatrix(6,DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty1}
-\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty1}{GroebnerFactorizationPackageXmpPagePatch1}
-\pastebutton{GroebnerFactorizationPackageXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{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]]\bound{mfzn }}
-\end{paste}\end{patch}
-
-\begin{patch}{GroebnerFactorizationPackageXmpPagePatch2}
-\begin{paste}{GroebnerFactorizationPackageXmpPageFull2}{GroebnerFactorizationPackageXmpPageEmpty2}
-\pastebutton{GroebnerFactorizationPackageXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{eq := determinant mfzn\free{mfzn }\bound{eq }}
-\indentrel{3}\begin{verbatim}
-   (2)
-        2 2   22  2    25  2   22    2   388       250
-     - x y  + ÄÄ x y - ÄÄ x  + ÄÄ x y  - ÄÄÄ x y - ÄÄÄ x
-               3        9       3         9         27
-   + 
-       25  2   250     14575
-     - ÄÄ y  - ÄÄÄ y + ÄÄÄÄÄ
-        9       27       81
-Type: DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty2}
-\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty2}{GroebnerFactorizationPackageXmpPagePatch2}
-\pastebutton{GroebnerFactorizationPackageXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eq := determinant mfzn\free{mfzn }\bound{eq }}
-\end{paste}\end{patch}
-
-\begin{patch}{GroebnerFactorizationPackageXmpPagePatch3}
-\begin{paste}{GroebnerFactorizationPackageXmpPageFull3}{GroebnerFactorizationPackageXmpPageEmpty3}
-\pastebutton{GroebnerFactorizationPackageXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])]\free{eq }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [
-                  22           22     22     121
-     [x y + x z - ÄÄ x + y z - ÄÄ y - ÄÄ z + ÄÄÄ,
-                   3            3      3      3
-
-            2   22       25        2   22       25
-         x z  - ÄÄ x z + ÄÄ x + y z  - ÄÄ y z + ÄÄ y
-                 3        9             3        9
-       + 
-           22  2   388     250
-         - ÄÄ z  + ÄÄÄ z + ÄÄÄ
-            3       9       27
-       ,
-
-          2 2   22  2    25  2   22    2   388       250
-         y z  - ÄÄ y z + ÄÄ y  - ÄÄ y z  + ÄÄÄ y z + ÄÄÄ y
-                 3        9       3         9         27
-       + 
-         25  2   250     14575
-         ÄÄ z  + ÄÄÄ z - ÄÄÄÄÄ
-          9       27       81
-       ]
-     ,
-             21994  2   21994     4427     463
-    [x + y - ÄÄÄÄÄ,y  - ÄÄÄÄÄ y + ÄÄÄÄ,z - ÄÄÄ],
-              5625       5625      675      87
-      2   1       11     5     265        2   38     265
-    [x  - Ä x z - ÄÄ x - Ä z + ÄÄÄ,y - z,z  - ÄÄ z + ÄÄÄ],
-          2        2     6      18             3      9
-         25     11     11        11     11     11
-    [x - ÄÄ,y - ÄÄ,z - ÄÄ], [x - ÄÄ,y - ÄÄ,z - ÄÄ],
-          9      3      3         3      3      3
-         5     5     5        19     5     5
-    [x + Ä,y + Ä,z + Ä], [x - ÄÄ,y + Ä,z + Ä]]
-         3     3     3         3     3     3
-Type: List List DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GroebnerFactorizationPackageXmpPageEmpty3}
-\begin{paste}{GroebnerFactorizationPackageXmpPageEmpty3}{GroebnerFactorizationPackageXmpPagePatch3}
-\pastebutton{GroebnerFactorizationPackageXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{groebnerFactorize [eq, eval(eq, [x,y,z], [y,z,x]), eval(eq, [x,y,z], [z,x,y])]\free{eq }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/graphics.pht b/books/pages/graphics.pht
deleted file mode 100644
index 6d58e6c..0000000
--- a/books/pages/graphics.pht
+++ /dev/null
@@ -1,2087 +0,0 @@
-\begin{patch}{AssortedGraphicsExamplePagePatch1}
-\begin{paste}{AssortedGraphicsExamplePageFull1}{AssortedGraphicsExamplePageEmpty1}
-\pastebutton{AssortedGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(x * y), x = -2.5..2.5, y = -2.5..2.5)\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty1}
-\begin{paste}{AssortedGraphicsExamplePageEmpty1}{AssortedGraphicsExamplePagePatch1}
-\pastebutton{AssortedGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(x * y), x = -2.5..2.5, y = -2.5..2.5)\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch2}
-\begin{paste}{AssortedGraphicsExamplePageFull2}{AssortedGraphicsExamplePageEmpty2}
-\pastebutton{AssortedGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(sin tan x - tan sin x,x = 0..6)\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty2}
-\begin{paste}{AssortedGraphicsExamplePageEmpty2}{AssortedGraphicsExamplePagePatch2}
-\pastebutton{AssortedGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(sin tan x - tan sin x,x = 0..6)\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch3}
-\begin{paste}{AssortedGraphicsExamplePageFull3}{AssortedGraphicsExamplePageEmpty3}
-\pastebutton{AssortedGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t)), t = 0..2*\%pi)\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty3}
-\begin{paste}{AssortedGraphicsExamplePageEmpty3}{AssortedGraphicsExamplePagePatch3}
-\pastebutton{AssortedGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t)), t = 0..2*\%pi)\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch4}
-\begin{paste}{AssortedGraphicsExamplePageFull4}{AssortedGraphicsExamplePageEmpty4}
-\pastebutton{AssortedGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t), sin(5*t)*sin(6*t)), t = 0..2*\%pi)\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty4}
-\begin{paste}{AssortedGraphicsExamplePageEmpty4}{AssortedGraphicsExamplePagePatch4}
-\pastebutton{AssortedGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t), sin(3*t)*sin(4*t), sin(5*t)*sin(6*t)), t = 0..2*\%pi)\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch5}
-\begin{paste}{AssortedGraphicsExamplePageFull5}{AssortedGraphicsExamplePageEmpty5}
-\pastebutton{AssortedGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar)\bound{example5 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty5}
-\begin{paste}{AssortedGraphicsExamplePageEmpty5}{AssortedGraphicsExamplePagePatch5}
-\pastebutton{AssortedGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar)\bound{example5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch6}
-\begin{paste}{AssortedGraphicsExamplePageFull6}{AssortedGraphicsExamplePageEmpty6}
-\pastebutton{AssortedGraphicsExamplePageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y,range == [-2..2,-2..1])\bound{example6 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/assortedgraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/assortedgraphicsexamplepage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty6}
-\begin{paste}{AssortedGraphicsExamplePageEmpty6}{AssortedGraphicsExamplePagePatch6}
-\pastebutton{AssortedGraphicsExamplePageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y,range == [-2..2,-2..1])\bound{example6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePagePatch7}
-\begin{paste}{AssortedGraphicsExamplePageFull7}{AssortedGraphicsExamplePageEmpty7}
-\pastebutton{AssortedGraphicsExamplePageFull7}{\hidepaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 example5 example6 }}
-\indentrel{3}\begin{verbatim}
-   (7)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{AssortedGraphicsExamplePageEmpty7}
-\begin{paste}{AssortedGraphicsExamplePageEmpty7}{AssortedGraphicsExamplePagePatch7}
-\pastebutton{AssortedGraphicsExamplePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 example5 example6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch1}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull1}{ThreeDimensionalGraphicsExamplePageEmpty1}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(surface((1+exp(-100*u*u))*sin(\%pi*u)*sin(\%pi*v), (1+exp(-100*u*u))*sin(\%pi*u)*cos(\%pi*v), (1+exp(-100*u*u))*cos(\%pi*u)), u=0..1, v=0..2, title=="Pear")\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty1}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty1}{ThreeDimensionalGraphicsExamplePagePatch1}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(surface((1+exp(-100*u*u))*sin(\%pi*u)*sin(\%pi*v), (1+exp(-100*u*u))*sin(\%pi*u)*cos(\%pi*v), (1+exp(-100*u*u))*cos(\%pi*u)), u=0..1, v=0..2, title=="Pear")\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch2}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull2}{ThreeDimensionalGraphicsExamplePageEmpty2}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(x*cos(y),x*sin(y),y*cos(x)), x=-4..4, y=0..2*\%pi, var1Steps==40, var2Steps==40, title=="Trig Screw")\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty2}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty2}{ThreeDimensionalGraphicsExamplePagePatch2}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(surface(x*cos(y),x*sin(y),y*cos(x)), x=-4..4, y=0..2*\%pi, var1Steps==40, var2Steps==40, title=="Trig Screw")\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch3}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull3}{ThreeDimensionalGraphicsExamplePageEmpty3}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadcommand{a := 1.3 * cos(2*x) * cos(y) + sin(y) * cos(x)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (3)  cos(x)sin(y) + 1.3 cos(2.0 x)cos(y)
-                                 Type: Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty3}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty3}{ThreeDimensionalGraphicsExamplePagePatch3}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a := 1.3 * cos(2*x) * cos(y) + sin(y) * cos(x)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch4}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull4}{ThreeDimensionalGraphicsExamplePageEmpty4}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadcommand{b := 1.3 * sin(2*x) * cos(y) - sin(y) * sin(x)\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (4)  - 1.0 sin(x)sin(y) + 1.3 cos(y)sin(2.0 x)
-                                 Type: Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty4}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty4}{ThreeDimensionalGraphicsExamplePagePatch4}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b := 1.3 * sin(2*x) * cos(y) - sin(y) * sin(x)\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch5}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull5}{ThreeDimensionalGraphicsExamplePageEmpty5}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{c := 2.5 * cos(y)\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (5)  2.5 cos(y)
-                                 Type: Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty5}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty5}{ThreeDimensionalGraphicsExamplePagePatch5}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{c := 2.5 * cos(y)\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch6}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull6}{ThreeDimensionalGraphicsExamplePageEmpty6}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(a,b,c), x=0..\%pi, y=-\%pi..\%pi, var1Steps==40, var2Steps==40, title=="Etruscan Venus")\free{a b c }\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty6}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty6}{ThreeDimensionalGraphicsExamplePagePatch6}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(surface(a,b,c), x=0..\%pi, y=-\%pi..\%pi, var1Steps==40, var2Steps==40, title=="Etruscan Venus")\free{a b c }\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch7}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull7}{ThreeDimensionalGraphicsExamplePageEmpty7}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull7}{\hidepaste}
-\tab{5}\spadcommand{f:=cos(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (7)
-                     x              x
-     cos(x)cos(y)sin(Ä)sin(y) + cos(Ä)cos(x)cos(y)
-                     2              2
-   + 
-      ÚÄ¿    x
-     \³2 cos(Ä)cos(x)
-             2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty7}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty7}{ThreeDimensionalGraphicsExamplePagePatch7}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f:=cos(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch8}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull8}{ThreeDimensionalGraphicsExamplePageEmpty8}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull8}{\hidepaste}
-\tab{5}\spadcommand{g:=sin(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (8)
-               x
-     cos(y)sin(Ä)sin(x)sin(y)
-               2
-   + 
-          x           ÚÄ¿    x
-     (cos(Ä)cos(y) + \³2 cos(Ä))sin(x)
-          2                  2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty8}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty8}{ThreeDimensionalGraphicsExamplePagePatch8}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g:=sin(x)*(cos(x/2)*(sqrt(2) + cos(y))+(sin(x/2)*sin(y)*cos(y)))\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch9}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull9}{ThreeDimensionalGraphicsExamplePageEmpty9}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull9}{\hidepaste}
-\tab{5}\spadcommand{h:=-sin(x/2)*(sqrt(2)+cos(y)) + cos(x/2)*sin(y)*cos(y)\bound{h }}
-\indentrel{3}\begin{verbatim}
-            x                             ÚÄ¿     x
-   (9)  cos(Ä)cos(y)sin(y) + (- cos(y) - \³2 )sin(Ä)
-            2                                     2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty9}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty9}{ThreeDimensionalGraphicsExamplePagePatch9}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{h:=-sin(x/2)*(sqrt(2)+cos(y)) + cos(x/2)*sin(y)*cos(y)\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch10}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull10}{ThreeDimensionalGraphicsExamplePageEmpty10}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull10}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(f,g,h), x=0..4*\%pi, y=0..2*\%pi, var1Steps==50, var2Steps==50, title=="Banchoff Klein Bottle")\free{f g h }\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/threedimensionalgraphicsexamplepage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty10}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty10}{ThreeDimensionalGraphicsExamplePagePatch10}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty10}{\showpaste}
-\tab{5}\spadgraph{draw(surface(f,g,h), x=0..4*\%pi, y=0..2*\%pi, var1Steps==50, var2Steps==50, title=="Banchoff Klein Bottle")\free{f g h }\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePagePatch11}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageFull11}{ThreeDimensionalGraphicsExamplePageEmpty11}
-\pastebutton{ThreeDimensionalGraphicsExamplePageFull11}{\hidepaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\indentrel{3}\begin{verbatim}
-   (11)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ThreeDimensionalGraphicsExamplePageEmpty11}
-\begin{paste}{ThreeDimensionalGraphicsExamplePageEmpty11}{ThreeDimensionalGraphicsExamplePagePatch11}
-\pastebutton{ThreeDimensionalGraphicsExamplePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePagePatch1}
-\begin{paste}{OneVariableGraphicsExamplePageFull1}{OneVariableGraphicsExamplePageEmpty1}
-\pastebutton{OneVariableGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin tan x - tan sin x, x = 0..6)\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePageEmpty1}
-\begin{paste}{OneVariableGraphicsExamplePageEmpty1}{OneVariableGraphicsExamplePagePatch1}
-\pastebutton{OneVariableGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin tan x - tan sin x, x = 0..6)\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePagePatch2}
-\begin{paste}{OneVariableGraphicsExamplePageFull2}{OneVariableGraphicsExamplePageEmpty2}
-\pastebutton{OneVariableGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(sin x + cos x, x = 0..2*\%pi)\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePageEmpty2}
-\begin{paste}{OneVariableGraphicsExamplePageEmpty2}{OneVariableGraphicsExamplePagePatch2}
-\pastebutton{OneVariableGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(sin x + cos x, x = 0..2*\%pi)\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePagePatch3}
-\begin{paste}{OneVariableGraphicsExamplePageFull3}{OneVariableGraphicsExamplePageEmpty3}
-\pastebutton{OneVariableGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(1/x), x = -1..1)\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePageEmpty3}
-\begin{paste}{OneVariableGraphicsExamplePageEmpty3}{OneVariableGraphicsExamplePagePatch3}
-\pastebutton{OneVariableGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(sin(1/x), x = -1..1)\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePagePatch4}
-\begin{paste}{OneVariableGraphicsExamplePageFull4}{OneVariableGraphicsExamplePageEmpty4}
-\pastebutton{OneVariableGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(x * sin(1/x), x = -1..1)\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicsexamplepage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePageEmpty4}
-\begin{paste}{OneVariableGraphicsExamplePageEmpty4}{OneVariableGraphicsExamplePagePatch4}
-\pastebutton{OneVariableGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(x * sin(1/x), x = -1..1)\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePagePatch5}
-\begin{paste}{OneVariableGraphicsExamplePageFull5}{OneVariableGraphicsExamplePageEmpty5}
-\pastebutton{OneVariableGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\indentrel{3}\begin{verbatim}
-   (5)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsExamplePageEmpty5}
-\begin{paste}{OneVariableGraphicsExamplePageEmpty5}{OneVariableGraphicsExamplePagePatch5}
-\pastebutton{OneVariableGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePagePatch1}
-\begin{paste}{ParametricCurveGraphicsExamplePageFull1}{ParametricCurveGraphicsExamplePageEmpty1}
-\pastebutton{ParametricCurveGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t/(1+sin(t)**2)), sin(t)*cos(t)/(1+sin(t)**2)), t = -\%pi..\%pi)\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePageEmpty1}
-\begin{paste}{ParametricCurveGraphicsExamplePageEmpty1}{ParametricCurveGraphicsExamplePagePatch1}
-\pastebutton{ParametricCurveGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t/(1+sin(t)**2)), sin(t)*cos(t)/(1+sin(t)**2)), t = -\%pi..\%pi)\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePagePatch2}
-\begin{paste}{ParametricCurveGraphicsExamplePageFull2}{ParametricCurveGraphicsExamplePageEmpty2}
-\pastebutton{ParametricCurveGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(9*sin(3*t/4), 8*sin(t)), t = -4*\%pi..4*\%pi)\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePageEmpty2}
-\begin{paste}{ParametricCurveGraphicsExamplePageEmpty2}{ParametricCurveGraphicsExamplePagePatch2}
-\pastebutton{ParametricCurveGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(curve(9*sin(3*t/4), 8*sin(t)), t = -4*\%pi..4*\%pi)\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePagePatch3}
-\begin{paste}{ParametricCurveGraphicsExamplePageFull3}{ParametricCurveGraphicsExamplePageEmpty3}
-\pastebutton{ParametricCurveGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)),t = 0..2*\%pi)\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePageEmpty3}
-\begin{paste}{ParametricCurveGraphicsExamplePageEmpty3}{ParametricCurveGraphicsExamplePagePatch3}
-\pastebutton{ParametricCurveGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)),t = 0..2*\%pi)\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePagePatch4}
-\begin{paste}{ParametricCurveGraphicsExamplePageFull4}{ParametricCurveGraphicsExamplePageEmpty4}
-\pastebutton{ParametricCurveGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(4*t)*cos(7*t), cos(4*t)*sin(7*t)), t = 0..2*\%pi)\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicsexamplepage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePageEmpty4}
-\begin{paste}{ParametricCurveGraphicsExamplePageEmpty4}{ParametricCurveGraphicsExamplePagePatch4}
-\pastebutton{ParametricCurveGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(4*t)*cos(7*t), cos(4*t)*sin(7*t)), t = 0..2*\%pi)\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePagePatch5}
-\begin{paste}{ParametricCurveGraphicsExamplePageFull5}{ParametricCurveGraphicsExamplePageEmpty5}
-\pastebutton{ParametricCurveGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\indentrel{3}\begin{verbatim}
-   (5)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsExamplePageEmpty5}
-\begin{paste}{ParametricCurveGraphicsExamplePageEmpty5}{ParametricCurveGraphicsExamplePagePatch5}
-\pastebutton{ParametricCurveGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePagePatch1}
-\begin{paste}{PolarGraphicsExamplePageFull1}{PolarGraphicsExamplePageEmpty1}
-\pastebutton{PolarGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(1,t = 0..2*\%pi, coordinates == polar)\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePageEmpty1}
-\begin{paste}{PolarGraphicsExamplePageEmpty1}{PolarGraphicsExamplePagePatch1}
-\pastebutton{PolarGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(1,t = 0..2*\%pi, coordinates == polar)\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePagePatch2}
-\begin{paste}{PolarGraphicsExamplePageFull2}{PolarGraphicsExamplePageEmpty2}
-\pastebutton{PolarGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(t,t = 0..100, coordinates == polar)\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePageEmpty2}
-\begin{paste}{PolarGraphicsExamplePageEmpty2}{PolarGraphicsExamplePagePatch2}
-\pastebutton{PolarGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(t,t = 0..100, coordinates == polar)\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePagePatch3}
-\begin{paste}{PolarGraphicsExamplePageFull3}{PolarGraphicsExamplePageEmpty3}
-\pastebutton{PolarGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(4*t), t = 0..2*\%pi, coordinates == polar)\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePageEmpty3}
-\begin{paste}{PolarGraphicsExamplePageEmpty3}{PolarGraphicsExamplePagePatch3}
-\pastebutton{PolarGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(sin(4*t), t = 0..2*\%pi, coordinates == polar)\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePagePatch4}
-\begin{paste}{PolarGraphicsExamplePageFull4}{PolarGraphicsExamplePageEmpty4}
-\pastebutton{PolarGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(2 + 3 * sin t, t = 0..2*\%pi, coordinates == polar)\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicsexamplepage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePageEmpty4}
-\begin{paste}{PolarGraphicsExamplePageEmpty4}{PolarGraphicsExamplePagePatch4}
-\pastebutton{PolarGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(2 + 3 * sin t, t = 0..2*\%pi, coordinates == polar)\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePagePatch5}
-\begin{paste}{PolarGraphicsExamplePageFull5}{PolarGraphicsExamplePageEmpty5}
-\pastebutton{PolarGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{All\free{example2 example3 example4 }}
-\indentrel{3}\begin{verbatim}
-   (5)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsExamplePageEmpty5}
-\begin{paste}{PolarGraphicsExamplePageEmpty5}{PolarGraphicsExamplePagePatch5}
-\pastebutton{PolarGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{All\free{example2 example3 example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch1}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull1}{ImplicitCurveGraphicsExamplePageEmpty1}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(x * y = 1, x, y, range == [-3..3, -3..3])\bound{example1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty1}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty1}{ImplicitCurveGraphicsExamplePagePatch1}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(x * y = 1, x, y, range == [-3..3, -3..3])\bound{example1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch2}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull2}{ImplicitCurveGraphicsExamplePageEmpty2}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y, range == [-2..2, -2..1])\bound{example2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty2}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty2}{ImplicitCurveGraphicsExamplePagePatch2}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(y**2 + y = x**3 - x, x, y, range == [-2..2, -2..1])\bound{example2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch3}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull3}{ImplicitCurveGraphicsExamplePageEmpty3}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (3)
-    4      2            2    4      3      2
-   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty3}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty3}{ImplicitCurveGraphicsExamplePagePatch3}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch4}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull4}{ImplicitCurveGraphicsExamplePageEmpty4}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }\bound{example3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty4}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty4}{ImplicitCurveGraphicsExamplePagePatch4}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }\bound{example3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch5}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull5}{ImplicitCurveGraphicsExamplePageEmpty5}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{q := (x**2 + y**2 + 7**2)**2 - (6**4 + 4*7**2*x**2)\bound{q }}
-\indentrel{3}\begin{verbatim}
-         4      2       2    4      2
-   (5)  y  + (2x  + 98)y  + x  - 98x  + 1105
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty5}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty5}{ImplicitCurveGraphicsExamplePagePatch5}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{q := (x**2 + y**2 + 7**2)**2 - (6**4 + 4*7**2*x**2)\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch6}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull6}{ImplicitCurveGraphicsExamplePageEmpty6}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(q = 0, x, y, range == [-10..10, -4..4], title == "Cassinian oval with two loops")\free{q }\bound{example4 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicsexamplepage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty6}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty6}{ImplicitCurveGraphicsExamplePagePatch6}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(q = 0, x, y, range == [-10..10, -4..4], title == "Cassinian oval with two loops")\free{q }\bound{example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePagePatch7}
-\begin{paste}{ImplicitCurveGraphicsExamplePageFull7}{ImplicitCurveGraphicsExamplePageEmpty7}
-\pastebutton{ImplicitCurveGraphicsExamplePageFull7}{\hidepaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\indentrel{3}\begin{verbatim}
-   (7)  All
-                                     Type: Variable All
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsExamplePageEmpty7}
-\begin{paste}{ImplicitCurveGraphicsExamplePageEmpty7}{ImplicitCurveGraphicsExamplePagePatch7}
-\pastebutton{ImplicitCurveGraphicsExamplePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{All\free{example1 example2 example3 example4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch1}
-\begin{paste}{ListPointsGraphicsExamplePageFull1}{ListPointsGraphicsExamplePageEmpty1}
-\pastebutton{ListPointsGraphicsExamplePageFull1}{\hidepaste}
-\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty1}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty1}{ListPointsGraphicsExamplePagePatch1}
-\pastebutton{ListPointsGraphicsExamplePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch2}
-\begin{paste}{ListPointsGraphicsExamplePageFull2}{ListPointsGraphicsExamplePageEmpty2}
-\pastebutton{ListPointsGraphicsExamplePageFull2}{\hidepaste}
-\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty2}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty2}{ListPointsGraphicsExamplePagePatch2}
-\pastebutton{ListPointsGraphicsExamplePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch3}
-\begin{paste}{ListPointsGraphicsExamplePageFull3}{ListPointsGraphicsExamplePageEmpty3}
-\pastebutton{ListPointsGraphicsExamplePageFull3}{\hidepaste}
-\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [0.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty3}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty3}{ListPointsGraphicsExamplePagePatch3}
-\pastebutton{ListPointsGraphicsExamplePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch4}
-\begin{paste}{ListPointsGraphicsExamplePageFull4}{ListPointsGraphicsExamplePageEmpty4}
-\pastebutton{ListPointsGraphicsExamplePageFull4}{\hidepaste}
-\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty4}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty4}{ListPointsGraphicsExamplePagePatch4}
-\pastebutton{ListPointsGraphicsExamplePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch5}
-\begin{paste}{ListPointsGraphicsExamplePageFull5}{ListPointsGraphicsExamplePageEmpty5}
-\pastebutton{ListPointsGraphicsExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty5}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty5}{ListPointsGraphicsExamplePagePatch5}
-\pastebutton{ListPointsGraphicsExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch6}
-\begin{paste}{ListPointsGraphicsExamplePageFull6}{ListPointsGraphicsExamplePageEmpty6}
-\pastebutton{ListPointsGraphicsExamplePageFull6}{\hidepaste}
-\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [0.5,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty6}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty6}{ListPointsGraphicsExamplePagePatch6}
-\pastebutton{ListPointsGraphicsExamplePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch7}
-\begin{paste}{ListPointsGraphicsExamplePageFull7}{ListPointsGraphicsExamplePageEmpty7}
-\pastebutton{ListPointsGraphicsExamplePageFull7}{\hidepaste}
-\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [0.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty7}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty7}{ListPointsGraphicsExamplePagePatch7}
-\pastebutton{ListPointsGraphicsExamplePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch8}
-\begin{paste}{ListPointsGraphicsExamplePageFull8}{ListPointsGraphicsExamplePageEmpty8}
-\pastebutton{ListPointsGraphicsExamplePageFull8}{\hidepaste}
-\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0.5,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty8}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty8}{ListPointsGraphicsExamplePagePatch8}
-\pastebutton{ListPointsGraphicsExamplePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch9}
-\begin{paste}{ListPointsGraphicsExamplePageFull9}{ListPointsGraphicsExamplePageEmpty9}
-\pastebutton{ListPointsGraphicsExamplePageFull9}{\hidepaste}
-\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [0.25,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty9}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty9}{ListPointsGraphicsExamplePagePatch9}
-\pastebutton{ListPointsGraphicsExamplePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch10}
-\begin{paste}{ListPointsGraphicsExamplePageFull10}{ListPointsGraphicsExamplePageEmpty10}
-\pastebutton{ListPointsGraphicsExamplePageFull10}{\hidepaste}
-\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [0.25,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty10}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty10}{ListPointsGraphicsExamplePagePatch10}
-\pastebutton{ListPointsGraphicsExamplePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch11}
-\begin{paste}{ListPointsGraphicsExamplePageFull11}{ListPointsGraphicsExamplePageEmpty11}
-\pastebutton{ListPointsGraphicsExamplePageFull11}{\hidepaste}
-\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [0.75,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty11}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty11}{ListPointsGraphicsExamplePagePatch11}
-\pastebutton{ListPointsGraphicsExamplePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch12}
-\begin{paste}{ListPointsGraphicsExamplePageFull12}{ListPointsGraphicsExamplePageEmpty12}
-\pastebutton{ListPointsGraphicsExamplePageFull12}{\hidepaste}
-\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [0.75,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty12}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty12}{ListPointsGraphicsExamplePagePatch12}
-\pastebutton{ListPointsGraphicsExamplePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch13}
-\begin{paste}{ListPointsGraphicsExamplePageFull13}{ListPointsGraphicsExamplePageEmpty13}
-\pastebutton{ListPointsGraphicsExamplePageFull13}{\hidepaste}
-\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
-    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
-    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
-    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
-    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
-    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
-                      Type: List List Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty13}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty13}{ListPointsGraphicsExamplePagePatch13}
-\pastebutton{ListPointsGraphicsExamplePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch14}
-\begin{paste}{ListPointsGraphicsExamplePageFull14}{ListPointsGraphicsExamplePageEmpty14}
-\pastebutton{ListPointsGraphicsExamplePageFull14}{\hidepaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\indentrel{3}\begin{verbatim}
-   (14)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty14}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty14}{ListPointsGraphicsExamplePagePatch14}
-\pastebutton{ListPointsGraphicsExamplePageEmpty14}{\showpaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch15}
-\begin{paste}{ListPointsGraphicsExamplePageFull15}{ListPointsGraphicsExamplePageEmpty15}
-\pastebutton{ListPointsGraphicsExamplePageFull15}{\hidepaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\indentrel{3}\begin{verbatim}
-   (15)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty15}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty15}{ListPointsGraphicsExamplePagePatch15}
-\pastebutton{ListPointsGraphicsExamplePageEmpty15}{\showpaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch16}
-\begin{paste}{ListPointsGraphicsExamplePageFull16}{ListPointsGraphicsExamplePageEmpty16}
-\pastebutton{ListPointsGraphicsExamplePageFull16}{\hidepaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\indentrel{3}\begin{verbatim}
-   (16)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty16}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty16}{ListPointsGraphicsExamplePagePatch16}
-\pastebutton{ListPointsGraphicsExamplePageEmpty16}{\showpaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch17}
-\begin{paste}{ListPointsGraphicsExamplePageFull17}{ListPointsGraphicsExamplePageEmpty17}
-\pastebutton{ListPointsGraphicsExamplePageFull17}{\hidepaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\indentrel{3}\begin{verbatim}
-   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty17}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty17}{ListPointsGraphicsExamplePagePatch17}
-\pastebutton{ListPointsGraphicsExamplePageEmpty17}{\showpaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch18}
-\begin{paste}{ListPointsGraphicsExamplePageFull18}{ListPointsGraphicsExamplePageEmpty18}
-\pastebutton{ListPointsGraphicsExamplePageFull18}{\hidepaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\indentrel{3}\begin{verbatim}
-   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty18}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty18}{ListPointsGraphicsExamplePagePatch18}
-\pastebutton{ListPointsGraphicsExamplePageEmpty18}{\showpaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch19}
-\begin{paste}{ListPointsGraphicsExamplePageFull19}{ListPointsGraphicsExamplePageEmpty19}
-\pastebutton{ListPointsGraphicsExamplePageFull19}{\hidepaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\indentrel{3}\begin{verbatim}
-   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty19}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty19}{ListPointsGraphicsExamplePagePatch19}
-\pastebutton{ListPointsGraphicsExamplePageEmpty19}{\showpaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch20}
-\begin{paste}{ListPointsGraphicsExamplePageFull20}{ListPointsGraphicsExamplePageEmpty20}
-\pastebutton{ListPointsGraphicsExamplePageFull20}{\hidepaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\indentrel{3}\begin{verbatim}
-   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty20}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty20}{ListPointsGraphicsExamplePagePatch20}
-\pastebutton{ListPointsGraphicsExamplePageEmpty20}{\showpaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch21}
-\begin{paste}{ListPointsGraphicsExamplePageFull21}{ListPointsGraphicsExamplePageEmpty21}
-\pastebutton{ListPointsGraphicsExamplePageFull21}{\hidepaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   [[Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty21}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty21}{ListPointsGraphicsExamplePagePatch21}
-\pastebutton{ListPointsGraphicsExamplePageEmpty21}{\showpaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch22}
-\begin{paste}{ListPointsGraphicsExamplePageFull22}{ListPointsGraphicsExamplePageEmpty22}
-\pastebutton{ListPointsGraphicsExamplePageFull22}{\hidepaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [[Hue: 22  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 1  Weight: 1.0] from the Bright palette,
-    [Hue: 14  Weight: 1.0] from the Light palette,
-    [Hue: 11  Weight: 1.0] from the Dim palette,
-    [Hue: 22  Weight: 1.0] from the Bright palette,
-    [Hue: 1  Weight: 1.0] from the Dark palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 22  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Light palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty22}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty22}{ListPointsGraphicsExamplePagePatch22}
-\pastebutton{ListPointsGraphicsExamplePageEmpty22}{\showpaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch23}
-\begin{paste}{ListPointsGraphicsExamplePageFull23}{ListPointsGraphicsExamplePageEmpty23}
-\pastebutton{ListPointsGraphicsExamplePageFull23}{\hidepaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\indentrel{3}\begin{verbatim}
-   (23)  Graph with 12 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty23}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty23}{ListPointsGraphicsExamplePagePatch23}
-\pastebutton{ListPointsGraphicsExamplePageEmpty23}{\showpaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePagePatch24}
-\begin{paste}{ListPointsGraphicsExamplePageFull24}{ListPointsGraphicsExamplePageEmpty24}
-\pastebutton{ListPointsGraphicsExamplePageFull24}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/listpointsgraphicsexamplepage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/listpointsgraphicsexamplepage24}}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsExamplePageEmpty24}
-\begin{paste}{ListPointsGraphicsExamplePageEmpty24}{ListPointsGraphicsExamplePagePatch24}
-\pastebutton{ListPointsGraphicsExamplePageEmpty24}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPagePatch1}
-\begin{paste}{TwoVariableGraphicsPageFull1}{TwoVariableGraphicsPageEmpty1}
-\pastebutton{TwoVariableGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/twovariablegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/twovariablegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPageEmpty1}
-\begin{paste}{TwoVariableGraphicsPageEmpty1}{TwoVariableGraphicsPagePatch1}
-\pastebutton{TwoVariableGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPagePatch2}
-\begin{paste}{TwoVariableGraphicsPageFull2}{TwoVariableGraphicsPageEmpty2}
-\pastebutton{TwoVariableGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f(x:SF,y:SF):SF == sin(x)*cos(y)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPageEmpty2}
-\begin{paste}{TwoVariableGraphicsPageEmpty2}{TwoVariableGraphicsPagePatch2}
-\pastebutton{TwoVariableGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f(x:SF,y:SF):SF == sin(x)*cos(y)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPagePatch3}
-\begin{paste}{TwoVariableGraphicsPageFull3}{TwoVariableGraphicsPageEmpty3}
-\pastebutton{TwoVariableGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/twovariablegraphicspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/twovariablegraphicspage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{TwoVariableGraphicsPageEmpty3}
-\begin{paste}{TwoVariableGraphicsPageEmpty3}{TwoVariableGraphicsPagePatch3}
-\pastebutton{TwoVariableGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPagePatch1}
-\begin{paste}{SpaceCurveGraphicsPageFull1}{SpaceCurveGraphicsPageEmpty1}
-\pastebutton{SpaceCurveGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t), t=-12..12)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/spacecurvegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/spacecurvegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPageEmpty1}
-\begin{paste}{SpaceCurveGraphicsPageEmpty1}{SpaceCurveGraphicsPagePatch1}
-\pastebutton{SpaceCurveGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t),sin(t),t), t=-12..12)}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPagePatch2}
-\begin{paste}{SpaceCurveGraphicsPageFull2}{SpaceCurveGraphicsPageEmpty2}
-\pastebutton{SpaceCurveGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{i1(t:SF):SF == sin(t)*cos(3*t/5)\bound{i1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPageEmpty2}
-\begin{paste}{SpaceCurveGraphicsPageEmpty2}{SpaceCurveGraphicsPagePatch2}
-\pastebutton{SpaceCurveGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{i1(t:SF):SF == sin(t)*cos(3*t/5)\bound{i1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPagePatch3}
-\begin{paste}{SpaceCurveGraphicsPageFull3}{SpaceCurveGraphicsPageEmpty3}
-\pastebutton{SpaceCurveGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{i2(t:SF):SF == cos(t)*cos(3*t/5)\bound{i2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPageEmpty3}
-\begin{paste}{SpaceCurveGraphicsPageEmpty3}{SpaceCurveGraphicsPagePatch3}
-\pastebutton{SpaceCurveGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i2(t:SF):SF == cos(t)*cos(3*t/5)\bound{i2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPagePatch4}
-\begin{paste}{SpaceCurveGraphicsPageFull4}{SpaceCurveGraphicsPageEmpty4}
-\pastebutton{SpaceCurveGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{i3(t:SF):SF == cos(t)*sin(3*t/5)\bound{i3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPageEmpty4}
-\begin{paste}{SpaceCurveGraphicsPageEmpty4}{SpaceCurveGraphicsPagePatch4}
-\pastebutton{SpaceCurveGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{i3(t:SF):SF == cos(t)*sin(3*t/5)\bound{i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPagePatch5}
-\begin{paste}{SpaceCurveGraphicsPageFull5}{SpaceCurveGraphicsPageEmpty5}
-\pastebutton{SpaceCurveGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/spacecurvegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/spacecurvegraphicspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{SpaceCurveGraphicsPageEmpty5}
-\begin{paste}{SpaceCurveGraphicsPageEmpty5}{SpaceCurveGraphicsPagePatch5}
-\pastebutton{SpaceCurveGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPagePatch1}
-\begin{paste}{ParametricTubeGraphicsPageFull1}{ParametricTubeGraphicsPageEmpty1}
-\pastebutton{ParametricTubeGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*cos(3*t/5), cos(t)*cos(3*t/5), cos(t)*sin(3*t/5)), t=0..15*\%pi,tubeRadius == .15)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametrictubegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametrictubegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPageEmpty1}
-\begin{paste}{ParametricTubeGraphicsPageEmpty1}{ParametricTubeGraphicsPagePatch1}
-\pastebutton{ParametricTubeGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*cos(3*t/5), cos(t)*cos(3*t/5), cos(t)*sin(3*t/5)), t=0..15*\%pi,tubeRadius == .15)}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPagePatch2}
-\begin{paste}{ParametricTubeGraphicsPageFull2}{ParametricTubeGraphicsPageEmpty2}
-\pastebutton{ParametricTubeGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t1(t:SF):SF == 4/(2-sin(3*t))*cos(2*t)\bound{t1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPageEmpty2}
-\begin{paste}{ParametricTubeGraphicsPageEmpty2}{ParametricTubeGraphicsPagePatch2}
-\pastebutton{ParametricTubeGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t1(t:SF):SF == 4/(2-sin(3*t))*cos(2*t)\bound{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPagePatch3}
-\begin{paste}{ParametricTubeGraphicsPageFull3}{ParametricTubeGraphicsPageEmpty3}
-\pastebutton{ParametricTubeGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{t2(t:SF):SF == 4/(2-sin(3*t))*sin(2*t)\bound{t2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPageEmpty3}
-\begin{paste}{ParametricTubeGraphicsPageEmpty3}{ParametricTubeGraphicsPagePatch3}
-\pastebutton{ParametricTubeGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{t2(t:SF):SF == 4/(2-sin(3*t))*sin(2*t)\bound{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPagePatch4}
-\begin{paste}{ParametricTubeGraphicsPageFull4}{ParametricTubeGraphicsPageEmpty4}
-\pastebutton{ParametricTubeGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{t3(t:SF):SF == 4/(2-sin(3*t))*cos(3*t)\bound{t3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPageEmpty4}
-\begin{paste}{ParametricTubeGraphicsPageEmpty4}{ParametricTubeGraphicsPagePatch4}
-\pastebutton{ParametricTubeGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{t3(t:SF):SF == 4/(2-sin(3*t))*cos(3*t)\bound{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPagePatch5}
-\begin{paste}{ParametricTubeGraphicsPageFull5}{ParametricTubeGraphicsPageEmpty5}
-\pastebutton{ParametricTubeGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(t1,t2,t3),0..2*\%pi,tubeRadius == .2)\free{t1 t2 t3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametrictubegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametrictubegraphicspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricTubeGraphicsPageEmpty5}
-\begin{paste}{ParametricTubeGraphicsPageEmpty5}{ParametricTubeGraphicsPagePatch5}
-\pastebutton{ParametricTubeGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(t1,t2,t3),0..2*\%pi,tubeRadius == .2)\free{t1 t2 t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPagePatch1}
-\begin{paste}{ParametricSurfaceGraphicsPageFull1}{ParametricSurfaceGraphicsPageEmpty1}
-\pastebutton{ParametricSurfaceGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v),v*cos(u)),u=-4..4,v=0..2*\%pi, coordinates== parabolicCylindrical)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametricsurfacegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametricsurfacegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPageEmpty1}
-\begin{paste}{ParametricSurfaceGraphicsPageEmpty1}{ParametricSurfaceGraphicsPagePatch1}
-\pastebutton{ParametricSurfaceGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v),v*cos(u)),u=-4..4,v=0..2*\%pi, coordinates== parabolicCylindrical)}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPagePatch2}
-\begin{paste}{ParametricSurfaceGraphicsPageFull2}{ParametricSurfaceGraphicsPageEmpty2}
-\pastebutton{ParametricSurfaceGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{n1(u:SF,v:SF):SF == u*cos(v)\bound{n1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPageEmpty2}
-\begin{paste}{ParametricSurfaceGraphicsPageEmpty2}{ParametricSurfaceGraphicsPagePatch2}
-\pastebutton{ParametricSurfaceGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{n1(u:SF,v:SF):SF == u*cos(v)\bound{n1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPagePatch3}
-\begin{paste}{ParametricSurfaceGraphicsPageFull3}{ParametricSurfaceGraphicsPageEmpty3}
-\pastebutton{ParametricSurfaceGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{n2(u:SF,v:SF):SF == u*sin(v)\bound{n2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPageEmpty3}
-\begin{paste}{ParametricSurfaceGraphicsPageEmpty3}{ParametricSurfaceGraphicsPagePatch3}
-\pastebutton{ParametricSurfaceGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{n2(u:SF,v:SF):SF == u*sin(v)\bound{n2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPagePatch4}
-\begin{paste}{ParametricSurfaceGraphicsPageFull4}{ParametricSurfaceGraphicsPageEmpty4}
-\pastebutton{ParametricSurfaceGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{n3(u:SF,v:SF):SF == u\bound{n3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPageEmpty4}
-\begin{paste}{ParametricSurfaceGraphicsPageEmpty4}{ParametricSurfaceGraphicsPagePatch4}
-\pastebutton{ParametricSurfaceGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{n3(u:SF,v:SF):SF == u\bound{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPagePatch5}
-\begin{paste}{ParametricSurfaceGraphicsPageFull5}{ParametricSurfaceGraphicsPageEmpty5}
-\pastebutton{ParametricSurfaceGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1.0..4.0, 1.0..4*\%pi, coordinates == toroidal(1$SF))\free{n1 n2 n3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametricsurfacegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametricsurfacegraphicspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricSurfaceGraphicsPageEmpty5}
-\begin{paste}{ParametricSurfaceGraphicsPageEmpty5}{ParametricSurfaceGraphicsPagePatch5}
-\pastebutton{ParametricSurfaceGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1.0..4.0, 1.0..4*\%pi, coordinates == toroidal(1$SF))\free{n1 n2 n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch1}
-\begin{paste}{3DObjectGraphicsPageFull1}{3DObjectGraphicsPageEmpty1}
-\pastebutton{3DObjectGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{space := create3Space()$(ThreeSpace SF)\bound{space }}
-\indentrel{3}\begin{verbatim}
-   (1)  3-Space with 0 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty1}
-\begin{paste}{3DObjectGraphicsPageEmpty1}{3DObjectGraphicsPagePatch1}
-\pastebutton{3DObjectGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{space := create3Space()$(ThreeSpace SF)\bound{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch2}
-\begin{paste}{3DObjectGraphicsPageFull2}{3DObjectGraphicsPageEmpty2}
-\pastebutton{3DObjectGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{curve(space,[[0,20,20],[0,20,30],[0,30,30],[0,30,100], [0,20,100],[0,20,110],[0,50,110],[0,50,100],[0,40,100], [0,40,30],[0,50,30],[0,50,20],[0,20,20]])\bound{curveI }}
-\indentrel{3}\begin{verbatim}
-   (2)  3-Space with 1 component
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty2}
-\begin{paste}{3DObjectGraphicsPageEmpty2}{3DObjectGraphicsPagePatch2}
-\pastebutton{3DObjectGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{curve(space,[[0,20,20],[0,20,30],[0,30,30],[0,30,100], [0,20,100],[0,20,110],[0,50,110],[0,50,100],[0,40,100], [0,40,30],[0,50,30],[0,50,20],[0,20,20]])\bound{curveI }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch3}
-\begin{paste}{3DObjectGraphicsPageFull3}{3DObjectGraphicsPageEmpty3}
-\pastebutton{3DObjectGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{curve(space,[[0,80,20],[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,105,30],[0,110,35]])\bound{curveB1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  3-Space with 2 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty3}
-\begin{paste}{3DObjectGraphicsPageEmpty3}{3DObjectGraphicsPagePatch3}
-\pastebutton{3DObjectGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{curve(space,[[0,80,20],[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,105,30],[0,110,35]])\bound{curveB1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch4}
-\begin{paste}{3DObjectGraphicsPageFull4}{3DObjectGraphicsPageEmpty4}
-\pastebutton{3DObjectGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{curve(space,[[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,30]])\bound{curveB2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  3-Space with 3 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty4}
-\begin{paste}{3DObjectGraphicsPageEmpty4}{3DObjectGraphicsPagePatch4}
-\pastebutton{3DObjectGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{curve(space,[[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,30]])\bound{curveB2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch5}
-\begin{paste}{3DObjectGraphicsPageFull5}{3DObjectGraphicsPageEmpty5}
-\pastebutton{3DObjectGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curveM }}
-\indentrel{3}\begin{verbatim}
-   (5)  3-Space with 4 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty5}
-\begin{paste}{3DObjectGraphicsPageEmpty5}{3DObjectGraphicsPagePatch5}
-\pastebutton{3DObjectGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curveM }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch6}
-\begin{paste}{3DObjectGraphicsPageFull6}{3DObjectGraphicsPageEmpty6}
-\pastebutton{3DObjectGraphicsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{closedCurve(space,[[200,0,20], [200,0,110], [185,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [165,0,20], [190,0,85], [190,0,20]])\bound{curveN }}
-\indentrel{3}\begin{verbatim}
-   (6)  3-Space with 5 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty6}
-\begin{paste}{3DObjectGraphicsPageEmpty6}{3DObjectGraphicsPagePatch6}
-\pastebutton{3DObjectGraphicsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{closedCurve(space,[[200,0,20], [200,0,110], [185,0,110], [160,0,45], [160,0,110], [150,0,110], [150,0,20], [165,0,20], [190,0,85], [190,0,20]])\bound{curveN }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch7}
-\begin{paste}{3DObjectGraphicsPageFull7}{3DObjectGraphicsPageEmpty7}
-\pastebutton{3DObjectGraphicsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{closedCurve(space,[[140,0,20], [120,0,110], [110,0,110], [90,0,20], [100,0,20], [108,0,50], [123,0,50], [121,0,60], [110,0,60], [115,0,90], [130,0,20]])\bound{curveA }}
-\indentrel{3}\begin{verbatim}
-   (7)  3-Space with 6 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty7}
-\begin{paste}{3DObjectGraphicsPageEmpty7}{3DObjectGraphicsPagePatch7}
-\pastebutton{3DObjectGraphicsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{closedCurve(space,[[140,0,20], [120,0,110], [110,0,110], [90,0,20], [100,0,20], [108,0,50], [123,0,50], [121,0,60], [110,0,60], [115,0,90], [130,0,20]])\bound{curveA }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch8}
-\begin{paste}{3DObjectGraphicsPageFull8}{3DObjectGraphicsPageEmpty8}
-\pastebutton{3DObjectGraphicsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{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], [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]])\bound{curveG }}
-\indentrel{3}\begin{verbatim}
-   (8)  3-Space with 7 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty8}
-\begin{paste}{3DObjectGraphicsPageEmpty8}{3DObjectGraphicsPagePatch8}
-\pastebutton{3DObjectGraphicsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{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], [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]])\bound{curveG }}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPagePatch9}
-\begin{paste}{3DObjectGraphicsPageFull9}{3DObjectGraphicsPageEmpty9}
-\pastebutton{3DObjectGraphicsPageFull9}{\hidepaste}
-\tab{5}\spadgraph{makeViewport3D(space,[title("Curves")])$VIEW3D\free{space curveI curveB1 curveB2 curveM curveN curveA curveG }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/3dobjectgraphicspage9.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/3dobjectgraphicspage9}}
-\end{paste}\end{patch}
-
-\begin{patch}{3DObjectGraphicsPageEmpty9}
-\begin{paste}{3DObjectGraphicsPageEmpty9}{3DObjectGraphicsPagePatch9}
-\pastebutton{3DObjectGraphicsPageEmpty9}{\showpaste}
-\tab{5}\spadgraph{makeViewport3D(space,[title("Curves")])$VIEW3D\free{space curveI curveB1 curveB2 curveM curveN curveA curveG }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPagePatch1}
-\begin{paste}{OneVariableGraphicsPageFull1}{OneVariableGraphicsPageEmpty1}
-\pastebutton{OneVariableGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPageEmpty1}
-\begin{paste}{OneVariableGraphicsPageEmpty1}{OneVariableGraphicsPagePatch1}
-\pastebutton{OneVariableGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPagePatch2}
-\begin{paste}{OneVariableGraphicsPageFull2}{OneVariableGraphicsPageEmpty2}
-\pastebutton{OneVariableGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16,title == "y = sin tan x - tan sin x")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/onevariablegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/onevariablegraphicspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPageEmpty2}
-\begin{paste}{OneVariableGraphicsPageEmpty2}{OneVariableGraphicsPagePatch2}
-\pastebutton{OneVariableGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16,title == "y = sin tan x - tan sin x")}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPagePatch3}
-\begin{paste}{OneVariableGraphicsPageFull3}{OneVariableGraphicsPageEmpty3}
-\pastebutton{OneVariableGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPageEmpty3}
-\begin{paste}{OneVariableGraphicsPageEmpty3}{OneVariableGraphicsPagePatch3}
-\pastebutton{OneVariableGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPagePatch4}
-\begin{paste}{OneVariableGraphicsPageFull4}{OneVariableGraphicsPageEmpty4}
-\pastebutton{OneVariableGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(f, 0..2, title == "y = f(x) on [0,2]")\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/OneVariableGraphicsPage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/OneVariableGraphicsPage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPageEmpty4}
-\begin{paste}{OneVariableGraphicsPageEmpty4}{OneVariableGraphicsPagePatch4}
-\pastebutton{OneVariableGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(f, 0..2, title == "y = f(x) on [0,2]")\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPagePatch5}
-\begin{paste}{OneVariableGraphicsPageFull5}{OneVariableGraphicsPageEmpty5}
-\pastebutton{OneVariableGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(f, 0..4,title == "y = f(x) on [0,4]")\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/OneVariableGraphicsPage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/OneVariableGraphicsPage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{OneVariableGraphicsPageEmpty5}
-\begin{paste}{OneVariableGraphicsPageEmpty5}{OneVariableGraphicsPagePatch5}
-\pastebutton{OneVariableGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(f, 0..4,title == "y = f(x) on [0,4]")\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch1}
-\begin{paste}{ParametricCurveGraphicsPageFull1}{ParametricCurveGraphicsPageEmpty1}
-\pastebutton{ParametricCurveGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty1}
-\begin{paste}{ParametricCurveGraphicsPageEmpty1}{ParametricCurveGraphicsPagePatch1}
-\pastebutton{ParametricCurveGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch2}
-\begin{paste}{ParametricCurveGraphicsPageFull2}{ParametricCurveGraphicsPageEmpty2}
-\pastebutton{ParametricCurveGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi, title == "The Unit Circle")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty2}
-\begin{paste}{ParametricCurveGraphicsPageEmpty2}{ParametricCurveGraphicsPagePatch2}
-\pastebutton{ParametricCurveGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi, title == "The Unit Circle")}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch3}
-\begin{paste}{ParametricCurveGraphicsPageFull3}{ParametricCurveGraphicsPageEmpty3}
-\pastebutton{ParametricCurveGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(t:SF):SF == sin(3*t/4)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty3}
-\begin{paste}{ParametricCurveGraphicsPageEmpty3}{ParametricCurveGraphicsPagePatch3}
-\pastebutton{ParametricCurveGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(t:SF):SF == sin(3*t/4)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch4}
-\begin{paste}{ParametricCurveGraphicsPageFull4}{ParametricCurveGraphicsPageEmpty4}
-\pastebutton{ParametricCurveGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g(t:SF):SF == sin(t)\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty4}
-\begin{paste}{ParametricCurveGraphicsPageEmpty4}{ParametricCurveGraphicsPagePatch4}
-\pastebutton{ParametricCurveGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g(t:SF):SF == sin(t)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch5}
-\begin{paste}{ParametricCurveGraphicsPageFull5}{ParametricCurveGraphicsPageEmpty5}
-\pastebutton{ParametricCurveGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(f,g), 0..\%pi)\free{f g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty5}
-\begin{paste}{ParametricCurveGraphicsPageEmpty5}{ParametricCurveGraphicsPagePatch5}
-\pastebutton{ParametricCurveGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(f,g), 0..\%pi)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch6}
-\begin{paste}{ParametricCurveGraphicsPageFull6}{ParametricCurveGraphicsPageEmpty6}
-\pastebutton{ParametricCurveGraphicsPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(f,g) ,\%pi..2*\%pi)\free{f g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty6}
-\begin{paste}{ParametricCurveGraphicsPageEmpty6}{ParametricCurveGraphicsPagePatch6}
-\pastebutton{ParametricCurveGraphicsPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(curve(f,g) ,\%pi..2*\%pi)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPagePatch7}
-\begin{paste}{ParametricCurveGraphicsPageFull7}{ParametricCurveGraphicsPageEmpty7}
-\pastebutton{ParametricCurveGraphicsPageFull7}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(f,g), -4*\%pi..4*\%pi)\free{f g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/parametriccurvegraphicspage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/parametriccurvegraphicspage7}}
-\end{paste}\end{patch}
-
-\begin{patch}{ParametricCurveGraphicsPageEmpty7}
-\begin{paste}{ParametricCurveGraphicsPageEmpty7}{ParametricCurveGraphicsPagePatch7}
-\pastebutton{ParametricCurveGraphicsPageEmpty7}{\showpaste}
-\tab{5}\spadgraph{draw(curve(f,g), -4*\%pi..4*\%pi)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPagePatch1}
-\begin{paste}{PolarGraphicsPageFull1}{PolarGraphicsPageEmpty1}
-\pastebutton{PolarGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(1,t = 0..2*\%pi,coordinates == polar, title == "The Unit Circle")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPageEmpty1}
-\begin{paste}{PolarGraphicsPageEmpty1}{PolarGraphicsPagePatch1}
-\pastebutton{PolarGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(1,t = 0..2*\%pi,coordinates == polar, title == "The Unit Circle")}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPagePatch2}
-\begin{paste}{PolarGraphicsPageFull2}{PolarGraphicsPageEmpty2}
-\pastebutton{PolarGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar, title == "A Petal Curve")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPageEmpty2}
-\begin{paste}{PolarGraphicsPageEmpty2}{PolarGraphicsPagePatch2}
-\pastebutton{PolarGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(sin(17*t), t = 0..2*\%pi, coordinates == polar, title == "A Petal Curve")}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPagePatch3}
-\begin{paste}{PolarGraphicsPageFull3}{PolarGraphicsPageEmpty3}
-\pastebutton{PolarGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(t) == cos(4*t/7)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPageEmpty3}
-\begin{paste}{PolarGraphicsPageEmpty3}{PolarGraphicsPagePatch3}
-\pastebutton{PolarGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(t) == cos(4*t/7)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPagePatch4}
-\begin{paste}{PolarGraphicsPageFull4}{PolarGraphicsPageEmpty4}
-\pastebutton{PolarGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(f, 0..2*\%pi, coordinates == polar)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPageEmpty4}
-\begin{paste}{PolarGraphicsPageEmpty4}{PolarGraphicsPagePatch4}
-\pastebutton{PolarGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(f, 0..2*\%pi, coordinates == polar)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPagePatch5}
-\begin{paste}{PolarGraphicsPageFull5}{PolarGraphicsPageEmpty5}
-\pastebutton{PolarGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(f, 0..14*\%pi, coordinates == polar)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/polargraphicspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/polargraphicspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{PolarGraphicsPageEmpty5}
-\begin{paste}{PolarGraphicsPageEmpty5}{PolarGraphicsPagePatch5}
-\pastebutton{PolarGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(f, 0..14*\%pi, coordinates == polar)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsPagePatch1}
-\begin{paste}{ImplicitCurveGraphicsPageFull1}{ImplicitCurveGraphicsPageEmpty1}
-\pastebutton{ImplicitCurveGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (1)
-    4      2            2    4      3      2
-   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsPageEmpty1}
-\begin{paste}{ImplicitCurveGraphicsPageEmpty1}{ImplicitCurveGraphicsPagePatch1}
-\pastebutton{ImplicitCurveGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1) - 4*x - 1)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsPagePatch2}
-\begin{paste}{ImplicitCurveGraphicsPageFull2}{ImplicitCurveGraphicsPageEmpty2}
-\pastebutton{ImplicitCurveGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/implicitcurvegraphicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/implicitcurvegraphicspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ImplicitCurveGraphicsPageEmpty2}
-\begin{paste}{ImplicitCurveGraphicsPageEmpty2}{ImplicitCurveGraphicsPagePatch2}
-\pastebutton{ImplicitCurveGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7], title == "Cartesian Ovals")\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch1}
-\begin{paste}{ListPointsGraphicsPageFull1}{ListPointsGraphicsPageEmpty1}
-\pastebutton{ListPointsGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty1}
-\begin{paste}{ListPointsGraphicsPageEmpty1}{ListPointsGraphicsPagePatch1}
-\pastebutton{ListPointsGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p1 := point [1::SF,1::SF]$(Point SF)\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch2}
-\begin{paste}{ListPointsGraphicsPageFull2}{ListPointsGraphicsPageEmpty2}
-\pastebutton{ListPointsGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty2}
-\begin{paste}{ListPointsGraphicsPageEmpty2}{ListPointsGraphicsPagePatch2}
-\pastebutton{ListPointsGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p2 := point [0::SF,1::SF]$(Point SF)\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch3}
-\begin{paste}{ListPointsGraphicsPageFull3}{ListPointsGraphicsPageEmpty3}
-\pastebutton{ListPointsGraphicsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [0.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty3}
-\begin{paste}{ListPointsGraphicsPageEmpty3}{ListPointsGraphicsPagePatch3}
-\pastebutton{ListPointsGraphicsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p3 := point [0::SF,0::SF]$(Point SF)\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch4}
-\begin{paste}{ListPointsGraphicsPageFull4}{ListPointsGraphicsPageEmpty4}
-\pastebutton{ListPointsGraphicsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty4}
-\begin{paste}{ListPointsGraphicsPageEmpty4}{ListPointsGraphicsPagePatch4}
-\pastebutton{ListPointsGraphicsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p4 := point [1::SF,0::SF]$(Point SF)\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch5}
-\begin{paste}{ListPointsGraphicsPageFull5}{ListPointsGraphicsPageEmpty5}
-\pastebutton{ListPointsGraphicsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty5}
-\begin{paste}{ListPointsGraphicsPageEmpty5}{ListPointsGraphicsPagePatch5}
-\pastebutton{ListPointsGraphicsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p5 := point [1::SF,.5::SF]$(Point SF)\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch6}
-\begin{paste}{ListPointsGraphicsPageFull6}{ListPointsGraphicsPageEmpty6}
-\pastebutton{ListPointsGraphicsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [0.5,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty6}
-\begin{paste}{ListPointsGraphicsPageEmpty6}{ListPointsGraphicsPagePatch6}
-\pastebutton{ListPointsGraphicsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p6 := point [.5::SF,0::SF]$(Point SF)\bound{p6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch7}
-\begin{paste}{ListPointsGraphicsPageFull7}{ListPointsGraphicsPageEmpty7}
-\pastebutton{ListPointsGraphicsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [0.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty7}
-\begin{paste}{ListPointsGraphicsPageEmpty7}{ListPointsGraphicsPagePatch7}
-\pastebutton{ListPointsGraphicsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p7 := point [0::SF,0.5::SF]$(Point SF)\bound{p7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch8}
-\begin{paste}{ListPointsGraphicsPageFull8}{ListPointsGraphicsPageEmpty8}
-\pastebutton{ListPointsGraphicsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0.5,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty8}
-\begin{paste}{ListPointsGraphicsPageEmpty8}{ListPointsGraphicsPagePatch8}
-\pastebutton{ListPointsGraphicsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p8 := point [.5::SF,1::SF]$(Point SF)\bound{p8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch9}
-\begin{paste}{ListPointsGraphicsPageFull9}{ListPointsGraphicsPageEmpty9}
-\pastebutton{ListPointsGraphicsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [0.25,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty9}
-\begin{paste}{ListPointsGraphicsPageEmpty9}{ListPointsGraphicsPagePatch9}
-\pastebutton{ListPointsGraphicsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p9 := point [.25::SF,.25::SF]$(Point SF)\bound{p9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch10}
-\begin{paste}{ListPointsGraphicsPageFull10}{ListPointsGraphicsPageEmpty10}
-\pastebutton{ListPointsGraphicsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [0.25,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty10}
-\begin{paste}{ListPointsGraphicsPageEmpty10}{ListPointsGraphicsPagePatch10}
-\pastebutton{ListPointsGraphicsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{p10 := point [.25::SF,.75::SF]$(Point SF)\bound{p10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch11}
-\begin{paste}{ListPointsGraphicsPageFull11}{ListPointsGraphicsPageEmpty11}
-\pastebutton{ListPointsGraphicsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [0.75,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty11}
-\begin{paste}{ListPointsGraphicsPageEmpty11}{ListPointsGraphicsPagePatch11}
-\pastebutton{ListPointsGraphicsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p11 := point [.75::SF,.75::SF]$(Point SF)\bound{p11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch12}
-\begin{paste}{ListPointsGraphicsPageFull12}{ListPointsGraphicsPageEmpty12}
-\pastebutton{ListPointsGraphicsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [0.75,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty12}
-\begin{paste}{ListPointsGraphicsPageEmpty12}{ListPointsGraphicsPagePatch12}
-\pastebutton{ListPointsGraphicsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p12 := point [.75::SF,.25::SF]$(Point SF)\bound{p12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch13}
-\begin{paste}{ListPointsGraphicsPageFull13}{ListPointsGraphicsPageEmpty13}
-\pastebutton{ListPointsGraphicsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
-    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
-    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
-    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
-    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
-    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
-                      Type: List List Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty13}
-\begin{paste}{ListPointsGraphicsPageEmpty13}{ListPointsGraphicsPagePatch13}
-\pastebutton{ListPointsGraphicsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{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]]\bound{llp }\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch14}
-\begin{paste}{ListPointsGraphicsPageFull14}{ListPointsGraphicsPageEmpty14}
-\pastebutton{ListPointsGraphicsPageFull14}{\hidepaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\indentrel{3}\begin{verbatim}
-   (14)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty14}
-\begin{paste}{ListPointsGraphicsPageEmpty14}{ListPointsGraphicsPagePatch14}
-\pastebutton{ListPointsGraphicsPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch15}
-\begin{paste}{ListPointsGraphicsPageFull15}{ListPointsGraphicsPageEmpty15}
-\pastebutton{ListPointsGraphicsPageFull15}{\hidepaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\indentrel{3}\begin{verbatim}
-   (15)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty15}
-\begin{paste}{ListPointsGraphicsPageEmpty15}{ListPointsGraphicsPagePatch15}
-\pastebutton{ListPointsGraphicsPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch16}
-\begin{paste}{ListPointsGraphicsPageFull16}{ListPointsGraphicsPageEmpty16}
-\pastebutton{ListPointsGraphicsPageFull16}{\hidepaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\indentrel{3}\begin{verbatim}
-   (16)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty16}
-\begin{paste}{ListPointsGraphicsPageEmpty16}{ListPointsGraphicsPagePatch16}
-\pastebutton{ListPointsGraphicsPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch17}
-\begin{paste}{ListPointsGraphicsPageFull17}{ListPointsGraphicsPageEmpty17}
-\pastebutton{ListPointsGraphicsPageFull17}{\hidepaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\indentrel{3}\begin{verbatim}
-   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty17}
-\begin{paste}{ListPointsGraphicsPageEmpty17}{ListPointsGraphicsPagePatch17}
-\pastebutton{ListPointsGraphicsPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch18}
-\begin{paste}{ListPointsGraphicsPageFull18}{ListPointsGraphicsPageEmpty18}
-\pastebutton{ListPointsGraphicsPageFull18}{\hidepaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\indentrel{3}\begin{verbatim}
-   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty18}
-\begin{paste}{ListPointsGraphicsPageEmpty18}{ListPointsGraphicsPagePatch18}
-\pastebutton{ListPointsGraphicsPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch19}
-\begin{paste}{ListPointsGraphicsPageFull19}{ListPointsGraphicsPageEmpty19}
-\pastebutton{ListPointsGraphicsPageFull19}{\hidepaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\indentrel{3}\begin{verbatim}
-   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty19}
-\begin{paste}{ListPointsGraphicsPageEmpty19}{ListPointsGraphicsPagePatch19}
-\pastebutton{ListPointsGraphicsPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch20}
-\begin{paste}{ListPointsGraphicsPageFull20}{ListPointsGraphicsPageEmpty20}
-\pastebutton{ListPointsGraphicsPageFull20}{\hidepaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\indentrel{3}\begin{verbatim}
-   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty20}
-\begin{paste}{ListPointsGraphicsPageEmpty20}{ListPointsGraphicsPagePatch20}
-\pastebutton{ListPointsGraphicsPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch21}
-\begin{paste}{ListPointsGraphicsPageFull21}{ListPointsGraphicsPageEmpty21}
-\pastebutton{ListPointsGraphicsPageFull21}{\hidepaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   [[Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty21}
-\begin{paste}{ListPointsGraphicsPageEmpty21}{ListPointsGraphicsPagePatch21}
-\pastebutton{ListPointsGraphicsPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\bound{lpc }\free{pc1 pc2 pc3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch22}
-\begin{paste}{ListPointsGraphicsPageFull22}{ListPointsGraphicsPageEmpty22}
-\pastebutton{ListPointsGraphicsPageFull22}{\hidepaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [[Hue: 22  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 1  Weight: 1.0] from the Bright palette,
-    [Hue: 14  Weight: 1.0] from the Light palette,
-    [Hue: 11  Weight: 1.0] from the Dim palette,
-    [Hue: 22  Weight: 1.0] from the Bright palette,
-    [Hue: 1  Weight: 1.0] from the Dark palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 22  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Light palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty22}
-\begin{paste}{ListPointsGraphicsPageEmpty22}{ListPointsGraphicsPagePatch22}
-\pastebutton{ListPointsGraphicsPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch23}
-\begin{paste}{ListPointsGraphicsPageFull23}{ListPointsGraphicsPageEmpty23}
-\pastebutton{ListPointsGraphicsPageFull23}{\hidepaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\indentrel{3}\begin{verbatim}
-   (23)  Graph with 12 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty23}
-\begin{paste}{ListPointsGraphicsPageEmpty23}{ListPointsGraphicsPagePatch23}
-\pastebutton{ListPointsGraphicsPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPagePatch24}
-\begin{paste}{ListPointsGraphicsPageFull24}{ListPointsGraphicsPageEmpty24}
-\pastebutton{ListPointsGraphicsPageFull24}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/listpointsgraphicspage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/listpointsgraphicspage24}}
-\end{paste}\end{patch}
-
-\begin{patch}{ListPointsGraphicsPageEmpty24}
-\begin{paste}{ListPointsGraphicsPageEmpty24}{ListPointsGraphicsPagePatch24}
-\pastebutton{ListPointsGraphicsPageEmpty24}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ViewportPagePatch1}
-\begin{paste}{ViewportPageFull1}{ViewportPageEmpty1}
-\pastebutton{ViewportPageFull1}{\hidepaste}
-\tab{5}\spadgraph{v := draw(x*x-y*y,x=-1..1,y=-1..1)\bound{v }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/viewportpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/viewportpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ViewportPageEmpty1}
-\begin{paste}{ViewportPageEmpty1}{ViewportPagePatch1}
-\pastebutton{ViewportPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{v := draw(x*x-y*y,x=-1..1,y=-1..1)\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{ViewportPagePatch2}
-\begin{paste}{ViewportPageFull2}{ViewportPageEmpty2}
-\pastebutton{ViewportPageFull2}{\hidepaste}
-\tab{5}\spadcommand{write(v,"saddle","pixmap")\free{v }}
-\indentrel{3}\begin{verbatim}
-   (2)  "NIL"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ViewportPageEmpty2}
-\begin{paste}{ViewportPageEmpty2}{ViewportPagePatch2}
-\pastebutton{ViewportPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{write(v,"saddle","pixmap")\free{v }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/grpthry.pht b/books/pages/grpthry.pht
deleted file mode 100644
index b04349e..0000000
--- a/books/pages/grpthry.pht
+++ /dev/null
@@ -1,866 +0,0 @@
-\begin{patch}{RepA6PagePatch1}
-\begin{paste}{RepA6PageFull1}{RepA6PageEmpty1}
-\pastebutton{RepA6PageFull1}{\hidepaste}
-\tab{5}\spadcommand{genA6 : LIST PERM INT := [cycle [1,2,3],cycle [2,3,4,5,6]]\bound{genA6 }}
-\indentrel{3}\begin{verbatim}
-   (1)  [(1 2 3),(2 3 4 5 6)]
-                         Type: List Permutation Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty1}
-\begin{paste}{RepA6PageEmpty1}{RepA6PagePatch1}
-\pastebutton{RepA6PageEmpty1}{\showpaste}
-\tab{5}\spadcommand{genA6 : LIST PERM INT := [cycle [1,2,3],cycle [2,3,4,5,6]]\bound{genA6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch2}
-\begin{paste}{RepA6PageFull2}{RepA6PageEmpty2}
-\pastebutton{RepA6PageFull2}{\hidepaste}
-\tab{5}\spadcommand{pRA6 := permutationRepresentation (genA6, 6)\bound{pRA6 }\free{genA6 }}
-\indentrel{3}\begin{verbatim}
-         Ú0  0  1  0  0  0¿ Ú1  0  0  0  0  0¿
-         ³                ³ ³                ³
-         ³1  0  0  0  0  0³ ³0  0  0  0  0  1³
-         ³                ³ ³                ³
-         ³0  1  0  0  0  0³ ³0  1  0  0  0  0³
-   (2)  [³                ³,³                ³]
-         ³0  0  0  1  0  0³ ³0  0  1  0  0  0³
-         ³                ³ ³                ³
-         ³0  0  0  0  1  0³ ³0  0  0  1  0  0³
-         ³                ³ ³                ³
-         À0  0  0  0  0  1Ù À0  0  0  0  1  0Ù
-                              Type: List Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty2}
-\begin{paste}{RepA6PageEmpty2}{RepA6PagePatch2}
-\pastebutton{RepA6PageEmpty2}{\showpaste}
-\tab{5}\spadcommand{pRA6 := permutationRepresentation (genA6, 6)\bound{pRA6 }\free{genA6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch3}
-\begin{paste}{RepA6PageFull3}{RepA6PageEmpty3}
-\pastebutton{RepA6PageFull3}{\hidepaste}
-\tab{5}\spadcommand{sp0 := meatAxe (pRA6::(LIST MATRIX PF 2))\free{pRA6 }\bound{sp0 }}
-\indentrel{3}\begin{verbatim}
-   Fingerprint element in generated algebra is singular
-     A proper cyclic submodule is found.
-     Transition matrix computed
-     The inverse of the transition matrix computed
-     Now transform the matrices
-          Ú0  0  1  0  0¿ Ú1  0  0  0  0¿
-          ³             ³ ³             ³
-          ³1  0  0  0  0³ ³1  1  1  1  1³
-          ³             ³ ³             ³
-   (3)  [[³0  1  0  0  0³,³0  1  0  0  0³],[[1],[1]]]
-          ³             ³ ³             ³
-          ³0  0  0  1  0³ ³0  0  1  0  0³
-          ³             ³ ³             ³
-          À0  0  0  0  1Ù À0  0  0  1  0Ù
-                    Type: List List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty3}
-\begin{paste}{RepA6PageEmpty3}{RepA6PagePatch3}
-\pastebutton{RepA6PageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sp0 := meatAxe (pRA6::(LIST MATRIX PF 2))\free{pRA6 }\bound{sp0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch4}
-\begin{paste}{RepA6PageFull4}{RepA6PageEmpty4}
-\pastebutton{RepA6PageFull4}{\hidepaste}
-\tab{5}\spadcommand{sp1 := meatAxe sp0.1\bound{sp1 }}
-\indentrel{3}\begin{verbatim}
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     A proper cyclic submodule is found.
-     Transition matrix computed
-     The inverse of the transition matrix computed
-     Now transform the matrices
-    Representation is not irreducible and it will be spli
-  t:
-                    Ú0  1  0  0¿ Ú0  1  1  1¿
-                    ³          ³ ³          ³
-                    ³0  0  1  0³ ³1  1  0  1³
-   (4)  [[[1],[1]],[³          ³,³          ³]]
-                    ³1  0  0  0³ ³1  1  1  0³
-                    ³          ³ ³          ³
-                    À0  0  0  1Ù À1  1  1  1Ù
-                    Type: List List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty4}
-\begin{paste}{RepA6PageEmpty4}{RepA6PagePatch4}
-\pastebutton{RepA6PageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sp1 := meatAxe sp0.1\bound{sp1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch5}
-\begin{paste}{RepA6PageFull5}{RepA6PageEmpty5}
-\pastebutton{RepA6PageFull5}{\hidepaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp1.2}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     The generated cyclic submodule was not proper
-     Representation is absolutely irreducible
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty5}
-\begin{paste}{RepA6PageEmpty5}{RepA6PagePatch5}
-\pastebutton{RepA6PageEmpty5}{\showpaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp1.2}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch6}
-\begin{paste}{RepA6PageFull6}{RepA6PageEmpty6}
-\pastebutton{RepA6PageFull6}{\hidepaste}
-\tab{5}\spadcommand{d2211 := irreducibleRepresentation ([2,2,1,1],genA6)\bound{d2211 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-    Ú1  0  0  - 1   1    0    0    0    0 ¿
-    ³                                     ³
-    ³0  1  0   1    0    1    0    0    0 ³
-    ³                                     ³
-    ³0  0  1   0    1   - 1   0    0    0 ³
-    ³                                     ³
-    ³0  0  0  - 1   0    0   - 1   0    0 ³
-    ³                                     ³
-   [³0  0  0   0   - 1   0    0   - 1   0 ³,
-    ³                                     ³
-    ³0  0  0   0    0   - 1   0    0   - 1³
-    ³                                     ³
-    ³0  0  0   1    0    0    0    0    0 ³
-    ³                                     ³
-    ³0  0  0   0    1    0    0    0    0 ³
-    ³                                     ³
-    À0  0  0   0    0    1    0    0    0 Ù
-    Ú 0    0   1   0   0  0   1   0  0¿
-    ³                                 ³
-    ³ 0    0   0   0   1  0  - 1  0  0³
-    ³                                 ³
-    ³ 0    0   0   0   0  1   1   0  0³
-    ³                                 ³
-    ³ 0    0   0   0   0  0   1   1  0³
-    ³                                 ³
-    ³ 0    0   0   0   0  0  - 1  0  1³]
-    ³                                 ³
-    ³ 0    0   0   0   0  0   1   0  0³
-    ³                                 ³
-    ³- 1   0   0   0   0  0  - 1  0  0³
-    ³                                 ³
-    ³ 0   - 1  0   0   0  0   1   0  0³
-    ³                                 ³
-    À 0    0   0  - 1  0  0  - 1  0  0Ù
-                              Type: List Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty6}
-\begin{paste}{RepA6PageEmpty6}{RepA6PagePatch6}
-\pastebutton{RepA6PageEmpty6}{\showpaste}
-\tab{5}\spadcommand{d2211 := irreducibleRepresentation ([2,2,1,1],genA6)\bound{d2211 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch7}
-\begin{paste}{RepA6PageFull7}{RepA6PageEmpty7}
-\pastebutton{RepA6PageFull7}{\hidepaste}
-\tab{5}\spadcommand{d2211m2 := d2211:: (LIST MATRIX PF 2); sp2 := meatAxe d2211m2\free{d2211 }\bound{sp2 }}
-\indentrel{3}\begin{verbatim}
-   Fingerprint element in generated algebra is singular
-     A proper cyclic submodule is found.
-     Transition matrix computed
-     The inverse of the transition matrix computed
-     Now transform the matrices
-   (7)
-     Ú1  0  1  1¿ Ú0  0  1  0¿
-     ³          ³ ³          ³
-     ³0  1  0  1³ ³1  1  1  1³
-   [[³          ³,³          ³],
-     ³1  1  0  0³ ³1  0  1  1³
-     ³          ³ ³          ³
-     À0  1  0  0Ù À0  1  0  1Ù
-     Ú1  0  0  0  0¿ Ú1  1  1  0  0¿
-     ³             ³ ³             ³
-     ³0  1  1  1  1³ ³0  0  1  1  1³
-     ³             ³ ³             ³
-    [³0  1  1  0  0³,³1  0  0  1  0³]]
-     ³             ³ ³             ³
-     ³0  1  0  1  0³ ³0  0  1  0  1³
-     ³             ³ ³             ³
-     À0  1  1  1  0Ù À1  0  0  1  1Ù
-                    Type: List List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty7}
-\begin{paste}{RepA6PageEmpty7}{RepA6PagePatch7}
-\pastebutton{RepA6PageEmpty7}{\showpaste}
-\tab{5}\spadcommand{d2211m2 := d2211:: (LIST MATRIX PF 2); sp2 := meatAxe d2211m2\free{d2211 }\bound{sp2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch8}
-\begin{paste}{RepA6PageFull8}{RepA6PageEmpty8}
-\pastebutton{RepA6PageFull8}{\hidepaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp2.1}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     The generated cyclic submodule was not proper
-     Representation is absolutely irreducible
-   (8)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty8}
-\begin{paste}{RepA6PageEmpty8}{RepA6PagePatch8}
-\pastebutton{RepA6PageEmpty8}{\showpaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp2.1}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch9}
-\begin{paste}{RepA6PageFull9}{RepA6PageEmpty9}
-\pastebutton{RepA6PageFull9}{\hidepaste}
-\tab{5}\spadcommand{areEquivalent? (sp1.2, sp2.1)}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-     There is no isomorphism, as the only possible one
-       fails to do the necessary base change
-
-   Representations are not equivalent.
-   (9)  [0]
-                              Type: Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty9}
-\begin{paste}{RepA6PageEmpty9}{RepA6PagePatch9}
-\pastebutton{RepA6PageEmpty9}{\showpaste}
-\tab{5}\spadcommand{areEquivalent? (sp1.2, sp2.1)}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch10}
-\begin{paste}{RepA6PageFull10}{RepA6PageEmpty10}
-\pastebutton{RepA6PageFull10}{\hidepaste}
-\tab{5}\spadcommand{dA6d16 := tensorProduct(sp1.2,sp2.1); meatAxe dA6d16\bound{dA6d16 }}
-\indentrel{3}\begin{verbatim}
-  Fingerprint element in generated algebra is non-singula
-  r
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-  Fingerprint element in generated algebra is non-singula
-  r
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     The generated cyclic submodule was not proper
-     Representation is irreducible, but we don't know
-       whether it is absolutely irreducible
-   (10)
-   [
-      Ú0  0  0  0  0  0  0  0  1  0  1  0  0  0  0  0¿
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  0  1  1  1  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  1  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0³
-      ³                                              ³
-      ³1  0  1  0  0  0  0  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  1  1  1  0  0  0  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³1  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
-     [³                                              ³,
-      ³0  0  0  0  1  0  1  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  0  1  1  1  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  1  0  0  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0³
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  0³
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  0  0  0  0  0  1  1  1³
-      ³                                              ³
-      ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  0  0³
-      ³                                              ³
-      À0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0Ù
-      Ú0  0  0  0  0  1  1  0  0  1  1  0  0  1  1  0¿
-      ³                                              ³
-      ³0  0  0  0  0  1  0  1  0  1  0  1  0  1  0  1³
-      ³                                              ³
-      ³0  0  0  0  1  1  1  0  1  1  1  0  1  1  1  0³
-      ³                                              ³
-      ³0  0  0  0  0  1  1  1  0  1  1  1  0  1  1  1³
-      ³                                              ³
-      ³0  1  1  0  0  1  1  0  0  1  1  0  0  1  1  0³
-      ³                                              ³
-      ³0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1³
-      ³                                              ³
-      ³1  1  1  0  1  1  1  0  1  1  1  0  1  1  1  0³
-      ³                                              ³
-      ³0  1  1  1  0  1  1  1  0  1  1  1  0  1  1  1³
-      ³                                              ³]
-      ³0  1  1  0  0  0  0  0  0  1  1  0  0  1  1  0³
-      ³                                              ³
-      ³0  1  0  1  0  0  0  0  0  1  0  1  0  1  0  1³
-      ³                                              ³
-      ³1  1  1  0  0  0  0  0  1  1  1  0  1  1  1  0³
-      ³                                              ³
-      ³0  1  1  1  0  0  0  0  0  1  1  1  0  1  1  1³
-      ³                                              ³
-      ³0  1  1  0  0  1  1  0  0  0  0  0  0  1  1  0³
-      ³                                              ³
-      ³0  1  0  1  0  1  0  1  0  0  0  0  0  1  0  1³
-      ³                                              ³
-      ³1  1  1  0  1  1  1  0  0  0  0  0  1  1  1  0³
-      ³                                              ³
-      À0  1  1  1  0  1  1  1  0  0  0  0  0  1  1  1Ù
-     ]
-                    Type: List List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty10}
-\begin{paste}{RepA6PageEmpty10}{RepA6PagePatch10}
-\pastebutton{RepA6PageEmpty10}{\showpaste}
-\tab{5}\spadcommand{dA6d16 := tensorProduct(sp1.2,sp2.1); meatAxe dA6d16\bound{dA6d16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch11}
-\begin{paste}{RepA6PageFull11}{RepA6PageEmpty11}
-\pastebutton{RepA6PageFull11}{\hidepaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? dA6d16}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   We have not found a one-dimensional kernel so far,
-     as we do a random search you could try again
-   (11)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty11}
-\begin{paste}{RepA6PageEmpty11}{RepA6PagePatch11}
-\pastebutton{RepA6PageEmpty11}{\showpaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? dA6d16}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch12}
-\begin{paste}{RepA6PageFull12}{RepA6PageEmpty12}
-\pastebutton{RepA6PageFull12}{\hidepaste}
-\tab{5}\spadcommand{sp3 := meatAxe (dA6d16 :: (LIST MATRIX FF(2,2)))\bound{sp3 }}
-\indentrel{3}\begin{verbatim}
-  Fingerprint element in generated algebra is non-singula
-  r
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-  Fingerprint element in generated algebra is non-singula
-  r
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-   Fingerprint element in generated algebra is singular
-     The generated cyclic submodule was not proper
-     The generated cyclic submodule was not proper
-     A proper cyclic submodule is found.
-     Transition matrix computed
-     The inverse of the transition matrix computed
-     Now transform the matrices
-   (12)
-   [
-     [
-   [[%A,%A + 1,0,%A,1,%A + 1,0,0],
-    [0,0,%A,%A + 1,%A,%A,0,0],
-    [%A,%A + 1,%A,1,%A + 1,0,0,0],
-    [%A,%A + 1,%A,1,%A,0,0,0],
-    [%A + 1,1,1,1,0,0,%A + 1,%A],
-    [0,0,%A + 1,1,0,0,%A,0], [1,0,1,1,0,0,0,0],
-    [1,1,0,0,0,0,0,0]]
-       ,
-
-   [[1,0,%A,0,1,1,%A,%A + 1],
-    [1,%A + 1,0,0,0,%A + 1,1,%A + 1],
-    [%A,1,%A + 1,%A + 1,%A + 1,1,%A,0],
-    [%A + 1,%A + 1,0,0,1,%A + 1,1,1],
-    [1,0,%A + 1,0,1,1,%A,%A],
-    [0,0,%A + 1,%A + 1,%A + 1,1,1,%A], [0,0,1,0,0,1,0,1],
-    [0,%A,0,%A,1,%A + 1,%A + 1,%A]]
-       ]
-     ,
-
-      Ú0     1       1     %A + 1  0  0  0  0¿
-      ³                                      ³
-      ³1     1     %A + 1    0     0  0  0  0³
-      ³                                      ³
-      ³%A    0       0       0     0  0  0  0³
-      ³                                      ³
-      ³1     %A      0       0     0  0  0  0³
-     [³                                      ³,
-      ³%A  %A + 1    1       1     1  0  1  1³
-      ³                                      ³
-      ³0     0       %A      1     0  1  0  1³
-      ³                                      ³
-      ³%A    1       0       1     1  1  0  0³
-      ³                                      ³
-      À1     %A    %A + 1    %A    0  1  0  0Ù
-
-   [[%A + 1,1,%A,0,0,%A + 1,0,1],
-    [0,%A,1,1,1,0,%A + 1,%A],
-    [0,%A + 1,0,%A + 1,%A + 1,1,%A + 1,%A],
-    [1,%A + 1,1,%A + 1,0,0,%A + 1,1],
-    [0,%A,0,%A + 1,%A + 1,0,0,%A + 1],
-    [%A + 1,0,%A + 1,%A,0,%A + 1,0,%A + 1],
-    [0,1,0,1,%A + 1,0,%A + 1,%A + 1],
-    [%A,%A,%A,1,%A,%A,1,%A + 1]]
-       ]
-     ]
-                Type: List List Matrix FiniteField(2,2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty12}
-\begin{paste}{RepA6PageEmpty12}{RepA6PagePatch12}
-\pastebutton{RepA6PageEmpty12}{\showpaste}
-\tab{5}\spadcommand{sp3 := meatAxe (dA6d16 :: (LIST MATRIX FF(2,2)))\bound{sp3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch13}
-\begin{paste}{RepA6PageFull13}{RepA6PageEmpty13}
-\pastebutton{RepA6PageFull13}{\hidepaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.1}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     The generated cyclic submodule was not proper
-     Representation is absolutely irreducible
-   (13)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty13}
-\begin{paste}{RepA6PageEmpty13}{RepA6PagePatch13}
-\pastebutton{RepA6PageEmpty13}{\showpaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.1}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch14}
-\begin{paste}{RepA6PageFull14}{RepA6PageEmpty14}
-\pastebutton{RepA6PageFull14}{\hidepaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.2}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-    We know that all the cyclic submodules generated by a
-  ll
-      non-trivial element of the singular matrix under vi
-  ew are
-      not proper, hence Norton's irreducibility test can 
-  be done:
-     The generated cyclic submodule was not proper
-     Representation is absolutely irreducible
-   (14)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty14}
-\begin{paste}{RepA6PageEmpty14}{RepA6PagePatch14}
-\pastebutton{RepA6PageEmpty14}{\showpaste}
-\tab{5}\spadcommand{isAbsolutelyIrreducible? sp3.2}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch15}
-\begin{paste}{RepA6PageFull15}{RepA6PageEmpty15}
-\pastebutton{RepA6PageFull15}{\hidepaste}
-\tab{5}\spadcommand{areEquivalent? (sp3.1,sp3.2)}
-\indentrel{3}\begin{verbatim}
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra does
-     not have a one-dimensional kernel
-   Random element in generated algebra has
-     one-dimensional kernel
-     There is no isomorphism, as the only possible one
-       fails to do the necessary base change
-
-   Representations are not equivalent.
-   (15)  [0]
-                          Type: Matrix FiniteField(2,2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty15}
-\begin{paste}{RepA6PageEmpty15}{RepA6PagePatch15}
-\pastebutton{RepA6PageEmpty15}{\showpaste}
-\tab{5}\spadcommand{areEquivalent? (sp3.1,sp3.2)}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch16}
-\begin{paste}{RepA6PageFull16}{RepA6PageEmpty16}
-\pastebutton{RepA6PageFull16}{\hidepaste}
-\tab{5}\spadcommand{sp0.2\free{sp0 }}
-\indentrel{3}\begin{verbatim}
-   (16)  [[1],[1]]
-                         Type: List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty16}
-\begin{paste}{RepA6PageEmpty16}{RepA6PagePatch16}
-\pastebutton{RepA6PageEmpty16}{\showpaste}
-\tab{5}\spadcommand{sp0.2\free{sp0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch17}
-\begin{paste}{RepA6PageFull17}{RepA6PageEmpty17}
-\pastebutton{RepA6PageFull17}{\hidepaste}
-\tab{5}\spadcommand{sp1.2\free{sp1 }}
-\indentrel{3}\begin{verbatim}
-          Ú0  1  0  0¿ Ú0  1  1  1¿
-          ³          ³ ³          ³
-          ³0  0  1  0³ ³1  1  0  1³
-   (17)  [³          ³,³          ³]
-          ³1  0  0  0³ ³1  1  1  0³
-          ³          ³ ³          ³
-          À0  0  0  1Ù À1  1  1  1Ù
-                         Type: List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty17}
-\begin{paste}{RepA6PageEmpty17}{RepA6PagePatch17}
-\pastebutton{RepA6PageEmpty17}{\showpaste}
-\tab{5}\spadcommand{sp1.2\free{sp1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch18}
-\begin{paste}{RepA6PageFull18}{RepA6PageEmpty18}
-\pastebutton{RepA6PageFull18}{\hidepaste}
-\tab{5}\spadcommand{sp2.1\free{sp2 }}
-\indentrel{3}\begin{verbatim}
-          Ú1  0  1  1¿ Ú0  0  1  0¿
-          ³          ³ ³          ³
-          ³0  1  0  1³ ³1  1  1  1³
-   (18)  [³          ³,³          ³]
-          ³1  1  0  0³ ³1  0  1  1³
-          ³          ³ ³          ³
-          À0  1  0  0Ù À0  1  0  1Ù
-                         Type: List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty18}
-\begin{paste}{RepA6PageEmpty18}{RepA6PagePatch18}
-\pastebutton{RepA6PageEmpty18}{\showpaste}
-\tab{5}\spadcommand{sp2.1\free{sp2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch19}
-\begin{paste}{RepA6PageFull19}{RepA6PageEmpty19}
-\pastebutton{RepA6PageFull19}{\hidepaste}
-\tab{5}\spadcommand{sp3.1\free{sp3 }}
-\indentrel{3}\begin{verbatim}
-   (19)
-   [
-   [[%A,%A + 1,0,%A,1,%A + 1,0,0],
-    [0,0,%A,%A + 1,%A,%A,0,0],
-    [%A,%A + 1,%A,1,%A + 1,0,0,0],
-    [%A,%A + 1,%A,1,%A,0,0,0],
-    [%A + 1,1,1,1,0,0,%A + 1,%A],
-    [0,0,%A + 1,1,0,0,%A,0], [1,0,1,1,0,0,0,0],
-    [1,1,0,0,0,0,0,0]]
-     ,
-
-   [[1,0,%A,0,1,1,%A,%A + 1],
-    [1,%A + 1,0,0,0,%A + 1,1,%A + 1],
-    [%A,1,%A + 1,%A + 1,%A + 1,1,%A,0],
-    [%A + 1,%A + 1,0,0,1,%A + 1,1,1],
-    [1,0,%A + 1,0,1,1,%A,%A],
-    [0,0,%A + 1,%A + 1,%A + 1,1,1,%A], [0,0,1,0,0,1,0,1],
-    [0,%A,0,%A,1,%A + 1,%A + 1,%A]]
-     ]
-                     Type: List Matrix FiniteField(2,2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty19}
-\begin{paste}{RepA6PageEmpty19}{RepA6PagePatch19}
-\pastebutton{RepA6PageEmpty19}{\showpaste}
-\tab{5}\spadcommand{sp3.1\free{sp3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch20}
-\begin{paste}{RepA6PageFull20}{RepA6PageEmpty20}
-\pastebutton{RepA6PageFull20}{\hidepaste}
-\tab{5}\spadcommand{sp3.2\free{sp3 }}
-\indentrel{3}\begin{verbatim}
-   (20)
-    Ú0     1       1     %A + 1  0  0  0  0¿
-    ³                                      ³
-    ³1     1     %A + 1    0     0  0  0  0³
-    ³                                      ³
-    ³%A    0       0       0     0  0  0  0³
-    ³                                      ³
-    ³1     %A      0       0     0  0  0  0³
-   [³                                      ³,
-    ³%A  %A + 1    1       1     1  0  1  1³
-    ³                                      ³
-    ³0     0       %A      1     0  1  0  1³
-    ³                                      ³
-    ³%A    1       0       1     1  1  0  0³
-    ³                                      ³
-    À1     %A    %A + 1    %A    0  1  0  0Ù
-
-   [[%A + 1,1,%A,0,0,%A + 1,0,1],
-    [0,%A,1,1,1,0,%A + 1,%A],
-    [0,%A + 1,0,%A + 1,%A + 1,1,%A + 1,%A],
-    [1,%A + 1,1,%A + 1,0,0,%A + 1,1],
-    [0,%A,0,%A + 1,%A + 1,0,0,%A + 1],
-    [%A + 1,0,%A + 1,%A,0,%A + 1,0,%A + 1],
-    [0,1,0,1,%A + 1,0,%A + 1,%A + 1],
-    [%A,%A,%A,1,%A,%A,1,%A + 1]]
-     ]
-                     Type: List Matrix FiniteField(2,2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty20}
-\begin{paste}{RepA6PageEmpty20}{RepA6PagePatch20}
-\pastebutton{RepA6PageEmpty20}{\showpaste}
-\tab{5}\spadcommand{sp3.2\free{sp3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RepA6PagePatch21}
-\begin{paste}{RepA6PageFull21}{RepA6PageEmpty21}
-\pastebutton{RepA6PageFull21}{\hidepaste}
-\tab{5}\spadcommand{dA6d16\free{dA6d16 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-    Ú0  0  0  0  1  0  1  1  0  0  0  0  0  0  0  0¿
-    ³                                              ³
-    ³0  0  0  0  0  1  0  1  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  1  1  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  1  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  1  0  1  1  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  0  1  0  1  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  1  1  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  0  1  0  0  0  0  0  0³
-   [³                                              ³,
-    ³1  0  1  1  0  0  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  1  0  1  0  0  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³1  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  1  0  0  0  0  0  0  0  0  0  0  0  0  0  0³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  0  0  0  0  1  0  1  1³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  1³
-    ³                                              ³
-    ³0  0  0  0  0  0  0  0  0  0  0  0  1  1  0  0³
-    ³                                              ³
-    À0  0  0  0  0  0  0  0  0  0  0  0  0  1  0  0Ù
-    Ú0  0  0  0  0  0  1  0  0  0  1  0  0  0  1  0¿
-    ³                                              ³
-    ³0  0  0  0  1  1  1  1  1  1  1  1  1  1  1  1³
-    ³                                              ³
-    ³0  0  0  0  1  0  1  1  1  0  1  1  1  0  1  1³
-    ³                                              ³
-    ³0  0  0  0  0  1  0  1  0  1  0  1  0  1  0  1³
-    ³                                              ³
-    ³0  0  1  0  0  0  1  0  0  0  0  0  0  0  1  0³
-    ³                                              ³
-    ³1  1  1  1  1  1  1  1  0  0  0  0  1  1  1  1³
-    ³                                              ³
-    ³1  0  1  1  1  0  1  1  0  0  0  0  1  0  1  1³
-    ³                                              ³
-    ³0  1  0  1  0  1  0  1  0  0  0  0  0  1  0  1³
-    ³                                              ³]
-    ³0  0  1  0  0  0  1  0  0  0  1  0  0  0  0  0³
-    ³                                              ³
-    ³1  1  1  1  1  1  1  1  1  1  1  1  0  0  0  0³
-    ³                                              ³
-    ³1  0  1  1  1  0  1  1  1  0  1  1  0  0  0  0³
-    ³                                              ³
-    ³0  1  0  1  0  1  0  1  0  1  0  1  0  0  0  0³
-    ³                                              ³
-    ³0  0  1  0  0  0  1  0  0  0  1  0  0  0  1  0³
-    ³                                              ³
-    ³1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1³
-    ³                                              ³
-    ³1  0  1  1  1  0  1  1  1  0  1  1  1  0  1  1³
-    ³                                              ³
-    À0  1  0  1  0  1  0  1  0  1  0  1  0  1  0  1Ù
-                         Type: List Matrix PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RepA6PageEmpty21}
-\begin{paste}{RepA6PageEmpty21}{RepA6PagePatch21}
-\pastebutton{RepA6PageEmpty21}{\showpaste}
-\tab{5}\spadcommand{dA6d16\free{dA6d16 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/gstbl.pht b/books/pages/gstbl.pht
deleted file mode 100644
index ff0b5cb..0000000
--- a/books/pages/gstbl.pht
+++ /dev/null
@@ -1,109 +0,0 @@
-\begin{patch}{GeneralSparseTableXmpPagePatch1}
-\begin{paste}{GeneralSparseTableXmpPageFull1}{GeneralSparseTableXmpPageEmpty1}
-\pastebutton{GeneralSparseTableXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ;\bound{patrons }}
-\indentrel{3}\begin{verbatim}
-Type: GeneralSparseTable(String,Integer,KeyedAccessFile Integer,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty1}
-\begin{paste}{GeneralSparseTableXmpPageEmpty1}{GeneralSparseTableXmpPagePatch1}
-\pastebutton{GeneralSparseTableXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ;\bound{patrons }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch2}
-\begin{paste}{GeneralSparseTableXmpPageFull2}{GeneralSparseTableXmpPageEmpty2}
-\pastebutton{GeneralSparseTableXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{patrons."Smith" := 10500\free{patrons }\bound{smith }}
-\indentrel{3}\begin{verbatim}
-   (2)  10500
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty2}
-\begin{paste}{GeneralSparseTableXmpPageEmpty2}{GeneralSparseTableXmpPagePatch2}
-\pastebutton{GeneralSparseTableXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{patrons."Smith" := 10500\free{patrons }\bound{smith }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch3}
-\begin{paste}{GeneralSparseTableXmpPageFull3}{GeneralSparseTableXmpPageEmpty3}
-\pastebutton{GeneralSparseTableXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{patrons."Jones" := 22000\free{smith }\bound{jones }}
-\indentrel{3}\begin{verbatim}
-   (3)  22000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty3}
-\begin{paste}{GeneralSparseTableXmpPageEmpty3}{GeneralSparseTableXmpPagePatch3}
-\pastebutton{GeneralSparseTableXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{patrons."Jones" := 22000\free{smith }\bound{jones }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch4}
-\begin{paste}{GeneralSparseTableXmpPageFull4}{GeneralSparseTableXmpPageEmpty4}
-\pastebutton{GeneralSparseTableXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{patrons."Jones"\free{jones }}
-\indentrel{3}\begin{verbatim}
-   (4)  22000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty4}
-\begin{paste}{GeneralSparseTableXmpPageEmpty4}{GeneralSparseTableXmpPagePatch4}
-\pastebutton{GeneralSparseTableXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{patrons."Jones"\free{jones }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch5}
-\begin{paste}{GeneralSparseTableXmpPageFull5}{GeneralSparseTableXmpPageEmpty5}
-\pastebutton{GeneralSparseTableXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{patrons."Stingy"\free{jones }}
-\indentrel{3}\begin{verbatim}
-   (5)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty5}
-\begin{paste}{GeneralSparseTableXmpPageEmpty5}{GeneralSparseTableXmpPagePatch5}
-\pastebutton{GeneralSparseTableXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{patrons."Stingy"\free{jones }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch6}
-\begin{paste}{GeneralSparseTableXmpPageFull6}{GeneralSparseTableXmpPageEmpty6}
-\pastebutton{GeneralSparseTableXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{reduce(+, entries patrons)\free{jones }}
-\indentrel{3}\begin{verbatim}
-   (6)  32500
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty6}
-\begin{paste}{GeneralSparseTableXmpPageEmpty6}{GeneralSparseTableXmpPagePatch6}
-\pastebutton{GeneralSparseTableXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{reduce(+, entries patrons)\free{jones }}
-\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPagePatch7}
-\begin{paste}{GeneralSparseTableXmpPageFull7}{GeneralSparseTableXmpPageEmpty7}
-\pastebutton{GeneralSparseTableXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{)system rm -r kaf*.sdata\free{patrons }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{GeneralSparseTableXmpPageEmpty7}
-\begin{paste}{GeneralSparseTableXmpPageEmpty7}{GeneralSparseTableXmpPagePatch7}
-\pastebutton{GeneralSparseTableXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{)system rm -r kaf*.sdata\free{patrons }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/heap.pht b/books/pages/heap.pht
deleted file mode 100644
index f7a9508..0000000
--- a/books/pages/heap.pht
+++ /dev/null
@@ -1,127 +0,0 @@
-\begin{patch}{HeapXmpPagePatch1}
-\begin{paste}{HeapXmpPageFull1}{HeapXmpPageEmpty1}
-\pastebutton{HeapXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{h := heap [-4,9,11,2,7,-7]\bound{h }}
-\indentrel{3}\begin{verbatim}
-   (1)  [11,7,9,- 4,2,- 7]
-                                     Type: Heap Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty1}
-\begin{paste}{HeapXmpPageEmpty1}{HeapXmpPagePatch1}
-\pastebutton{HeapXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{h := heap [-4,9,11,2,7,-7]\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch2}
-\begin{paste}{HeapXmpPageFull2}{HeapXmpPageEmpty2}
-\pastebutton{HeapXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{insert!(3,h)\bound{h1 }\free{h }}
-\indentrel{3}\begin{verbatim}
-   (2)  [11,7,9,- 4,2,- 7,3]
-                                     Type: Heap Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty2}
-\begin{paste}{HeapXmpPageEmpty2}{HeapXmpPagePatch2}
-\pastebutton{HeapXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{insert!(3,h)\bound{h1 }\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch3}
-\begin{paste}{HeapXmpPageFull3}{HeapXmpPageEmpty3}
-\pastebutton{HeapXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{extract! h\bound{h2 }\free{h1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  11
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty3}
-\begin{paste}{HeapXmpPageEmpty3}{HeapXmpPagePatch3}
-\pastebutton{HeapXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{extract! h\bound{h2 }\free{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch4}
-\begin{paste}{HeapXmpPageFull4}{HeapXmpPageEmpty4}
-\pastebutton{HeapXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{h\free{h2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [9,7,3,- 4,2,- 7]
-                                     Type: Heap Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty4}
-\begin{paste}{HeapXmpPageEmpty4}{HeapXmpPagePatch4}
-\pastebutton{HeapXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{h\free{h2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch5}
-\begin{paste}{HeapXmpPageFull5}{HeapXmpPageEmpty5}
-\pastebutton{HeapXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\bound{h2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [9,7,3,2,- 4,- 7]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty5}
-\begin{paste}{HeapXmpPageEmpty5}{HeapXmpPagePatch5}
-\pastebutton{HeapXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\bound{h2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch6}
-\begin{paste}{HeapXmpPageFull6}{HeapXmpPageEmpty6}
-\pastebutton{HeapXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{heapsort(x) == (empty? x => []; cons(extract!(x),heapsort x))\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty6}
-\begin{paste}{HeapXmpPageEmpty6}{HeapXmpPagePatch6}
-\pastebutton{HeapXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{heapsort(x) == (empty? x => []; cons(extract!(x),heapsort x))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch7}
-\begin{paste}{HeapXmpPageFull7}{HeapXmpPageEmpty7}
-\pastebutton{HeapXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{h1 := heap [17,-4,9,-11,2,7,-7]\bound{h1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [17,2,9,- 11,- 4,7,- 7]
-                                     Type: Heap Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty7}
-\begin{paste}{HeapXmpPageEmpty7}{HeapXmpPagePatch7}
-\pastebutton{HeapXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{h1 := heap [17,-4,9,-11,2,7,-7]\bound{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPagePatch8}
-\begin{paste}{HeapXmpPageFull8}{HeapXmpPageEmpty8}
-\pastebutton{HeapXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{heapsort h1\free{f }}
-\indentrel{3}\begin{verbatim}
-   (8)  [17,9,7,2,- 4,- 7,- 11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HeapXmpPageEmpty8}
-\begin{paste}{HeapXmpPageEmpty8}{HeapXmpPagePatch8}
-\pastebutton{HeapXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{heapsort h1\free{f }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/hexadec.pht b/books/pages/hexadec.pht
deleted file mode 100644
index 0998596..0000000
--- a/books/pages/hexadec.pht
+++ /dev/null
@@ -1,127 +0,0 @@
-\begin{patch}{HexadecimalExpansionXmpPagePatch1}
-\begin{paste}{HexadecimalExpansionXmpPageFull1}{HexadecimalExpansionXmpPageEmpty1}
-\pastebutton{HexadecimalExpansionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{r := hex(22/7)\bound{r }}
-\indentrel{3}\begin{verbatim}
-          ___
-   (1)  3.249
-                             Type: HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty1}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty1}{HexadecimalExpansionXmpPagePatch1}
-\pastebutton{HexadecimalExpansionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{r := hex(22/7)\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch2}
-\begin{paste}{HexadecimalExpansionXmpPageFull2}{HexadecimalExpansionXmpPageEmpty2}
-\pastebutton{HexadecimalExpansionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{r + hex(6/7)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (2)  4
-                             Type: HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty2}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty2}{HexadecimalExpansionXmpPagePatch2}
-\pastebutton{HexadecimalExpansionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{r + hex(6/7)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch3}
-\begin{paste}{HexadecimalExpansionXmpPageFull3}{HexadecimalExpansionXmpPageEmpty3}
-\pastebutton{HexadecimalExpansionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[hex(1/i) for i in 350..354]}
-\indentrel{3}\begin{verbatim}
-   (3)
-       _______________    _________      _____
-   [0.00BB3EE721A54D88, 0.00BAB6561, 0.00BA2E8,
-      ______________________
-    0.00B9A7862A0FF465879D5F,
-       _____________________________
-    0.00B92143FA36F5E02E4850FE8DBD78]
-                        Type: List HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty3}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty3}{HexadecimalExpansionXmpPagePatch3}
-\pastebutton{HexadecimalExpansionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[hex(1/i) for i in 350..354]}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch4}
-\begin{paste}{HexadecimalExpansionXmpPageFull4}{HexadecimalExpansionXmpPageEmpty4}
-\pastebutton{HexadecimalExpansionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{hex(1/1007)}
-\indentrel{3}\begin{verbatim}
-   (4)
-   0.
-     OVERBAR
-        0041149783F0BF2C7D13933192AF6980619EE345E91EC2BB9
-          D5CCA5C071E40926E54E8DDAE24196C0B2F8A0AAD60DBA5
-          7F5D4C8536262210C74F1
-                             Type: HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty4}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty4}{HexadecimalExpansionXmpPagePatch4}
-\pastebutton{HexadecimalExpansionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{hex(1/1007)}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch5}
-\begin{paste}{HexadecimalExpansionXmpPageFull5}{HexadecimalExpansionXmpPageEmpty5}
-\pastebutton{HexadecimalExpansionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)\bound{p }}
-\indentrel{3}\begin{verbatim}
-            2     _      ___
-   (5)  0.4x  + 0.Ax + 0.71C
-                  Type: Polynomial HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty5}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty5}{HexadecimalExpansionXmpPagePatch5}
-\pastebutton{HexadecimalExpansionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch6}
-\begin{paste}{HexadecimalExpansionXmpPageFull6}{HexadecimalExpansionXmpPageEmpty6}
-\pastebutton{HexadecimalExpansionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
-\indentrel{3}\begin{verbatim}
-                 _
-   (6)  0.8x + 0.A
-                  Type: Polynomial HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty6}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty6}{HexadecimalExpansionXmpPagePatch6}
-\pastebutton{HexadecimalExpansionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q := D(p, x)\free{p }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPagePatch7}
-\begin{paste}{HexadecimalExpansionXmpPageFull7}{HexadecimalExpansionXmpPageEmpty7}
-\pastebutton{HexadecimalExpansionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-              _
-   (7)  x + 1.5
-                  Type: Polynomial HexadecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{HexadecimalExpansionXmpPageEmpty7}
-\begin{paste}{HexadecimalExpansionXmpPageEmpty7}{HexadecimalExpansionXmpPagePatch7}
-\pastebutton{HexadecimalExpansionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g := gcd(p, q)\free{p }\free{q }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/int.pht b/books/pages/int.pht
deleted file mode 100644
index 4264dc2..0000000
--- a/books/pages/int.pht
+++ /dev/null
@@ -1,763 +0,0 @@
-\begin{patch}{ugxIntegerPrimesPagePatch1}
-\begin{paste}{ugxIntegerPrimesPageFull1}{ugxIntegerPrimesPageEmpty1}
-\pastebutton{ugxIntegerPrimesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{factor 102400}
-\indentrel{3}\begin{verbatim}
-         12 2
-   (1)  2  5
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty1}
-\begin{paste}{ugxIntegerPrimesPageEmpty1}{ugxIntegerPrimesPagePatch1}
-\pastebutton{ugxIntegerPrimesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{factor 102400}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch2}
-\begin{paste}{ugxIntegerPrimesPageFull2}{ugxIntegerPrimesPageEmpty2}
-\pastebutton{ugxIntegerPrimesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{prime? 7}
-\indentrel{3}\begin{verbatim}
-   (2)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty2}
-\begin{paste}{ugxIntegerPrimesPageEmpty2}{ugxIntegerPrimesPagePatch2}
-\pastebutton{ugxIntegerPrimesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{prime? 7}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch3}
-\begin{paste}{ugxIntegerPrimesPageFull3}{ugxIntegerPrimesPageEmpty3}
-\pastebutton{ugxIntegerPrimesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{prime? 8}
-\indentrel{3}\begin{verbatim}
-   (3)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty3}
-\begin{paste}{ugxIntegerPrimesPageEmpty3}{ugxIntegerPrimesPagePatch3}
-\pastebutton{ugxIntegerPrimesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{prime? 8}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch4}
-\begin{paste}{ugxIntegerPrimesPageFull4}{ugxIntegerPrimesPageEmpty4}
-\pastebutton{ugxIntegerPrimesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{nextPrime 100}
-\indentrel{3}\begin{verbatim}
-   (4)  101
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty4}
-\begin{paste}{ugxIntegerPrimesPageEmpty4}{ugxIntegerPrimesPagePatch4}
-\pastebutton{ugxIntegerPrimesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{nextPrime 100}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch5}
-\begin{paste}{ugxIntegerPrimesPageFull5}{ugxIntegerPrimesPageEmpty5}
-\pastebutton{ugxIntegerPrimesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{prevPrime 100}
-\indentrel{3}\begin{verbatim}
-   (5)  97
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty5}
-\begin{paste}{ugxIntegerPrimesPageEmpty5}{ugxIntegerPrimesPagePatch5}
-\pastebutton{ugxIntegerPrimesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{prevPrime 100}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch6}
-\begin{paste}{ugxIntegerPrimesPageFull6}{ugxIntegerPrimesPageEmpty6}
-\pastebutton{ugxIntegerPrimesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{primes(100,175)}
-\indentrel{3}\begin{verbatim}
-   (6)
-   [173, 167, 163, 157, 151, 149, 139, 137, 131, 127,
-    113, 109, 107, 103, 101]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty6}
-\begin{paste}{ugxIntegerPrimesPageEmpty6}{ugxIntegerPrimesPagePatch6}
-\pastebutton{ugxIntegerPrimesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{primes(100,175)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPagePatch7}
-\begin{paste}{ugxIntegerPrimesPageFull7}{ugxIntegerPrimesPageEmpty7}
-\pastebutton{ugxIntegerPrimesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factor(2 :: Complex Integer)}
-\indentrel{3}\begin{verbatim}
-                     2
-   (7)  - %i (1 + %i)
-                         Type: Factored Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerPrimesPageEmpty7}
-\begin{paste}{ugxIntegerPrimesPageEmpty7}{ugxIntegerPrimesPagePatch7}
-\pastebutton{ugxIntegerPrimesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factor(2 :: Complex Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch1}
-\begin{paste}{ugxIntegerNTPageFull1}{ugxIntegerNTPageEmpty1}
-\pastebutton{ugxIntegerNTPageFull1}{\hidepaste}
-\tab{5}\spadcommand{[fibonacci(k) for k in 0..]}
-\indentrel{3}\begin{verbatim}
-   (1)  [0,1,1,2,3,5,8,13,21,34,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty1}
-\begin{paste}{ugxIntegerNTPageEmpty1}{ugxIntegerNTPagePatch1}
-\pastebutton{ugxIntegerNTPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{[fibonacci(k) for k in 0..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch2}
-\begin{paste}{ugxIntegerNTPageFull2}{ugxIntegerNTPageEmpty2}
-\pastebutton{ugxIntegerNTPageFull2}{\hidepaste}
-\tab{5}\spadcommand{[legendre(i,11) for i in 0..10]}
-\indentrel{3}\begin{verbatim}
-   (2)  [0,1,- 1,1,1,1,- 1,- 1,- 1,1,- 1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty2}
-\begin{paste}{ugxIntegerNTPageEmpty2}{ugxIntegerNTPagePatch2}
-\pastebutton{ugxIntegerNTPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{[legendre(i,11) for i in 0..10]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch3}
-\begin{paste}{ugxIntegerNTPageFull3}{ugxIntegerNTPageEmpty3}
-\pastebutton{ugxIntegerNTPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[jacobi(i,15) for i in 0..9]}
-\indentrel{3}\begin{verbatim}
-   (3)  [0,1,1,0,1,0,0,- 1,1,0]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty3}
-\begin{paste}{ugxIntegerNTPageEmpty3}{ugxIntegerNTPagePatch3}
-\pastebutton{ugxIntegerNTPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[jacobi(i,15) for i in 0..9]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch4}
-\begin{paste}{ugxIntegerNTPageFull4}{ugxIntegerNTPageEmpty4}
-\pastebutton{ugxIntegerNTPageFull4}{\hidepaste}
-\tab{5}\spadcommand{[eulerPhi i for i in 1..]}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,1,2,2,4,2,6,4,6,4,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty4}
-\begin{paste}{ugxIntegerNTPageEmpty4}{ugxIntegerNTPagePatch4}
-\pastebutton{ugxIntegerNTPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{[eulerPhi i for i in 1..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch5}
-\begin{paste}{ugxIntegerNTPageFull5}{ugxIntegerNTPageEmpty5}
-\pastebutton{ugxIntegerNTPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[moebiusMu i for i in 1..]}
-\indentrel{3}\begin{verbatim}
-   (5)  [1,- 1,- 1,0,- 1,1,- 1,0,0,1,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty5}
-\begin{paste}{ugxIntegerNTPageEmpty5}{ugxIntegerNTPagePatch5}
-\pastebutton{ugxIntegerNTPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[moebiusMu i for i in 1..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch6}
-\begin{paste}{ugxIntegerNTPageFull6}{ugxIntegerNTPageEmpty6}
-\pastebutton{ugxIntegerNTPageFull6}{\hidepaste}
-\tab{5}\spadcommand{a := roman(78)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (6)  LXXVIII
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty6}
-\begin{paste}{ugxIntegerNTPageEmpty6}{ugxIntegerNTPagePatch6}
-\pastebutton{ugxIntegerNTPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{a := roman(78)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch7}
-\begin{paste}{ugxIntegerNTPageFull7}{ugxIntegerNTPageEmpty7}
-\pastebutton{ugxIntegerNTPageFull7}{\hidepaste}
-\tab{5}\spadcommand{b := roman(87)\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (7)  LXXXVII
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty7}
-\begin{paste}{ugxIntegerNTPageEmpty7}{ugxIntegerNTPagePatch7}
-\pastebutton{ugxIntegerNTPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{b := roman(87)\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch8}
-\begin{paste}{ugxIntegerNTPageFull8}{ugxIntegerNTPageEmpty8}
-\pastebutton{ugxIntegerNTPageFull8}{\hidepaste}
-\tab{5}\spadcommand{a + b\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (8)  CLXV
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty8}
-\begin{paste}{ugxIntegerNTPageEmpty8}{ugxIntegerNTPagePatch8}
-\pastebutton{ugxIntegerNTPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{a + b\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch9}
-\begin{paste}{ugxIntegerNTPageFull9}{ugxIntegerNTPageEmpty9}
-\pastebutton{ugxIntegerNTPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a * b\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (9)  MMMMMMDCCLXXXVI
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty9}
-\begin{paste}{ugxIntegerNTPageEmpty9}{ugxIntegerNTPagePatch9}
-\pastebutton{ugxIntegerNTPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a * b\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPagePatch10}
-\begin{paste}{ugxIntegerNTPageFull10}{ugxIntegerNTPageEmpty10}
-\pastebutton{ugxIntegerNTPageFull10}{\hidepaste}
-\tab{5}\spadcommand{b rem a\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (10)  IX
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerNTPageEmpty10}
-\begin{paste}{ugxIntegerNTPageEmpty10}{ugxIntegerNTPagePatch10}
-\pastebutton{ugxIntegerNTPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{b rem a\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch1}
-\begin{paste}{ugxIntegerBasicPageFull1}{ugxIntegerBasicPageEmpty1}
-\pastebutton{ugxIntegerBasicPageFull1}{\hidepaste}
-\tab{5}\spadcommand{2**(5678 - 4856 + 2 * 17)}
-\indentrel{3}\begin{verbatim}
-   (1)
-  480481077043500814718154092512592439123952613987168226_
-   34738556100880842000763082930863425270914120837430745_
-   72278211496076276922026433435687527334980249539302425_
-   42523045817764949544214392905306388478705146745768073_
-   877141698859815495632935288783334250628775936
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty1}
-\begin{paste}{ugxIntegerBasicPageEmpty1}{ugxIntegerBasicPagePatch1}
-\pastebutton{ugxIntegerBasicPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{2**(5678 - 4856 + 2 * 17)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch2}
-\begin{paste}{ugxIntegerBasicPageFull2}{ugxIntegerBasicPageEmpty2}
-\pastebutton{ugxIntegerBasicPageFull2}{\hidepaste}
-\tab{5}\spadcommand{x := -101\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (2)  - 101
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty2}
-\begin{paste}{ugxIntegerBasicPageEmpty2}{ugxIntegerBasicPagePatch2}
-\pastebutton{ugxIntegerBasicPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{x := -101\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch3}
-\begin{paste}{ugxIntegerBasicPageFull3}{ugxIntegerBasicPageEmpty3}
-\pastebutton{ugxIntegerBasicPageFull3}{\hidepaste}
-\tab{5}\spadcommand{abs(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (3)  101
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty3}
-\begin{paste}{ugxIntegerBasicPageEmpty3}{ugxIntegerBasicPagePatch3}
-\pastebutton{ugxIntegerBasicPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{abs(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch4}
-\begin{paste}{ugxIntegerBasicPageFull4}{ugxIntegerBasicPageEmpty4}
-\pastebutton{ugxIntegerBasicPageFull4}{\hidepaste}
-\tab{5}\spadcommand{sign(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (4)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty4}
-\begin{paste}{ugxIntegerBasicPageEmpty4}{ugxIntegerBasicPagePatch4}
-\pastebutton{ugxIntegerBasicPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sign(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch5}
-\begin{paste}{ugxIntegerBasicPageFull5}{ugxIntegerBasicPageEmpty5}
-\pastebutton{ugxIntegerBasicPageFull5}{\hidepaste}
-\tab{5}\spadcommand{x < 0\free{x }}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty5}
-\begin{paste}{ugxIntegerBasicPageEmpty5}{ugxIntegerBasicPagePatch5}
-\pastebutton{ugxIntegerBasicPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{x < 0\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch6}
-\begin{paste}{ugxIntegerBasicPageFull6}{ugxIntegerBasicPageEmpty6}
-\pastebutton{ugxIntegerBasicPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x <= -1\free{x }}
-\indentrel{3}\begin{verbatim}
-   (6)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty6}
-\begin{paste}{ugxIntegerBasicPageEmpty6}{ugxIntegerBasicPagePatch6}
-\pastebutton{ugxIntegerBasicPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x <= -1\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch7}
-\begin{paste}{ugxIntegerBasicPageFull7}{ugxIntegerBasicPageEmpty7}
-\pastebutton{ugxIntegerBasicPageFull7}{\hidepaste}
-\tab{5}\spadcommand{negative?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (7)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty7}
-\begin{paste}{ugxIntegerBasicPageEmpty7}{ugxIntegerBasicPagePatch7}
-\pastebutton{ugxIntegerBasicPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{negative?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch8}
-\begin{paste}{ugxIntegerBasicPageFull8}{ugxIntegerBasicPageEmpty8}
-\pastebutton{ugxIntegerBasicPageFull8}{\hidepaste}
-\tab{5}\spadcommand{x > 0\free{x }}
-\indentrel{3}\begin{verbatim}
-   (8)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty8}
-\begin{paste}{ugxIntegerBasicPageEmpty8}{ugxIntegerBasicPagePatch8}
-\pastebutton{ugxIntegerBasicPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{x > 0\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch9}
-\begin{paste}{ugxIntegerBasicPageFull9}{ugxIntegerBasicPageEmpty9}
-\pastebutton{ugxIntegerBasicPageFull9}{\hidepaste}
-\tab{5}\spadcommand{x >= 1\free{x }}
-\indentrel{3}\begin{verbatim}
-   (9)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty9}
-\begin{paste}{ugxIntegerBasicPageEmpty9}{ugxIntegerBasicPagePatch9}
-\pastebutton{ugxIntegerBasicPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{x >= 1\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch10}
-\begin{paste}{ugxIntegerBasicPageFull10}{ugxIntegerBasicPageEmpty10}
-\pastebutton{ugxIntegerBasicPageFull10}{\hidepaste}
-\tab{5}\spadcommand{positive?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (10)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty10}
-\begin{paste}{ugxIntegerBasicPageEmpty10}{ugxIntegerBasicPagePatch10}
-\pastebutton{ugxIntegerBasicPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{positive?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch11}
-\begin{paste}{ugxIntegerBasicPageFull11}{ugxIntegerBasicPageEmpty11}
-\pastebutton{ugxIntegerBasicPageFull11}{\hidepaste}
-\tab{5}\spadcommand{zero?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (11)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty11}
-\begin{paste}{ugxIntegerBasicPageEmpty11}{ugxIntegerBasicPagePatch11}
-\pastebutton{ugxIntegerBasicPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{zero?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch12}
-\begin{paste}{ugxIntegerBasicPageFull12}{ugxIntegerBasicPageEmpty12}
-\pastebutton{ugxIntegerBasicPageFull12}{\hidepaste}
-\tab{5}\spadcommand{one?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (12)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty12}
-\begin{paste}{ugxIntegerBasicPageEmpty12}{ugxIntegerBasicPagePatch12}
-\pastebutton{ugxIntegerBasicPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{one?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch13}
-\begin{paste}{ugxIntegerBasicPageFull13}{ugxIntegerBasicPageEmpty13}
-\pastebutton{ugxIntegerBasicPageFull13}{\hidepaste}
-\tab{5}\spadcommand{(x = -101)@Boolean\free{x }}
-\indentrel{3}\begin{verbatim}
-   (13)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty13}
-\begin{paste}{ugxIntegerBasicPageEmpty13}{ugxIntegerBasicPagePatch13}
-\pastebutton{ugxIntegerBasicPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{(x = -101)@Boolean\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch14}
-\begin{paste}{ugxIntegerBasicPageFull14}{ugxIntegerBasicPageEmpty14}
-\pastebutton{ugxIntegerBasicPageFull14}{\hidepaste}
-\tab{5}\spadcommand{odd?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (14)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty14}
-\begin{paste}{ugxIntegerBasicPageEmpty14}{ugxIntegerBasicPagePatch14}
-\pastebutton{ugxIntegerBasicPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{odd?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch15}
-\begin{paste}{ugxIntegerBasicPageFull15}{ugxIntegerBasicPageEmpty15}
-\pastebutton{ugxIntegerBasicPageFull15}{\hidepaste}
-\tab{5}\spadcommand{even?(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (15)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty15}
-\begin{paste}{ugxIntegerBasicPageEmpty15}{ugxIntegerBasicPagePatch15}
-\pastebutton{ugxIntegerBasicPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{even?(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch16}
-\begin{paste}{ugxIntegerBasicPageFull16}{ugxIntegerBasicPageEmpty16}
-\pastebutton{ugxIntegerBasicPageFull16}{\hidepaste}
-\tab{5}\spadcommand{gcd(56788,43688)}
-\indentrel{3}\begin{verbatim}
-   (16)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty16}
-\begin{paste}{ugxIntegerBasicPageEmpty16}{ugxIntegerBasicPagePatch16}
-\pastebutton{ugxIntegerBasicPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{gcd(56788,43688)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch17}
-\begin{paste}{ugxIntegerBasicPageFull17}{ugxIntegerBasicPageEmpty17}
-\pastebutton{ugxIntegerBasicPageFull17}{\hidepaste}
-\tab{5}\spadcommand{lcm(56788,43688)}
-\indentrel{3}\begin{verbatim}
-   (17)  620238536
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty17}
-\begin{paste}{ugxIntegerBasicPageEmpty17}{ugxIntegerBasicPagePatch17}
-\pastebutton{ugxIntegerBasicPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{lcm(56788,43688)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch18}
-\begin{paste}{ugxIntegerBasicPageFull18}{ugxIntegerBasicPageEmpty18}
-\pastebutton{ugxIntegerBasicPageFull18}{\hidepaste}
-\tab{5}\spadcommand{max(678,567)}
-\indentrel{3}\begin{verbatim}
-   (18)  678
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty18}
-\begin{paste}{ugxIntegerBasicPageEmpty18}{ugxIntegerBasicPagePatch18}
-\pastebutton{ugxIntegerBasicPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{max(678,567)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch19}
-\begin{paste}{ugxIntegerBasicPageFull19}{ugxIntegerBasicPageEmpty19}
-\pastebutton{ugxIntegerBasicPageFull19}{\hidepaste}
-\tab{5}\spadcommand{min(678,567)}
-\indentrel{3}\begin{verbatim}
-   (19)  567
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty19}
-\begin{paste}{ugxIntegerBasicPageEmpty19}{ugxIntegerBasicPagePatch19}
-\pastebutton{ugxIntegerBasicPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{min(678,567)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch20}
-\begin{paste}{ugxIntegerBasicPageFull20}{ugxIntegerBasicPageEmpty20}
-\pastebutton{ugxIntegerBasicPageFull20}{\hidepaste}
-\tab{5}\spadcommand{reduce(max,[2,45,-89,78,100,-45])}
-\indentrel{3}\begin{verbatim}
-   (20)  100
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty20}
-\begin{paste}{ugxIntegerBasicPageEmpty20}{ugxIntegerBasicPagePatch20}
-\pastebutton{ugxIntegerBasicPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{reduce(max,[2,45,-89,78,100,-45])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch21}
-\begin{paste}{ugxIntegerBasicPageFull21}{ugxIntegerBasicPageEmpty21}
-\pastebutton{ugxIntegerBasicPageFull21}{\hidepaste}
-\tab{5}\spadcommand{reduce(min,[2,45,-89,78,100,-45])}
-\indentrel{3}\begin{verbatim}
-   (21)  - 89
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty21}
-\begin{paste}{ugxIntegerBasicPageEmpty21}{ugxIntegerBasicPagePatch21}
-\pastebutton{ugxIntegerBasicPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{reduce(min,[2,45,-89,78,100,-45])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch22}
-\begin{paste}{ugxIntegerBasicPageFull22}{ugxIntegerBasicPageEmpty22}
-\pastebutton{ugxIntegerBasicPageFull22}{\hidepaste}
-\tab{5}\spadcommand{reduce(gcd,[2,45,-89,78,100,-45])}
-\indentrel{3}\begin{verbatim}
-   (22)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty22}
-\begin{paste}{ugxIntegerBasicPageEmpty22}{ugxIntegerBasicPagePatch22}
-\pastebutton{ugxIntegerBasicPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{reduce(gcd,[2,45,-89,78,100,-45])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch23}
-\begin{paste}{ugxIntegerBasicPageFull23}{ugxIntegerBasicPageEmpty23}
-\pastebutton{ugxIntegerBasicPageFull23}{\hidepaste}
-\tab{5}\spadcommand{reduce(lcm,[2,45,-89,78,100,-45])}
-\indentrel{3}\begin{verbatim}
-   (23)  1041300
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty23}
-\begin{paste}{ugxIntegerBasicPageEmpty23}{ugxIntegerBasicPagePatch23}
-\pastebutton{ugxIntegerBasicPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{reduce(lcm,[2,45,-89,78,100,-45])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch24}
-\begin{paste}{ugxIntegerBasicPageFull24}{ugxIntegerBasicPageEmpty24}
-\pastebutton{ugxIntegerBasicPageFull24}{\hidepaste}
-\tab{5}\spadcommand{13 / 4}
-\indentrel{3}\begin{verbatim}
-         13
-   (24)  ÄÄ
-          4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty24}
-\begin{paste}{ugxIntegerBasicPageEmpty24}{ugxIntegerBasicPagePatch24}
-\pastebutton{ugxIntegerBasicPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{13 / 4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch25}
-\begin{paste}{ugxIntegerBasicPageFull25}{ugxIntegerBasicPageEmpty25}
-\pastebutton{ugxIntegerBasicPageFull25}{\hidepaste}
-\tab{5}\spadcommand{13 quo 4}
-\indentrel{3}\begin{verbatim}
-   (25)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty25}
-\begin{paste}{ugxIntegerBasicPageEmpty25}{ugxIntegerBasicPagePatch25}
-\pastebutton{ugxIntegerBasicPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{13 quo 4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch26}
-\begin{paste}{ugxIntegerBasicPageFull26}{ugxIntegerBasicPageEmpty26}
-\pastebutton{ugxIntegerBasicPageFull26}{\hidepaste}
-\tab{5}\spadcommand{13 rem 4}
-\indentrel{3}\begin{verbatim}
-   (26)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty26}
-\begin{paste}{ugxIntegerBasicPageEmpty26}{ugxIntegerBasicPagePatch26}
-\pastebutton{ugxIntegerBasicPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{13 rem 4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch27}
-\begin{paste}{ugxIntegerBasicPageFull27}{ugxIntegerBasicPageEmpty27}
-\pastebutton{ugxIntegerBasicPageFull27}{\hidepaste}
-\tab{5}\spadcommand{zero?(167604736446952 rem 2003644)}
-\indentrel{3}\begin{verbatim}
-   (27)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty27}
-\begin{paste}{ugxIntegerBasicPageEmpty27}{ugxIntegerBasicPagePatch27}
-\pastebutton{ugxIntegerBasicPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{zero?(167604736446952 rem 2003644)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch28}
-\begin{paste}{ugxIntegerBasicPageFull28}{ugxIntegerBasicPageEmpty28}
-\pastebutton{ugxIntegerBasicPageFull28}{\hidepaste}
-\tab{5}\spadcommand{d := divide(13,4)\bound{d }}
-\indentrel{3}\begin{verbatim}
-   (28)  [quotient= 3,remainder= 1]
-     Type: Record(quotient: Integer,remainder: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty28}
-\begin{paste}{ugxIntegerBasicPageEmpty28}{ugxIntegerBasicPagePatch28}
-\pastebutton{ugxIntegerBasicPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{d := divide(13,4)\bound{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch29}
-\begin{paste}{ugxIntegerBasicPageFull29}{ugxIntegerBasicPageEmpty29}
-\pastebutton{ugxIntegerBasicPageFull29}{\hidepaste}
-\tab{5}\spadcommand{d.quotient\free{d }}
-\indentrel{3}\begin{verbatim}
-   (29)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty29}
-\begin{paste}{ugxIntegerBasicPageEmpty29}{ugxIntegerBasicPagePatch29}
-\pastebutton{ugxIntegerBasicPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{d.quotient\free{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPagePatch30}
-\begin{paste}{ugxIntegerBasicPageFull30}{ugxIntegerBasicPageEmpty30}
-\pastebutton{ugxIntegerBasicPageFull30}{\hidepaste}
-\tab{5}\spadcommand{d.remainder\free{d }}
-\indentrel{3}\begin{verbatim}
-   (30)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxIntegerBasicPageEmpty30}
-\begin{paste}{ugxIntegerBasicPageEmpty30}{ugxIntegerBasicPagePatch30}
-\pastebutton{ugxIntegerBasicPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{d.remainder\free{d }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/intheory.pht b/books/pages/intheory.pht
deleted file mode 100644
index 7456ecb..0000000
--- a/books/pages/intheory.pht
+++ /dev/null
@@ -1,348 +0,0 @@
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch1}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull1}{IntegerNumberTheoryFunctionsXmpPageEmpty1}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{div144 := divisors(144)\bound{div144 }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3,4,6,8,9,12,16,18,24,36,48,72,144]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty1}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty1}{IntegerNumberTheoryFunctionsXmpPagePatch1}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{div144 := divisors(144)\bound{div144 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch2}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull2}{IntegerNumberTheoryFunctionsXmpPageEmpty2}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{\#(div144)\free{div144 }}
-\indentrel{3}\begin{verbatim}
-   (2)  15
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty2}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty2}{IntegerNumberTheoryFunctionsXmpPagePatch2}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{\#(div144)\free{div144 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch3}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull3}{IntegerNumberTheoryFunctionsXmpPageEmpty3}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,div144)\free{div144 }}
-\indentrel{3}\begin{verbatim}
-   (3)  403
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty3}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty3}{IntegerNumberTheoryFunctionsXmpPagePatch3}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{reduce(+,div144)\free{div144 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch4}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull4}{IntegerNumberTheoryFunctionsXmpPageEmpty4}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{numberOfDivisors(144)}
-\indentrel{3}\begin{verbatim}
-   (4)  15
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty4}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty4}{IntegerNumberTheoryFunctionsXmpPagePatch4}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{numberOfDivisors(144)}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch5}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull5}{IntegerNumberTheoryFunctionsXmpPageEmpty5}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{sumOfDivisors(144)}
-\indentrel{3}\begin{verbatim}
-   (5)  403
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty5}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty5}{IntegerNumberTheoryFunctionsXmpPagePatch5}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sumOfDivisors(144)}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch6}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull6}{IntegerNumberTheoryFunctionsXmpPageEmpty6}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty6}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty6}{IntegerNumberTheoryFunctionsXmpPagePatch6}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{f1(n) == reduce(+,[moebiusMu(d) * numberOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch7}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull7}{IntegerNumberTheoryFunctionsXmpPageEmpty7}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{f1(200)\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty7}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty7}{IntegerNumberTheoryFunctionsXmpPagePatch7}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f1(200)\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch8}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull8}{IntegerNumberTheoryFunctionsXmpPageEmpty8}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f1(846)\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (8)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty8}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty8}{IntegerNumberTheoryFunctionsXmpPagePatch8}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f1(846)\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch9}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull9}{IntegerNumberTheoryFunctionsXmpPageEmpty9}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty9}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty9}{IntegerNumberTheoryFunctionsXmpPagePatch9}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f2(n) == reduce(+,[moebiusMu(d) * sumOfDivisors(quo(n,d)) for d in divisors(n)])\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch10}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull10}{IntegerNumberTheoryFunctionsXmpPageEmpty10}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{f2(200)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (10)  200
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty10}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty10}{IntegerNumberTheoryFunctionsXmpPagePatch10}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{f2(200)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch11}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull11}{IntegerNumberTheoryFunctionsXmpPageEmpty11}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{f2(846)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (11)  846
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty11}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty11}{IntegerNumberTheoryFunctionsXmpPagePatch11}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{f2(846)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch12}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull12}{IntegerNumberTheoryFunctionsXmpPageEmpty12}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{fibonacci(25)}
-\indentrel{3}\begin{verbatim}
-   (12)  75025
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty12}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty12}{IntegerNumberTheoryFunctionsXmpPagePatch12}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{fibonacci(25)}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch13}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull13}{IntegerNumberTheoryFunctionsXmpPageEmpty13}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{[fibonacci(n) for n in 1..15]}
-\indentrel{3}\begin{verbatim}
-   (13)  [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty13}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty13}{IntegerNumberTheoryFunctionsXmpPagePatch13}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{[fibonacci(n) for n in 1..15]}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch14}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull14}{IntegerNumberTheoryFunctionsXmpPageEmpty14}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)])\bound{fib }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty14}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty14}{IntegerNumberTheoryFunctionsXmpPagePatch14}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{fib(n) == reduce(+,[binomial(n-1-k,k) for k in 0..quo(n-1,2)])\bound{fib }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch15}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull15}{IntegerNumberTheoryFunctionsXmpPageEmpty15}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{fib(25)\free{fib }}
-\indentrel{3}\begin{verbatim}
-   (15)  75025
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty15}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty15}{IntegerNumberTheoryFunctionsXmpPagePatch15}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{fib(25)\free{fib }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch16}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull16}{IntegerNumberTheoryFunctionsXmpPageEmpty16}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{[fib(n) for n in 1..15]\free{fib }}
-\indentrel{3}\begin{verbatim}
-   (16)  [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty16}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty16}{IntegerNumberTheoryFunctionsXmpPagePatch16}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[fib(n) for n in 1..15]\free{fib }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch17}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull17}{IntegerNumberTheoryFunctionsXmpPageEmpty17}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{legendre(3,5)}
-\indentrel{3}\begin{verbatim}
-   (17)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty17}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty17}{IntegerNumberTheoryFunctionsXmpPagePatch17}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{legendre(3,5)}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch18}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull18}{IntegerNumberTheoryFunctionsXmpPageEmpty18}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{legendre(23,691)}
-\indentrel{3}\begin{verbatim}
-   (18)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty18}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty18}{IntegerNumberTheoryFunctionsXmpPagePatch18}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{legendre(23,691)}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch19}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull19}{IntegerNumberTheoryFunctionsXmpPageEmpty19}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2))\bound{h }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty19}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty19}{IntegerNumberTheoryFunctionsXmpPagePatch19}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{h(d) == quo(reduce(+, [jacobi(d,k) for k in 1..quo(-d, 2)]), 2 - jacobi(d,2))\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch20}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull20}{IntegerNumberTheoryFunctionsXmpPageEmpty20}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{h(-163)\free{h }}
-\indentrel{3}\begin{verbatim}
-   (20)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty20}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty20}{IntegerNumberTheoryFunctionsXmpPagePatch20}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{h(-163)\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch21}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull21}{IntegerNumberTheoryFunctionsXmpPageEmpty21}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{h(-499)\free{h }}
-\indentrel{3}\begin{verbatim}
-   (21)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty21}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty21}{IntegerNumberTheoryFunctionsXmpPagePatch21}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{h(-499)\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPagePatch22}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageFull22}{IntegerNumberTheoryFunctionsXmpPageEmpty22}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{h(-1832)\free{h }}
-\indentrel{3}\begin{verbatim}
-   (22)  26
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerNumberTheoryFunctionsXmpPageEmpty22}
-\begin{paste}{IntegerNumberTheoryFunctionsXmpPageEmpty22}{IntegerNumberTheoryFunctionsXmpPagePatch22}
-\pastebutton{IntegerNumberTheoryFunctionsXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{h(-1832)\free{h }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/kafile.pht b/books/pages/kafile.pht
deleted file mode 100644
index ea8d923..0000000
--- a/books/pages/kafile.pht
+++ /dev/null
@@ -1,335 +0,0 @@
-\begin{patch}{KeyedAccessFileXmpPagePatch1}
-\begin{paste}{KeyedAccessFileXmpPageFull1}{KeyedAccessFileXmpPageEmpty1}
-\pastebutton{KeyedAccessFileXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")\bound{ey }}
-\indentrel{3}\begin{verbatim}
-   (1)  "/tmp/editor.year"
-                          Type: KeyedAccessFile Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty1}
-\begin{paste}{KeyedAccessFileXmpPageEmpty1}{KeyedAccessFileXmpPagePatch1}
-\pastebutton{KeyedAccessFileXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ey: KeyedAccessFile(Integer) := open("/tmp/editor.year", "output")\bound{ey }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch2}
-\begin{paste}{KeyedAccessFileXmpPageFull2}{KeyedAccessFileXmpPageEmpty2}
-\pastebutton{KeyedAccessFileXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ey."Char" := 1986\free{ey }\bound{eya }}
-\indentrel{3}\begin{verbatim}
-   (2)  1986
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty2}
-\begin{paste}{KeyedAccessFileXmpPageEmpty2}{KeyedAccessFileXmpPagePatch2}
-\pastebutton{KeyedAccessFileXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ey."Char" := 1986\free{ey }\bound{eya }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch3}
-\begin{paste}{KeyedAccessFileXmpPageFull3}{KeyedAccessFileXmpPageEmpty3}
-\pastebutton{KeyedAccessFileXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{ey."Caviness" := 1985\free{ey }\bound{eyb }}
-\indentrel{3}\begin{verbatim}
-   (3)  1985
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty3}
-\begin{paste}{KeyedAccessFileXmpPageEmpty3}{KeyedAccessFileXmpPagePatch3}
-\pastebutton{KeyedAccessFileXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{ey."Caviness" := 1985\free{ey }\bound{eyb }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch4}
-\begin{paste}{KeyedAccessFileXmpPageFull4}{KeyedAccessFileXmpPageEmpty4}
-\pastebutton{KeyedAccessFileXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{ey."Fitch" := 1984\free{ey }\bound{eyc }}
-\indentrel{3}\begin{verbatim}
-   (4)  1984
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty4}
-\begin{paste}{KeyedAccessFileXmpPageEmpty4}{KeyedAccessFileXmpPagePatch4}
-\pastebutton{KeyedAccessFileXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{ey."Fitch" := 1984\free{ey }\bound{eyc }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch5}
-\begin{paste}{KeyedAccessFileXmpPageFull5}{KeyedAccessFileXmpPageEmpty5}
-\pastebutton{KeyedAccessFileXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{ey."Char"\free{eya }}
-\indentrel{3}\begin{verbatim}
-   (5)  1986
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty5}
-\begin{paste}{KeyedAccessFileXmpPageEmpty5}{KeyedAccessFileXmpPagePatch5}
-\pastebutton{KeyedAccessFileXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{ey."Char"\free{eya }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch6}
-\begin{paste}{KeyedAccessFileXmpPageFull6}{KeyedAccessFileXmpPageEmpty6}
-\pastebutton{KeyedAccessFileXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{ey("Char")\free{eya }}
-\indentrel{3}\begin{verbatim}
-   (6)  1986
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty6}
-\begin{paste}{KeyedAccessFileXmpPageEmpty6}{KeyedAccessFileXmpPagePatch6}
-\pastebutton{KeyedAccessFileXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{ey("Char")\free{eya }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch7}
-\begin{paste}{KeyedAccessFileXmpPageFull7}{KeyedAccessFileXmpPageEmpty7}
-\pastebutton{KeyedAccessFileXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{ey "Char"\free{eya }}
-\indentrel{3}\begin{verbatim}
-   (7)  1986
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty7}
-\begin{paste}{KeyedAccessFileXmpPageEmpty7}{KeyedAccessFileXmpPagePatch7}
-\pastebutton{KeyedAccessFileXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{ey "Char"\free{eya }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch8}
-\begin{paste}{KeyedAccessFileXmpPageFull8}{KeyedAccessFileXmpPageEmpty8}
-\pastebutton{KeyedAccessFileXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{search("Char", ey)\free{eya eyb eyc }\bound{eyaa }}
-\indentrel{3}\begin{verbatim}
-   (8)  1986
-                               Type: Union(Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty8}
-\begin{paste}{KeyedAccessFileXmpPageEmpty8}{KeyedAccessFileXmpPagePatch8}
-\pastebutton{KeyedAccessFileXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{search("Char", ey)\free{eya eyb eyc }\bound{eyaa }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch9}
-\begin{paste}{KeyedAccessFileXmpPageFull9}{KeyedAccessFileXmpPageEmpty9}
-\pastebutton{KeyedAccessFileXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{search("Smith", ey)\free{eyaa }}
-\indentrel{3}\begin{verbatim}
-   (9)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty9}
-\begin{paste}{KeyedAccessFileXmpPageEmpty9}{KeyedAccessFileXmpPagePatch9}
-\pastebutton{KeyedAccessFileXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{search("Smith", ey)\free{eyaa }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch10}
-\begin{paste}{KeyedAccessFileXmpPageFull10}{KeyedAccessFileXmpPageEmpty10}
-\pastebutton{KeyedAccessFileXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{remove!("Char", ey)\free{eyaa }\bound{eybb }}
-\indentrel{3}\begin{verbatim}
-   (10)  1986
-                               Type: Union(Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty10}
-\begin{paste}{KeyedAccessFileXmpPageEmpty10}{KeyedAccessFileXmpPagePatch10}
-\pastebutton{KeyedAccessFileXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{remove!("Char", ey)\free{eyaa }\bound{eybb }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch11}
-\begin{paste}{KeyedAccessFileXmpPageFull11}{KeyedAccessFileXmpPageEmpty11}
-\pastebutton{KeyedAccessFileXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{keys ey\free{eybb }}
-\indentrel{3}\begin{verbatim}
-   (11)  ["Fitch","Caviness"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty11}
-\begin{paste}{KeyedAccessFileXmpPageEmpty11}{KeyedAccessFileXmpPagePatch11}
-\pastebutton{KeyedAccessFileXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{keys ey\free{eybb }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch12}
-\begin{paste}{KeyedAccessFileXmpPageFull12}{KeyedAccessFileXmpPageEmpty12}
-\pastebutton{KeyedAccessFileXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{\#ey\free{eybb }}
-\indentrel{3}\begin{verbatim}
-   (12)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty12}
-\begin{paste}{KeyedAccessFileXmpPageEmpty12}{KeyedAccessFileXmpPagePatch12}
-\pastebutton{KeyedAccessFileXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{\#ey\free{eybb }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch13}
-\begin{paste}{KeyedAccessFileXmpPageFull13}{KeyedAccessFileXmpPageEmpty13}
-\pastebutton{KeyedAccessFileXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{KE := Record(key: String, entry: Integer)\bound{KE }}
-\indentrel{3}\begin{verbatim}
-   (13)  Record(key: String,entry: Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty13}
-\begin{paste}{KeyedAccessFileXmpPageEmpty13}{KeyedAccessFileXmpPagePatch13}
-\pastebutton{KeyedAccessFileXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{KE := Record(key: String, entry: Integer)\bound{KE }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch14}
-\begin{paste}{KeyedAccessFileXmpPageFull14}{KeyedAccessFileXmpPageEmpty14}
-\pastebutton{KeyedAccessFileXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{reopen!(ey, "output")\free{eybb KE }\bound{eycc }}
-\indentrel{3}\begin{verbatim}
-   (14)  "/tmp/editor.year"
-                          Type: KeyedAccessFile Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty14}
-\begin{paste}{KeyedAccessFileXmpPageEmpty14}{KeyedAccessFileXmpPagePatch14}
-\pastebutton{KeyedAccessFileXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{reopen!(ey, "output")\free{eybb KE }\bound{eycc }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch15}
-\begin{paste}{KeyedAccessFileXmpPageFull15}{KeyedAccessFileXmpPageEmpty15}
-\pastebutton{KeyedAccessFileXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{write!(ey, ["van Hulzen", 1983]$KE)\bound{eyccA }\free{eycc }}
-\indentrel{3}\begin{verbatim}
-   (15)  [key= "van Hulzen",entry= 1983]
-               Type: Record(key: String,entry: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty15}
-\begin{paste}{KeyedAccessFileXmpPageEmpty15}{KeyedAccessFileXmpPagePatch15}
-\pastebutton{KeyedAccessFileXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{write!(ey, ["van Hulzen", 1983]$KE)\bound{eyccA }\free{eycc }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch16}
-\begin{paste}{KeyedAccessFileXmpPageFull16}{KeyedAccessFileXmpPageEmpty16}
-\pastebutton{KeyedAccessFileXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{write!(ey, ["Calmet", 1982]$KE)\bound{eyccB }\free{eycc }}
-\indentrel{3}\begin{verbatim}
-   (16)  [key= "Calmet",entry= 1982]
-               Type: Record(key: String,entry: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty16}
-\begin{paste}{KeyedAccessFileXmpPageEmpty16}{KeyedAccessFileXmpPagePatch16}
-\pastebutton{KeyedAccessFileXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{write!(ey, ["Calmet", 1982]$KE)\bound{eyccB }\free{eycc }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch17}
-\begin{paste}{KeyedAccessFileXmpPageFull17}{KeyedAccessFileXmpPageEmpty17}
-\pastebutton{KeyedAccessFileXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{write!(ey, ["Wang", 1981]$KE)\bound{eyccC }\free{eycc }}
-\indentrel{3}\begin{verbatim}
-   (17)  [key= "Wang",entry= 1981]
-               Type: Record(key: String,entry: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty17}
-\begin{paste}{KeyedAccessFileXmpPageEmpty17}{KeyedAccessFileXmpPagePatch17}
-\pastebutton{KeyedAccessFileXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{write!(ey, ["Wang", 1981]$KE)\bound{eyccC }\free{eycc }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch18}
-\begin{paste}{KeyedAccessFileXmpPageFull18}{KeyedAccessFileXmpPageEmpty18}
-\pastebutton{KeyedAccessFileXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{close! ey\free{eyccA eyccB eyccC }\bound{eydd }}
-\indentrel{3}\begin{verbatim}
-   (18)  "/tmp/editor.year"
-                          Type: KeyedAccessFile Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty18}
-\begin{paste}{KeyedAccessFileXmpPageEmpty18}{KeyedAccessFileXmpPagePatch18}
-\pastebutton{KeyedAccessFileXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{close! ey\free{eyccA eyccB eyccC }\bound{eydd }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch19}
-\begin{paste}{KeyedAccessFileXmpPageFull19}{KeyedAccessFileXmpPageEmpty19}
-\pastebutton{KeyedAccessFileXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{keys ey\free{eydd }}
-\indentrel{3}\begin{verbatim}
-   (19)
-   ["Wang","Calmet","van Hulzen","Fitch","Caviness"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty19}
-\begin{paste}{KeyedAccessFileXmpPageEmpty19}{KeyedAccessFileXmpPagePatch19}
-\pastebutton{KeyedAccessFileXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{keys ey\free{eydd }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch20}
-\begin{paste}{KeyedAccessFileXmpPageFull20}{KeyedAccessFileXmpPageEmpty20}
-\pastebutton{KeyedAccessFileXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{members ey\free{eydd }}
-\indentrel{3}\begin{verbatim}
-   (20)  [1981,1982,1983,1984,1985]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty20}
-\begin{paste}{KeyedAccessFileXmpPageEmpty20}{KeyedAccessFileXmpPagePatch20}
-\pastebutton{KeyedAccessFileXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{members ey\free{eydd }}
-\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPagePatch21}
-\begin{paste}{KeyedAccessFileXmpPageFull21}{KeyedAccessFileXmpPageEmpty21}
-\pastebutton{KeyedAccessFileXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{)system rm -r /tmp/editor.year\free{ey }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KeyedAccessFileXmpPageEmpty21}
-\begin{paste}{KeyedAccessFileXmpPageEmpty21}{KeyedAccessFileXmpPagePatch21}
-\pastebutton{KeyedAccessFileXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{)system rm -r /tmp/editor.year\free{ey }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/kernel.pht b/books/pages/kernel.pht
deleted file mode 100644
index c005dd6..0000000
--- a/books/pages/kernel.pht
+++ /dev/null
@@ -1,305 +0,0 @@
-\begin{patch}{KernelXmpPagePatch1}
-\begin{paste}{KernelXmpPageFull1}{KernelXmpPageEmpty1}
-\pastebutton{KernelXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x :: Expression Integer}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty1}
-\begin{paste}{KernelXmpPageEmpty1}{KernelXmpPagePatch1}
-\pastebutton{KernelXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x :: Expression Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch2}
-\begin{paste}{KernelXmpPageFull2}{KernelXmpPageEmpty2}
-\pastebutton{KernelXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{kernel x}
-\indentrel{3}\begin{verbatim}
-   (2)  x
-                        Type: Kernel Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty2}
-\begin{paste}{KernelXmpPageEmpty2}{KernelXmpPagePatch2}
-\pastebutton{KernelXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{kernel x}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch3}
-\begin{paste}{KernelXmpPageFull3}{KernelXmpPageEmpty3}
-\pastebutton{KernelXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sin(x) + cos(x)\bound{sincos }}
-\indentrel{3}\begin{verbatim}
-   (3)  sin(x) + cos(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty3}
-\begin{paste}{KernelXmpPageEmpty3}{KernelXmpPagePatch3}
-\pastebutton{KernelXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sin(x) + cos(x)\bound{sincos }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch4}
-\begin{paste}{KernelXmpPageFull4}{KernelXmpPageEmpty4}
-\pastebutton{KernelXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{kernels \%\free{sincos }}
-\indentrel{3}\begin{verbatim}
-   (4)  [sin(x),cos(x)]
-                   Type: List Kernel Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty4}
-\begin{paste}{KernelXmpPageEmpty4}{KernelXmpPagePatch4}
-\pastebutton{KernelXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{kernels \%\free{sincos }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch5}
-\begin{paste}{KernelXmpPageFull5}{KernelXmpPageEmpty5}
-\pastebutton{KernelXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{sin(x)**2 + sin(x) + cos(x)\bound{sincos2 }}
-\indentrel{3}\begin{verbatim}
-              2
-   (5)  sin(x)  + sin(x) + cos(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty5}
-\begin{paste}{KernelXmpPageEmpty5}{KernelXmpPagePatch5}
-\pastebutton{KernelXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sin(x)**2 + sin(x) + cos(x)\bound{sincos2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch6}
-\begin{paste}{KernelXmpPageFull6}{KernelXmpPageEmpty6}
-\pastebutton{KernelXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{kernels \%\free{sincos2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [sin(x),cos(x)]
-                   Type: List Kernel Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty6}
-\begin{paste}{KernelXmpPageEmpty6}{KernelXmpPagePatch6}
-\pastebutton{KernelXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{kernels \%\free{sincos2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch7}
-\begin{paste}{KernelXmpPageFull7}{KernelXmpPageEmpty7}
-\pastebutton{KernelXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{kernels(1 :: Expression Integer)}
-\indentrel{3}\begin{verbatim}
-   (7)  []
-                   Type: List Kernel Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty7}
-\begin{paste}{KernelXmpPageEmpty7}{KernelXmpPagePatch7}
-\pastebutton{KernelXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{kernels(1 :: Expression Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch8}
-\begin{paste}{KernelXmpPageFull8}{KernelXmpPageEmpty8}
-\pastebutton{KernelXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{mainKernel(cos(x) + tan(x))}
-\indentrel{3}\begin{verbatim}
-   (8)  tan(x)
-             Type: Union(Kernel Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty8}
-\begin{paste}{KernelXmpPageEmpty8}{KernelXmpPagePatch8}
-\pastebutton{KernelXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{mainKernel(cos(x) + tan(x))}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch9}
-\begin{paste}{KernelXmpPageFull9}{KernelXmpPageEmpty9}
-\pastebutton{KernelXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{height kernel x}
-\indentrel{3}\begin{verbatim}
-   (9)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty9}
-\begin{paste}{KernelXmpPageEmpty9}{KernelXmpPagePatch9}
-\pastebutton{KernelXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{height kernel x}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch10}
-\begin{paste}{KernelXmpPageFull10}{KernelXmpPageEmpty10}
-\pastebutton{KernelXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{height mainKernel(sin x)}
-\indentrel{3}\begin{verbatim}
-   (10)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty10}
-\begin{paste}{KernelXmpPageEmpty10}{KernelXmpPagePatch10}
-\pastebutton{KernelXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{height mainKernel(sin x)}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch11}
-\begin{paste}{KernelXmpPageFull11}{KernelXmpPageEmpty11}
-\pastebutton{KernelXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{height mainKernel(sin cos x)}
-\indentrel{3}\begin{verbatim}
-   (11)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty11}
-\begin{paste}{KernelXmpPageEmpty11}{KernelXmpPagePatch11}
-\pastebutton{KernelXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{height mainKernel(sin cos x)}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch12}
-\begin{paste}{KernelXmpPageFull12}{KernelXmpPageEmpty12}
-\pastebutton{KernelXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{height mainKernel(sin cos (tan x + sin x))}
-\indentrel{3}\begin{verbatim}
-   (12)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty12}
-\begin{paste}{KernelXmpPageEmpty12}{KernelXmpPagePatch12}
-\pastebutton{KernelXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{height mainKernel(sin cos (tan x + sin x))}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch13}
-\begin{paste}{KernelXmpPageFull13}{KernelXmpPageEmpty13}
-\pastebutton{KernelXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{operator mainKernel(sin cos (tan x + sin x))}
-\indentrel{3}\begin{verbatim}
-   (13)  sin
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty13}
-\begin{paste}{KernelXmpPageEmpty13}{KernelXmpPagePatch13}
-\pastebutton{KernelXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{operator mainKernel(sin cos (tan x + sin x))}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch14}
-\begin{paste}{KernelXmpPageFull14}{KernelXmpPageEmpty14}
-\pastebutton{KernelXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{name mainKernel(sin cos (tan x + sin x))}
-\indentrel{3}\begin{verbatim}
-   (14)  sin
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty14}
-\begin{paste}{KernelXmpPageEmpty14}{KernelXmpPagePatch14}
-\pastebutton{KernelXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{name mainKernel(sin cos (tan x + sin x))}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch15}
-\begin{paste}{KernelXmpPageFull15}{KernelXmpPageEmpty15}
-\pastebutton{KernelXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{f := operator 'f\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (15)  f
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty15}
-\begin{paste}{KernelXmpPageEmpty15}{KernelXmpPagePatch15}
-\pastebutton{KernelXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{f := operator 'f\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch16}
-\begin{paste}{KernelXmpPageFull16}{KernelXmpPageEmpty16}
-\pastebutton{KernelXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{e := f(x, y, 10)\free{f }\bound{e }}
-\indentrel{3}\begin{verbatim}
-   (16)  f(x,y,10)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty16}
-\begin{paste}{KernelXmpPageEmpty16}{KernelXmpPagePatch16}
-\pastebutton{KernelXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{e := f(x, y, 10)\free{f }\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch17}
-\begin{paste}{KernelXmpPageFull17}{KernelXmpPageEmpty17}
-\pastebutton{KernelXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{is?(e, f)\free{f e }}
-\indentrel{3}\begin{verbatim}
-   (17)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty17}
-\begin{paste}{KernelXmpPageEmpty17}{KernelXmpPagePatch17}
-\pastebutton{KernelXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{is?(e, f)\free{f e }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch18}
-\begin{paste}{KernelXmpPageFull18}{KernelXmpPageEmpty18}
-\pastebutton{KernelXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{is?(e, 'f)\free{e }}
-\indentrel{3}\begin{verbatim}
-   (18)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty18}
-\begin{paste}{KernelXmpPageEmpty18}{KernelXmpPagePatch18}
-\pastebutton{KernelXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{is?(e, 'f)\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPagePatch19}
-\begin{paste}{KernelXmpPageFull19}{KernelXmpPageEmpty19}
-\pastebutton{KernelXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{argument mainKernel e\free{f }\free{e }}
-\indentrel{3}\begin{verbatim}
-   (19)  [x,y,10]
-                          Type: List Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{KernelXmpPageEmpty19}
-\begin{paste}{KernelXmpPageEmpty19}{KernelXmpPagePatch19}
-\pastebutton{KernelXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{argument mainKernel e\free{f }\free{e }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lazm3pk.pht b/books/pages/lazm3pk.pht
deleted file mode 100644
index 5afd80f..0000000
--- a/books/pages/lazm3pk.pht
+++ /dev/null
@@ -1,955 +0,0 @@
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch1}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull1}{LazardSetSolvingPackageXmpPageEmpty1}
-\pastebutton{LazardSetSolvingPackageXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty1}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty1}{LazardSetSolvingPackageXmpPagePatch1}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch2}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull2}{LazardSetSolvingPackageXmpPageEmpty2}
-\pastebutton{LazardSetSolvingPackageXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [b1,x,y,z,t,v,u,w]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [b1,x,y,z,t,v,u,w]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty2}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty2}{LazardSetSolvingPackageXmpPagePatch2}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [b1,x,y,z,t,v,u,w]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch3}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull3}{LazardSetSolvingPackageXmpPageEmpty3}
-\pastebutton{LazardSetSolvingPackageXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\indentrel{3}\begin{verbatim}
-   (3)  OrderedVariableList [b1,x,y,z,t,v,u,w]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty3}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty3}{LazardSetSolvingPackageXmpPagePatch3}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch4}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull4}{LazardSetSolvingPackageXmpPageEmpty4}
-\pastebutton{LazardSetSolvingPackageXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\indentrel{3}\begin{verbatim}
-   (4)
-   IndexedExponents OrderedVariableList [b1,x,y,z,t,v,u,w]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty4}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty4}{LazardSetSolvingPackageXmpPagePatch4}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch5}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull5}{LazardSetSolvingPackageXmpPageEmpty5}
-\pastebutton{LazardSetSolvingPackageXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  NewSparseMultivariatePolynomial(Integer,OrderedVariable
-  List [b1,x,y,z,t,v,u,w])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty5}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty5}{LazardSetSolvingPackageXmpPagePatch5}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch6}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull6}{LazardSetSolvingPackageXmpPageEmpty6}
-\pastebutton{LazardSetSolvingPackageXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{b1: P := 'b1\free{P }\bound{b1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  b1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty6}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty6}{LazardSetSolvingPackageXmpPagePatch6}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{b1: P := 'b1\free{P }\bound{b1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch7}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull7}{LazardSetSolvingPackageXmpPageEmpty7}
-\pastebutton{LazardSetSolvingPackageXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (7)  x
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty7}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty7}{LazardSetSolvingPackageXmpPagePatch7}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch8}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull8}{LazardSetSolvingPackageXmpPageEmpty8}
-\pastebutton{LazardSetSolvingPackageXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (8)  y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty8}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty8}{LazardSetSolvingPackageXmpPagePatch8}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch9}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull9}{LazardSetSolvingPackageXmpPageEmpty9}
-\pastebutton{LazardSetSolvingPackageXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (9)  z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty9}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty9}{LazardSetSolvingPackageXmpPagePatch9}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch10}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull10}{LazardSetSolvingPackageXmpPageEmpty10}
-\pastebutton{LazardSetSolvingPackageXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (10)  t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty10}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty10}{LazardSetSolvingPackageXmpPagePatch10}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch11}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull11}{LazardSetSolvingPackageXmpPageEmpty11}
-\pastebutton{LazardSetSolvingPackageXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{u: P := 'u\free{P }\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (11)  u
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty11}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty11}{LazardSetSolvingPackageXmpPagePatch11}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{u: P := 'u\free{P }\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch12}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull12}{LazardSetSolvingPackageXmpPageEmpty12}
-\pastebutton{LazardSetSolvingPackageXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{v: P := 'v\free{P }\bound{v }}
-\indentrel{3}\begin{verbatim}
-   (12)  v
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty12}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty12}{LazardSetSolvingPackageXmpPagePatch12}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{v: P := 'v\free{P }\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch13}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull13}{LazardSetSolvingPackageXmpPageEmpty13}
-\pastebutton{LazardSetSolvingPackageXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{w: P := 'w\free{P }\bound{w }}
-\indentrel{3}\begin{verbatim}
-   (13)  w
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty13}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty13}{LazardSetSolvingPackageXmpPagePatch13}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{w: P := 'w\free{P }\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch14}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull14}{LazardSetSolvingPackageXmpPageEmpty14}
-\pastebutton{LazardSetSolvingPackageXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\indentrel{3}\begin{verbatim}
-   (14)
-  RegularTriangularSet(Integer,IndexedExponents OrderedVa
-  riableList [b1,x,y,z,t,v,u,w],OrderedVariableList [b1,x
-  ,y,z,t,v,u,w],NewSparseMultivariatePolynomial(Integer,O
-  rderedVariableList [b1,x,y,z,t,v,u,w]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty14}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty14}{LazardSetSolvingPackageXmpPagePatch14}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch15}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull15}{LazardSetSolvingPackageXmpPageEmpty15}
-\pastebutton{LazardSetSolvingPackageXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{p0 := b1 + y + z - t - w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p0 }}
-\indentrel{3}\begin{verbatim}
-   (15)  b1 + y + z - t - w
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty15}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty15}{LazardSetSolvingPackageXmpPagePatch15}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{p0 := b1 + y + z - t - w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch16}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull16}{LazardSetSolvingPackageXmpPageEmpty16}
-\pastebutton{LazardSetSolvingPackageXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-                                2
-   (16)  2v y + 2u z + 2w t - 2w  - w - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty16}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty16}{LazardSetSolvingPackageXmpPagePatch16}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{p1 := 2*z*u + 2*y*v + 2*t*w - 2*w**2 - w - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch17}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull17}{LazardSetSolvingPackageXmpPageEmpty17}
-\pastebutton{LazardSetSolvingPackageXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-           2      2         2           3     2
-   (17)  3v y + 3u z + (- 3w  - 1)t + 3w  + 3w  + 4w
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty17}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty17}{LazardSetSolvingPackageXmpPagePatch17}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{p2 := 3*z*u**2 + 3*y*v**2 - 3*t*w**2 + 3*w**3 + 3*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch18}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull18}{LazardSetSolvingPackageXmpPageEmpty18}
-\pastebutton{LazardSetSolvingPackageXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-                       2                3     2
-   (18)  6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty18}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty18}{LazardSetSolvingPackageXmpPagePatch18}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{p3 := 6*x*z*v - 6*t*w**2 + 6*w**3 - 3*t*w + 6*w**2 - t + 4*w\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch19}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull19}{LazardSetSolvingPackageXmpPageEmpty19}
-\pastebutton{LazardSetSolvingPackageXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (19)
-     3      3       3            4     3      2
-   4v y + 4u z + (4w  + 4w)t - 4w  - 6w  - 10w  - w - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty19}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty19}{LazardSetSolvingPackageXmpPagePatch19}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch20}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull20}{LazardSetSolvingPackageXmpPageEmpty20}
-\pastebutton{LazardSetSolvingPackageXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (20)
-                   3     2            4      3      2
-     8u v z x + (8w  + 4w  + 4w)t - 8w  - 12w  - 14w  - 3w
-   + 
-     - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty20}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty20}{LazardSetSolvingPackageXmpPagePatch20}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch21}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull21}{LazardSetSolvingPackageXmpPageEmpty21}
-\pastebutton{LazardSetSolvingPackageXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p6 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-        2          3      2             4      3      2
-     12v z x + (12w  + 12w  + 8w)t - 12w  - 18w  - 14w
-   + 
-     - w - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty21}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty21}{LazardSetSolvingPackageXmpPagePatch21}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{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\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch22}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull22}{LazardSetSolvingPackageXmpPageEmpty22}
-\pastebutton{LazardSetSolvingPackageXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p7 }}
-\indentrel{3}\begin{verbatim}
-   (22)
-         3      2             4      3      2
-   (- 24w  - 24w  - 8w)t + 24w  + 36w  + 26w  + 7w + 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty22}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty22}{LazardSetSolvingPackageXmpPagePatch22}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{p7 := -24*t*w**3 + 24*w**4 - 24*t*w**2 + 36*w**3 - 8*t*w + 26*w**2 + 7*w + 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{p7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch23}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull23}{LazardSetSolvingPackageXmpPageEmpty23}
-\pastebutton{LazardSetSolvingPackageXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{lp := [p0, p1, p2, p3, p4, p5, p6, p7]\free{p0 }\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\free{p7 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-   (23)
-                                               2
-   [b1 + y + z - t - w, 2v y + 2u z + 2w t - 2w  - w - 1,
-      2      2         2           3     2
-    3v y + 3u z + (- 3w  - 1)t + 3w  + 3w  + 4w,
-                  2                3     2
-    6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w,
-      3      3       3            4     3      2
-    4v y + 4u z + (4w  + 4w)t - 4w  - 6w  - 10w  - w - 1,
-
-                     3     2            4      3      2
-       8u v z x + (8w  + 4w  + 4w)t - 8w  - 12w  - 14w
-     + 
-       - 3w - 1
-     ,
-
-          2          3      2             4      3      2
-       12v z x + (12w  + 12w  + 8w)t - 12w  - 18w  - 14w
-     + 
-       - w - 1
-     ,
-          3      2             4      3      2
-    (- 24w  - 24w  - 8w)t + 24w  + 36w  + 26w  + 7w + 1]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty23}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty23}{LazardSetSolvingPackageXmpPagePatch23}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{lp := [p0, p1, p2, p3, p4, p5, p6, p7]\free{p0 }\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\free{p7 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch24}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull24}{LazardSetSolvingPackageXmpPageEmpty24}
-\pastebutton{LazardSetSolvingPackageXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (24)
-   [{w + 1,u,v,t + 1,b1 + y + z + 2},
-    {w + 1,v,t + 1,z,b1 + y + 2},
-    {w + 1,t + 1,z,y,b1 + 2},
-    {w + 1,v - u,t + 1,y + z,x,b1 + 2},
-    {w + 1,u,t + 1,y,x,b1 + z + 2},
-
-          5       4      3     2
-     {144w  + 216w  + 96w  + 6w  - 11w - 1,
-          2                 5       4      3     2
-      (12w  + 9w + 1)u - 72w  - 108w  - 42w  - 9w  - 3w,
-          2                 4      3      2
-      (12w  + 9w + 1)v + 36w  + 54w  + 18w ,
-          3      2             4      3      2
-      (24w  + 24w  + 8w)t - 24w  - 36w  - 26w  - 7w - 1,
-
-                     2                 2
-         (12u v - 12u )z + (12w v + 12w  + 4)t + (3w - 5)v
-       + 
-            4      3     2
-         36w  + 42w  + 6w  - 16w
-       ,
-                             2
-      2v y + 2u z + 2w t - 2w  - w - 1,
-                    2                3     2
-      6v z x + (- 6w  - 3w - 1)t + 6w  + 6w  + 4w,
-      b1 + y + z - t - w}
-     ]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty24}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty24}{LazardSetSolvingPackageXmpPagePatch24}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch25}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull25}{LazardSetSolvingPackageXmpPageEmpty25}
-\pastebutton{LazardSetSolvingPackageXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
-\indentrel{3}\begin{verbatim}
-   (25)  [3,3,3,2,2,0]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty25}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty25}{LazardSetSolvingPackageXmpPagePatch25}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch26}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull26}{LazardSetSolvingPackageXmpPageEmpty26}
-\pastebutton{LazardSetSolvingPackageXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
-\indentrel{3}\begin{verbatim}
-   (26)
-  SquareFreeRegularTriangularSet(Integer,IndexedExponents
-   OrderedVariableList [b1,x,y,z,t,v,u,w],OrderedVariable
-  List [b1,x,y,z,t,v,u,w],NewSparseMultivariatePolynomial
-  (Integer,OrderedVariableList [b1,x,y,z,t,v,u,w]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty26}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty26}{LazardSetSolvingPackageXmpPagePatch26}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch27}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull27}{LazardSetSolvingPackageXmpPageEmpty27}
-\pastebutton{LazardSetSolvingPackageXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{pack := LAZM3PK(R,E,V,P,T,ST)\free{R }\free{E }\free{V }\free{P }\free{T }\free{ST }\bound{pack }}
-\indentrel{3}\begin{verbatim}
-   (27)
-  LazardSetSolvingPackage(Integer,IndexedExponents Ordere
-  dVariableList [b1,x,y,z,t,v,u,w],OrderedVariableList [b
-  1,x,y,z,t,v,u,w],NewSparseMultivariatePolynomial(Intege
-  r,OrderedVariableList [b1,x,y,z,t,v,u,w]),RegularTriang
-  ularSet(Integer,IndexedExponents OrderedVariableList [b
-  1,x,y,z,t,v,u,w],OrderedVariableList [b1,x,y,z,t,v,u,w]
-  ,NewSparseMultivariatePolynomial(Integer,OrderedVariabl
-  eList [b1,x,y,z,t,v,u,w])),SquareFreeRegularTriangularS
-  et(Integer,IndexedExponents OrderedVariableList [b1,x,y
-  ,z,t,v,u,w],OrderedVariableList [b1,x,y,z,t,v,u,w],NewS
-  parseMultivariatePolynomial(Integer,OrderedVariableList
-   [b1,x,y,z,t,v,u,w])))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty27}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty27}{LazardSetSolvingPackageXmpPagePatch27}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{pack := LAZM3PK(R,E,V,P,T,ST)\free{R }\free{E }\free{V }\free{P }\free{T }\free{ST }\bound{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch28}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull28}{LazardSetSolvingPackageXmpPageEmpty28}
-\pastebutton{LazardSetSolvingPackageXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lp,false)$pack\free{lp }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (28)
-   [{w + 1,t + 1,z,y,b1 + 2},
-    {w + 1,v,t + 1,z,b1 + y + 2},
-    {w + 1,u,v,t + 1,b1 + y + z + 2},
-    {w + 1,v - u,t + 1,y + z,x,b1 + 2},
-    {w + 1,u,t + 1,y,x,b1 + z + 2},
-
-          5       4      3     2
-     {144w  + 216w  + 96w  + 6w  - 11w - 1,
-             4      3      2
-      u - 24w  - 36w  - 14w  + w + 1,
-              4      3      2
-      3v - 48w  - 60w  - 10w  + 8w + 2,
-             4      3      2
-      t - 24w  - 36w  - 14w  - w + 1,
-                  4        3        2
-      486z - 2772w  - 4662w  - 2055w  + 30w + 127,
-                    4         3        2
-      2916y - 22752w  - 30312w  - 8220w  + 2064w + 1561,
-                  4        3       2
-      356x - 3696w  - 4536w  - 968w  + 822w + 371,
-                     4         3         2
-      2916b1 - 30600w  - 46692w  - 20274w  - 8076w + 593}
-     ]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty28}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty28}{LazardSetSolvingPackageXmpPagePatch28}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lp,false)$pack\free{lp }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch29}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull29}{LazardSetSolvingPackageXmpPageEmpty29}
-\pastebutton{LazardSetSolvingPackageXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{f0 := (w - v) ** 2 + (u - t) ** 2 - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f0 }}
-\indentrel{3}\begin{verbatim}
-          2           2           2    2
-   (29)  t  - 2u t + v  - 2w v + u  + w  - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty29}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty29}{LazardSetSolvingPackageXmpPagePatch29}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{f0 := (w - v) ** 2 + (u - t) ** 2 - 1\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch30}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull30}{LazardSetSolvingPackageXmpPageEmpty30}
-\pastebutton{LazardSetSolvingPackageXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{f1 := t ** 2 - v ** 3\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-          2    3
-   (30)  t  - v
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty30}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty30}{LazardSetSolvingPackageXmpPagePatch30}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{f1 := t ** 2 - v ** 3\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch31}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull31}{LazardSetSolvingPackageXmpPageEmpty31}
-\pastebutton{LazardSetSolvingPackageXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-              2                   2
-   (31)  (- 3v  - 2v + 2w)t + 3u v
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty31}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty31}{LazardSetSolvingPackageXmpPagePatch31}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{f2 := 2 * t * (w - v) + 3 * v ** 2 * (u - t)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch32}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull32}{LazardSetSolvingPackageXmpPageEmpty32}
-\pastebutton{LazardSetSolvingPackageXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-           2   2             2
-   (32)  6v t z  + (- 2t - 3v )z + 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty32}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty32}{LazardSetSolvingPackageXmpPagePatch32}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{f3 := (3 * z * v ** 2 - 1) * (2 * z * t - 1)\free{b1 }\free{x }\free{y }\free{z }\free{t }\free{u }\free{v }\free{w }\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch33}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull33}{LazardSetSolvingPackageXmpPageEmpty33}
-\pastebutton{LazardSetSolvingPackageXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
-\indentrel{3}\begin{verbatim}
-   (33)
-     2           2           2    2       2    3
-   [t  - 2u t + v  - 2w v + u  + w  - 1, t  - v ,
-         2                   2
-    (- 3v  - 2v + 2w)t + 3u v ,
-      2   2             2
-    6v t z  + (- 2t - 3v )z + 1]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [b1,x,y,z,t,v,u,w])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty33}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty33}{LazardSetSolvingPackageXmpPagePatch33}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch34}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull34}{LazardSetSolvingPackageXmpPageEmpty34}
-\pastebutton{LazardSetSolvingPackageXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,true)$T\free{lf }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (34)
-   [
-     {
-             6           3       2                 4
-         729u  + (- 1458w  + 729w  - 4158w - 1685)u
-       + 
-                 6        5        4        3       2
-             729w  - 1458w  - 2619w  - 4892w  - 297w
-           + 
-             5814w + 427
-        *
-            2
-           u
-       + 
-             8       7        6        5        4        3
-         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
-       + 
-                2
-         - 1188w  - 1656w + 529
-       ,
-
-                  4           3       2                  2
-             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
-           + 
-                  6        5         4        3        2
-             2187w  - 1944w  - 10125w  - 4800w  + 2501w
-           + 
-             4968w - 1587
-        *
-           v
-       + 
-               3       2  2       6        5        4
-         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
-       + 
-             3        2
-         496w  + 1116w
-       ,
-         2                   2
-      (3v  + 2v - 2w)t - 3u v ,
-                        2  2           2
-      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
-     ]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty34}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty34}{LazardSetSolvingPackageXmpPagePatch34}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,true)$T\free{lf }\free{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch35}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull35}{LazardSetSolvingPackageXmpPageEmpty35}
-\pastebutton{LazardSetSolvingPackageXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,false)$T\free{lf }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (35)
-   [
-     {
-             6           3       2                 4
-         729u  + (- 1458w  + 729w  - 4158w - 1685)u
-       + 
-                 6        5        4        3       2
-             729w  - 1458w  - 2619w  - 4892w  - 297w
-           + 
-             5814w + 427
-        *
-            2
-           u
-       + 
-             8       7        6        5        4        3
-         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
-       + 
-                2
-         - 1188w  - 1656w + 529
-       ,
-
-                  4           3       2                  2
-             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
-           + 
-                  6        5         4        3        2
-             2187w  - 1944w  - 10125w  - 4800w  + 2501w
-           + 
-             4968w - 1587
-        *
-           v
-       + 
-               3       2  2       6        5        4
-         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
-       + 
-             3        2
-         496w  + 1116w
-       ,
-         2                   2
-      (3v  + 2v - 2w)t - 3u v ,
-                        2  2           2
-      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
-     ,
-
-         4     3      2
-     {27w  + 4w  - 54w  - 36w + 23, u,
-                     2             2          2
-      (12w + 2)v - 9w  - 2w + 9, 6t  - 2v - 3w  + 2w + 3,
-      2t z - 1}
-     ,
-
-     {
-               6         5         4          3         2
-         59049w  + 91854w  - 45198w  + 145152w  + 63549w
-       + 
-         60922w + 21420
-       ,
-
-                            5                  4
-             31484448266904w  - 18316865522574w
-           + 
-                            3                 2
-             23676995746098w  + 6657857188965w
-           + 
-             8904703998546w + 3890631403260
-        *
-            2
-           u
-       + 
-                        5                  4
-         94262810316408w  - 82887296576616w
-       + 
-                        3                  2
-         89801831438784w  + 28141734167208w
-       + 
-         38070359425432w + 16003865949120
-       ,
-
-              2             2
-         (243w  + 36w + 85)v
-       + 
-             2       3      2                    3     2
-       (- 81u  - 162w  + 36w  + 154w + 72)v - 72w  + 4w
-       ,
-         2                   2
-      (3v  + 2v - 2w)t - 3u v ,
-                        2  2           2
-      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
-     ,
-
-         4     3      2
-     {27w  + 4w  - 54w  - 36w + 23, u,
-                     2             2          2
-      (12w + 2)v - 9w  - 2w + 9, 6t  - 2v - 3w  + 2w + 3,
-        2
-      3v z - 1}
-     ]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty35}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty35}{LazardSetSolvingPackageXmpPagePatch35}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,false)$T\free{lf }\free{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPagePatch36}
-\begin{paste}{LazardSetSolvingPackageXmpPageFull36}{LazardSetSolvingPackageXmpPageEmpty36}
-\pastebutton{LazardSetSolvingPackageXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,false)$pack\free{lf }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (36)
-   [
-     {
-             6           3       2                 4
-         729u  + (- 1458w  + 729w  - 4158w - 1685)u
-       + 
-                 6        5        4        3       2
-             729w  - 1458w  - 2619w  - 4892w  - 297w
-           + 
-             5814w + 427
-        *
-            2
-           u
-       + 
-             8       7        6        5        4        3
-         729w  + 216w  - 2900w  - 2376w  + 3870w  + 4072w
-       + 
-                2
-         - 1188w  - 1656w + 529
-       ,
-
-                  4           3       2                  2
-             2187u  + (- 4374w  - 972w  - 12474w - 2868)u
-           + 
-                  6        5         4        3        2
-             2187w  - 1944w  - 10125w  - 4800w  + 2501w
-           + 
-             4968w - 1587
-        *
-           v
-       + 
-               3       2  2       6        5        4
-         (1944w  - 108w )u  + 972w  + 3024w  - 1080w
-       + 
-             3        2
-         496w  + 1116w
-       ,
-         2                   2
-      (3v  + 2v - 2w)t - 3u v ,
-                        2  2           2
-      ((4v - 4w)t - 6u v )z  + (2t + 3v )z - 1}
-     ,
-
-         2                 2
-     {81w  + 18w + 28, 729u  - 1890w - 533,
-         2
-      81v  + (- 162w + 27)v - 72w - 112,
-      11881t + (972w + 2997)u v + (- 11448w - 11536)u,
-
-                         2
-         641237934604288z
-       + 
-                 (78614584763904w + 26785578742272)u
-               + 
-                 236143618655616w + 70221988585728
-            *
-               v
-           + 
-             (358520253138432w + 101922133759488)u
-           + 
-             142598803536000w + 54166419595008
-        *
-           z
-       + 
-         (32655103844499w - 44224572465882)u v
-       + 
-         (43213900115457w - 32432039102070)u
-       }
-     ,
-
-         4     3      2
-     {27w  + 4w  - 54w  - 36w + 23, u,
-                 3     2
-      218v - 162w  + 3w  + 160w + 153,
-          2      3      2
-      109t  - 27w  - 54w  + 63w + 80,
-                      3      2
-      1744z + (- 1458w  + 27w  + 1440w + 505)t}
-     ,
-
-         4     3      2
-     {27w  + 4w  - 54w  - 36w + 23, u,
-                 3     2
-      218v - 162w  + 3w  + 160w + 153,
-          2      3      2
-      109t  - 27w  - 54w  + 63w + 80,
-                  3     2
-      1308z + 162w  - 3w  - 814w - 153}
-     ,
-
-          4       3        2
-     {729w  + 972w  - 1026w  + 1684w + 765,
-         2      2
-      81u  + 72w  + 16w - 72,
-                 3       2
-      702v - 162w  - 225w  + 40w - 99,
-                    3       2
-      11336t + (324w  - 603w  - 1718w - 1557)u,
-
-                   2
-         595003968z
-       + 
-                             3             2
-                 - 963325386w  - 898607682w  + 1516286466w
-               + 
-                 - 3239166186
-            *
-               u
-           + 
-                          3              2
-             - 1579048992w  - 1796454288w  + 2428328160w
-           + 
-             - 4368495024
-        *
-           z
-       + 
-                        3              2
-             9713133306w  + 9678670317w  - 16726834476w
-           + 
-             28144233593
-        *
-           u
-       }
-     ]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LazardSetSolvingPackageXmpPageEmpty36}
-\begin{paste}{LazardSetSolvingPackageXmpPageEmpty36}{LazardSetSolvingPackageXmpPagePatch36}
-\pastebutton{LazardSetSolvingPackageXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lf,false)$pack\free{lf }\free{pack }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lexp.pht b/books/pages/lexp.pht
deleted file mode 100644
index 0e87394..0000000
--- a/books/pages/lexp.pht
+++ /dev/null
@@ -1,227 +0,0 @@
-\begin{patch}{LieExponentialsXmpPagePatch1}
-\begin{paste}{LieExponentialsXmpPageFull1}{LieExponentialsXmpPageEmpty1}
-\pastebutton{LieExponentialsXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ a: Symbol := 'a\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (1)  a
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty1}
-\begin{paste}{LieExponentialsXmpPageEmpty1}{LieExponentialsXmpPagePatch1}
-\pastebutton{LieExponentialsXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ a: Symbol := 'a\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch2}
-\begin{paste}{LieExponentialsXmpPageFull2}{LieExponentialsXmpPageEmpty2}
-\pastebutton{LieExponentialsXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ b: Symbol := 'b\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (2)  b
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty2}
-\begin{paste}{LieExponentialsXmpPageEmpty2}{LieExponentialsXmpPagePatch2}
-\pastebutton{LieExponentialsXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ b: Symbol := 'b\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch3}
-\begin{paste}{LieExponentialsXmpPageFull3}{LieExponentialsXmpPageEmpty3}
-\pastebutton{LieExponentialsXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{ coef := Fraction(Integer)\bound{coef }}
-\indentrel{3}\begin{verbatim}
-   (3)  Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty3}
-\begin{paste}{LieExponentialsXmpPageEmpty3}{LieExponentialsXmpPagePatch3}
-\pastebutton{LieExponentialsXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{ coef := Fraction(Integer)\bound{coef }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch4}
-\begin{paste}{LieExponentialsXmpPageFull4}{LieExponentialsXmpPageEmpty4}
-\pastebutton{LieExponentialsXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{ group := LieExponentials(Symbol, coef, 3)\free{coef }\bound{group }}
-\indentrel{3}\begin{verbatim}
-   (4)  LieExponentials(Symbol,Fraction Integer,3)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty4}
-\begin{paste}{LieExponentialsXmpPageEmpty4}{LieExponentialsXmpPagePatch4}
-\pastebutton{LieExponentialsXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{ group := LieExponentials(Symbol, coef, 3)\free{coef }\bound{group }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch5}
-\begin{paste}{LieExponentialsXmpPageFull5}{LieExponentialsXmpPageEmpty5}
-\pastebutton{LieExponentialsXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{ lpoly := LiePolynomial(Symbol, coef)\free{coef }\bound{lpoly }}
-\indentrel{3}\begin{verbatim}
-   (5)  LiePolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty5}
-\begin{paste}{LieExponentialsXmpPageEmpty5}{LieExponentialsXmpPagePatch5}
-\pastebutton{LieExponentialsXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{ lpoly := LiePolynomial(Symbol, coef)\free{coef }\bound{lpoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch6}
-\begin{paste}{LieExponentialsXmpPageFull6}{LieExponentialsXmpPageEmpty6}
-\pastebutton{LieExponentialsXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{ poly := XPBWPolynomial(Symbol, coef)\free{coef }\bound{poly }}
-\indentrel{3}\begin{verbatim}
-   (6)  XPBWPolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty6}
-\begin{paste}{LieExponentialsXmpPageEmpty6}{LieExponentialsXmpPagePatch6}
-\pastebutton{LieExponentialsXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{ poly := XPBWPolynomial(Symbol, coef)\free{coef }\bound{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch7}
-\begin{paste}{LieExponentialsXmpPageFull7}{LieExponentialsXmpPageEmpty7}
-\pastebutton{LieExponentialsXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{ ea := exp(a::lpoly)$group\free{a }\free{lpoly }\free{group }\bound{ea }}
-\indentrel{3}\begin{verbatim}
-         [a]
-   (7)  e
-       Type: LieExponentials(Symbol,Fraction Integer,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty7}
-\begin{paste}{LieExponentialsXmpPageEmpty7}{LieExponentialsXmpPagePatch7}
-\pastebutton{LieExponentialsXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{ ea := exp(a::lpoly)$group\free{a }\free{lpoly }\free{group }\bound{ea }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch8}
-\begin{paste}{LieExponentialsXmpPageFull8}{LieExponentialsXmpPageEmpty8}
-\pastebutton{LieExponentialsXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{ eb := exp(b::lpoly)$group\free{b }\free{lpoly }\free{group }\bound{eb }}
-\indentrel{3}\begin{verbatim}
-         [b]
-   (8)  e
-       Type: LieExponentials(Symbol,Fraction Integer,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty8}
-\begin{paste}{LieExponentialsXmpPageEmpty8}{LieExponentialsXmpPagePatch8}
-\pastebutton{LieExponentialsXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{ eb := exp(b::lpoly)$group\free{b }\free{lpoly }\free{group }\bound{eb }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch9}
-\begin{paste}{LieExponentialsXmpPageFull9}{LieExponentialsXmpPageEmpty9}
-\pastebutton{LieExponentialsXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{ g: group := ea*eb\free{ea }\free{eb }\bound{g }}
-\indentrel{3}\begin{verbatim}
-             1     2        1   2
-             Ä [a b ]       Ä [a b]
-         [b] 2        [a b] 2       [a]
-   (9)  e   e        e     e       e
-       Type: LieExponentials(Symbol,Fraction Integer,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty9}
-\begin{paste}{LieExponentialsXmpPageEmpty9}{LieExponentialsXmpPagePatch9}
-\pastebutton{LieExponentialsXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{ g: group := ea*eb\free{ea }\free{eb }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch10}
-\begin{paste}{LieExponentialsXmpPageFull10}{LieExponentialsXmpPageEmpty10}
-\pastebutton{LieExponentialsXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{ g :: poly\free{g }\free{poly }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                     1                           1
-     1 + [a] + [b] + Ä [a][a] + [a b] + [b][a] + Ä [b][b]
-                     2                           2
-   + 
-     1             1   2                1     2
-     Ä [a][a][a] + Ä [a b] + [a b][a] + Ä [a b ]
-     6             2                    2
-   + 
-     1                        1             1
-     Ä [b][a][a] + [b][a b] + Ä [b][b][a] + Ä [b][b][b]
-     2                        2             6
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty10}
-\begin{paste}{LieExponentialsXmpPageEmpty10}{LieExponentialsXmpPagePatch10}
-\pastebutton{LieExponentialsXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{ g :: poly\free{g }\free{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch11}
-\begin{paste}{LieExponentialsXmpPageFull11}{LieExponentialsXmpPageEmpty11}
-\pastebutton{LieExponentialsXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{ log(g)$group\free{g }\free{group }}
-\indentrel{3}\begin{verbatim}
-                     1          1   2      1     2
-   (11)  [a] + [b] + Ä [a b] + ÄÄ [a b] + ÄÄ [a b ]
-                     2         12         12
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty11}
-\begin{paste}{LieExponentialsXmpPageEmpty11}{LieExponentialsXmpPagePatch11}
-\pastebutton{LieExponentialsXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{ log(g)$group\free{g }\free{group }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch12}
-\begin{paste}{LieExponentialsXmpPageFull12}{LieExponentialsXmpPageEmpty12}
-\pastebutton{LieExponentialsXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{ g1: group := inv(g)\free{g }\free{group }\bound{g1 }}
-\indentrel{3}\begin{verbatim}
-          - [b] - [a]
-   (12)  e     e
-       Type: LieExponentials(Symbol,Fraction Integer,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty12}
-\begin{paste}{LieExponentialsXmpPageEmpty12}{LieExponentialsXmpPagePatch12}
-\pastebutton{LieExponentialsXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{ g1: group := inv(g)\free{g }\free{group }\bound{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPagePatch13}
-\begin{paste}{LieExponentialsXmpPageFull13}{LieExponentialsXmpPageEmpty13}
-\pastebutton{LieExponentialsXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{ g*g1\free{g }\free{g1 }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-       Type: LieExponentials(Symbol,Fraction Integer,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LieExponentialsXmpPageEmpty13}
-\begin{paste}{LieExponentialsXmpPageEmpty13}{LieExponentialsXmpPagePatch13}
-\pastebutton{LieExponentialsXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{ g*g1\free{g }\free{g1 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lextripk.pht b/books/pages/lextripk.pht
deleted file mode 100644
index 18c3b7b..0000000
--- a/books/pages/lextripk.pht
+++ /dev/null
@@ -1,2553 +0,0 @@
-\begin{patch}{LexTriangularPackageXmpPagePatch1}
-\begin{paste}{LexTriangularPackageXmpPageFull1}{LexTriangularPackageXmpPageEmpty1}
-\pastebutton{LexTriangularPackageXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty1}
-\begin{paste}{LexTriangularPackageXmpPageEmpty1}{LexTriangularPackageXmpPagePatch1}
-\pastebutton{LexTriangularPackageXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch2}
-\begin{paste}{LexTriangularPackageXmpPageFull2}{LexTriangularPackageXmpPageEmpty2}
-\pastebutton{LexTriangularPackageXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [a,b,c,d,e,f]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [a,b,c,d,e,f]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty2}
-\begin{paste}{LexTriangularPackageXmpPageEmpty2}{LexTriangularPackageXmpPagePatch2}
-\pastebutton{LexTriangularPackageXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [a,b,c,d,e,f]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch3}
-\begin{paste}{LexTriangularPackageXmpPageFull3}{LexTriangularPackageXmpPageEmpty3}
-\pastebutton{LexTriangularPackageXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\indentrel{3}\begin{verbatim}
-   (3)  OrderedVariableList [a,b,c,d,e,f]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty3}
-\begin{paste}{LexTriangularPackageXmpPageEmpty3}{LexTriangularPackageXmpPagePatch3}
-\pastebutton{LexTriangularPackageXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch4}
-\begin{paste}{LexTriangularPackageXmpPageFull4}{LexTriangularPackageXmpPageEmpty4}
-\pastebutton{LexTriangularPackageXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (4)
-  NewSparseMultivariatePolynomial(Integer,OrderedVariable
-  List [a,b,c,d,e,f])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty4}
-\begin{paste}{LexTriangularPackageXmpPageEmpty4}{LexTriangularPackageXmpPagePatch4}
-\pastebutton{LexTriangularPackageXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch5}
-\begin{paste}{LexTriangularPackageXmpPageFull5}{LexTriangularPackageXmpPageEmpty5}
-\pastebutton{LexTriangularPackageXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p1: P := a*b*c*d*e*f - 1\free{P }\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  f e d c b a - 1
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty5}
-\begin{paste}{LexTriangularPackageXmpPageEmpty5}{LexTriangularPackageXmpPagePatch5}
-\pastebutton{LexTriangularPackageXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p1: P := a*b*c*d*e*f - 1\free{P }\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch6}
-\begin{paste}{LexTriangularPackageXmpPageFull6}{LexTriangularPackageXmpPageEmpty6}
-\pastebutton{LexTriangularPackageXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{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\free{P }\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-   ((((e + f)d + f e)c + f e d)b + f e d c)a + f e d c b
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty6}
-\begin{paste}{LexTriangularPackageXmpPageEmpty6}{LexTriangularPackageXmpPagePatch6}
-\pastebutton{LexTriangularPackageXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{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\free{P }\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch7}
-\begin{paste}{LexTriangularPackageXmpPageFull7}{LexTriangularPackageXmpPageEmpty7}
-\pastebutton{LexTriangularPackageXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{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\free{P }\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-   (7)  (((d + f)c + f e)b + f e d)a + e d c b + f e d c
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty7}
-\begin{paste}{LexTriangularPackageXmpPageEmpty7}{LexTriangularPackageXmpPagePatch7}
-\pastebutton{LexTriangularPackageXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{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\free{P }\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch8}
-\begin{paste}{LexTriangularPackageXmpPageFull8}{LexTriangularPackageXmpPageEmpty8}
-\pastebutton{LexTriangularPackageXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f\free{P }\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (8)  ((c + f)b + f e)a + d c b + e d c + f e d
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty8}
-\begin{paste}{LexTriangularPackageXmpPageEmpty8}{LexTriangularPackageXmpPagePatch8}
-\pastebutton{LexTriangularPackageXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p4: P := a*b*c + a*b*f + a*e*f + b*c*d + c*d*e + d*e*f\free{P }\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch9}
-\begin{paste}{LexTriangularPackageXmpPageFull9}{LexTriangularPackageXmpPageEmpty9}
-\pastebutton{LexTriangularPackageXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{p5: P := a*b + a*f + b*c + c*d + d*e + e*f\free{P }\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (9)  (b + f)a + c b + d c + e d + f e
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty9}
-\begin{paste}{LexTriangularPackageXmpPageEmpty9}{LexTriangularPackageXmpPagePatch9}
-\pastebutton{LexTriangularPackageXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p5: P := a*b + a*f + b*c + c*d + d*e + e*f\free{P }\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch10}
-\begin{paste}{LexTriangularPackageXmpPageFull10}{LexTriangularPackageXmpPageEmpty10}
-\pastebutton{LexTriangularPackageXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{p6: P := a + b + c + d + e + f\free{P }\bound{p6 }}
-\indentrel{3}\begin{verbatim}
-   (10)  a + b + c + d + e + f
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty10}
-\begin{paste}{LexTriangularPackageXmpPageEmpty10}{LexTriangularPackageXmpPagePatch10}
-\pastebutton{LexTriangularPackageXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{p6: P := a + b + c + d + e + f\free{P }\bound{p6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch11}
-\begin{paste}{LexTriangularPackageXmpPageFull11}{LexTriangularPackageXmpPageEmpty11}
-\pastebutton{LexTriangularPackageXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3, p4, p5, p6]\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-   (11)
-   [f e d c b a - 1,
-    ((((e + f)d + f e)c + f e d)b + f e d c)a + f e d c b,
-    (((d + f)c + f e)b + f e d)a + e d c b + f e d c,
-    ((c + f)b + f e)a + d c b + e d c + f e d,
-    (b + f)a + c b + d c + e d + f e,
-    a + b + c + d + e + f]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty11}
-\begin{paste}{LexTriangularPackageXmpPageEmpty11}{LexTriangularPackageXmpPagePatch11}
-\pastebutton{LexTriangularPackageXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3, p4, p5, p6]\free{p1 }\free{p2 }\free{p3 }\free{p4 }\free{p5 }\free{p6 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch12}
-\begin{paste}{LexTriangularPackageXmpPageFull12}{LexTriangularPackageXmpPageEmpty12}
-\pastebutton{LexTriangularPackageXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{lextripack := LEXTRIPK(R,ls)\free{R }\free{ls }\bound{lextripack }}
-\indentrel{3}\begin{verbatim}
-   (12)  LexTriangularPackage(Integer,[a,b,c,d,e,f])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty12}
-\begin{paste}{LexTriangularPackageXmpPageEmpty12}{LexTriangularPackageXmpPagePatch12}
-\pastebutton{LexTriangularPackageXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{lextripack := LEXTRIPK(R,ls)\free{R }\free{ls }\bound{lextripack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch13}
-\begin{paste}{LexTriangularPackageXmpPageFull13}{LexTriangularPackageXmpPageEmpty13}
-\pastebutton{LexTriangularPackageXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{lg := groebner(lp)$lextripack\free{lp }\free{lextripack }\bound{lg }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   [a + b + c + d + e + f,
-
-                        2
-       3968379498283200b  + 15873517993132800f b
-     + 
-                        2
-       3968379498283200d  + 15873517993132800f d
-     + 
-                        3 5                     4 4
-       3968379498283200f e  - 15873517993132800f e
-     + 
-                         5 3
-       23810276989699200f e
-     + 
-                           6                       2
-       (206355733910726400f  + 230166010900425600)e
-     + 
-                             43                       37
-           - 729705987316687f   + 1863667496867205421f
-         + 
-                                 31
-           291674853771731104461f
-         + 
-                                 25
-           365285994691106921745f
-         + 
-                              19
-           549961185828911895f
-         + 
-                                   13
-           - 365048404038768439269f
-         + 
-                                 7
-         - 292382820431504027669f  - 2271898467631865497f
-      *
-         e
-     + 
-                          44                        38
-       - 3988812642545399f   + 10187423878429609997f
-     + 
-                              32
-       1594377523424314053637f
-     + 
-                              26                       20
-       1994739308439916238065f   + 1596840088052642815f
-     + 
-                                14
-       - 1993494118301162145413f
-     + 
-                              8                        2
-     - 1596049742289689815053f  - 11488171330159667449f
-     ,
-
-       (23810276989699200c - 23810276989699200f)b
-     + 
-                         2
-       23810276989699200c  + 71430830969097600f c
-     + 
-                           2
-       - 23810276989699200d  - 95241107958796800f d
-     + 
-                           3 5                      4 4
-       - 55557312975964800f e  + 174608697924460800f e
-     + 
-                            5 3
-       - 174608697924460800f e
-     + 
-                              6                        2
-       (- 2428648252949318400f  - 2611193709870345600)e
-     + 
-                            43                        37
-           8305444561289527f   - 21212087151945459641f
-         + 
-                                    31
-           - 3319815883093451385381f
-         + 
-                                    25
-           - 4157691646261657136445f
-         + 
-                                 19
-           - 6072721607510764095f
-         + 
-                                  13
-           4154986709036460221649f
-         + 
-                                7
-         3327761311138587096749f  + 25885340608290841637f
-      *
-         e
-     + 
-                         44                         38
-       45815897629010329f   - 117013765582151891207f
-     + 
-                                 32
-       - 18313166848970865074187f
-     + 
-                                 26
-       - 22909971239649297438915f
-     + 
-                              20
-       - 16133250761305157265f
-     + 
-                               14
-       22897305857636178256623f
-     + 
-                             8                         2
-     18329944781867242497923f  + 130258531002020420699f
-     ,
-
-       (7936758996566400d - 7936758996566400f)b
-     + 
-                                                3 5
-       - 7936758996566400f d - 7936758996566400f e
-     + 
-                         4 4                     5 3
-       23810276989699200f e  - 23810276989699200f e
-     + 
-                             6                       2
-       (- 337312257354072000f  - 369059293340337600)e
-     + 
-                            43                       37
-           1176345388640471f   - 3004383582891473073f
-         + 
-                                   31
-           - 470203502707246105653f
-         + 
-                                   25
-           - 588858183402644348085f
-         + 
-                                19
-           - 856939308623513535f
-         + 
-                                 13
-           588472674242340526377f
-         + 
-                                 7
-           471313241958371103517f  + 3659742549078552381f
-      *
-         e
-     + 
-                        44                        38
-       6423170513956901f   - 16404772137036480803f
-     + 
-                                32
-       - 2567419165227528774463f
-     + 
-                                26
-       - 3211938090825682172335f
-     + 
-                             20
-       - 2330490332697587485f
-     + 
-                              14
-       3210100109444754864587f
-     + 
-                              8                        2
-       2569858315395162617847f  + 18326089487427735751f
-     ,
-
-       (11905138494849600e - 11905138494849600f)b
-     + 
-                          3 5                     4 4
-       - 3968379498283200f e  + 15873517993132800f e
-     + 
-                           5 3
-       - 27778656487982400f e
-     + 
-                             6                       2
-       (- 208339923659868000f  - 240086959646133600)e
-     + 
-                           43                       37
-           786029984751110f   - 2007519008182245250f
-         + 
-                                   31
-           - 314188062908073807090f
-         + 
-                                   25
-           - 393423667537929575250f
-         + 
-                                19
-           - 550329120654394950f
-         + 
-                                 13
-           393196408728889612770f
-         + 
-                                 7
-           314892372799176495730f  + 2409386515146668530f
-      *
-         e
-     + 
-                        44                        38
-       4177638546747827f   - 10669685294602576381f
-     + 
-                                32
-       - 1669852980419949524601f
-     + 
-                                26
-       - 2089077057287904170745f
-     + 
-                             20
-       - 1569899763580278795f
-     + 
-                              14
-       2087864026859015573349f
-     + 
-                              8                        2
-       1671496085945199577969f  + 11940257226216280177f
-     ,
-
-                          6
-       (11905138494849600f  - 11905138494849600)b
-     + 
-                           2 5                     3 4
-       - 15873517993132800f e  + 39683794982832000f e
-     + 
-                           4 3
-       - 39683794982832000f e
-     + 
-                             11                      5  2
-       (- 686529653202993600f   - 607162063237329600f )e
-     + 
-                          42                      36
-           65144531306704f   - 166381280901088652f
-         + 
-                                  30
-           - 26033434502470283472f
-         + 
-                                  24
-           - 31696259583860650140f
-         + 
-                              18                        12
-           971492093167581360f   + 32220085033691389548f
-         + 
-                                6
-           25526177666070529808f  + 138603268355749244
-      *
-         e
-     + 
-                       43                      37
-       167620036074811f   - 428102417974791473f
-     + 
-                              31                        25
-       - 66997243801231679313f   - 83426716722148750485f
-     + 
-                          19                        13
-       203673895369980765f   + 83523056326010432457f
-     + 
-                            7
-       66995789640238066937f  + 478592855549587901f
-     ,
-
-                    3                   2
-       801692827936c  + 2405078483808f c
-     + 
-                       2                45
-       - 2405078483808f c - 13752945467f
-     + 
-                      39                    33
-       35125117815561f   + 5496946957826433f
-     + 
-                        27                  21
-       6834659447749117f   - 44484880462461f
-     + 
-                          15                    9
-       - 6873406230093057f   - 5450844938762633f
-     + 
-                     3
-       1216586044571f
-     ,
-
-       (23810276989699200d - 23810276989699200f)c
-     + 
-                         2
-       23810276989699200d  + 71430830969097600f d
-     + 
-                        3 5                     4 4
-       7936758996566400f e  - 31747035986265600f e
-     + 
-                         5 3
-       31747035986265600f e
-     + 
-                           6                       2
-       (404774708824886400f  + 396837949828320000)e
-     + 
-                              43                       37
-           - 1247372229446701f   + 3185785654596621203f
-         + 
-                                 31
-           498594866849974751463f
-         + 
-                                 25
-           624542545845791047935f
-         + 
-                              19
-           931085755769682885f
-         + 
-                                   13
-           - 624150663582417063387f
-         + 
-                                 7
-         - 499881859388360475647f  - 3926885313819527351f
-      *
-         e
-     + 
-                          44                        38
-       - 7026011547118141f   + 17944427051950691243f
-     + 
-                              32
-       2808383522593986603543f
-     + 
-                              26                       20
-       3513624142354807530135f   + 2860757006705537685f
-     + 
-                                14
-       - 3511356735642190737267f
-     + 
-                              8                        2
-     - 2811332494697103819887f  - 20315011631522847311f
-     ,
-
-       (7936758996566400e - 7936758996566400f)c
-     + 
-                           43                     37
-           - 4418748183673f   + 11285568707456559f
-         + 
-                               31                       25
-           1765998617294451019f   + 2173749283622606155f
-         + 
-                               19                       13
-           - 55788292195402895f   - 2215291421788292951f
-         + 
-                                 7
-           - 1718142665347430851f  + 30256569458230237f
-      *
-         e
-     + 
-                     44                     38
-       4418748183673f   - 11285568707456559f
-     + 
-                             32                       26
-       - 1765998617294451019f   - 2173749283622606155f
-     + 
-                         20                       14
-       55788292195402895f   + 2215291421788292951f
-     + 
-                           8                     2
-       1718142665347430851f  - 30256569458230237f
-     ,
-
-                       6
-       (72152354514240f  - 72152354514240)c
-     + 
-                   43                   37
-       40950859449f   - 104588980990367f
-     + 
-                           31                     25
-       - 16367227395575307f   - 20268523416527355f
-     + 
-                       19                     13
-       442205002259535f   + 20576059935789063f
-     + 
-                         7
-       15997133796970563f  - 275099892785581f
-     ,
-
-                        3                      2
-       1984189749141600d  + 5952569247424800f d
-     + 
-                          2                     4 5
-       - 5952569247424800f d - 3968379498283200f e
-     + 
-                         5 4                     3
-       15873517993132800f e  + 17857707742274400e
-     + 
-                             7                        2
-       (- 148814231185620000f  - 162703559429611200f)e
-     + 
-                             44                      38
-           - 390000914678878f   + 996062704593756434f
-         + 
-                                 32
-           155886323972034823914f
-         + 
-                                 26                    20
-           194745956143985421330f   + 6205077595574430f
-         + 
-                                   14
-           - 194596512653299068786f
-         + 
-                                 8                       2
-         - 155796897940756922666f  - 1036375759077320978f
-      *
-         e
-     + 
-                         45                      39
-       - 374998630035991f   + 957747106595453993f
-     + 
-                             33                         27
-       149889155566764891693f   + 187154171443494641685f
-     + 
-                            21                         15
-       - 127129015426348065f   - 187241533243115040417f
-     + 
-                               9                      3
-       - 149719983567976534037f  - 836654081239648061f
-     ,
-
-       (5952569247424800e - 5952569247424800f)d
-     + 
-                          3 5                    4 4
-       - 3968379498283200f e  + 9920948745708000f e
-     + 
-                          5 3
-       - 3968379498283200f e
-     + 
-                             6                       2
-       (- 148814231185620000f  - 150798420934761600)e
-     + 
-                           43                       37
-           492558110242553f   - 1257992359608074599f
-         + 
-                                   31
-           - 196883094539368513959f
-         + 
-                                   25
-           - 246562115745735428055f
-         + 
-                                19
-           - 325698701993885505f
-         + 
-                                 13
-           246417769883651808111f
-         + 
-                                 7
-           197327352068200652911f  + 1523373796389332143f
-      *
-         e
-     + 
-                        44                       38
-       2679481081803026f   - 6843392695421906608f
-     + 
-                                32
-       - 1071020459642646913578f
-     + 
-                                26                      20
-       - 1339789169692041240060f   - 852746750910750210f
-     + 
-                              14
-       1339105101971878401312f
-     + 
-                              8                       2
-       1071900289758712984762f  + 7555239072072727756f
-     ,
-
-                          6
-       (11905138494849600f  - 11905138494849600)d
-     + 
-                          2 5                     3 4
-       - 7936758996566400f e  + 31747035986265600f e
-     + 
-                           4 3
-       - 31747035986265600f e
-     + 
-                             11                      5  2
-       (- 420648226818019200f   - 404774708824886400f )e
-     + 
-                          42                     36
-           15336187600889f   - 39169739565161107f
-         + 
-                                 30
-           - 6127176127489690827f
-         + 
-                                 24
-           - 7217708742310509615f
-         + 
-                              18                       12
-           538628483890722735f   + 7506804353843507643f
-         + 
-                               6
-           5886160769782607203f  + 63576108396535879
-      *
-         e
-     + 
-                      43                      37
-       71737781777066f   - 183218856207557938f
-     + 
-                              31                        25
-       - 28672874271132276078f   - 35625223686939812010f
-     + 
-                          19                        13
-       164831339634084390f   + 35724160423073052642f
-     + 
-                            7
-       28627022578664910622f  + 187459987029680506f
-     ,
-
-                        6                      5
-       1322793166094400e  - 3968379498283200f e
-     + 
-                        2 4                    3 3
-       3968379498283200f e  - 5291172664377600f e
-     + 
-                             10                      4  2
-       (- 230166010900425600f   - 226197631402142400f )e
-     + 
-                                47
-           - 152375364610443885f
-         + 
-                                 41
-           389166626064854890415f
-         + 
-                                   35
-           60906097841360558987335f
-         + 
-                                   29
-           76167367934608798697275f
-         + 
-                                23
-           27855066785995181125f
-         + 
-                                     17
-           - 76144952817052723145495f
-         + 
-                                     11
-           - 60933629892463517546975f
-         + 
-                                   5
-           - 411415071682002547795f
-      *
-         e
-     + 
-                         42                      36
-       - 209493533143822f   + 535045979490560586f
-     + 
-                            30                         24
-       83737947964973553146f   + 104889507084213371570f
-     + 
-                          18                         12
-       167117997269207870f   - 104793725781390615514f
-     + 
-                              6
-       - 83842685189903180394f  - 569978796672974242
-     ,
-
-                       6                   3
-       (25438330117200f  + 25438330117200)e
-     + 
-                       7                    2
-       (76314990351600f  + 76314990351600f)e
-     + 
-                           44                    38
-           - 1594966552735f   + 4073543370415745f
-         + 
-                              32                      26
-           637527159231148925f   + 797521176113606525f
-         + 
-                           20                      14
-           530440941097175f   - 797160527306433145f
-         + 
-                                8                    2
-           - 638132320196044965f  - 4510507167940725f
-      *
-         e
-     + 
-                       45                     39
-       - 6036376800443f   + 15416903421476909f
-     + 
-                           33                       27
-       2412807646192304449f   + 3017679923028013705f
-     + 
-                        21                       15
-       1422320037411955f   - 3016560402417843941f
-     + 
-                             9                     3
-       - 2414249368183033161f  - 16561862361763873f
-     ,
-
-                      12                  2
-       (1387545279120f   - 1387545279120)e
-     + 
-                      43                  37
-           4321823003f   - 11037922310209f
-         + 
-                              31                    25
-           - 1727510711947989f   - 2165150991154425f
-         + 
-                           19                    13
-           - 5114342560755f   + 2162682824948601f
-         + 
-                            7
-           1732620732685741f  + 13506088516033f
-      *
-         e
-     + 
-                   44                  38
-       24177661775f   - 61749727185325f
-     + 
-                          32                     26
-       - 9664106795754225f   - 12090487758628245f
-     + 
-                       20                     14
-       - 8787672733575f   + 12083693383005045f
-     + 
-                        8                  2
-       9672870290826025f  + 68544102808525f
-     ,
-
-        48        42          36          30          18
-       f   - 2554f   - 399710f   - 499722f   + 499722f
-     + 
-              12        6
-       399710f   + 2554f  - 1
-     ]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty13}
-\begin{paste}{LexTriangularPackageXmpPageEmpty13}{LexTriangularPackageXmpPagePatch13}
-\pastebutton{LexTriangularPackageXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{lg := groebner(lp)$lextripack\free{lp }\free{lextripack }\bound{lg }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch14}
-\begin{paste}{LexTriangularPackageXmpPageFull14}{LexTriangularPackageXmpPageEmpty14}
-\pastebutton{LexTriangularPackageXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lexTriangular(lg,false)$lextripack\free{lg }\free{lextripack }}
-\indentrel{3}\begin{verbatim}
-   (14)
-   [
-       6
-     {f  + 1,
-       6       5     2 4     3 3     4 2     5
-      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
-            2 5     3 4     4 3     5 2
-      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
-             2 5     3 4     4 3      5 2
-      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
-           2 5     3 4     4 3     5 2
-      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
-     ,
-
-       6                     2           2
-     {f  - 1, e - f, d - f, c  + 4f c + f ,
-                         2
-      (c - f)b - f c - 5f , a + b + c + 3f}
-     ,
-      6                        2           2
-    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
-
-       6              2           2
-     {f  - 1, e - f, d  + 4f d + f ,
-                         2
-      (d - f)c - f d - 5f , b - f, a + c + d + 3f}
-     ,
-
-     {
-          36        30          24          18          12
-         f   - 2554f   - 399709f   - 502276f   - 399709f
-       + 
-                6
-         - 2554f  + 1
-       ,
-
-                    12              2
-         (161718564f   - 161718564)e
-       + 
-                      31              25                19
-             - 504205f   + 1287737951f   + 201539391380f
-           + 
-                        13                7
-           253982817368f   + 201940704665f  + 1574134601f
-        *
-           e
-       + 
-                   32              26                 20
-         - 2818405f   + 7198203911f   + 1126548149060f
-       + 
-                     14                 8              2
-       1416530563364f   + 1127377589345f  + 7988820725f
-       ,
-
-                       6
-         (693772639560f  - 693772639560)d
-       + 
-                        2 5                 3 4
-         - 462515093040f e  + 1850060372160f e
-       + 
-                         4 3
-         - 1850060372160f e
-       + 
-                           11                  5  2
-         (- 24513299931120f   - 23588269745040f )e
-       + 
-                         30                 24
-             - 890810428f   + 2275181044754f
-           + 
-                             18                   12
-             355937263869776f   + 413736880104344f
-           + 
-                             6
-             342849304487996f  + 3704966481878
-        *
-           e
-       + 
-                      31                  25
-         - 4163798003f   + 10634395752169f
-       + 
-                          19                    13
-         1664161760192806f   + 2079424391370694f
-       + 
-                          7
-         1668153650635921f  + 10924274392693f
-       ,
-
-                      6                           31
-         (12614047992f  - 12614047992)c - 7246825f
-       + 
-                     25                 19
-         18508536599f   + 2896249516034f
-       + 
-                     13                 7
-       3581539649666f   + 2796477571739f  - 48094301893f
-       ,
-
-                       6
-         (693772639560f  - 693772639560)b
-       + 
-                        2 5                 3 4
-         - 925030186080f e  + 2312575465200f e
-       + 
-                         4 3
-         - 2312575465200f e
-       + 
-                           11                  5  2
-         (- 40007555547960f   - 35382404617560f )e
-       + 
-                          30                 24
-             - 3781280823f   + 9657492291789f
-           + 
-                              18                    12
-             1511158913397906f   + 1837290892286154f
-           + 
-                              6
-             1487216006594361f  + 8077238712093
-        *
-           e
-       + 
-                      31                  25
-         - 9736390478f   + 24866827916734f
-       + 
-                          19                    13
-         3891495681905296f   + 4872556418871424f
-       + 
-                          7
-         3904047887269606f  + 27890075838538f
-       ,
-      a + b + c + d + e + f}
-     ,
-
-       6       2           2                     2
-     {f  - 1, e  + 4f e + f , (e - f)d - f e - 5f ,
-      c - f, b - f, a + d + e + 3f}
-     ]
-         Type: List RegularChain(Integer,[a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty14}
-\begin{paste}{LexTriangularPackageXmpPageEmpty14}{LexTriangularPackageXmpPagePatch14}
-\pastebutton{LexTriangularPackageXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lexTriangular(lg,false)$lextripack\free{lg }\free{lextripack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch15}
-\begin{paste}{LexTriangularPackageXmpPageFull15}{LexTriangularPackageXmpPageEmpty15}
-\pastebutton{LexTriangularPackageXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{lts := lexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [
-       6
-     {f  + 1,
-       6       5     2 4     3 3     4 2     5
-      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
-            2 5     3 4     4 3     5 2
-      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
-             2 5     3 4     4 3      5 2
-      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
-           2 5     3 4     4 3     5 2
-      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
-     ,
-      6                  2           2
-    {f  - 1,e - f,d - f,c  + 4f c + f ,b + c + 4f,a - f},
-      6                        2           2
-    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
-      6            2           2
-    {f  - 1,e - f,d  + 4f d + f ,c + d + 4f,b - f,a - f},
-
-     {
-          36        30          24          18          12
-         f   - 2554f   - 399709f   - 502276f   - 399709f
-       + 
-                6
-         - 2554f  + 1
-       ,
-
-                       2
-         1387545279120e
-       + 
-                        31                  25
-             4321823003f   - 11037922310209f
-           + 
-                                19                    13
-             - 1727506390124986f   - 2176188913464634f
-           + 
-                                7
-             - 1732620732685741f  - 13506088516033f
-        *
-           e
-       + 
-                     32                  26
-         24177661775f   - 61749727185325f
-       + 
-                            20                     14
-         - 9664082618092450f   - 12152237485813570f
-       + 
-                            8                  2
-         - 9672870290826025f  - 68544102808525f
-       ,
-
-         1387545279120d
-       + 
-                          30                 24
-             - 1128983050f   + 2883434331830f
-           + 
-                             18                   12
-             451234998755840f   + 562426491685760f
-           + 
-                             6
-             447129055314890f  - 165557857270
-        *
-           e
-       + 
-                      31                 25
-         - 1816935351f   + 4640452214013f
-       + 
-                         19                   13
-         726247129626942f   + 912871801716798f
-       + 
-                         7
-         726583262666877f  + 4909358645961f
-       ,
-
-                                    31                 25
-         1387545279120c + 778171189f   - 1987468196267f
-       + 
-                           19                   13
-         - 310993556954378f   - 383262822316802f
-       + 
-                           7
-         - 300335488637543f  + 5289595037041f
-       ,
-
-         1387545279120b
-       + 
-                        30                 24
-             1128983050f   - 2883434331830f
-           + 
-                               18                   12
-             - 451234998755840f   - 562426491685760f
-           + 
-                               6
-             - 447129055314890f  + 165557857270
-        *
-           e
-       + 
-                      31                 25
-         - 3283058841f   + 8384938292463f
-       + 
-                          19                    13
-         1312252817452422f   + 1646579934064638f
-       + 
-                          7
-         1306372958656407f  + 4694680112151f
-       ,
-
-                                                      31
-         1387545279120a + 1387545279120e + 4321823003f
-       + 
-                          25                    19
-         - 11037922310209f   - 1727506390124986f
-       + 
-                            13                    7
-         - 2176188913464634f   - 1732620732685741f
-       + 
-         - 13506088516033f
-       }
-     ,
-      6      2           2
-    {f  - 1,e  + 4f e + f ,d + e + 4f,c - f,b - f,a - f}]
-         Type: List RegularChain(Integer,[a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty15}
-\begin{paste}{LexTriangularPackageXmpPageEmpty15}{LexTriangularPackageXmpPagePatch15}
-\pastebutton{LexTriangularPackageXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{lts := lexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch16}
-\begin{paste}{LexTriangularPackageXmpPageFull16}{LexTriangularPackageXmpPageEmpty16}
-\pastebutton{LexTriangularPackageXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{[[init(p) for p in (ts :: List(P))] for ts in lts]\free{lts }}
-\indentrel{3}\begin{verbatim}
-   (16)
-   [[1,3,1,3,1,1], [1,1,1,1,1,1], [1,1,1,1,1,1],
-    [1,1,1,1,1,1],
-
-     [1387545279120, 1387545279120, 1387545279120,
-      1387545279120, 1387545279120, 1]
-     ,
-    [1,1,1,1,1,1]]
-Type: List List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [a,b,c,d,e,f])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty16}
-\begin{paste}{LexTriangularPackageXmpPageEmpty16}{LexTriangularPackageXmpPagePatch16}
-\pastebutton{LexTriangularPackageXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[[init(p) for p in (ts :: List(P))] for ts in lts]\free{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch17}
-\begin{paste}{LexTriangularPackageXmpPageFull17}{LexTriangularPackageXmpPageEmpty17}
-\pastebutton{LexTriangularPackageXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{squareFreeLexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }}
-\indentrel{3}\begin{verbatim}
-   (17)
-   [
-       6
-     {f  + 1,
-       6       5     2 4     3 3     4 2     5
-      e  - 3f e  + 3f e  - 4f e  + 3f e  - 3f e - 1,
-            2 5     3 4     4 3     5 2
-      3d + f e  - 4f e  + 4f e  - 2f e  - 2e + 2f, c + f,
-             2 5     3 4     4 3      5 2
-      3b + 2f e  - 5f e  + 5f e  - 10f e  - 4e + 7f,
-           2 5     3 4     4 3     5 2
-      a - f e  + 3f e  - 3f e  + 4f e  + 3e - 3f}
-     ,
-      6                  2           2
-    {f  - 1,e - f,d - f,c  + 4f c + f ,b + c + 4f,a - f},
-      6                        2           2
-    {f  - 1,e - f,d - f,c - f,b  + 4f b + f ,a + b + 4f},
-      6            2           2
-    {f  - 1,e - f,d  + 4f d + f ,c + d + 4f,b - f,a - f},
-
-     {
-          36        30          24          18          12
-         f   - 2554f   - 399709f   - 502276f   - 399709f
-       + 
-                6
-         - 2554f  + 1
-       ,
-
-                       2
-         1387545279120e
-       + 
-                        31                  25
-             4321823003f   - 11037922310209f
-           + 
-                                19                    13
-             - 1727506390124986f   - 2176188913464634f
-           + 
-                                7
-             - 1732620732685741f  - 13506088516033f
-        *
-           e
-       + 
-                     32                  26
-         24177661775f   - 61749727185325f
-       + 
-                            20                     14
-         - 9664082618092450f   - 12152237485813570f
-       + 
-                            8                  2
-         - 9672870290826025f  - 68544102808525f
-       ,
-
-         1387545279120d
-       + 
-                          30                 24
-             - 1128983050f   + 2883434331830f
-           + 
-                             18                   12
-             451234998755840f   + 562426491685760f
-           + 
-                             6
-             447129055314890f  - 165557857270
-        *
-           e
-       + 
-                      31                 25
-         - 1816935351f   + 4640452214013f
-       + 
-                         19                   13
-         726247129626942f   + 912871801716798f
-       + 
-                         7
-         726583262666877f  + 4909358645961f
-       ,
-
-                                    31                 25
-         1387545279120c + 778171189f   - 1987468196267f
-       + 
-                           19                   13
-         - 310993556954378f   - 383262822316802f
-       + 
-                           7
-         - 300335488637543f  + 5289595037041f
-       ,
-
-         1387545279120b
-       + 
-                        30                 24
-             1128983050f   - 2883434331830f
-           + 
-                               18                   12
-             - 451234998755840f   - 562426491685760f
-           + 
-                               6
-             - 447129055314890f  + 165557857270
-        *
-           e
-       + 
-                      31                 25
-         - 3283058841f   + 8384938292463f
-       + 
-                          19                    13
-         1312252817452422f   + 1646579934064638f
-       + 
-                          7
-         1306372958656407f  + 4694680112151f
-       ,
-
-                                                      31
-         1387545279120a + 1387545279120e + 4321823003f
-       + 
-                          25                    19
-         - 11037922310209f   - 1727506390124986f
-       + 
-                            13                    7
-         - 2176188913464634f   - 1732620732685741f
-       + 
-         - 13506088516033f
-       }
-     ,
-      6      2           2
-    {f  - 1,e  + 4f e + f ,d + e + 4f,c - f,b - f,a - f}]
-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]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty17}
-\begin{paste}{LexTriangularPackageXmpPageEmpty17}{LexTriangularPackageXmpPagePatch17}
-\pastebutton{LexTriangularPackageXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{squareFreeLexTriangular(lg,true)$lextripack\free{lg }\free{lextripack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch18}
-\begin{paste}{LexTriangularPackageXmpPageFull18}{LexTriangularPackageXmpPageEmpty18}
-\pastebutton{LexTriangularPackageXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[degree(ts) for ts in lts])\free{lts }}
-\indentrel{3}\begin{verbatim}
-   (18)  156
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty18}
-\begin{paste}{LexTriangularPackageXmpPageEmpty18}{LexTriangularPackageXmpPagePatch18}
-\pastebutton{LexTriangularPackageXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[degree(ts) for ts in lts])\free{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch19}
-\begin{paste}{LexTriangularPackageXmpPageFull19}{LexTriangularPackageXmpPageEmpty19}
-\pastebutton{LexTriangularPackageXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{ls2 : List Symbol := concat(ls,new()$Symbol)\free{ls }\bound{ls2 }}
-\indentrel{3}\begin{verbatim}
-   (19)  [a,b,c,d,e,f,%A]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty19}
-\begin{paste}{LexTriangularPackageXmpPageEmpty19}{LexTriangularPackageXmpPagePatch19}
-\pastebutton{LexTriangularPackageXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{ls2 : List Symbol := concat(ls,new()$Symbol)\free{ls }\bound{ls2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch20}
-\begin{paste}{LexTriangularPackageXmpPageFull20}{LexTriangularPackageXmpPageEmpty20}
-\pastebutton{LexTriangularPackageXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{zdpack := ZDSOLVE(R,ls,ls2)\free{R }\free{ls }\free{ls2 }\bound{zdpack }}
-\indentrel{3}\begin{verbatim}
-   (20)
-  ZeroDimensionalSolvePackage(Integer,[a,b,c,d,e,f],[a,b,
-  c,d,e,f,%A])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty20}
-\begin{paste}{LexTriangularPackageXmpPageEmpty20}{LexTriangularPackageXmpPagePatch20}
-\pastebutton{LexTriangularPackageXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{zdpack := ZDSOLVE(R,ls,ls2)\free{R }\free{ls }\free{ls2 }\bound{zdpack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch21}
-\begin{paste}{LexTriangularPackageXmpPageFull21}{LexTriangularPackageXmpPageEmpty21}
-\pastebutton{LexTriangularPackageXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{concat [univariateSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   [
-                     4      2
-     [complexRoots= ?  - 13?  + 49,
-
-       coordinates =
-                 3                3
-         [7a + %A  - 6%A, 21b + %A  + %A,
-                   3                3
-          21c - 2%A  + 19%A, 7d - %A  + 6%A,
-                  3                3
-          21e - %A  - %A, 21f + 2%A  - 19%A]
-       ]
-     ,
-
-                     4      2
-     [complexRoots= ?  + 11?  + 49,
-
-       coordinates =
-                   3                 3
-         [35a + 3%A  + 19%A, 35b + %A  + 18%A,
-                   3                3
-          35c - 2%A  - %A, 35d - 3%A  - 19%A,
-                  3                  3
-          35e - %A  - 18%A, 35f + 2%A  + %A]
-       ]
-     ,
-
-     [
-       complexRoots =
-            8      7      6       5       4       3
-           ?  - 12?  + 58?  - 120?  + 207?  - 360?
-         + 
-               2
-           802?  - 1332? + 1369
-       ,
-
-       coordinates =
-         [
-                                7           6            5
-             43054532a + 33782%A  - 546673%A  + 3127348%A
-           + 
-                        4            3             2
-             - 6927123%A  + 4365212%A  - 25086957%A
-           + 
-             39582814%A - 107313172
-           ,
-
-                                7           6            5
-             43054532b - 33782%A  + 546673%A  - 3127348%A
-           + 
-                      4            3             2
-             6927123%A  - 4365212%A  + 25086957%A
-           + 
-             - 39582814%A + 107313172
-           ,
-
-                                7           6            5
-             21527266c - 22306%A  + 263139%A  - 1166076%A
-           + 
-                      4            3             2
-             1821805%A  - 2892788%A  + 10322663%A
-           + 
-             - 9026596%A + 12950740
-           ,
-
-                                7           6            5
-             43054532d + 22306%A  - 263139%A  + 1166076%A
-           + 
-                        4            3             2
-             - 1821805%A  + 2892788%A  - 10322663%A
-           + 
-             30553862%A - 12950740
-           ,
-
-                                7           6            5
-             43054532e - 22306%A  + 263139%A  - 1166076%A
-           + 
-                      4            3             2
-             1821805%A  - 2892788%A  + 10322663%A
-           + 
-             - 30553862%A + 12950740
-           ,
-
-                                7           6            5
-             21527266f + 22306%A  - 263139%A  + 1166076%A
-           + 
-                        4            3             2
-             - 1821805%A  + 2892788%A  - 10322663%A
-           + 
-             9026596%A - 12950740
-           ]
-       ]
-     ,
-
-     [
-       complexRoots =
-            8      7      6       5       4       3
-           ?  + 12?  + 58?  + 120?  + 207?  + 360?
-         + 
-               2
-           802?  + 1332? + 1369
-       ,
-
-       coordinates =
-         [
-                                7           6            5
-             43054532a + 33782%A  + 546673%A  + 3127348%A
-           + 
-                      4            3             2
-             6927123%A  + 4365212%A  + 25086957%A
-           + 
-             39582814%A + 107313172
-           ,
-
-                                7           6            5
-             43054532b - 33782%A  - 546673%A  - 3127348%A
-           + 
-                        4            3             2
-             - 6927123%A  - 4365212%A  - 25086957%A
-           + 
-             - 39582814%A - 107313172
-           ,
-
-                                7           6            5
-             21527266c - 22306%A  - 263139%A  - 1166076%A
-           + 
-                        4            3             2
-             - 1821805%A  - 2892788%A  - 10322663%A
-           + 
-             - 9026596%A - 12950740
-           ,
-
-                                7           6            5
-             43054532d + 22306%A  + 263139%A  + 1166076%A
-           + 
-                      4            3             2
-             1821805%A  + 2892788%A  + 10322663%A
-           + 
-             30553862%A + 12950740
-           ,
-
-                                7           6            5
-             43054532e - 22306%A  - 263139%A  - 1166076%A
-           + 
-                        4            3             2
-             - 1821805%A  - 2892788%A  - 10322663%A
-           + 
-             - 30553862%A - 12950740
-           ,
-
-                                7           6            5
-             21527266f + 22306%A  + 263139%A  + 1166076%A
-           + 
-                      4            3             2
-             1821805%A  + 2892788%A  + 10322663%A
-           + 
-             9026596%A + 12950740
-           ]
-       ]
-     ,
-
-                     4    2
-     [complexRoots= ?  - ?  + 1,
-
-       coordinates =
-                        3             3
-         [a - %A, b + %A  - %A, c + %A , d + %A,
-                3             3
-          e - %A  + %A, f - %A ]
-       ]
-     ,
-
-                     8     6      4      2
-     [complexRoots= ?  + 4?  + 12?  + 16?  + 4,
-
-       coordinates =
-                  7      5       3
-         [4a - 2%A  - 7%A  - 20%A  - 22%A,
-                  7      5       3
-          4b + 2%A  + 7%A  + 20%A  + 22%A,
-                 7      5       3
-          4c + %A  + 3%A  + 10%A  + 10%A,
-                 7      5       3
-          4d + %A  + 3%A  + 10%A  + 6%A,
-                 7      5       3
-          4e - %A  - 3%A  - 10%A  - 6%A,
-                 7      5       3
-          4f - %A  - 3%A  - 10%A  - 10%A]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  - 5%A  - 30%A - 6,
-                 3      2
-          6b + %A  + 5%A  + 24%A + 6,
-                  3      2
-          30c - %A  - 5%A  - 6,
-                  3      2
-          30d - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30e - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30f - %A  - 5%A  - 30%A - 6]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  + 5%A  - 30%A + 6,
-                 3      2
-          6b + %A  - 5%A  + 24%A - 6,
-                  3      2
-          30c - %A  + 5%A  + 6,
-                  3      2
-          30d - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30e - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30f - %A  + 5%A  - 30%A + 6]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  + 6? + 6,
-
-       coordinates =
-         [a + 1,b - %A - 5,c + %A + 1,d + 1,e + 1,f + 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 6? + 6,
-
-       coordinates =
-         [a - 1,b - %A + 5,c + %A - 1,d - 1,e - 1,f - 1]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
-
-       coordinates =
-                 3      2
-         [6a + %A  + 5%A  + 24%A + 6,
-                  3      2
-          30b - %A  - 5%A  - 6,
-                  3      2
-          30c - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30d - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30e - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30f - %A  - 5%A  - 30%A - 6]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
-
-       coordinates =
-                 3      2
-         [6a + %A  - 5%A  + 24%A - 6,
-                  3      2
-          30b - %A  + 5%A  + 6,
-                  3      2
-          30c - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30d - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30e - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30f - %A  + 5%A  - 30%A + 6]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  + 6? + 6,
-
-       coordinates =
-         [a - %A - 5,b + %A + 1,c + 1,d + 1,e + 1,f + 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 6? + 6,
-
-       coordinates =
-         [a - %A + 5,b + %A - 1,c - 1,d - 1,e - 1,f - 1]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30b - %A  - 5%A  - 30%A - 6,
-                 3      2
-          6c + %A  + 5%A  + 24%A + 6,
-                  3      2
-          30d - %A  - 5%A  - 6,
-                  3      2
-          30e - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30f - %A  - 5%A  - 30%A - 6]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30b - %A  + 5%A  - 30%A + 6,
-                 3      2
-          6c + %A  - 5%A  + 24%A - 6,
-                  3      2
-          30d - %A  + 5%A  + 6,
-                  3      2
-          30e - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30f - %A  + 5%A  - 30%A + 6]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  + 6? + 6,
-
-       coordinates =
-         [a + 1,b + 1,c - %A - 5,d + %A + 1,e + 1,f + 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 6? + 6,
-
-       coordinates =
-         [a - 1,b - 1,c - %A + 5,d + %A - 1,e - 1,f - 1]
-       ]
-     ,
-
-     [
-       complexRoots =
-          8     7      6      5      4     2
-         ?  + 6?  + 16?  + 24?  + 18?  - 8?  + 4
-       ,
-
-       coordinates =
-         [
-                     7      6       5       4      3
-             2a + 2%A  + 9%A  + 18%A  + 19%A  + 4%A
-           + 
-                   2
-             - 10%A  - 2%A + 4
-           ,
-
-                     7      6       5       4      3
-             2b + 2%A  + 9%A  + 18%A  + 19%A  + 4%A
-           + 
-                   2
-             - 10%A  - 4%A + 4
-           ,
-                 7      6      5      4      3
-          2c - %A  - 4%A  - 8%A  - 9%A  - 4%A  - 2%A - 4,
-                 7      6      5      4      3
-          2d + %A  + 4%A  + 8%A  + 9%A  + 4%A  + 2%A + 4,
-
-                     7      6       5       4      3
-             2e - 2%A  - 9%A  - 18%A  - 19%A  - 4%A
-           + 
-                 2
-             10%A  + 4%A - 4
-           ,
-
-                     7      6       5       4      3
-             2f - 2%A  - 9%A  - 18%A  - 19%A  - 4%A
-           + 
-                 2
-             10%A  + 2%A - 4
-           ]
-       ]
-     ,
-
-     [
-       complexRoots =
-            8      7      6       5       4       3
-           ?  + 12?  + 64?  + 192?  + 432?  + 768?
-         + 
-                2
-           1024?  + 768? + 256
-       ,
-
-       coordinates =
-         [
-                         7        6        5         4
-             1408a - 19%A  - 200%A  - 912%A  - 2216%A
-           + 
-                     3         2
-             - 4544%A  - 6784%A  - 6976%A - 1792
-           ,
-
-                         7        6         5         4
-             1408b - 37%A  - 408%A  - 1952%A  - 5024%A
-           + 
-                      3          2
-             - 10368%A  - 16768%A  - 17920%A - 5120
-           ,
-
-                         7        6         5         4
-             1408c + 37%A  + 408%A  + 1952%A  + 5024%A
-           + 
-                    3          2
-             10368%A  + 16768%A  + 17920%A + 5120
-           ,
-
-                         7        6        5         4
-             1408d + 19%A  + 200%A  + 912%A  + 2216%A
-           + 
-                   3         2
-             4544%A  + 6784%A  + 6976%A + 1792
-           ,
-          2e + %A, 2f - %A]
-       ]
-     ,
-
-                     8     6      4      2
-     [complexRoots= ?  + 4?  + 12?  + 16?  + 4,
-
-       coordinates =
-                 7      5       3
-         [4a - %A  - 3%A  - 10%A  - 6%A,
-                 7      5       3
-          4b - %A  - 3%A  - 10%A  - 10%A,
-                  7      5       3
-          4c - 2%A  - 7%A  - 20%A  - 22%A,
-                  7      5       3
-          4d + 2%A  + 7%A  + 20%A  + 22%A,
-                 7      5       3
-          4e + %A  + 3%A  + 10%A  + 10%A,
-                 7      5       3
-          4f + %A  + 3%A  + 10%A  + 6%A]
-       ]
-     ,
-
-                     8      6      4       2
-     [complexRoots= ?  + 16?  - 96?  + 256?  + 256,
-
-       coordinates =
-                   7       5        3
-         [512a - %A  - 12%A  + 176%A  - 448%A,
-                   7       5       3
-          128b - %A  - 16%A  + 96%A  - 256%A,
-                   7       5       3
-          128c + %A  + 16%A  - 96%A  + 256%A,
-                   7       5        3
-          512d + %A  + 12%A  - 176%A  + 448%A, 2e + %A,
-          2f - %A]
-       ]
-     ,
-
-     [
-       complexRoots =
-            8      7      6       5       4       3
-           ?  - 12?  + 64?  - 192?  + 432?  - 768?
-         + 
-                2
-           1024?  - 768? + 256
-       ,
-
-       coordinates =
-         [
-                         7        6        5         4
-             1408a - 19%A  + 200%A  - 912%A  + 2216%A
-           + 
-                     3         2
-             - 4544%A  + 6784%A  - 6976%A + 1792
-           ,
-
-                         7        6         5         4
-             1408b - 37%A  + 408%A  - 1952%A  + 5024%A
-           + 
-                      3          2
-             - 10368%A  + 16768%A  - 17920%A + 5120
-           ,
-
-                         7        6         5         4
-             1408c + 37%A  - 408%A  + 1952%A  - 5024%A
-           + 
-                    3          2
-             10368%A  - 16768%A  + 17920%A - 5120
-           ,
-
-                         7        6        5         4
-             1408d + 19%A  - 200%A  + 912%A  - 2216%A
-           + 
-                   3         2
-             4544%A  - 6784%A  + 6976%A - 1792
-           ,
-          2e + %A, 2f - %A]
-       ]
-     ,
-
-     [
-       complexRoots =
-          8     7      6      5      4     2
-         ?  - 6?  + 16?  - 24?  + 18?  - 8?  + 4
-       ,
-
-       coordinates =
-         [
-                     7      6       5       4      3
-             2a + 2%A  - 9%A  + 18%A  - 19%A  + 4%A
-           + 
-                 2
-             10%A  - 2%A - 4
-           ,
-
-                     7      6       5       4      3
-             2b + 2%A  - 9%A  + 18%A  - 19%A  + 4%A
-           + 
-                 2
-             10%A  - 4%A - 4
-           ,
-                 7      6      5      4      3
-          2c - %A  + 4%A  - 8%A  + 9%A  - 4%A  - 2%A + 4,
-                 7      6      5      4      3
-          2d + %A  - 4%A  + 8%A  - 9%A  + 4%A  + 2%A - 4,
-
-                     7      6       5       4      3
-             2e - 2%A  + 9%A  - 18%A  + 19%A  - 4%A
-           + 
-                   2
-             - 10%A  + 4%A + 4
-           ,
-
-                     7      6       5       4      3
-             2f - 2%A  + 9%A  - 18%A  + 19%A  - 4%A
-           + 
-                   2
-             - 10%A  + 2%A + 4
-           ]
-       ]
-     ,
-
-                     4      2
-     [complexRoots= ?  + 12?  + 144,
-
-       coordinates =
-                  2               2               2
-         [12a - %A  - 12, 12b - %A  - 12, 12c - %A  - 12,
-                  2              2
-          12d - %A  - 12, 6e + %A  + 3%A + 12,
-                 2
-          6f + %A  - 3%A + 12]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
-
-       coordinates =
-                 3      2
-         [6a - %A  - 5%A  - 24%A - 6,
-                  3      2
-          30b + %A  + 5%A  + 30%A + 6,
-                  3      2
-          30c + %A  + 5%A  + 30%A + 6,
-                  3      2
-          30d + %A  + 5%A  + 30%A + 6,
-                  3      2
-          30e + %A  + 5%A  + 30%A + 6,
-                  3      2
-          30f + %A  + 5%A  + 6]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
-
-       coordinates =
-                 3      2
-         [6a - %A  + 5%A  - 24%A + 6,
-                  3      2
-          30b + %A  - 5%A  + 30%A - 6,
-                  3      2
-          30c + %A  - 5%A  + 30%A - 6,
-                  3      2
-          30d + %A  - 5%A  + 30%A - 6,
-                  3      2
-          30e + %A  - 5%A  + 30%A - 6,
-                  3      2
-          30f + %A  - 5%A  - 6]
-       ]
-     ,
-
-                     4      2
-     [complexRoots= ?  + 12?  + 144,
-
-       coordinates =
-                  2               2               2
-         [12a + %A  + 12, 12b + %A  + 12, 12c + %A  + 12,
-                  2              2
-          12d + %A  + 12, 6e - %A  + 3%A - 12,
-                 2
-          6f - %A  - 3%A - 12]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 12,
-
-       coordinates =
-         [a - 1,b - 1,c - 1,d - 1,2e + %A + 4,2f - %A + 4]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  + 6? + 6,
-
-       coordinates =
-         [a + %A + 5,b - 1,c - 1,d - 1,e - 1,f - %A - 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 6? + 6,
-
-       coordinates =
-         [a + %A - 5,b + 1,c + 1,d + 1,e + 1,f - %A + 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 12,
-
-       coordinates =
-         [a + 1,b + 1,c + 1,d + 1,2e + %A - 4,2f - %A - 4]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  + 6?  + 30?  + 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30b - %A  - 5%A  - 30%A - 6,
-                  3      2
-          30c - %A  - 5%A  - 30%A - 6,
-                 3      2
-          6d + %A  + 5%A  + 24%A + 6,
-                  3      2
-          30e - %A  - 5%A  - 6,
-                  3      2
-          30f - %A  - 5%A  - 30%A - 6]
-       ]
-     ,
-
-                     4     3      2
-     [complexRoots= ?  - 6?  + 30?  - 36? + 36,
-
-       coordinates =
-                  3      2
-         [30a - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30b - %A  + 5%A  - 30%A + 6,
-                  3      2
-          30c - %A  + 5%A  - 30%A + 6,
-                 3      2
-          6d + %A  - 5%A  + 24%A - 6,
-                  3      2
-          30e - %A  + 5%A  + 6,
-                  3      2
-          30f - %A  + 5%A  - 30%A + 6]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  + 6? + 6,
-
-       coordinates =
-         [a + 1,b + 1,c + 1,d - %A - 5,e + %A + 1,f + 1]
-       ]
-     ,
-
-                     2
-     [complexRoots= ?  - 6? + 6,
-
-       coordinates =
-         [a - 1,b - 1,c - 1,d - %A + 5,e + %A - 1,f - 1]
-       ]
-     ]
-Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty21}
-\begin{paste}{LexTriangularPackageXmpPageEmpty21}{LexTriangularPackageXmpPagePatch21}
-\pastebutton{LexTriangularPackageXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{concat [univariateSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
-\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPagePatch22}
-\begin{paste}{LexTriangularPackageXmpPageFull22}{LexTriangularPackageXmpPageEmpty22}
-\pastebutton{LexTriangularPackageXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{concat [realSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [[%R1,%R1,%R1,%R5,- %R5 - 4%R1,%R1],
-    [%R1,%R1,%R1,%R6,- %R6 - 4%R1,%R1],
-    [%R2,%R2,%R2,%R3,- %R3 - 4%R2,%R2],
-    [%R2,%R2,%R2,%R4,- %R4 - 4%R2,%R2],
-    [%R7,%R7,%R7,%R7,%R11,- %R11 - 4%R7],
-    [%R7,%R7,%R7,%R7,%R12,- %R12 - 4%R7],
-    [%R8,%R8,%R8,%R8,%R9,- %R9 - 4%R8],
-    [%R8,%R8,%R8,%R8,%R10,- %R10 - 4%R8],
-    [%R13,%R13,%R17,- %R17 - 4%R13,%R13,%R13],
-    [%R13,%R13,%R18,- %R18 - 4%R13,%R13,%R13],
-    [%R14,%R14,%R15,- %R15 - 4%R14,%R14,%R14],
-    [%R14,%R14,%R16,- %R16 - 4%R14,%R14,%R14],
-
-     [%R19, %R29,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄ %R19
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄ %R19
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R29 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          1387545279120
-       ]
-     ,
-
-     [%R19, %R30,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄ %R19
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄ %R19
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R30 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R19
-          1387545279120
-       ]
-     ,
-
-     [%R20, %R27,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄ %R20
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄ %R20
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R27 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          1387545279120
-       ]
-     ,
-
-     [%R20, %R28,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄ %R20
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄ %R20
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R28 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R20
-          1387545279120
-       ]
-     ,
-
-     [%R21, %R25,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄ %R21
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄ %R21
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R25 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          1387545279120
-       ]
-     ,
-
-     [%R21, %R26,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄ %R21
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄ %R21
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R26 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R21
-          1387545279120
-       ]
-     ,
-
-     [%R22, %R23,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄ %R22
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄ %R22
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R23 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          1387545279120
-       ]
-     ,
-
-     [%R22, %R24,
-
-           7865521      31   6696179241     25
-         ÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄ %R22
-         6006689520          2002229840
-       + 
-           25769893181     19   1975912990729     13
-         - ÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             49235160             3003344760
-       + 
-           1048460696489     7   21252634831
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄ %R22
-             2002229840           6006689520
-       ,
-
-             778171189       31   1987468196267     25
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           1387545279120          1387545279120
-       + 
-         155496778477189     19   191631411158401     13
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           693772639560             693772639560
-       + 
-         300335488637543     7   755656433863
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          1387545279120          198220754160
-       ,
-
-          1094352947      31   2794979430821     25
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-         462515093040           462515093040
-       + 
-           218708802908737     19   91476663003591     13
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             231257546520             77085848840
-       + 
-           145152550961823     7   1564893370717
-         - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22  - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-             154171697680           462515093040
-       ,
-
-                    4321823003      31
-         - %R24 - ÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-                  1387545279120
-       + 
-         180949546069     25   863753195062493     19
-         ÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          22746643920            693772639560
-       + 
-         1088094456732317     13   1732620732685741     7
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22   + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-           693772639560              1387545279120
-       + 
-         13506088516033
-         ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ %R22
-          1387545279120
-       ]
-     ,
-    [%R31,%R35,- %R35 - 4%R31,%R31,%R31,%R31],
-    [%R31,%R36,- %R36 - 4%R31,%R31,%R31,%R31],
-    [%R32,%R33,- %R33 - 4%R32,%R32,%R32,%R32],
-    [%R32,%R34,- %R34 - 4%R32,%R32,%R32,%R32]]
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LexTriangularPackageXmpPageEmpty22}
-\begin{paste}{LexTriangularPackageXmpPageEmpty22}{LexTriangularPackageXmpPagePatch22}
-\pastebutton{LexTriangularPackageXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{concat [realSolve(ts)$zdpack for ts in lts]\free{lts }\free{zdpack }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lib.pht b/books/pages/lib.pht
deleted file mode 100644
index 27593b0..0000000
--- a/books/pages/lib.pht
+++ /dev/null
@@ -1,129 +0,0 @@
-\begin{patch}{LibraryXmpPagePatch1}
-\begin{paste}{LibraryXmpPageFull1}{LibraryXmpPageEmpty1}
-\pastebutton{LibraryXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{stuff := library "/tmp/Neat.stuff"\bound{stuff }}
-\indentrel{3}\begin{verbatim}
-   (1)  "/tmp/Neat.stuff"
-                                          Type: Library
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty1}
-\begin{paste}{LibraryXmpPageEmpty1}{LibraryXmpPagePatch1}
-\pastebutton{LibraryXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{stuff := library "/tmp/Neat.stuff"\bound{stuff }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch2}
-\begin{paste}{LibraryXmpPageFull2}{LibraryXmpPageEmpty2}
-\pastebutton{LibraryXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{stuff.int := 32**2\free{stuff }\bound{stuffa }}
-\indentrel{3}\begin{verbatim}
-   (2)  1024
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty2}
-\begin{paste}{LibraryXmpPageEmpty2}{LibraryXmpPagePatch2}
-\pastebutton{LibraryXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{stuff.int := 32**2\free{stuff }\bound{stuffa }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch3}
-\begin{paste}{LibraryXmpPageFull3}{LibraryXmpPageEmpty3}
-\pastebutton{LibraryXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{stuff."poly" := x**2 + 1\free{stuffa }\bound{stuffb }}
-\indentrel{3}\begin{verbatim}
-         2
-   (3)  x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty3}
-\begin{paste}{LibraryXmpPageEmpty3}{LibraryXmpPagePatch3}
-\pastebutton{LibraryXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{stuff."poly" := x**2 + 1\free{stuffa }\bound{stuffb }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch4}
-\begin{paste}{LibraryXmpPageFull4}{LibraryXmpPageEmpty4}
-\pastebutton{LibraryXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{stuff.str := "Hello"\free{stuffb }\bound{stuffc }}
-\indentrel{3}\begin{verbatim}
-   (4)  "Hello"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty4}
-\begin{paste}{LibraryXmpPageEmpty4}{LibraryXmpPagePatch4}
-\pastebutton{LibraryXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{stuff.str := "Hello"\free{stuffb }\bound{stuffc }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch5}
-\begin{paste}{LibraryXmpPageFull5}{LibraryXmpPageEmpty5}
-\pastebutton{LibraryXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{keys stuff\free{stuffa stuffb stuffc }\bound{stuffabc }}
-\indentrel{3}\begin{verbatim}
-   (5)  ["str","poly","int"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty5}
-\begin{paste}{LibraryXmpPageEmpty5}{LibraryXmpPagePatch5}
-\pastebutton{LibraryXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{keys stuff\free{stuffa stuffb stuffc }\bound{stuffabc }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch6}
-\begin{paste}{LibraryXmpPageFull6}{LibraryXmpPageEmpty6}
-\pastebutton{LibraryXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{stuff.poly\free{stuffb }}
-\indentrel{3}\begin{verbatim}
-         2
-   (6)  x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty6}
-\begin{paste}{LibraryXmpPageEmpty6}{LibraryXmpPagePatch6}
-\pastebutton{LibraryXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{stuff.poly\free{stuffb }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch7}
-\begin{paste}{LibraryXmpPageFull7}{LibraryXmpPageEmpty7}
-\pastebutton{LibraryXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{stuff("poly")\free{stuffb }}
-\indentrel{3}\begin{verbatim}
-         2
-   (7)  x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty7}
-\begin{paste}{LibraryXmpPageEmpty7}{LibraryXmpPagePatch7}
-\pastebutton{LibraryXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{stuff("poly")\free{stuffb }}
-\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPagePatch8}
-\begin{paste}{LibraryXmpPageFull8}{LibraryXmpPageEmpty8}
-\pastebutton{LibraryXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{)system rm -rf /tmp/Neat.stuff\free{stuff }\bound{rmstuff }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LibraryXmpPageEmpty8}
-\begin{paste}{LibraryXmpPageEmpty8}{LibraryXmpPagePatch8}
-\pastebutton{LibraryXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{)system rm -rf /tmp/Neat.stuff\free{stuff }\bound{rmstuff }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/list.pht b/books/pages/list.pht
deleted file mode 100644
index 59ecb37..0000000
--- a/books/pages/list.pht
+++ /dev/null
@@ -1,528 +0,0 @@
-\begin{patch}{ugxListDotPagePatch1}
-\begin{paste}{ugxListDotPageFull1}{ugxListDotPageEmpty1}
-\pastebutton{ugxListDotPageFull1}{\hidepaste}
-\tab{5}\spadcommand{[1..3,10,20..23]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1..3,10..10,20..23]
-                     Type: List Segment PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListDotPageEmpty1}
-\begin{paste}{ugxListDotPageEmpty1}{ugxListDotPagePatch1}
-\pastebutton{ugxListDotPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{[1..3,10,20..23]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListDotPagePatch2}
-\begin{paste}{ugxListDotPageFull2}{ugxListDotPageEmpty2}
-\pastebutton{ugxListDotPageFull2}{\hidepaste}
-\tab{5}\spadcommand{expand [1..3,10,20..23]}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3,10,20,21,22,23]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListDotPageEmpty2}
-\begin{paste}{ugxListDotPageEmpty2}{ugxListDotPagePatch2}
-\pastebutton{ugxListDotPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{expand [1..3,10,20..23]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListDotPagePatch3}
-\begin{paste}{ugxListDotPageFull3}{ugxListDotPageEmpty3}
-\pastebutton{ugxListDotPageFull3}{\hidepaste}
-\tab{5}\spadcommand{expand [1..]}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,2,3,4,5,6,7,8,9,10,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListDotPageEmpty3}
-\begin{paste}{ugxListDotPageEmpty3}{ugxListDotPagePatch3}
-\pastebutton{ugxListDotPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{expand [1..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch1}
-\begin{paste}{ugxListOtherPageFull1}{ugxListOtherPageEmpty1}
-\pastebutton{ugxListOtherPageFull1}{\hidepaste}
-\tab{5}\spadcommand{k := [1,2,3]\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty1}
-\begin{paste}{ugxListOtherPageEmpty1}{ugxListOtherPagePatch1}
-\pastebutton{ugxListOtherPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{k := [1,2,3]\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch2}
-\begin{paste}{ugxListOtherPageFull2}{ugxListOtherPageEmpty2}
-\pastebutton{ugxListOtherPageFull2}{\hidepaste}
-\tab{5}\spadcommand{rest k\free{k }}
-\indentrel{3}\begin{verbatim}
-   (2)  [2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty2}
-\begin{paste}{ugxListOtherPageEmpty2}{ugxListOtherPagePatch2}
-\pastebutton{ugxListOtherPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{rest k\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch3}
-\begin{paste}{ugxListOtherPageFull3}{ugxListOtherPageEmpty3}
-\pastebutton{ugxListOtherPageFull3}{\hidepaste}
-\tab{5}\spadcommand{removeDuplicates [4,3,4,3,5,3,4]}
-\indentrel{3}\begin{verbatim}
-   (3)  [4,3,5]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty3}
-\begin{paste}{ugxListOtherPageEmpty3}{ugxListOtherPagePatch3}
-\pastebutton{ugxListOtherPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{removeDuplicates [4,3,4,3,5,3,4]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch4}
-\begin{paste}{ugxListOtherPageFull4}{ugxListOtherPageEmpty4}
-\pastebutton{ugxListOtherPageFull4}{\hidepaste}
-\tab{5}\spadcommand{reverse [1,2,3,4,5,6]}
-\indentrel{3}\begin{verbatim}
-   (4)  [6,5,4,3,2,1]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty4}
-\begin{paste}{ugxListOtherPageEmpty4}{ugxListOtherPagePatch4}
-\pastebutton{ugxListOtherPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{reverse [1,2,3,4,5,6]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch5}
-\begin{paste}{ugxListOtherPageFull5}{ugxListOtherPageEmpty5}
-\pastebutton{ugxListOtherPageFull5}{\hidepaste}
-\tab{5}\spadcommand{member?(1/2,[3/4,5/6,1/2])}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty5}
-\begin{paste}{ugxListOtherPageEmpty5}{ugxListOtherPagePatch5}
-\pastebutton{ugxListOtherPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{member?(1/2,[3/4,5/6,1/2])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPagePatch6}
-\begin{paste}{ugxListOtherPageFull6}{ugxListOtherPageEmpty6}
-\pastebutton{ugxListOtherPageFull6}{\hidepaste}
-\tab{5}\spadcommand{member?(1/12,[3/4,5/6,1/2])}
-\indentrel{3}\begin{verbatim}
-   (6)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListOtherPageEmpty6}
-\begin{paste}{ugxListOtherPageEmpty6}{ugxListOtherPagePatch6}
-\pastebutton{ugxListOtherPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{member?(1/12,[3/4,5/6,1/2])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch1}
-\begin{paste}{ugxListChangePageFull1}{ugxListChangePageEmpty1}
-\pastebutton{ugxListChangePageFull1}{\hidepaste}
-\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (1)  [4,3,7,3,8,5,9,2]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty1}
-\begin{paste}{ugxListChangePageEmpty1}{ugxListChangePagePatch1}
-\pastebutton{ugxListChangePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch2}
-\begin{paste}{ugxListChangePageFull2}{ugxListChangePageEmpty2}
-\pastebutton{ugxListChangePageFull2}{\hidepaste}
-\tab{5}\spadcommand{k.1 := 999\free{k }\bound{k1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  999
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty2}
-\begin{paste}{ugxListChangePageEmpty2}{ugxListChangePagePatch2}
-\pastebutton{ugxListChangePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{k.1 := 999\free{k }\bound{k1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch3}
-\begin{paste}{ugxListChangePageFull3}{ugxListChangePageEmpty3}
-\pastebutton{ugxListChangePageFull3}{\hidepaste}
-\tab{5}\spadcommand{k\free{k1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [999,3,7,3,8,5,9,2]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty3}
-\begin{paste}{ugxListChangePageEmpty3}{ugxListChangePagePatch3}
-\pastebutton{ugxListChangePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{k\free{k1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch4}
-\begin{paste}{ugxListChangePageFull4}{ugxListChangePageEmpty4}
-\pastebutton{ugxListChangePageFull4}{\hidepaste}
-\tab{5}\spadcommand{k := [1,2]\bound{k2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,2]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty4}
-\begin{paste}{ugxListChangePageEmpty4}{ugxListChangePagePatch4}
-\pastebutton{ugxListChangePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{k := [1,2]\bound{k2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch5}
-\begin{paste}{ugxListChangePageFull5}{ugxListChangePageEmpty5}
-\pastebutton{ugxListChangePageFull5}{\hidepaste}
-\tab{5}\spadcommand{m := cons(0,k)\free{k2 }\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (5)  [0,1,2]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty5}
-\begin{paste}{ugxListChangePageEmpty5}{ugxListChangePagePatch5}
-\pastebutton{ugxListChangePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{m := cons(0,k)\free{k2 }\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch6}
-\begin{paste}{ugxListChangePageFull6}{ugxListChangePageEmpty6}
-\pastebutton{ugxListChangePageFull6}{\hidepaste}
-\tab{5}\spadcommand{m.2 := 99\free{m }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  99
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty6}
-\begin{paste}{ugxListChangePageEmpty6}{ugxListChangePagePatch6}
-\pastebutton{ugxListChangePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m.2 := 99\free{m }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch7}
-\begin{paste}{ugxListChangePageFull7}{ugxListChangePageEmpty7}
-\pastebutton{ugxListChangePageFull7}{\hidepaste}
-\tab{5}\spadcommand{m\free{m2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [0,99,2]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty7}
-\begin{paste}{ugxListChangePageEmpty7}{ugxListChangePagePatch7}
-\pastebutton{ugxListChangePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePagePatch8}
-\begin{paste}{ugxListChangePageFull8}{ugxListChangePageEmpty8}
-\pastebutton{ugxListChangePageFull8}{\hidepaste}
-\tab{5}\spadcommand{k\free{m2 k2 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [99,2]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListChangePageEmpty8}
-\begin{paste}{ugxListChangePageEmpty8}{ugxListChangePagePatch8}
-\pastebutton{ugxListChangePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{k\free{m2 k2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch1}
-\begin{paste}{ugxListAccessPageFull1}{ugxListAccessPageEmpty1}
-\pastebutton{ugxListAccessPageFull1}{\hidepaste}
-\tab{5}\spadcommand{empty? [x+1]}
-\indentrel{3}\begin{verbatim}
-   (1)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty1}
-\begin{paste}{ugxListAccessPageEmpty1}{ugxListAccessPagePatch1}
-\pastebutton{ugxListAccessPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{empty? [x+1]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch2}
-\begin{paste}{ugxListAccessPageFull2}{ugxListAccessPageEmpty2}
-\pastebutton{ugxListAccessPageFull2}{\hidepaste}
-\tab{5}\spadcommand{([] = nil)@Boolean}
-\indentrel{3}\begin{verbatim}
-   (2)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty2}
-\begin{paste}{ugxListAccessPageEmpty2}{ugxListAccessPagePatch2}
-\pastebutton{ugxListAccessPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{([] = nil)@Boolean}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch3}
-\begin{paste}{ugxListAccessPageFull3}{ugxListAccessPageEmpty3}
-\pastebutton{ugxListAccessPageFull3}{\hidepaste}
-\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (3)  [4,3,7,3,8,5,9,2]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty3}
-\begin{paste}{ugxListAccessPageEmpty3}{ugxListAccessPagePatch3}
-\pastebutton{ugxListAccessPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{k := [4,3,7,3,8,5,9,2]\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch4}
-\begin{paste}{ugxListAccessPageFull4}{ugxListAccessPageEmpty4}
-\pastebutton{ugxListAccessPageFull4}{\hidepaste}
-\tab{5}\spadcommand{first k\free{k }}
-\indentrel{3}\begin{verbatim}
-   (4)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty4}
-\begin{paste}{ugxListAccessPageEmpty4}{ugxListAccessPagePatch4}
-\pastebutton{ugxListAccessPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{first k\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch5}
-\begin{paste}{ugxListAccessPageFull5}{ugxListAccessPageEmpty5}
-\pastebutton{ugxListAccessPageFull5}{\hidepaste}
-\tab{5}\spadcommand{k.first\free{k }}
-\indentrel{3}\begin{verbatim}
-   (5)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty5}
-\begin{paste}{ugxListAccessPageEmpty5}{ugxListAccessPagePatch5}
-\pastebutton{ugxListAccessPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{k.first\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch6}
-\begin{paste}{ugxListAccessPageFull6}{ugxListAccessPageEmpty6}
-\pastebutton{ugxListAccessPageFull6}{\hidepaste}
-\tab{5}\spadcommand{k.1\free{k }}
-\indentrel{3}\begin{verbatim}
-   (6)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty6}
-\begin{paste}{ugxListAccessPageEmpty6}{ugxListAccessPagePatch6}
-\pastebutton{ugxListAccessPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{k.1\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch7}
-\begin{paste}{ugxListAccessPageFull7}{ugxListAccessPageEmpty7}
-\pastebutton{ugxListAccessPageFull7}{\hidepaste}
-\tab{5}\spadcommand{k(1)\free{k }}
-\indentrel{3}\begin{verbatim}
-   (7)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty7}
-\begin{paste}{ugxListAccessPageEmpty7}{ugxListAccessPagePatch7}
-\pastebutton{ugxListAccessPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{k(1)\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch8}
-\begin{paste}{ugxListAccessPageFull8}{ugxListAccessPageEmpty8}
-\pastebutton{ugxListAccessPageFull8}{\hidepaste}
-\tab{5}\spadcommand{n := \#k\free{k }}
-\indentrel{3}\begin{verbatim}
-   (8)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty8}
-\begin{paste}{ugxListAccessPageEmpty8}{ugxListAccessPagePatch8}
-\pastebutton{ugxListAccessPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{n := \#k\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch9}
-\begin{paste}{ugxListAccessPageFull9}{ugxListAccessPageEmpty9}
-\pastebutton{ugxListAccessPageFull9}{\hidepaste}
-\tab{5}\spadcommand{last k\free{k }}
-\indentrel{3}\begin{verbatim}
-   (9)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty9}
-\begin{paste}{ugxListAccessPageEmpty9}{ugxListAccessPagePatch9}
-\pastebutton{ugxListAccessPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{last k\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch10}
-\begin{paste}{ugxListAccessPageFull10}{ugxListAccessPageEmpty10}
-\pastebutton{ugxListAccessPageFull10}{\hidepaste}
-\tab{5}\spadcommand{k.last\free{k }}
-\indentrel{3}\begin{verbatim}
-   (10)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty10}
-\begin{paste}{ugxListAccessPageEmpty10}{ugxListAccessPagePatch10}
-\pastebutton{ugxListAccessPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{k.last\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPagePatch11}
-\begin{paste}{ugxListAccessPageFull11}{ugxListAccessPageEmpty11}
-\pastebutton{ugxListAccessPageFull11}{\hidepaste}
-\tab{5}\spadcommand{k.(\#k)\free{k }}
-\indentrel{3}\begin{verbatim}
-   (11)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListAccessPageEmpty11}
-\begin{paste}{ugxListAccessPageEmpty11}{ugxListAccessPagePatch11}
-\pastebutton{ugxListAccessPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{k.(\#k)\free{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePagePatch1}
-\begin{paste}{ugxListCreatePageFull1}{ugxListCreatePageEmpty1}
-\pastebutton{ugxListCreatePageFull1}{\hidepaste}
-\tab{5}\spadcommand{[2, 4, 5, 6]}
-\indentrel{3}\begin{verbatim}
-   (1)  [2,4,5,6]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePageEmpty1}
-\begin{paste}{ugxListCreatePageEmpty1}{ugxListCreatePagePatch1}
-\pastebutton{ugxListCreatePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{[2, 4, 5, 6]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePagePatch2}
-\begin{paste}{ugxListCreatePageFull2}{ugxListCreatePageEmpty2}
-\pastebutton{ugxListCreatePageFull2}{\hidepaste}
-\tab{5}\spadcommand{[1]}
-\indentrel{3}\begin{verbatim}
-   (2)  [1]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePageEmpty2}
-\begin{paste}{ugxListCreatePageEmpty2}{ugxListCreatePagePatch2}
-\pastebutton{ugxListCreatePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{[1]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePagePatch3}
-\begin{paste}{ugxListCreatePageFull3}{ugxListCreatePageEmpty3}
-\pastebutton{ugxListCreatePageFull3}{\hidepaste}
-\tab{5}\spadcommand{list(1)}
-\indentrel{3}\begin{verbatim}
-   (3)  [1]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePageEmpty3}
-\begin{paste}{ugxListCreatePageEmpty3}{ugxListCreatePagePatch3}
-\pastebutton{ugxListCreatePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{list(1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePagePatch4}
-\begin{paste}{ugxListCreatePageFull4}{ugxListCreatePageEmpty4}
-\pastebutton{ugxListCreatePageFull4}{\hidepaste}
-\tab{5}\spadcommand{append([1,2,3],[5,6,7])}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,2,3,5,6,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePageEmpty4}
-\begin{paste}{ugxListCreatePageEmpty4}{ugxListCreatePagePatch4}
-\pastebutton{ugxListCreatePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{append([1,2,3],[5,6,7])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePagePatch5}
-\begin{paste}{ugxListCreatePageFull5}{ugxListCreatePageEmpty5}
-\pastebutton{ugxListCreatePageFull5}{\hidepaste}
-\tab{5}\spadcommand{cons(10,[9,8,7])}
-\indentrel{3}\begin{verbatim}
-   (5)  [10,9,8,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxListCreatePageEmpty5}
-\begin{paste}{ugxListCreatePageEmpty5}{ugxListCreatePagePatch5}
-\pastebutton{ugxListCreatePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{cons(10,[9,8,7])}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lodo.pht b/books/pages/lodo.pht
deleted file mode 100644
index 22e701b..0000000
--- a/books/pages/lodo.pht
+++ /dev/null
@@ -1,391 +0,0 @@
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull1}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Dx: LODO(EXPR INT, f +-> D(f, x))\bound{Dxd }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Dx: LODO(EXPR INT, f +-> D(f, x))\bound{Dxd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull2}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Dx := D()\free{Dxd }\bound{Dx }}
-\indentrel{3}\begin{verbatim}
-   (2)  D
-Type: LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Dx := D()\free{Dxd }\bound{Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull3}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1\free{Dx }\bound{Dop }}
-\indentrel{3}\begin{verbatim}
-                       3
-         3    G     - x  + H
-   (3)  D  + ÄÄ D + ÄÄÄÄÄÄÄÄ
-              2         3
-             x         x
-Type: LinearOrdinaryDifferentialOperator(Expression Integer,theMap NIL)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{Dop:= Dx**3 + G/x**2*Dx + H/x**3 - 1\free{Dx }\bound{Dop }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull4}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{n == 3\bound{n3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{n == 3\bound{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull5}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n])\bound{phi }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{phi == reduce(+,[subscript(s,[i])*exp(x)/x**i for i in 0..n])\bound{phi }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull6}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{phi1 == Dop(phi) / exp x\bound{phi1 }\free{Dop phi }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{phi1 == Dop(phi) / exp x\bound{phi1 }\free{Dop phi }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull7}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{phi2 == phi1 *x**(n+3)\bound{phi2 }\free{phi1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{phi2 == phi1 *x**(n+3)\bound{phi2 }\free{phi1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull8}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{phi3 == retract(phi2)@(POLY INT)\bound{phi3 }\free{phi2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{phi3 == retract(phi2)@(POLY INT)\bound{phi3 }\free{phi2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull9}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull9}{\hidepaste}
-\tab{5}\spadcommand{pans == phi3 ::UP(x,POLY INT)\free{phi3 }\bound{pans }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{pans == phi3 ::UP(x,POLY INT)\free{phi3 }\bound{pans }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull10}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull10}{\hidepaste}
-\tab{5}\spadcommand{pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1]\bound{pans1 }\free{pans }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{pans1 == [coefficient(pans, (n+3-i) :: NNI) for i in 2..n+1]\bound{pans1 }\free{pans }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull11}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull11}{\hidepaste}
-\tab{5}\spadcommand{leq == solve(pans1,[subscript(s,[i]) for i in 1..n])\bound{leq }\free{pans1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{leq == solve(pans1,[subscript(s,[i]) for i in 1..n])\bound{leq }\free{pans1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull12}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull12}{\hidepaste}
-\tab{5}\spadcommand{leq\free{n3 leq }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [
-                             2
-          s G      3s H + s G  + 6s G
-           0         0     0       0
-     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-       1   3    2          18
-                              3        2
-          (9s G + 54s )H + s G  + 18s G  + 72s G
-             0       0      0        0        0
-      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
-       3                    162
-     ]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{leq\free{n3 leq }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull13}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull13}{\hidepaste}
-\tab{5}\spadcommand{n==4\bound{n4 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{n==4\bound{n4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull14}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull14}{\hidepaste}
-\tab{5}\spadcommand{leq\free{n4 leq }}
-\indentrel{3}\begin{verbatim}
-   (14)
-   [
-                             2
-          s G      3s H + s G  + 6s G
-           0         0     0       0
-     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-       1   3    2          18
-                              3        2
-          (9s G + 54s )H + s G  + 18s G  + 72s G
-             0       0      0        0        0
-      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-       3                    162
-
-       s  =
-        4
-                  2         2                          4
-             27s H  + (18s G  + 378s G + 1296s )H + s G
-                0         0         0         0      0
-           + 
-                  3         2
-             36s G  + 396s G  + 1296s G
-                0         0          0
-        /
-           1944
-       ]
-     ]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{leq\free{n4 leq }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull15}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull15}{\hidepaste}
-\tab{5}\spadcommand{n==7\bound{n7 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{n==7\bound{n7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch16}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull16}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageFull16}{\hidepaste}
-\tab{5}\spadcommand{leq\free{n7 leq }}
-\indentrel{3}\begin{verbatim}
-   (16)
-   [
-                             2
-          s G      3s H + s G  + 6s G
-           0         0     0       0
-     [s = ÄÄÄ, s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-       1   3    2          18
-                              3        2
-          (9s G + 54s )H + s G  + 18s G  + 72s G
-             0       0      0        0        0
-      s = ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-       3                    162
-
-       s  =
-        4
-                  2         2                          4
-             27s H  + (18s G  + 378s G + 1296s )H + s G
-                0         0         0         0      0
-           + 
-                  3         2
-             36s G  + 396s G  + 1296s G
-                0         0          0
-        /
-           1944
-       ,
-
-       s  =
-        5
-                               2
-             (135s G + 2268s )H
-                  0         0
-           + 
-                   3          2
-             (30s G  + 1350s G  + 16416s G + 38880s )H
-                 0          0           0          0
-           + 
-              5        4          3          2
-           s G  + 60s G  + 1188s G  + 9504s G  + 25920s G
-            0        0          0          0           0
-        /
-           29160
-       ,
-
-       s  =
-        6
-                   3          2                        2
-             405s H  + (405s G  + 18468s G + 174960s )H
-                 0          0           0           0
-           + 
-                      4          3           2
-                 45s G  + 3510s G  + 88776s G  + 777600s G
-                    0          0           0            0
-               + 
-                 1166400s
-                         0
-            *
-               H
-           + 
-                6        5          4           3
-             s G  + 90s G  + 2628s G  + 27864s G
-              0        0          0           0
-           + 
-                     2
-             90720s G
-                   0
-        /
-           524880
-       ,
-
-       s  =
-        7
-                                 3
-             (2835s G + 91854s )H
-                   0          0
-           + 
-                       3           2
-                 945s G  + 81648s G  + 2082996s G
-                     0           0             0
-               + 
-                 14171760s
-                          0
-            *
-                2
-               H
-           + 
-                      5          4            3
-                 63s G  + 7560s G  + 317520s G
-                    0          0            0
-               + 
-                           2
-                 5554008s G  + 34058880s G
-                         0              0
-            *
-               H
-           + 
-                7         6          5           4
-             s G  + 126s G  + 4788s G  + 25272s G
-              0         0          0           0
-           + 
-                         3              2
-             - 1744416s G  - 26827200s G  - 97977600s G
-                       0              0              0
-        /
-           11022480
-       ]
-     ]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}{ugxLinearOrdinaryDifferentialOperatorSeriesPagePatch16}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorSeriesPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{leq\free{n7 leq }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lodo1.pht b/books/pages/lodo1.pht
deleted file mode 100644
index 0c7ae65..0000000
--- a/books/pages/lodo1.pht
+++ /dev/null
@@ -1,356 +0,0 @@
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull1}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull1}{\hidepaste}
-\tab{5}\spadcommand{RFZ := Fraction UnivariatePolynomial('x, Integer)\bound{RFZ0 }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction UnivariatePolynomial(x,Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{RFZ := Fraction UnivariatePolynomial('x, Integer)\bound{RFZ0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull2}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull2}{\hidepaste}
-\tab{5}\spadcommand{x : RFZ := 'x\free{RFZ0 }\bound{RFZ }}
-\indentrel{3}\begin{verbatim}
-   (2)  x
-         Type: Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{x : RFZ := 'x\free{RFZ0 }\bound{RFZ }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull3}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull3}{\hidepaste}
-\tab{5}\spadcommand{Dx : LODO1 RFZ := D()\bound{Dx }\free{RFZ }}
-\indentrel{3}\begin{verbatim}
-   (3)  D
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{Dx : LODO1 RFZ := D()\bound{Dx }\free{RFZ }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull4}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x\free{Dx }\bound{b }}
-\indentrel{3}\begin{verbatim}
-          2 2        1
-   (4)  3x D  + 2D + Ä
-                     x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b : LODO1 RFZ := 3*x**2*Dx**2 + 2*Dx + 1/x\free{Dx }\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull5}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a : LODO1 RFZ := b*(5*x*Dx + 7)\free{b Dx }\bound{a }}
-\indentrel{3}\begin{verbatim}
-           3 3       2        2         7
-   (5)  15x D  + (51x  + 10x)D  + 29D + Ä
-                                        x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a : LODO1 RFZ := b*(5*x*Dx + 7)\free{b Dx }\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull6}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p := x**2 + 1/x**2\bound{p }\free{RFZ }}
-\indentrel{3}\begin{verbatim}
-         4
-        x  + 1
-   (6)  ÄÄÄÄÄÄ
-           2
-          x
-         Type: Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p := x**2 + 1/x**2\bound{p }\free{RFZ }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull7}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull7}{\hidepaste}
-\tab{5}\spadcommand{(a*b - b*a) p\free{a b p }}
-\indentrel{3}\begin{verbatim}
-             4
-        - 75x  + 540x - 75
-   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 4
-                x
-         Type: Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{(a*b - b*a) p\free{a b p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull8}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull8}{\hidepaste}
-\tab{5}\spadcommand{ld := leftDivide(a,b)\bound{ld }\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (8)  [quotient= 5x D + 7,remainder= 0]
-Type: Record(quotient: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),remainder: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{ld := leftDivide(a,b)\bound{ld }\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull9}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a = b * ld.quotient + ld.remainder\free{a b ld }}
-\indentrel{3}\begin{verbatim}
-   (9)
-      3 3       2        2         7
-   15x D  + (51x  + 10x)D  + 29D + Ä =
-                                   x
-        3 3       2        2         7
-     15x D  + (51x  + 10x)D  + 29D + Ä
-                                     x
-Type: Equation LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a = b * ld.quotient + ld.remainder\free{a b ld }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull10}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull10}{\hidepaste}
-\tab{5}\spadcommand{rd := rightDivide(a,b)\bound{rd }\free{a b }}
-\indentrel{3}\begin{verbatim}
-                                              5
-   (10)  [quotient= 5x D + 7,remainder= 10D + Ä]
-                                              x
-Type: Record(quotient: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),remainder: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{rd := rightDivide(a,b)\bound{rd }\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull11}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull11}{\hidepaste}
-\tab{5}\spadcommand{a = rd.quotient * b + rd.remainder\free{a b rd }}
-\indentrel{3}\begin{verbatim}
-   (11)
-      3 3       2        2         7
-   15x D  + (51x  + 10x)D  + 29D + Ä =
-                                   x
-        3 3       2        2         7
-     15x D  + (51x  + 10x)D  + 29D + Ä
-                                     x
-Type: Equation LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{a = rd.quotient * b + rd.remainder\free{a b rd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull12}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull12}{\hidepaste}
-\tab{5}\spadcommand{rightQuotient(a,b)\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (12)  5x D + 7
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{rightQuotient(a,b)\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull13}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull13}{\hidepaste}
-\tab{5}\spadcommand{rightRemainder(a,b)\free{a b }}
-\indentrel{3}\begin{verbatim}
-               5
-   (13)  10D + Ä
-               x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{rightRemainder(a,b)\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull14}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull14}{\hidepaste}
-\tab{5}\spadcommand{leftExactQuotient(a,b)\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (14)  5x D + 7
-Type: Union(LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{leftExactQuotient(a,b)\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull15}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull15}{\hidepaste}
-\tab{5}\spadcommand{e := leftGcd(a,b)\bound{e }\free{a b }}
-\indentrel{3}\begin{verbatim}
-           2 2        1
-   (15)  3x D  + 2D + Ä
-                      x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{e := leftGcd(a,b)\bound{e }\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch16}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull16}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull16}{\hidepaste}
-\tab{5}\spadcommand{leftRemainder(a, e)\free{a e }}
-\indentrel{3}\begin{verbatim}
-   (16)  0
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch16}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{leftRemainder(a, e)\free{a e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch17}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull17}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull17}{\hidepaste}
-\tab{5}\spadcommand{rightRemainder(a, e)\free{a e }}
-\indentrel{3}\begin{verbatim}
-               5
-   (17)  10D + Ä
-               x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch17}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{rightRemainder(a, e)\free{a e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch18}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull18}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull18}{\hidepaste}
-\tab{5}\spadcommand{f := rightLcm(a,b)\bound{f }\free{a b }}
-\indentrel{3}\begin{verbatim}
-            3 3       2        2         7
-   (18)  15x D  + (51x  + 10x)D  + 29D + Ä
-                                         x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch18}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{f := rightLcm(a,b)\bound{f }\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch19}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull19}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull19}{\hidepaste}
-\tab{5}\spadcommand{rightRemainder(f, b)\free{f b }}
-\indentrel{3}\begin{verbatim}
-               5
-   (19)  10D + Ä
-               x
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch19}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{rightRemainder(f, b)\free{f b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch20}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull20}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageFull20}{\hidepaste}
-\tab{5}\spadcommand{leftRemainder(f, b)\free{f b }}
-\indentrel{3}\begin{verbatim}
-   (20)  0
-Type: LinearOrdinaryDifferentialOperator1 Fraction UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}{ugxLinearOrdinaryDifferentialOperatorOneRatPagePatch20}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorOneRatPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{leftRemainder(f, b)\free{f b }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lodo2.pht b/books/pages/lodo2.pht
deleted file mode 100644
index 9c26756..0000000
--- a/books/pages/lodo2.pht
+++ /dev/null
@@ -1,499 +0,0 @@
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull1}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Q := Fraction Integer\bound{Q }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Q := Fraction Integer\bound{Q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull2}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull2}{\hidepaste}
-\tab{5}\spadcommand{PQ := UnivariatePolynomial('x, Q)\free{Q }\bound{PQ0 }}
-\indentrel{3}\begin{verbatim}
-   (2)  UnivariatePolynomial(x,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{PQ := UnivariatePolynomial('x, Q)\free{Q }\bound{PQ0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull3}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull3}{\hidepaste}
-\tab{5}\spadcommand{x: PQ := 'x\free{PQ0 }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (3)  x
-         Type: UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x: PQ := 'x\free{PQ0 }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull4}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull4}{\hidepaste}
-\tab{5}\spadcommand{Dx: LODO2(Q, PQ) := D()\free{Q PQ0 }\bound{Dx }}
-\indentrel{3}\begin{verbatim}
-   (4)  D
-Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{Dx: LODO2(Q, PQ) := D()\free{Q PQ0 }\bound{Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull5}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a := Dx + 1\bound{a }\free{Dx }}
-\indentrel{3}\begin{verbatim}
-   (5)  D + 1
-Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a := Dx + 1\bound{a }\free{Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull6}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull6}{\hidepaste}
-\tab{5}\spadcommand{b := a + 1/2*Dx**2 - 1/2\bound{b }\free{Dx }}
-\indentrel{3}\begin{verbatim}
-        1  2       1
-   (6)  Ä D  + D + Ä
-        2          2
-Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{b := a + 1/2*Dx**2 - 1/2\bound{b }\free{Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull7}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p := 4*x**2 + 2/3\free{x }\bound{p }}
-\indentrel{3}\begin{verbatim}
-          2   2
-   (7)  4x  + Ä
-              3
-         Type: UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p := 4*x**2 + 2/3\free{x }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull8}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull8}{\hidepaste}
-\tab{5}\spadcommand{a p\free{a p }}
-\indentrel{3}\begin{verbatim}
-          2        2
-   (8)  4x  + 8x + Ä
-                   3
-         Type: UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{a p\free{a p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull9}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull9}{\hidepaste}
-\tab{5}\spadcommand{(a * b) p = a b p\free{a b p }}
-\indentrel{3}\begin{verbatim}
-          2         37    2         37
-   (9)  2x  + 12x + ÄÄ= 2x  + 12x + ÄÄ
-                     3               3
-Type: Equation UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{(a * b) p = a b p\free{a b p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull10}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull10}{\hidepaste}
-\tab{5}\spadcommand{c := (1/9)*b*(a + b)**2\free{a b }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (10)
-    1  6    5  5   13  4   19  3   79  2    7     1
-   ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D  + ÄÄ D + Ä
-   72      36      24      18      72      12     8
-Type: LinearOrdinaryDifferentialOperator2(Fraction Integer,UnivariatePolynomial(x,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{c := (1/9)*b*(a + b)**2\free{a b }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull11}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageFull11}{\hidepaste}
-\tab{5}\spadcommand{(a**2 - 3/4*b + c) (p + 1)\free{a b c p }}
-\indentrel{3}\begin{verbatim}
-           2   44     541
-   (11)  3x  + ÄÄ x + ÄÄÄ
-                3      36
-         Type: UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorTwoConstPagePatch11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoConstPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{(a**2 - 3/4*b + c) (p + 1)\free{a b c p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull1}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull1}{\hidepaste}
-\tab{5}\spadcommand{PZ := UnivariatePolynomial(x,Integer)\bound{PZ0 }}
-\indentrel{3}\begin{verbatim}
-   (1)  UnivariatePolynomial(x,Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty1}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty1}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch1}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{PZ := UnivariatePolynomial(x,Integer)\bound{PZ0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull2}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull2}{\hidepaste}
-\tab{5}\spadcommand{x:PZ := 'x\free{PZ0 }\bound{PZ }}
-\indentrel{3}\begin{verbatim}
-   (2)  x
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty2}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty2}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch2}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{x:PZ := 'x\free{PZ0 }\bound{PZ }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull3}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull3}{\hidepaste}
-\tab{5}\spadcommand{Mat := SquareMatrix(3,PZ)\free{PZ }\bound{Mat }}
-\indentrel{3}\begin{verbatim}
-   (3)  SquareMatrix(3,UnivariatePolynomial(x,Integer))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty3}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty3}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch3}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{Mat := SquareMatrix(3,PZ)\free{PZ }\bound{Mat }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull4}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull4}{\hidepaste}
-\tab{5}\spadcommand{Vect := DPMM(3, PZ, Mat, PZ);\free{PZ Mat }\bound{Vect }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty4}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty4}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch4}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{Vect := DPMM(3, PZ, Mat, PZ);\free{PZ Mat }\bound{Vect }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull5}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull5}{\hidepaste}
-\tab{5}\spadcommand{Modo := LODO2(Mat, Vect);\free{Mat Vect }\bound{Modo }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty5}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty5}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch5}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{Modo := LODO2(Mat, Vect);\free{Mat Vect }\bound{Modo }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull6}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m:Mat := matrix [[x**2,1,0],[1,x**4,0],[0,0,4*x**2]]\free{Mat }\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú 2         ¿
-        ³x   1    0 ³
-        ³           ³
-   (6)  ³     4     ³
-        ³1   x    0 ³
-        ³           ³
-        ³          2³
-        À0   0   4x Ù
-  Type: SquareMatrix(3,UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty6}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty6}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch6}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m:Mat := matrix [[x**2,1,0],[1,x**4,0],[0,0,4*x**2]]\free{Mat }\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull7}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]\free{Vect }\bound{p }}
-\indentrel{3}\begin{verbatim}
-           2          3
-   (7)  [3x  + 1,2x,7x  + 2x]
-Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty7}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty7}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch7}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p:Vect := directProduct [3*x**2+1,2*x,7*x**3+2*x]\free{Vect }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull8}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull8}{\hidepaste}
-\tab{5}\spadcommand{q: Vect := m * p\free{m p Vect }\bound{q }}
-\indentrel{3}\begin{verbatim}
-           4    2        5     2        5     3
-   (8)  [3x  + x  + 2x,2x  + 3x  + 1,28x  + 8x ]
-Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty8}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty8}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch8}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{q: Vect := m * p\free{m p Vect }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull9}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull9}{\hidepaste}
-\tab{5}\spadcommand{Dx : Modo := D()\bound{Dx }\free{Modo }}
-\indentrel{3}\begin{verbatim}
-   (9)  D
-Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty9}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty9}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch9}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{Dx : Modo := D()\bound{Dx }\free{Modo }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull10}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull10}{\hidepaste}
-\tab{5}\spadcommand{a : Modo := Dx + m\bound{a }\free{m Dx }}
-\indentrel{3}\begin{verbatim}
-             Ú 2         ¿
-             ³x   1    0 ³
-             ³           ³
-   (10)  D + ³     4     ³
-             ³1   x    0 ³
-             ³           ³
-             ³          2³
-             À0   0   4x Ù
-Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty10}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty10}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch10}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{a : Modo := Dx + m\bound{a }\free{m Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull11}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull11}{\hidepaste}
-\tab{5}\spadcommand{b : Modo := m*Dx + 1\bound{b }\free{m Dx }}
-\indentrel{3}\begin{verbatim}
-         Ú 2         ¿
-         ³x   1    0 ³    Ú1  0  0¿
-         ³           ³    ³       ³
-   (11)  ³     4     ³D + ³0  1  0³
-         ³1   x    0 ³    ³       ³
-         ³           ³    À0  0  1Ù
-         ³          2³
-         À0   0   4x Ù
-Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty11}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty11}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch11}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{b : Modo := m*Dx + 1\bound{b }\free{m Dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull12}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull12}{\hidepaste}
-\tab{5}\spadcommand{c := a*b\bound{c }\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (12)
-     Ú 2         ¿
-     ³x   1    0 ³
-     ³           ³ 2
-     ³     4     ³D
-     ³1   x    0 ³
-     ³           ³
-     ³          2³
-     À0   0   4x Ù
-   + 
-     Ú 4              4    2                  ¿
-     ³x  + 2x + 2    x  + x            0      ³
-     ³                                        ³
-     ³   4    2     8     3                   ³D
-     ³  x  + x     x  + 4x  + 2        0      ³
-     ³                                        ³
-     ³                              4         ³
-     À     0            0        16x  + 8x + 1Ù
-   + 
-     Ú 2         ¿
-     ³x   1    0 ³
-     ³           ³
-     ³     4     ³
-     ³1   x    0 ³
-     ³           ³
-     ³          2³
-     À0   0   4x Ù
-Type: LinearOrdinaryDifferentialOperator2(SquareMatrix(3,UnivariatePolynomial(x,Integer)),DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer)))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty12}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty12}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch12}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{c := a*b\bound{c }\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull13}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull13}{\hidepaste}
-\tab{5}\spadcommand{a p\free{p a }}
-\indentrel{3}\begin{verbatim}
-   (13)
-      4    2        5     2        5     3      2
-   [3x  + x  + 8x,2x  + 3x  + 3,28x  + 8x  + 21x  + 2]
-Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty13}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty13}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch13}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{a p\free{p a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull14}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull14}{\hidepaste}
-\tab{5}\spadcommand{b p\free{p b }}
-\indentrel{3}\begin{verbatim}
-            3     2       4         4     3     2
-   (14)  [6x  + 3x  + 3,2x  + 8x,84x  + 7x  + 8x  + 2x]
-Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty14}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty14}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch14}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{b p\free{p b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull15}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageFull15}{\hidepaste}
-\tab{5}\spadcommand{(a + b + c) (p + q)\free{a b c p q }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [
-          8      7      6      5      4      3      2
-       10x  + 12x  + 16x  + 30x  + 85x  + 94x  + 40x
-     + 
-       40x + 17
-     ,
-
-          12      9      8      7     6      5      4
-       10x   + 10x  + 12x  + 92x  + 6x  + 32x  + 72x
-     + 
-          3      2
-       28x  + 49x  + 32x + 19
-     ,
-
-            8       7        6        5       4       3
-       2240x  + 224x  + 1280x  + 3508x  + 492x  + 751x
-     + 
-          2
-       98x  + 18x + 4
-     ]
-Type: DirectProductMatrixModule(3,UnivariatePolynomial(x,Integer),SquareMatrix(3,UnivariatePolynomial(x,Integer)),UnivariatePolynomial(x,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty15}
-\begin{paste}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty15}{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPagePatch15}
-\pastebutton{ugxLinearOrdinaryDifferentialOperatorTwoMatrixPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{(a + b + c) (p + q)\free{a b c p q }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lpoly.pht b/books/pages/lpoly.pht
deleted file mode 100644
index ac44b36..0000000
--- a/books/pages/lpoly.pht
+++ /dev/null
@@ -1,455 +0,0 @@
-\begin{patch}{LiePolynomialXmpPagePatch1}
-\begin{paste}{LiePolynomialXmpPageFull1}{LiePolynomialXmpPageEmpty1}
-\pastebutton{LiePolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{RN := Fraction Integer\bound{RN }}
-\indentrel{3}\begin{verbatim}
-   (1)  Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty1}
-\begin{paste}{LiePolynomialXmpPageEmpty1}{LiePolynomialXmpPagePatch1}
-\pastebutton{LiePolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{RN := Fraction Integer\bound{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch2}
-\begin{paste}{LiePolynomialXmpPageFull2}{LiePolynomialXmpPageEmpty2}
-\pastebutton{LiePolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Lpoly := LiePolynomial(Symbol,RN)\bound{Lpoly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (2)  LiePolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty2}
-\begin{paste}{LiePolynomialXmpPageEmpty2}{LiePolynomialXmpPagePatch2}
-\pastebutton{LiePolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Lpoly := LiePolynomial(Symbol,RN)\bound{Lpoly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch3}
-\begin{paste}{LiePolynomialXmpPageFull3}{LiePolynomialXmpPageEmpty3}
-\pastebutton{LiePolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{Dpoly := XDPOLY(Symbol,RN)\bound{Dpoly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (3)  XDistributedPolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty3}
-\begin{paste}{LiePolynomialXmpPageEmpty3}{LiePolynomialXmpPagePatch3}
-\pastebutton{LiePolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{Dpoly := XDPOLY(Symbol,RN)\bound{Dpoly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch4}
-\begin{paste}{LiePolynomialXmpPageFull4}{LiePolynomialXmpPageEmpty4}
-\pastebutton{LiePolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{Lword := LyndonWord Symbol\bound{Lword }}
-\indentrel{3}\begin{verbatim}
-   (4)  LyndonWord Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty4}
-\begin{paste}{LiePolynomialXmpPageEmpty4}{LiePolynomialXmpPagePatch4}
-\pastebutton{LiePolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{Lword := LyndonWord Symbol\bound{Lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch5}
-\begin{paste}{LiePolynomialXmpPageFull5}{LiePolynomialXmpPageEmpty5}
-\pastebutton{LiePolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (5)  a
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty5}
-\begin{paste}{LiePolynomialXmpPageEmpty5}{LiePolynomialXmpPagePatch5}
-\pastebutton{LiePolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch6}
-\begin{paste}{LiePolynomialXmpPageFull6}{LiePolynomialXmpPageEmpty6}
-\pastebutton{LiePolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (6)  b
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty6}
-\begin{paste}{LiePolynomialXmpPageEmpty6}{LiePolynomialXmpPagePatch6}
-\pastebutton{LiePolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch7}
-\begin{paste}{LiePolynomialXmpPageFull7}{LiePolynomialXmpPageEmpty7}
-\pastebutton{LiePolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{c:Symbol := 'c\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (7)  c
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty7}
-\begin{paste}{LiePolynomialXmpPageEmpty7}{LiePolynomialXmpPagePatch7}
-\pastebutton{LiePolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{c:Symbol := 'c\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch8}
-\begin{paste}{LiePolynomialXmpPageFull8}{LiePolynomialXmpPageEmpty8}
-\pastebutton{LiePolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{aa: Lpoly := a\bound{aa }\free{Lpoly }\free{a }}
-\indentrel{3}\begin{verbatim}
-   (8)  [a]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty8}
-\begin{paste}{LiePolynomialXmpPageEmpty8}{LiePolynomialXmpPagePatch8}
-\pastebutton{LiePolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{aa: Lpoly := a\bound{aa }\free{Lpoly }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch9}
-\begin{paste}{LiePolynomialXmpPageFull9}{LiePolynomialXmpPageEmpty9}
-\pastebutton{LiePolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{bb: Lpoly := b\bound{bb }\free{Lpoly }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (9)  [b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty9}
-\begin{paste}{LiePolynomialXmpPageEmpty9}{LiePolynomialXmpPagePatch9}
-\pastebutton{LiePolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{bb: Lpoly := b\bound{bb }\free{Lpoly }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch10}
-\begin{paste}{LiePolynomialXmpPageFull10}{LiePolynomialXmpPageEmpty10}
-\pastebutton{LiePolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{cc: Lpoly := c\bound{cc }\free{Lpoly }\free{c }}
-\indentrel{3}\begin{verbatim}
-   (10)  [c]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty10}
-\begin{paste}{LiePolynomialXmpPageEmpty10}{LiePolynomialXmpPagePatch10}
-\pastebutton{LiePolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{cc: Lpoly := c\bound{cc }\free{Lpoly }\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch11}
-\begin{paste}{LiePolynomialXmpPageFull11}{LiePolynomialXmpPageEmpty11}
-\pastebutton{LiePolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p : Lpoly := [aa,bb]\bound{p }\free{aa }\free{bb }\free{Lpoly }}
-\indentrel{3}\begin{verbatim}
-   (11)  [a b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty11}
-\begin{paste}{LiePolynomialXmpPageEmpty11}{LiePolynomialXmpPagePatch11}
-\pastebutton{LiePolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p : Lpoly := [aa,bb]\bound{p }\free{aa }\free{bb }\free{Lpoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch12}
-\begin{paste}{LiePolynomialXmpPageFull12}{LiePolynomialXmpPageEmpty12}
-\pastebutton{LiePolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{q : Lpoly := [p,bb]\bound{q }\free{p }\free{bb }\free{Lpoly }}
-\indentrel{3}\begin{verbatim}
-             2
-   (12)  [a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty12}
-\begin{paste}{LiePolynomialXmpPageEmpty12}{LiePolynomialXmpPagePatch12}
-\pastebutton{LiePolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{q : Lpoly := [p,bb]\bound{q }\free{p }\free{bb }\free{Lpoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch13}
-\begin{paste}{LiePolynomialXmpPageFull13}{LiePolynomialXmpPageEmpty13}
-\pastebutton{LiePolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{liste : List Lword := LyndonWordsList([a,b], 4)\free{a }\free{b }\free{Lword }\bound{liste }}
-\indentrel{3}\begin{verbatim}
-   (13)
-                    2       2    3     2 2      3
-   [[a],[b],[a b],[a b],[a b ],[a b],[a b ],[a b ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty13}
-\begin{paste}{LiePolynomialXmpPageEmpty13}{LiePolynomialXmpPagePatch13}
-\pastebutton{LiePolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{liste : List Lword := LyndonWordsList([a,b], 4)\free{a }\free{b }\free{Lword }\bound{liste }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch14}
-\begin{paste}{LiePolynomialXmpPageFull14}{LiePolynomialXmpPageEmpty14}
-\pastebutton{LiePolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly\bound{r }\free{Lpoly }\free{p }\free{q }\free{liste }}
-\indentrel{3}\begin{verbatim}
-                    2         2
-   (14)  [a b] + 3[a b] + [a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty14}
-\begin{paste}{LiePolynomialXmpPageEmpty14}{LiePolynomialXmpPagePatch14}
-\pastebutton{LiePolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{r: Lpoly := p + q + 3*LiePoly(liste.4)$Lpoly\bound{r }\free{Lpoly }\free{p }\free{q }\free{liste }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch15}
-\begin{paste}{LiePolynomialXmpPageFull15}{LiePolynomialXmpPageEmpty15}
-\pastebutton{LiePolynomialXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{s:Lpoly := [p,r]\bound{s }\free{Lpoly }\free{p }\free{r }}
-\indentrel{3}\begin{verbatim}
-              2                 2
-   (15)  - 3[a b a b] + [a b a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty15}
-\begin{paste}{LiePolynomialXmpPageEmpty15}{LiePolynomialXmpPagePatch15}
-\pastebutton{LiePolynomialXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{s:Lpoly := [p,r]\bound{s }\free{Lpoly }\free{p }\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch16}
-\begin{paste}{LiePolynomialXmpPageFull16}{LiePolynomialXmpPageEmpty16}
-\pastebutton{LiePolynomialXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{t:Lpoly := s + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)\bound{t }\free{Lpoly }\free{s }\free{liste }}
-\indentrel{3}\begin{verbatim}
-                       2       2                 2
-   (16)  2[a b] - 5[a b ] - 3[a b a b] + [a b a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty16}
-\begin{paste}{LiePolynomialXmpPageEmpty16}{LiePolynomialXmpPagePatch16}
-\pastebutton{LiePolynomialXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{t:Lpoly := s + 2*LiePoly(liste.3) - 5*LiePoly(liste.5)\bound{t }\free{Lpoly }\free{s }\free{liste }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch17}
-\begin{paste}{LiePolynomialXmpPageFull17}{LiePolynomialXmpPageEmpty17}
-\pastebutton{LiePolynomialXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{degree t\free{t }}
-\indentrel{3}\begin{verbatim}
-   (17)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty17}
-\begin{paste}{LiePolynomialXmpPageEmpty17}{LiePolynomialXmpPagePatch17}
-\pastebutton{LiePolynomialXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{degree t\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch18}
-\begin{paste}{LiePolynomialXmpPageFull18}{LiePolynomialXmpPageEmpty18}
-\pastebutton{LiePolynomialXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{mirror t\free{t }}
-\indentrel{3}\begin{verbatim}
-                         2       2                 2
-   (18)  - 2[a b] - 5[a b ] - 3[a b a b] + [a b a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty18}
-\begin{paste}{LiePolynomialXmpPageEmpty18}{LiePolynomialXmpPagePatch18}
-\pastebutton{LiePolynomialXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{mirror t\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch19}
-\begin{paste}{LiePolynomialXmpPageFull19}{LiePolynomialXmpPageEmpty19}
-\pastebutton{LiePolynomialXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [[p,q]$Lpoly, r] + [[q,r]$Lpoly, p] + [[r,p]$Lpoly, q]\free{Lpoly }\bound{J }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty19}
-\begin{paste}{LiePolynomialXmpPageEmpty19}{LiePolynomialXmpPagePatch19}
-\pastebutton{LiePolynomialXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{Jacobi(p: Lpoly, q: Lpoly, r: Lpoly): Lpoly == [[p,q]$Lpoly, r] + [[q,r]$Lpoly, p] + [[r,p]$Lpoly, q]\free{Lpoly }\bound{J }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch20}
-\begin{paste}{LiePolynomialXmpPageFull20}{LiePolynomialXmpPageEmpty20}
-\pastebutton{LiePolynomialXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(a,b,b)\free{J Lpoly a b }\bound{test1 }}
-\indentrel{3}\begin{verbatim}
-   (20)  0
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty20}
-\begin{paste}{LiePolynomialXmpPageEmpty20}{LiePolynomialXmpPagePatch20}
-\pastebutton{LiePolynomialXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(a,b,b)\free{J Lpoly a b }\bound{test1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch21}
-\begin{paste}{LiePolynomialXmpPageFull21}{LiePolynomialXmpPageEmpty21}
-\pastebutton{LiePolynomialXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(p,q,r)\free{J p q r Lpoly }\bound{test2 }}
-\indentrel{3}\begin{verbatim}
-   (21)  0
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty21}
-\begin{paste}{LiePolynomialXmpPageEmpty21}{LiePolynomialXmpPagePatch21}
-\pastebutton{LiePolynomialXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(p,q,r)\free{J p q r Lpoly }\bound{test2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch22}
-\begin{paste}{LiePolynomialXmpPageFull22}{LiePolynomialXmpPageEmpty22}
-\pastebutton{LiePolynomialXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(r,s,t)\free{J r s t Lpoly }\bound{test3 }}
-\indentrel{3}\begin{verbatim}
-   (22)  0
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty22}
-\begin{paste}{LiePolynomialXmpPageEmpty22}{LiePolynomialXmpPagePatch22}
-\pastebutton{LiePolynomialXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{test: Lpoly := Jacobi(r,s,t)\free{J r s t Lpoly }\bound{test3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch23}
-\begin{paste}{LiePolynomialXmpPageFull23}{LiePolynomialXmpPageEmpty23}
-\pastebutton{LiePolynomialXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{eval(p, a, p)$Lpoly}
-\indentrel{3}\begin{verbatim}
-             2
-   (23)  [a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty23}
-\begin{paste}{LiePolynomialXmpPageEmpty23}{LiePolynomialXmpPagePatch23}
-\pastebutton{LiePolynomialXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{eval(p, a, p)$Lpoly}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch24}
-\begin{paste}{LiePolynomialXmpPageFull24}{LiePolynomialXmpPageEmpty24}
-\pastebutton{LiePolynomialXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{eval(p, [a,b], [2*bb, 3*aa])$Lpoly\free{p a b bb aa Lpoly }}
-\indentrel{3}\begin{verbatim}
-   (24)  - 6[a b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty24}
-\begin{paste}{LiePolynomialXmpPageEmpty24}{LiePolynomialXmpPagePatch24}
-\pastebutton{LiePolynomialXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{eval(p, [a,b], [2*bb, 3*aa])$Lpoly\free{p a b bb aa Lpoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch25}
-\begin{paste}{LiePolynomialXmpPageFull25}{LiePolynomialXmpPageEmpty25}
-\pastebutton{LiePolynomialXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{r: Lpoly := [p,c]\free{p c Lpoly }\bound{rr }}
-\indentrel{3}\begin{verbatim}
-   (25)  [a b c] + [a c b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty25}
-\begin{paste}{LiePolynomialXmpPageEmpty25}{LiePolynomialXmpPagePatch25}
-\pastebutton{LiePolynomialXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{r: Lpoly := [p,c]\free{p c Lpoly }\bound{rr }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch26}
-\begin{paste}{LiePolynomialXmpPageFull26}{LiePolynomialXmpPageEmpty26}
-\pastebutton{LiePolynomialXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly\free{rr a b c aa bb cc Lpoly }\bound{r1 }}
-\indentrel{3}\begin{verbatim}
-   (26)  - [a b c]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty26}
-\begin{paste}{LiePolynomialXmpPageEmpty26}{LiePolynomialXmpPagePatch26}
-\pastebutton{LiePolynomialXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{r1: Lpoly := eval(r, [a,b,c], [bb, cc, aa])$Lpoly\free{rr a b c aa bb cc Lpoly }\bound{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch27}
-\begin{paste}{LiePolynomialXmpPageFull27}{LiePolynomialXmpPageEmpty27}
-\pastebutton{LiePolynomialXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly\free{rr a b c cc bb aa Lpoly }\bound{r2 }}
-\indentrel{3}\begin{verbatim}
-   (27)  - [a c b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty27}
-\begin{paste}{LiePolynomialXmpPageEmpty27}{LiePolynomialXmpPagePatch27}
-\pastebutton{LiePolynomialXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{r2: Lpoly := eval(r, [a,b,c], [cc, aa, bb])$Lpoly\free{rr a b c cc bb aa Lpoly }\bound{r2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPagePatch28}
-\begin{paste}{LiePolynomialXmpPageFull28}{LiePolynomialXmpPageEmpty28}
-\pastebutton{LiePolynomialXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{r + r1 + r2\free{rr r1 r2 }}
-\indentrel{3}\begin{verbatim}
-   (28)  0
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LiePolynomialXmpPageEmpty28}
-\begin{paste}{LiePolynomialXmpPageEmpty28}{LiePolynomialXmpPagePatch28}
-\pastebutton{LiePolynomialXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{r + r1 + r2\free{rr r1 r2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/lword.pht b/books/pages/lword.pht
deleted file mode 100644
index 9c3675e..0000000
--- a/books/pages/lword.pht
+++ /dev/null
@@ -1,377 +0,0 @@
-\begin{patch}{LyndonWordXmpPagePatch1}
-\begin{paste}{LyndonWordXmpPageFull1}{LyndonWordXmpPageEmpty1}
-\pastebutton{LyndonWordXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a:Symbol :='a\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (1)  a
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty1}
-\begin{paste}{LyndonWordXmpPageEmpty1}{LyndonWordXmpPagePatch1}
-\pastebutton{LyndonWordXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a:Symbol :='a\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch2}
-\begin{paste}{LyndonWordXmpPageFull2}{LyndonWordXmpPageEmpty2}
-\pastebutton{LyndonWordXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{b:Symbol :='b\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (2)  b
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty2}
-\begin{paste}{LyndonWordXmpPageEmpty2}{LyndonWordXmpPagePatch2}
-\pastebutton{LyndonWordXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{b:Symbol :='b\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch3}
-\begin{paste}{LyndonWordXmpPageFull3}{LyndonWordXmpPageEmpty3}
-\pastebutton{LyndonWordXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{c:Symbol :='c\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (3)  c
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty3}
-\begin{paste}{LyndonWordXmpPageEmpty3}{LyndonWordXmpPagePatch3}
-\pastebutton{LyndonWordXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{c:Symbol :='c\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch4}
-\begin{paste}{LyndonWordXmpPageFull4}{LyndonWordXmpPageEmpty4}
-\pastebutton{LyndonWordXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{lword:= LyndonWord(Symbol)\bound{lword }}
-\indentrel{3}\begin{verbatim}
-   (4)  LyndonWord Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty4}
-\begin{paste}{LyndonWordXmpPageEmpty4}{LyndonWordXmpPagePatch4}
-\pastebutton{LyndonWordXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{lword:= LyndonWord(Symbol)\bound{lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch5}
-\begin{paste}{LyndonWordXmpPageFull5}{LyndonWordXmpPageEmpty5}
-\pastebutton{LyndonWordXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{magma := Magma(Symbol)\bound{magma }}
-\indentrel{3}\begin{verbatim}
-   (5)  Magma Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty5}
-\begin{paste}{LyndonWordXmpPageEmpty5}{LyndonWordXmpPagePatch5}
-\pastebutton{LyndonWordXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{magma := Magma(Symbol)\bound{magma }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch6}
-\begin{paste}{LyndonWordXmpPageFull6}{LyndonWordXmpPageEmpty6}
-\pastebutton{LyndonWordXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
-\indentrel{3}\begin{verbatim}
-   (6)  OrderedFreeMonoid Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty6}
-\begin{paste}{LyndonWordXmpPageEmpty6}{LyndonWordXmpPagePatch6}
-\pastebutton{LyndonWordXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch7}
-\begin{paste}{LyndonWordXmpPageFull7}{LyndonWordXmpPageEmpty7}
-\pastebutton{LyndonWordXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{LyndonWordsList1([a,b,c],3)$lword\free{lword }\free{a }\free{b }\free{c }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [[[a],[b],[c]], [[a b],[a c],[b c]],
-
-        2      2        2                         2
-     [[a b], [a c], [a b ], [a b c], [a c b], [a c ],
-        2        2
-      [b c], [b c ]]
-     ]
-       Type: OneDimensionalArray List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty7}
-\begin{paste}{LyndonWordXmpPageEmpty7}{LyndonWordXmpPagePatch7}
-\pastebutton{LyndonWordXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{LyndonWordsList1([a,b,c],3)$lword\free{lword }\free{a }\free{b }\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch8}
-\begin{paste}{LyndonWordXmpPageFull8}{LyndonWordXmpPageEmpty8}
-\pastebutton{LyndonWordXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{LyndonWordsList([a,b,c],3)$lword\free{a }\free{b }\free{c }\free{lword }}
-\indentrel{3}\begin{verbatim}
-   (8)
-                                          2      2
-   [[a], [b], [c], [a b], [a c], [b c], [a b], [a c],
-        2                         2     2        2
-    [a b ], [a b c], [a c b], [a c ], [b c], [b c ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty8}
-\begin{paste}{LyndonWordXmpPageEmpty8}{LyndonWordXmpPagePatch8}
-\pastebutton{LyndonWordXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{LyndonWordsList([a,b,c],3)$lword\free{a }\free{b }\free{c }\free{lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch9}
-\begin{paste}{LyndonWordXmpPageFull9}{LyndonWordXmpPageEmpty9}
-\pastebutton{LyndonWordXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{lw := LyndonWordsList([a,b],5)$lword\free{a }\free{b }\free{lword }\bound{lw }}
-\indentrel{3}\begin{verbatim}
-   (9)
-                       2        2     3      2 2
-   [[a], [b], [a b], [a b], [a b ], [a b], [a b ],
-        3     4      3 2     2          2 3           2
-    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
-        4
-    [a b ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty9}
-\begin{paste}{LyndonWordXmpPageEmpty9}{LyndonWordXmpPagePatch9}
-\pastebutton{LyndonWordXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{lw := LyndonWordsList([a,b],5)$lword\free{a }\free{b }\free{lword }\bound{lw }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch10}
-\begin{paste}{LyndonWordXmpPageFull10}{LyndonWordXmpPageEmpty10}
-\pastebutton{LyndonWordXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{w1 : word := lw.4 :: word\free{word }\free{lw }\bound{w1 }}
-\indentrel{3}\begin{verbatim}
-          2
-   (10)  a b
-                         Type: OrderedFreeMonoid Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty10}
-\begin{paste}{LyndonWordXmpPageEmpty10}{LyndonWordXmpPagePatch10}
-\pastebutton{LyndonWordXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{w1 : word := lw.4 :: word\free{word }\free{lw }\bound{w1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch11}
-\begin{paste}{LyndonWordXmpPageFull11}{LyndonWordXmpPageEmpty11}
-\pastebutton{LyndonWordXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{w2 : word := lw.5 :: word\free{word }\free{lw }\bound{w2 }}
-\indentrel{3}\begin{verbatim}
-            2
-   (11)  a b
-                         Type: OrderedFreeMonoid Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty11}
-\begin{paste}{LyndonWordXmpPageEmpty11}{LyndonWordXmpPagePatch11}
-\pastebutton{LyndonWordXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{w2 : word := lw.5 :: word\free{word }\free{lw }\bound{w2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch12}
-\begin{paste}{LyndonWordXmpPageFull12}{LyndonWordXmpPageEmpty12}
-\pastebutton{LyndonWordXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{factor(a::word)$lword\free{a word lword }}
-\indentrel{3}\begin{verbatim}
-   (12)  [[a]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty12}
-\begin{paste}{LyndonWordXmpPageEmpty12}{LyndonWordXmpPagePatch12}
-\pastebutton{LyndonWordXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{factor(a::word)$lword\free{a word lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch13}
-\begin{paste}{LyndonWordXmpPageFull13}{LyndonWordXmpPageEmpty13}
-\pastebutton{LyndonWordXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{factor(w1*w2)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-            2     2
-   (13)  [[a b a b ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty13}
-\begin{paste}{LyndonWordXmpPageEmpty13}{LyndonWordXmpPagePatch13}
-\pastebutton{LyndonWordXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{factor(w1*w2)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch14}
-\begin{paste}{LyndonWordXmpPageFull14}{LyndonWordXmpPageEmpty14}
-\pastebutton{LyndonWordXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{factor(w2*w2)$lword\free{w2 lword }}
-\indentrel{3}\begin{verbatim}
-              2      2
-   (14)  [[a b ],[a b ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty14}
-\begin{paste}{LyndonWordXmpPageEmpty14}{LyndonWordXmpPagePatch14}
-\pastebutton{LyndonWordXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{factor(w2*w2)$lword\free{w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch15}
-\begin{paste}{LyndonWordXmpPageFull15}{LyndonWordXmpPageEmpty15}
-\pastebutton{LyndonWordXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{factor(w2*w1)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-              2    2
-   (15)  [[a b ],[a b]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty15}
-\begin{paste}{LyndonWordXmpPageEmpty15}{LyndonWordXmpPagePatch15}
-\pastebutton{LyndonWordXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{factor(w2*w1)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch16}
-\begin{paste}{LyndonWordXmpPageFull16}{LyndonWordXmpPageEmpty16}
-\pastebutton{LyndonWordXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{lyndon?(w1)$lword\free{w1 lword }}
-\indentrel{3}\begin{verbatim}
-   (16)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty16}
-\begin{paste}{LyndonWordXmpPageEmpty16}{LyndonWordXmpPagePatch16}
-\pastebutton{LyndonWordXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{lyndon?(w1)$lword\free{w1 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch17}
-\begin{paste}{LyndonWordXmpPageFull17}{LyndonWordXmpPageEmpty17}
-\pastebutton{LyndonWordXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{lyndon?(w1*w2)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-   (17)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty17}
-\begin{paste}{LyndonWordXmpPageEmpty17}{LyndonWordXmpPagePatch17}
-\pastebutton{LyndonWordXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{lyndon?(w1*w2)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch18}
-\begin{paste}{LyndonWordXmpPageFull18}{LyndonWordXmpPageEmpty18}
-\pastebutton{LyndonWordXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{lyndon?(w2*w1)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-   (18)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty18}
-\begin{paste}{LyndonWordXmpPageEmpty18}{LyndonWordXmpPagePatch18}
-\pastebutton{LyndonWordXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{lyndon?(w2*w1)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch19}
-\begin{paste}{LyndonWordXmpPageFull19}{LyndonWordXmpPageEmpty19}
-\pastebutton{LyndonWordXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{lyndonIfCan(w1)$lword\free{w1 lword }}
-\indentrel{3}\begin{verbatim}
-           2
-   (19)  [a b]
-                     Type: Union(LyndonWord Symbol,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty19}
-\begin{paste}{LyndonWordXmpPageEmpty19}{LyndonWordXmpPagePatch19}
-\pastebutton{LyndonWordXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{lyndonIfCan(w1)$lword\free{w1 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch20}
-\begin{paste}{LyndonWordXmpPageFull20}{LyndonWordXmpPageEmpty20}
-\pastebutton{LyndonWordXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{lyndonIfCan(w2*w1)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-   (20)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty20}
-\begin{paste}{LyndonWordXmpPageEmpty20}{LyndonWordXmpPagePatch20}
-\pastebutton{LyndonWordXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{lyndonIfCan(w2*w1)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch21}
-\begin{paste}{LyndonWordXmpPageFull21}{LyndonWordXmpPageEmpty21}
-\pastebutton{LyndonWordXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{lyndon(w1)$lword\free{w1 lword }}
-\indentrel{3}\begin{verbatim}
-           2
-   (21)  [a b]
-                                Type: LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty21}
-\begin{paste}{LyndonWordXmpPageEmpty21}{LyndonWordXmpPagePatch21}
-\pastebutton{LyndonWordXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{lyndon(w1)$lword\free{w1 lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPagePatch22}
-\begin{paste}{LyndonWordXmpPageFull22}{LyndonWordXmpPageEmpty22}
-\pastebutton{LyndonWordXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{lyndon(w1*w2)$lword\free{w1 w2 lword }}
-\indentrel{3}\begin{verbatim}
-           2     2
-   (22)  [a b a b ]
-                                Type: LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{LyndonWordXmpPageEmpty22}
-\begin{paste}{LyndonWordXmpPageEmpty22}{LyndonWordXmpPagePatch22}
-\pastebutton{LyndonWordXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{lyndon(w1*w2)$lword\free{w1 w2 lword }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/magma.pht b/books/pages/magma.pht
deleted file mode 100644
index f6cbc6a..0000000
--- a/books/pages/magma.pht
+++ /dev/null
@@ -1,353 +0,0 @@
-\begin{patch}{MagmaXmpPagePatch1}
-\begin{paste}{MagmaXmpPageFull1}{MagmaXmpPageEmpty1}
-\pastebutton{MagmaXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x:Symbol :='x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty1}
-\begin{paste}{MagmaXmpPageEmpty1}{MagmaXmpPagePatch1}
-\pastebutton{MagmaXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x:Symbol :='x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch2}
-\begin{paste}{MagmaXmpPageFull2}{MagmaXmpPageEmpty2}
-\pastebutton{MagmaXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{y:Symbol :='y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (2)  y
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty2}
-\begin{paste}{MagmaXmpPageEmpty2}{MagmaXmpPagePatch2}
-\pastebutton{MagmaXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{y:Symbol :='y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch3}
-\begin{paste}{MagmaXmpPageFull3}{MagmaXmpPageEmpty3}
-\pastebutton{MagmaXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{z:Symbol :='z\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (3)  z
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty3}
-\begin{paste}{MagmaXmpPageEmpty3}{MagmaXmpPagePatch3}
-\pastebutton{MagmaXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{z:Symbol :='z\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch4}
-\begin{paste}{MagmaXmpPageFull4}{MagmaXmpPageEmpty4}
-\pastebutton{MagmaXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
-\indentrel{3}\begin{verbatim}
-   (4)  OrderedFreeMonoid Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty4}
-\begin{paste}{MagmaXmpPageEmpty4}{MagmaXmpPagePatch4}
-\pastebutton{MagmaXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid(Symbol)\bound{word }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch5}
-\begin{paste}{MagmaXmpPageFull5}{MagmaXmpPageEmpty5}
-\pastebutton{MagmaXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{tree := Magma(Symbol)\bound{tree }}
-\indentrel{3}\begin{verbatim}
-   (5)  Magma Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty5}
-\begin{paste}{MagmaXmpPageEmpty5}{MagmaXmpPagePatch5}
-\pastebutton{MagmaXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{tree := Magma(Symbol)\bound{tree }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch6}
-\begin{paste}{MagmaXmpPageFull6}{MagmaXmpPageEmpty6}
-\pastebutton{MagmaXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{a:tree := x*x\free{x tree }\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (6)  [x,x]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty6}
-\begin{paste}{MagmaXmpPageEmpty6}{MagmaXmpPagePatch6}
-\pastebutton{MagmaXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{a:tree := x*x\free{x tree }\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch7}
-\begin{paste}{MagmaXmpPageFull7}{MagmaXmpPageEmpty7}
-\pastebutton{MagmaXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{b:tree := y*y\free{y tree }\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (7)  [y,y]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty7}
-\begin{paste}{MagmaXmpPageEmpty7}{MagmaXmpPagePatch7}
-\pastebutton{MagmaXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{b:tree := y*y\free{y tree }\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch8}
-\begin{paste}{MagmaXmpPageFull8}{MagmaXmpPageEmpty8}
-\pastebutton{MagmaXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{c:tree := a*b\free{a b tree }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (8)  [[x,x],[y,y]]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty8}
-\begin{paste}{MagmaXmpPageEmpty8}{MagmaXmpPagePatch8}
-\pastebutton{MagmaXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{c:tree := a*b\free{a b tree }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch9}
-\begin{paste}{MagmaXmpPageFull9}{MagmaXmpPageEmpty9}
-\pastebutton{MagmaXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{left c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (9)  [x,x]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty9}
-\begin{paste}{MagmaXmpPageEmpty9}{MagmaXmpPagePatch9}
-\pastebutton{MagmaXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{left c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch10}
-\begin{paste}{MagmaXmpPageFull10}{MagmaXmpPageEmpty10}
-\pastebutton{MagmaXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{right c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (10)  [y,y]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty10}
-\begin{paste}{MagmaXmpPageEmpty10}{MagmaXmpPagePatch10}
-\pastebutton{MagmaXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{right c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch11}
-\begin{paste}{MagmaXmpPageFull11}{MagmaXmpPageEmpty11}
-\pastebutton{MagmaXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{length c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (11)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty11}
-\begin{paste}{MagmaXmpPageEmpty11}{MagmaXmpPagePatch11}
-\pastebutton{MagmaXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{length c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch12}
-\begin{paste}{MagmaXmpPageFull12}{MagmaXmpPageEmpty12}
-\pastebutton{MagmaXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{c::word\free{c word }}
-\indentrel{3}\begin{verbatim}
-          2 2
-   (12)  x y
-                         Type: OrderedFreeMonoid Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty12}
-\begin{paste}{MagmaXmpPageEmpty12}{MagmaXmpPagePatch12}
-\pastebutton{MagmaXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{c::word\free{c word }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch13}
-\begin{paste}{MagmaXmpPageFull13}{MagmaXmpPageEmpty13}
-\pastebutton{MagmaXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{a < b\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (13)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty13}
-\begin{paste}{MagmaXmpPageEmpty13}{MagmaXmpPagePatch13}
-\pastebutton{MagmaXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{a < b\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch14}
-\begin{paste}{MagmaXmpPageFull14}{MagmaXmpPageEmpty14}
-\pastebutton{MagmaXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{a < c\free{a c }}
-\indentrel{3}\begin{verbatim}
-   (14)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty14}
-\begin{paste}{MagmaXmpPageEmpty14}{MagmaXmpPagePatch14}
-\pastebutton{MagmaXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{a < c\free{a c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch15}
-\begin{paste}{MagmaXmpPageFull15}{MagmaXmpPageEmpty15}
-\pastebutton{MagmaXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{b < c\free{b c }}
-\indentrel{3}\begin{verbatim}
-   (15)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty15}
-\begin{paste}{MagmaXmpPageEmpty15}{MagmaXmpPagePatch15}
-\pastebutton{MagmaXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{b < c\free{b c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch16}
-\begin{paste}{MagmaXmpPageFull16}{MagmaXmpPageEmpty16}
-\pastebutton{MagmaXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{first c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (16)  x
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty16}
-\begin{paste}{MagmaXmpPageEmpty16}{MagmaXmpPagePatch16}
-\pastebutton{MagmaXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{first c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch17}
-\begin{paste}{MagmaXmpPageFull17}{MagmaXmpPageEmpty17}
-\pastebutton{MagmaXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{rest c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (17)  [x,[y,y]]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty17}
-\begin{paste}{MagmaXmpPageEmpty17}{MagmaXmpPagePatch17}
-\pastebutton{MagmaXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{rest c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch18}
-\begin{paste}{MagmaXmpPageFull18}{MagmaXmpPageEmpty18}
-\pastebutton{MagmaXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{rest rest c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (18)  [y,y]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty18}
-\begin{paste}{MagmaXmpPageEmpty18}{MagmaXmpPagePatch18}
-\pastebutton{MagmaXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{rest rest c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch19}
-\begin{paste}{MagmaXmpPageFull19}{MagmaXmpPageEmpty19}
-\pastebutton{MagmaXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{ax:tree := a*x\free{a x tree }\bound{ax }}
-\indentrel{3}\begin{verbatim}
-   (19)  [[x,x],x]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty19}
-\begin{paste}{MagmaXmpPageEmpty19}{MagmaXmpPagePatch19}
-\pastebutton{MagmaXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{ax:tree := a*x\free{a x tree }\bound{ax }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch20}
-\begin{paste}{MagmaXmpPageFull20}{MagmaXmpPageEmpty20}
-\pastebutton{MagmaXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{xa:tree := x*a\free{a x tree }\bound{xa }}
-\indentrel{3}\begin{verbatim}
-   (20)  [x,[x,x]]
-                                     Type: Magma Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty20}
-\begin{paste}{MagmaXmpPageEmpty20}{MagmaXmpPagePatch20}
-\pastebutton{MagmaXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{xa:tree := x*a\free{a x tree }\bound{xa }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch21}
-\begin{paste}{MagmaXmpPageFull21}{MagmaXmpPageEmpty21}
-\pastebutton{MagmaXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{xa < ax\free{ax xa }}
-\indentrel{3}\begin{verbatim}
-   (21)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty21}
-\begin{paste}{MagmaXmpPageEmpty21}{MagmaXmpPagePatch21}
-\pastebutton{MagmaXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{xa < ax\free{ax xa }}
-\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPagePatch22}
-\begin{paste}{MagmaXmpPageFull22}{MagmaXmpPageEmpty22}
-\pastebutton{MagmaXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{lexico(xa,ax)\free{ax xa }}
-\indentrel{3}\begin{verbatim}
-   (22)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MagmaXmpPageEmpty22}
-\begin{paste}{MagmaXmpPageEmpty22}{MagmaXmpPagePatch22}
-\pastebutton{MagmaXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{lexico(xa,ax)\free{ax xa }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/mappkg1.pht b/books/pages/mappkg1.pht
deleted file mode 100644
index f17e04a..0000000
--- a/books/pages/mappkg1.pht
+++ /dev/null
@@ -1,443 +0,0 @@
-\begin{patch}{MappingPackageOneXmpPagePatch1}
-\begin{paste}{MappingPackageOneXmpPageFull1}{MappingPackageOneXmpPageEmpty1}
-\pastebutton{MappingPackageOneXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{power(q: FRAC INT, n: INT): FRAC INT == q**n\bound{power }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty1}
-\begin{paste}{MappingPackageOneXmpPageEmpty1}{MappingPackageOneXmpPagePatch1}
-\pastebutton{MappingPackageOneXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{power(q: FRAC INT, n: INT): FRAC INT == q**n\bound{power }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch2}
-\begin{paste}{MappingPackageOneXmpPageFull2}{MappingPackageOneXmpPageEmpty2}
-\pastebutton{MappingPackageOneXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{power(2,3)\free{power }}
-\indentrel{3}\begin{verbatim}
-   (2)  8
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty2}
-\begin{paste}{MappingPackageOneXmpPageEmpty2}{MappingPackageOneXmpPagePatch2}
-\pastebutton{MappingPackageOneXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{power(2,3)\free{power }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch3}
-\begin{paste}{MappingPackageOneXmpPageFull3}{MappingPackageOneXmpPageEmpty3}
-\pastebutton{MappingPackageOneXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{rewop := twist power\free{power }\bound{rewop }}
-\indentrel{3}\begin{verbatim}
-   (3)  theMap(MAPPKG3;twist;MM;5!0)
- Type: ((Integer,Fraction Integer) -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty3}
-\begin{paste}{MappingPackageOneXmpPageEmpty3}{MappingPackageOneXmpPagePatch3}
-\pastebutton{MappingPackageOneXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{rewop := twist power\free{power }\bound{rewop }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch4}
-\begin{paste}{MappingPackageOneXmpPageFull4}{MappingPackageOneXmpPageEmpty4}
-\pastebutton{MappingPackageOneXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{rewop(3, 2)\free{rewop }}
-\indentrel{3}\begin{verbatim}
-   (4)  8
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty4}
-\begin{paste}{MappingPackageOneXmpPageEmpty4}{MappingPackageOneXmpPagePatch4}
-\pastebutton{MappingPackageOneXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{rewop(3, 2)\free{rewop }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch5}
-\begin{paste}{MappingPackageOneXmpPageFull5}{MappingPackageOneXmpPageEmpty5}
-\pastebutton{MappingPackageOneXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{square: FRAC INT -> FRAC INT\bound{squaredec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty5}
-\begin{paste}{MappingPackageOneXmpPageEmpty5}{MappingPackageOneXmpPagePatch5}
-\pastebutton{MappingPackageOneXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{square: FRAC INT -> FRAC INT\bound{squaredec }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch6}
-\begin{paste}{MappingPackageOneXmpPageFull6}{MappingPackageOneXmpPageEmpty6}
-\pastebutton{MappingPackageOneXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{square:= curryRight(power, 2)\free{squaredec poswer }\bound{square }}
-\indentrel{3}\begin{verbatim}
-   (6)  theMap(MAPPKG3;curryRight;MBM;1!0,430)
-           Type: (Fraction Integer -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty6}
-\begin{paste}{MappingPackageOneXmpPageEmpty6}{MappingPackageOneXmpPagePatch6}
-\pastebutton{MappingPackageOneXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{square:= curryRight(power, 2)\free{squaredec poswer }\bound{square }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch7}
-\begin{paste}{MappingPackageOneXmpPageFull7}{MappingPackageOneXmpPageEmpty7}
-\pastebutton{MappingPackageOneXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{square 4\free{square }}
-\indentrel{3}\begin{verbatim}
-   (7)  16
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty7}
-\begin{paste}{MappingPackageOneXmpPageEmpty7}{MappingPackageOneXmpPagePatch7}
-\pastebutton{MappingPackageOneXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{square 4\free{square }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch8}
-\begin{paste}{MappingPackageOneXmpPageFull8}{MappingPackageOneXmpPageEmpty8}
-\pastebutton{MappingPackageOneXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT)\free{square }\bound{squirrel }}
-\indentrel{3}\begin{verbatim}
-   (8)  theMap(MAPPKG3;constantRight;MM;3!0)
-Type: ((Fraction Integer,Fraction Integer) -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty8}
-\begin{paste}{MappingPackageOneXmpPageEmpty8}{MappingPackageOneXmpPagePatch8}
-\pastebutton{MappingPackageOneXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{squirrel:= constantRight(square)$MAPPKG3(FRAC INT,FRAC INT,FRAC INT)\free{square }\bound{squirrel }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch9}
-\begin{paste}{MappingPackageOneXmpPageFull9}{MappingPackageOneXmpPageEmpty9}
-\pastebutton{MappingPackageOneXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{squirrel(1/2, 1/3)\free{squirrel }}
-\indentrel{3}\begin{verbatim}
-        1
-   (9)  Ä
-        4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty9}
-\begin{paste}{MappingPackageOneXmpPageEmpty9}{MappingPackageOneXmpPagePatch9}
-\pastebutton{MappingPackageOneXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{squirrel(1/2, 1/3)\free{squirrel }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch10}
-\begin{paste}{MappingPackageOneXmpPageFull10}{MappingPackageOneXmpPageEmpty10}
-\pastebutton{MappingPackageOneXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{sixteen := curry(square, 4/1)\free{square }\bound{sixteen }}
-\indentrel{3}\begin{verbatim}
-   (10)  theMap(MAPPKG2;curry;MAM;2!0,488)
-                         Type: (() -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty10}
-\begin{paste}{MappingPackageOneXmpPageEmpty10}{MappingPackageOneXmpPagePatch10}
-\pastebutton{MappingPackageOneXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{sixteen := curry(square, 4/1)\free{square }\bound{sixteen }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch11}
-\begin{paste}{MappingPackageOneXmpPageFull11}{MappingPackageOneXmpPageEmpty11}
-\pastebutton{MappingPackageOneXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{sixteen()\free{sixteen }}
-\indentrel{3}\begin{verbatim}
-   (11)  16
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty11}
-\begin{paste}{MappingPackageOneXmpPageEmpty11}{MappingPackageOneXmpPagePatch11}
-\pastebutton{MappingPackageOneXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{sixteen()\free{sixteen }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch12}
-\begin{paste}{MappingPackageOneXmpPageFull12}{MappingPackageOneXmpPageEmpty12}
-\pastebutton{MappingPackageOneXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{square2:=square*square\free{square }\bound{square2 }}
-\indentrel{3}\begin{verbatim}
-   (12)  theMap(MAPPKG3;*;MMM;6!0,589)
-           Type: (Fraction Integer -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty12}
-\begin{paste}{MappingPackageOneXmpPageEmpty12}{MappingPackageOneXmpPagePatch12}
-\pastebutton{MappingPackageOneXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{square2:=square*square\free{square }\bound{square2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch13}
-\begin{paste}{MappingPackageOneXmpPageFull13}{MappingPackageOneXmpPageEmpty13}
-\pastebutton{MappingPackageOneXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{square2 3\free{square2 }}
-\indentrel{3}\begin{verbatim}
-   (13)  81
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty13}
-\begin{paste}{MappingPackageOneXmpPageEmpty13}{MappingPackageOneXmpPagePatch13}
-\pastebutton{MappingPackageOneXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{square2 3\free{square2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch14}
-\begin{paste}{MappingPackageOneXmpPageFull14}{MappingPackageOneXmpPageEmpty14}
-\pastebutton{MappingPackageOneXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sc(x: FRAC INT): FRAC INT == x + 1\bound{sc }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty14}
-\begin{paste}{MappingPackageOneXmpPageEmpty14}{MappingPackageOneXmpPagePatch14}
-\pastebutton{MappingPackageOneXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sc(x: FRAC INT): FRAC INT == x + 1\bound{sc }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch15}
-\begin{paste}{MappingPackageOneXmpPageFull15}{MappingPackageOneXmpPageEmpty15}
-\pastebutton{MappingPackageOneXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{incfns := [sc**i for i in 0..10]\free{sc }\bound{incfns }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [theMap(MAPPKG1;**;MNniM;6!0,314),
-    theMap(MAPPKG1;**;MNniM;6!0,963),
-    theMap(MAPPKG1;**;MNniM;6!0,810),
-    theMap(MAPPKG1;**;MNniM;6!0,546),
-    theMap(MAPPKG1;**;MNniM;6!0,338),
-    theMap(MAPPKG1;**;MNniM;6!0,989),
-    theMap(MAPPKG1;**;MNniM;6!0,218),
-    theMap(MAPPKG1;**;MNniM;6!0,20),
-    theMap(MAPPKG1;**;MNniM;6!0,533),
-    theMap(MAPPKG1;**;MNniM;6!0,437),
-    theMap(MAPPKG1;**;MNniM;6!0,900)]
-      Type: List (Fraction Integer -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty15}
-\begin{paste}{MappingPackageOneXmpPageEmpty15}{MappingPackageOneXmpPagePatch15}
-\pastebutton{MappingPackageOneXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{incfns := [sc**i for i in 0..10]\free{sc }\bound{incfns }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch16}
-\begin{paste}{MappingPackageOneXmpPageFull16}{MappingPackageOneXmpPageEmpty16}
-\pastebutton{MappingPackageOneXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{[f 4 for f in incfns]\free{incfns }}
-\indentrel{3}\begin{verbatim}
-   (16)  [4,5,6,7,8,9,10,11,12,13,14]
-                            Type: List Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty16}
-\begin{paste}{MappingPackageOneXmpPageEmpty16}{MappingPackageOneXmpPagePatch16}
-\pastebutton{MappingPackageOneXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[f 4 for f in incfns]\free{incfns }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch17}
-\begin{paste}{MappingPackageOneXmpPageFull17}{MappingPackageOneXmpPageEmpty17}
-\pastebutton{MappingPackageOneXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{times(n:NNI, i:INT):INT == n*i\bound{rdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty17}
-\begin{paste}{MappingPackageOneXmpPageEmpty17}{MappingPackageOneXmpPagePatch17}
-\pastebutton{MappingPackageOneXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{times(n:NNI, i:INT):INT == n*i\bound{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch18}
-\begin{paste}{MappingPackageOneXmpPageFull18}{MappingPackageOneXmpPageEmpty18}
-\pastebutton{MappingPackageOneXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{r := recur(times)\free{rdec }\bound{r }}
-\indentrel{3}\begin{verbatim}
-   (18)  theMap(MAPPKG1;recur;2M;7!0,161)
-        Type: ((NonNegativeInteger,Integer) -> Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty18}
-\begin{paste}{MappingPackageOneXmpPageEmpty18}{MappingPackageOneXmpPagePatch18}
-\pastebutton{MappingPackageOneXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{r := recur(times)\free{rdec }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch19}
-\begin{paste}{MappingPackageOneXmpPageFull19}{MappingPackageOneXmpPageEmpty19}
-\pastebutton{MappingPackageOneXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{fact := curryRight(r, 1)\free{r }\bound{fact }}
-\indentrel{3}\begin{verbatim}
-   (19)  theMap(MAPPKG3;curryRight;MBM;1!0,541)
-                  Type: (NonNegativeInteger -> Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty19}
-\begin{paste}{MappingPackageOneXmpPageEmpty19}{MappingPackageOneXmpPagePatch19}
-\pastebutton{MappingPackageOneXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{fact := curryRight(r, 1)\free{r }\bound{fact }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch20}
-\begin{paste}{MappingPackageOneXmpPageFull20}{MappingPackageOneXmpPageEmpty20}
-\pastebutton{MappingPackageOneXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{fact 4\free{fact }}
-\indentrel{3}\begin{verbatim}
-   (20)  24
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty20}
-\begin{paste}{MappingPackageOneXmpPageEmpty20}{MappingPackageOneXmpPagePatch20}
-\pastebutton{MappingPackageOneXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{fact 4\free{fact }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch21}
-\begin{paste}{MappingPackageOneXmpPageFull21}{MappingPackageOneXmpPageEmpty21}
-\pastebutton{MappingPackageOneXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{mto2ton(m, n) ==
-  raiser := square**n
-  raiser m
-\free{square }\bound{mto2ton }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty21}
-\begin{paste}{MappingPackageOneXmpPageEmpty21}{MappingPackageOneXmpPagePatch21}
-\pastebutton{MappingPackageOneXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{mto2ton(m, n) ==
-  raiser := square**n
-  raiser m
-\free{square }\bound{mto2ton }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch22}
-\begin{paste}{MappingPackageOneXmpPageFull22}{MappingPackageOneXmpPageEmpty22}
-\pastebutton{MappingPackageOneXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{mto2ton(3, 3)\free{mto2ton }}
-\indentrel{3}\begin{verbatim}
-   (22)  6561
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty22}
-\begin{paste}{MappingPackageOneXmpPageEmpty22}{MappingPackageOneXmpPagePatch22}
-\pastebutton{MappingPackageOneXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{mto2ton(3, 3)\free{mto2ton }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch23}
-\begin{paste}{MappingPackageOneXmpPageFull23}{MappingPackageOneXmpPageEmpty23}
-\pastebutton{MappingPackageOneXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{shiftfib(r: List INT) : INT ==
-  t := r.1
-  r.1 := r.2
-  r.2 := r.2 + t
-  t
-\bound{shiftfib }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty23}
-\begin{paste}{MappingPackageOneXmpPageEmpty23}{MappingPackageOneXmpPagePatch23}
-\pastebutton{MappingPackageOneXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{shiftfib(r: List INT) : INT ==
-  t := r.1
-  r.1 := r.2
-  r.2 := r.2 + t
-  t
-\bound{shiftfib }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch24}
-\begin{paste}{MappingPackageOneXmpPageFull24}{MappingPackageOneXmpPageEmpty24}
-\pastebutton{MappingPackageOneXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{fibinit: List INT := [0, 1]\bound{fibinitdec }}
-\indentrel{3}\begin{verbatim}
-   (24)  [0,1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty24}
-\begin{paste}{MappingPackageOneXmpPageEmpty24}{MappingPackageOneXmpPagePatch24}
-\pastebutton{MappingPackageOneXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{fibinit: List INT := [0, 1]\bound{fibinitdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch25}
-\begin{paste}{MappingPackageOneXmpPageFull25}{MappingPackageOneXmpPageEmpty25}
-\pastebutton{MappingPackageOneXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{fibs := curry(shiftfib, fibinit)\free{shiftfib fibinit }\bound{fibs }}
-\indentrel{3}\begin{verbatim}
-   (25)  theMap(MAPPKG2;curry;MAM;2!0,91)
-                                  Type: (() -> Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty25}
-\begin{paste}{MappingPackageOneXmpPageEmpty25}{MappingPackageOneXmpPagePatch25}
-\pastebutton{MappingPackageOneXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{fibs := curry(shiftfib, fibinit)\free{shiftfib fibinit }\bound{fibs }}
-\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPagePatch26}
-\begin{paste}{MappingPackageOneXmpPageFull26}{MappingPackageOneXmpPageEmpty26}
-\pastebutton{MappingPackageOneXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{[fibs() for i in 0..30]\free{fibs }}
-\indentrel{3}\begin{verbatim}
-   (26)
-   [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,
-    377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711,
-    28657, 46368, 75025, 121393, 196418, 317811, 514229,
-    832040]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MappingPackageOneXmpPageEmpty26}
-\begin{paste}{MappingPackageOneXmpPageEmpty26}{MappingPackageOneXmpPagePatch26}
-\pastebutton{MappingPackageOneXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{[fibs() for i in 0..30]\free{fibs }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/matrix.pht b/books/pages/matrix.pht
deleted file mode 100644
index 4c5d611..0000000
--- a/books/pages/matrix.pht
+++ /dev/null
@@ -1,771 +0,0 @@
-\begin{patch}{ugxMatrixOpsPagePatch1}
-\begin{paste}{ugxMatrixOpsPageFull1}{ugxMatrixOpsPageEmpty1}
-\pastebutton{ugxMatrixOpsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[1,2],[3,4]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (1)  ³    ³
-        À3  4Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty1}
-\begin{paste}{ugxMatrixOpsPageEmpty1}{ugxMatrixOpsPagePatch1}
-\pastebutton{ugxMatrixOpsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[1,2],[3,4]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch2}
-\begin{paste}{ugxMatrixOpsPageFull2}{ugxMatrixOpsPageEmpty2}
-\pastebutton{ugxMatrixOpsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{4 * m * (-5)\free{m }}
-\indentrel{3}\begin{verbatim}
-        Ú- 20  - 40¿
-   (2)  ³          ³
-        À- 60  - 80Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty2}
-\begin{paste}{ugxMatrixOpsPageEmpty2}{ugxMatrixOpsPagePatch2}
-\pastebutton{ugxMatrixOpsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{4 * m * (-5)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch3}
-\begin{paste}{ugxMatrixOpsPageFull3}{ugxMatrixOpsPageEmpty3}
-\pastebutton{ugxMatrixOpsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{n := matrix([[1,0,-2],[-3,5,1]])\bound{n }}
-\indentrel{3}\begin{verbatim}
-        Ú 1   0  - 2¿
-   (3)  ³           ³
-        À- 3  5   1 Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty3}
-\begin{paste}{ugxMatrixOpsPageEmpty3}{ugxMatrixOpsPagePatch3}
-\pastebutton{ugxMatrixOpsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{n := matrix([[1,0,-2],[-3,5,1]])\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch4}
-\begin{paste}{ugxMatrixOpsPageFull4}{ugxMatrixOpsPageEmpty4}
-\pastebutton{ugxMatrixOpsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{m * n\free{m n }}
-\indentrel{3}\begin{verbatim}
-        Ú- 5  10   0 ¿
-   (4)  ³            ³
-        À- 9  20  - 2Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty4}
-\begin{paste}{ugxMatrixOpsPageEmpty4}{ugxMatrixOpsPagePatch4}
-\pastebutton{ugxMatrixOpsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m * n\free{m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch5}
-\begin{paste}{ugxMatrixOpsPageFull5}{ugxMatrixOpsPageEmpty5}
-\pastebutton{ugxMatrixOpsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{vec := column(n,3)\free{n }\bound{vec }}
-\indentrel{3}\begin{verbatim}
-   (5)  [- 2,1]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty5}
-\begin{paste}{ugxMatrixOpsPageEmpty5}{ugxMatrixOpsPagePatch5}
-\pastebutton{ugxMatrixOpsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{vec := column(n,3)\free{n }\bound{vec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch6}
-\begin{paste}{ugxMatrixOpsPageFull6}{ugxMatrixOpsPageEmpty6}
-\pastebutton{ugxMatrixOpsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{vec * m\free{vec m }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,0]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty6}
-\begin{paste}{ugxMatrixOpsPageEmpty6}{ugxMatrixOpsPagePatch6}
-\pastebutton{ugxMatrixOpsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{vec * m\free{vec m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch7}
-\begin{paste}{ugxMatrixOpsPageFull7}{ugxMatrixOpsPageEmpty7}
-\pastebutton{ugxMatrixOpsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{m * vec\free{vec m }}
-\indentrel{3}\begin{verbatim}
-   (7)  [0,- 2]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty7}
-\begin{paste}{ugxMatrixOpsPageEmpty7}{ugxMatrixOpsPagePatch7}
-\pastebutton{ugxMatrixOpsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m * vec\free{vec m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch8}
-\begin{paste}{ugxMatrixOpsPageFull8}{ugxMatrixOpsPageEmpty8}
-\pastebutton{ugxMatrixOpsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{hilb := matrix([[1/(i + j) for i in 1..3] for j in 1..3])\bound{hilb }}
-\indentrel{3}\begin{verbatim}
-        Ú1  1  1¿
-        ³Ä  Ä  Ä³
-        ³2  3  4³
-        ³       ³
-        ³1  1  1³
-   (8)  ³Ä  Ä  Ä³
-        ³3  4  5³
-        ³       ³
-        ³1  1  1³
-        ³Ä  Ä  Ä³
-        À4  5  6Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty8}
-\begin{paste}{ugxMatrixOpsPageEmpty8}{ugxMatrixOpsPagePatch8}
-\pastebutton{ugxMatrixOpsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{hilb := matrix([[1/(i + j) for i in 1..3] for j in 1..3])\bound{hilb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch9}
-\begin{paste}{ugxMatrixOpsPageFull9}{ugxMatrixOpsPageEmpty9}
-\pastebutton{ugxMatrixOpsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{inverse(hilb)\free{hilb }}
-\indentrel{3}\begin{verbatim}
-        Ú 72    - 240   180 ¿
-        ³                   ³
-   (9)  ³- 240   900   - 720³
-        ³                   ³
-        À 180   - 720   600 Ù
-               Type: Union(Matrix Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty9}
-\begin{paste}{ugxMatrixOpsPageEmpty9}{ugxMatrixOpsPagePatch9}
-\pastebutton{ugxMatrixOpsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{inverse(hilb)\free{hilb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch10}
-\begin{paste}{ugxMatrixOpsPageFull10}{ugxMatrixOpsPageEmpty10}
-\pastebutton{ugxMatrixOpsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{mm := matrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])\bound{mm }}
-\indentrel{3}\begin{verbatim}
-         Ú1   2   3   4 ¿
-         ³              ³
-         ³5   6   7   8 ³
-   (10)  ³              ³
-         ³9   10  11  12³
-         ³              ³
-         À13  14  15  16Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty10}
-\begin{paste}{ugxMatrixOpsPageEmpty10}{ugxMatrixOpsPagePatch10}
-\pastebutton{ugxMatrixOpsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{mm := matrix([[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]])\bound{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch11}
-\begin{paste}{ugxMatrixOpsPageFull11}{ugxMatrixOpsPageEmpty11}
-\pastebutton{ugxMatrixOpsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{inverse(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (11)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty11}
-\begin{paste}{ugxMatrixOpsPageEmpty11}{ugxMatrixOpsPagePatch11}
-\pastebutton{ugxMatrixOpsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{inverse(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch12}
-\begin{paste}{ugxMatrixOpsPageFull12}{ugxMatrixOpsPageEmpty12}
-\pastebutton{ugxMatrixOpsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{determinant(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (12)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty12}
-\begin{paste}{ugxMatrixOpsPageEmpty12}{ugxMatrixOpsPagePatch12}
-\pastebutton{ugxMatrixOpsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{determinant(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch13}
-\begin{paste}{ugxMatrixOpsPageFull13}{ugxMatrixOpsPageEmpty13}
-\pastebutton{ugxMatrixOpsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{trace(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (13)  34
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty13}
-\begin{paste}{ugxMatrixOpsPageEmpty13}{ugxMatrixOpsPagePatch13}
-\pastebutton{ugxMatrixOpsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{trace(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch14}
-\begin{paste}{ugxMatrixOpsPageFull14}{ugxMatrixOpsPageEmpty14}
-\pastebutton{ugxMatrixOpsPageFull14}{\hidepaste}
-\tab{5}\spadcommand{rank(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (14)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty14}
-\begin{paste}{ugxMatrixOpsPageEmpty14}{ugxMatrixOpsPagePatch14}
-\pastebutton{ugxMatrixOpsPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{rank(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch15}
-\begin{paste}{ugxMatrixOpsPageFull15}{ugxMatrixOpsPageEmpty15}
-\pastebutton{ugxMatrixOpsPageFull15}{\hidepaste}
-\tab{5}\spadcommand{nullity(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (15)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty15}
-\begin{paste}{ugxMatrixOpsPageEmpty15}{ugxMatrixOpsPagePatch15}
-\pastebutton{ugxMatrixOpsPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{nullity(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch16}
-\begin{paste}{ugxMatrixOpsPageFull16}{ugxMatrixOpsPageEmpty16}
-\pastebutton{ugxMatrixOpsPageFull16}{\hidepaste}
-\tab{5}\spadcommand{nullSpace(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-   (16)  [[1,- 2,1,0],[2,- 3,0,1]]
-                              Type: List Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty16}
-\begin{paste}{ugxMatrixOpsPageEmpty16}{ugxMatrixOpsPagePatch16}
-\pastebutton{ugxMatrixOpsPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{nullSpace(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPagePatch17}
-\begin{paste}{ugxMatrixOpsPageFull17}{ugxMatrixOpsPageEmpty17}
-\pastebutton{ugxMatrixOpsPageFull17}{\hidepaste}
-\tab{5}\spadcommand{rowEchelon(mm)\free{mm }}
-\indentrel{3}\begin{verbatim}
-         Ú1  2  3  4 ¿
-         ³           ³
-         ³0  4  8  12³
-   (17)  ³           ³
-         ³0  0  0  0 ³
-         ³           ³
-         À0  0  0  0 Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixOpsPageEmpty17}
-\begin{paste}{ugxMatrixOpsPageEmpty17}{ugxMatrixOpsPagePatch17}
-\pastebutton{ugxMatrixOpsPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{rowEchelon(mm)\free{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch1}
-\begin{paste}{ugxMatrixCreatePageFull1}{ugxMatrixCreatePageEmpty1}
-\pastebutton{ugxMatrixCreatePageFull1}{\hidepaste}
-\tab{5}\spadcommand{m : Matrix(Integer) := new(3,3,0)\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú0  0  0¿
-        ³       ³
-   (1)  ³0  0  0³
-        ³       ³
-        À0  0  0Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty1}
-\begin{paste}{ugxMatrixCreatePageEmpty1}{ugxMatrixCreatePagePatch1}
-\pastebutton{ugxMatrixCreatePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m : Matrix(Integer) := new(3,3,0)\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch2}
-\begin{paste}{ugxMatrixCreatePageFull2}{ugxMatrixCreatePageEmpty2}
-\pastebutton{ugxMatrixCreatePageFull2}{\hidepaste}
-\tab{5}\spadcommand{setelt(m,2,3,5)\free{m }\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty2}
-\begin{paste}{ugxMatrixCreatePageEmpty2}{ugxMatrixCreatePagePatch2}
-\pastebutton{ugxMatrixCreatePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{setelt(m,2,3,5)\free{m }\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch3}
-\begin{paste}{ugxMatrixCreatePageFull3}{ugxMatrixCreatePageEmpty3}
-\pastebutton{ugxMatrixCreatePageFull3}{\hidepaste}
-\tab{5}\spadcommand{m(1,2) := 10\free{m1 }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty3}
-\begin{paste}{ugxMatrixCreatePageEmpty3}{ugxMatrixCreatePagePatch3}
-\pastebutton{ugxMatrixCreatePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{m(1,2) := 10\free{m1 }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch4}
-\begin{paste}{ugxMatrixCreatePageFull4}{ugxMatrixCreatePageEmpty4}
-\pastebutton{ugxMatrixCreatePageFull4}{\hidepaste}
-\tab{5}\spadcommand{m\free{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú0  10  0¿
-        ³        ³
-   (4)  ³0  0   5³
-        ³        ³
-        À0  0   0Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty4}
-\begin{paste}{ugxMatrixCreatePageEmpty4}{ugxMatrixCreatePagePatch4}
-\pastebutton{ugxMatrixCreatePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch5}
-\begin{paste}{ugxMatrixCreatePageFull5}{ugxMatrixCreatePageEmpty5}
-\pastebutton{ugxMatrixCreatePageFull5}{\hidepaste}
-\tab{5}\spadcommand{matrix [[1,2,3,4],[0,9,8,7]]}
-\indentrel{3}\begin{verbatim}
-        Ú1  2  3  4¿
-   (5)  ³          ³
-        À0  9  8  7Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty5}
-\begin{paste}{ugxMatrixCreatePageEmpty5}{ugxMatrixCreatePagePatch5}
-\pastebutton{ugxMatrixCreatePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{matrix [[1,2,3,4],[0,9,8,7]]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch6}
-\begin{paste}{ugxMatrixCreatePageFull6}{ugxMatrixCreatePageEmpty6}
-\pastebutton{ugxMatrixCreatePageFull6}{\hidepaste}
-\tab{5}\spadcommand{dm := diagonalMatrix [1,x**2,x**3,x**4,x**5]\bound{dm }}
-\indentrel{3}\begin{verbatim}
-        Ú1  0   0   0   0 ¿
-        ³                 ³
-        ³    2            ³
-        ³0  x   0   0   0 ³
-        ³                 ³
-        ³        3        ³
-   (6)  ³0  0   x   0   0 ³
-        ³                 ³
-        ³            4    ³
-        ³0  0   0   x   0 ³
-        ³                 ³
-        ³                5³
-        À0  0   0   0   x Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty6}
-\begin{paste}{ugxMatrixCreatePageEmpty6}{ugxMatrixCreatePagePatch6}
-\pastebutton{ugxMatrixCreatePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{dm := diagonalMatrix [1,x**2,x**3,x**4,x**5]\bound{dm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch7}
-\begin{paste}{ugxMatrixCreatePageFull7}{ugxMatrixCreatePageEmpty7}
-\pastebutton{ugxMatrixCreatePageFull7}{\hidepaste}
-\tab{5}\spadcommand{setRow!(dm,5,vector [1,1,1,1,1])\free{dm }\bound{dm1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  0   0   0   0¿
-        ³                ³
-        ³    2           ³
-        ³0  x   0   0   0³
-        ³                ³
-   (7)  ³        3       ³
-        ³0  0   x   0   0³
-        ³                ³
-        ³            4   ³
-        ³0  0   0   x   0³
-        ³                ³
-        À1  1   1   1   1Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty7}
-\begin{paste}{ugxMatrixCreatePageEmpty7}{ugxMatrixCreatePagePatch7}
-\pastebutton{ugxMatrixCreatePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{setRow!(dm,5,vector [1,1,1,1,1])\free{dm }\bound{dm1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch8}
-\begin{paste}{ugxMatrixCreatePageFull8}{ugxMatrixCreatePageEmpty8}
-\pastebutton{ugxMatrixCreatePageFull8}{\hidepaste}
-\tab{5}\spadcommand{setColumn!(dm,2,vector [y,y,y,y,y])\free{dm1 }\bound{dm2 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  y  0   0   0¿
-        ³               ³
-        ³0  y  0   0   0³
-        ³               ³
-        ³       3       ³
-   (8)  ³0  y  x   0   0³
-        ³               ³
-        ³           4   ³
-        ³0  y  0   x   0³
-        ³               ³
-        À1  y  1   1   1Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty8}
-\begin{paste}{ugxMatrixCreatePageEmpty8}{ugxMatrixCreatePagePatch8}
-\pastebutton{ugxMatrixCreatePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{setColumn!(dm,2,vector [y,y,y,y,y])\free{dm1 }\bound{dm2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch9}
-\begin{paste}{ugxMatrixCreatePageFull9}{ugxMatrixCreatePageEmpty9}
-\pastebutton{ugxMatrixCreatePageFull9}{\hidepaste}
-\tab{5}\spadcommand{cdm := copy(dm)\free{dm2 }\bound{cdm }}
-\indentrel{3}\begin{verbatim}
-        Ú1  y  0   0   0¿
-        ³               ³
-        ³0  y  0   0   0³
-        ³               ³
-        ³       3       ³
-   (9)  ³0  y  x   0   0³
-        ³               ³
-        ³           4   ³
-        ³0  y  0   x   0³
-        ³               ³
-        À1  y  1   1   1Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty9}
-\begin{paste}{ugxMatrixCreatePageEmpty9}{ugxMatrixCreatePagePatch9}
-\pastebutton{ugxMatrixCreatePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{cdm := copy(dm)\free{dm2 }\bound{cdm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch10}
-\begin{paste}{ugxMatrixCreatePageFull10}{ugxMatrixCreatePageEmpty10}
-\pastebutton{ugxMatrixCreatePageFull10}{\hidepaste}
-\tab{5}\spadcommand{setelt(dm,4,1,1-x**7)\free{dm2 }\bound{setdm }}
-\indentrel{3}\begin{verbatim}
-            7
-   (10)  - x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty10}
-\begin{paste}{ugxMatrixCreatePageEmpty10}{ugxMatrixCreatePagePatch10}
-\pastebutton{ugxMatrixCreatePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{setelt(dm,4,1,1-x**7)\free{dm2 }\bound{setdm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch11}
-\begin{paste}{ugxMatrixCreatePageFull11}{ugxMatrixCreatePageEmpty11}
-\pastebutton{ugxMatrixCreatePageFull11}{\hidepaste}
-\tab{5}\spadcommand{[dm,cdm]\free{setdm cdm }}
-\indentrel{3}\begin{verbatim}
-          Ú   1      y  0   0   0¿ Ú1  y  0   0   0¿
-          ³                      ³ ³               ³
-          ³   0      y  0   0   0³ ³0  y  0   0   0³
-          ³                      ³ ³               ³
-          ³              3       ³ ³       3       ³
-   (11)  [³   0      y  x   0   0³,³0  y  x   0   0³]
-          ³                      ³ ³               ³
-          ³   7              4   ³ ³           4   ³
-          ³- x  + 1  y  0   x   0³ ³0  y  0   x   0³
-          ³                      ³ ³               ³
-          À   1      y  1   1   1Ù À1  y  1   1   1Ù
-                   Type: List Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty11}
-\begin{paste}{ugxMatrixCreatePageEmpty11}{ugxMatrixCreatePagePatch11}
-\pastebutton{ugxMatrixCreatePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[dm,cdm]\free{setdm cdm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch12}
-\begin{paste}{ugxMatrixCreatePageFull12}{ugxMatrixCreatePageEmpty12}
-\pastebutton{ugxMatrixCreatePageFull12}{\hidepaste}
-\tab{5}\spadcommand{subMatrix(dm,2,3,2,4)\free{setdm }}
-\indentrel{3}\begin{verbatim}
-         Úy  0   0¿
-   (12)  ³        ³
-         ³    3   ³
-         Ày  x   0Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty12}
-\begin{paste}{ugxMatrixCreatePageEmpty12}{ugxMatrixCreatePagePatch12}
-\pastebutton{ugxMatrixCreatePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{subMatrix(dm,2,3,2,4)\free{setdm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch13}
-\begin{paste}{ugxMatrixCreatePageFull13}{ugxMatrixCreatePageEmpty13}
-\pastebutton{ugxMatrixCreatePageFull13}{\hidepaste}
-\tab{5}\spadcommand{d := diagonalMatrix [1.2,-1.3,1.4,-1.5]\bound{d }}
-\indentrel{3}\begin{verbatim}
-         Ú1.2   0.0   0.0   0.0 ¿
-         ³                      ³
-         ³0.0  - 1.3  0.0   0.0 ³
-   (13)  ³                      ³
-         ³0.0   0.0   1.4   0.0 ³
-         ³                      ³
-         À0.0   0.0   0.0  - 1.5Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty13}
-\begin{paste}{ugxMatrixCreatePageEmpty13}{ugxMatrixCreatePagePatch13}
-\pastebutton{ugxMatrixCreatePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{d := diagonalMatrix [1.2,-1.3,1.4,-1.5]\bound{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch14}
-\begin{paste}{ugxMatrixCreatePageFull14}{ugxMatrixCreatePageEmpty14}
-\pastebutton{ugxMatrixCreatePageFull14}{\hidepaste}
-\tab{5}\spadcommand{e := matrix [[6.7,9.11],[-31.33,67.19]]\bound{e }}
-\indentrel{3}\begin{verbatim}
-         Ú  6.7    9.11 ¿
-   (14)  ³              ³
-         À- 31.33  67.19Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty14}
-\begin{paste}{ugxMatrixCreatePageEmpty14}{ugxMatrixCreatePagePatch14}
-\pastebutton{ugxMatrixCreatePageEmpty14}{\showpaste}
-\tab{5}\spadcommand{e := matrix [[6.7,9.11],[-31.33,67.19]]\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch15}
-\begin{paste}{ugxMatrixCreatePageFull15}{ugxMatrixCreatePageEmpty15}
-\pastebutton{ugxMatrixCreatePageFull15}{\hidepaste}
-\tab{5}\spadcommand{setsubMatrix!(d,1,2,e)\free{d e }\bound{d1 }}
-\indentrel{3}\begin{verbatim}
-         Ú1.2    6.7    9.11    0.0 ¿
-         ³                          ³
-         ³0.0  - 31.33  67.19   0.0 ³
-   (15)  ³                          ³
-         ³0.0    0.0     1.4    0.0 ³
-         ³                          ³
-         À0.0    0.0     0.0   - 1.5Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty15}
-\begin{paste}{ugxMatrixCreatePageEmpty15}{ugxMatrixCreatePagePatch15}
-\pastebutton{ugxMatrixCreatePageEmpty15}{\showpaste}
-\tab{5}\spadcommand{setsubMatrix!(d,1,2,e)\free{d e }\bound{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch16}
-\begin{paste}{ugxMatrixCreatePageFull16}{ugxMatrixCreatePageEmpty16}
-\pastebutton{ugxMatrixCreatePageFull16}{\hidepaste}
-\tab{5}\spadcommand{d\free{d1 }}
-\indentrel{3}\begin{verbatim}
-         Ú1.2    6.7    9.11    0.0 ¿
-         ³                          ³
-         ³0.0  - 31.33  67.19   0.0 ³
-   (16)  ³                          ³
-         ³0.0    0.0     1.4    0.0 ³
-         ³                          ³
-         À0.0    0.0     0.0   - 1.5Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty16}
-\begin{paste}{ugxMatrixCreatePageEmpty16}{ugxMatrixCreatePagePatch16}
-\pastebutton{ugxMatrixCreatePageEmpty16}{\showpaste}
-\tab{5}\spadcommand{d\free{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch17}
-\begin{paste}{ugxMatrixCreatePageFull17}{ugxMatrixCreatePageEmpty17}
-\pastebutton{ugxMatrixCreatePageFull17}{\hidepaste}
-\tab{5}\spadcommand{a := matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]\bound{a }}
-\indentrel{3}\begin{verbatim}
-         Ú1  1  1¿
-         ³Ä  Ä  Ä³
-         ³2  3  4³
-   (17)  ³       ³
-         ³1  1  1³
-         ³Ä  Ä  Ä³
-         À5  6  7Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty17}
-\begin{paste}{ugxMatrixCreatePageEmpty17}{ugxMatrixCreatePagePatch17}
-\pastebutton{ugxMatrixCreatePageEmpty17}{\showpaste}
-\tab{5}\spadcommand{a := matrix [[1/2,1/3,1/4],[1/5,1/6,1/7]]\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch18}
-\begin{paste}{ugxMatrixCreatePageFull18}{ugxMatrixCreatePageEmpty18}
-\pastebutton{ugxMatrixCreatePageFull18}{\hidepaste}
-\tab{5}\spadcommand{b := matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]\bound{b }}
-\indentrel{3}\begin{verbatim}
-         Ú3   3    3¿
-         ³Ä   Ä   ÄÄ³
-         ³5   7   11³
-   (18)  ³          ³
-         ³ 3   3   3³
-         ³ÄÄ  ÄÄ  ÄÄ³
-         À13  17  19Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty18}
-\begin{paste}{ugxMatrixCreatePageEmpty18}{ugxMatrixCreatePagePatch18}
-\pastebutton{ugxMatrixCreatePageEmpty18}{\showpaste}
-\tab{5}\spadcommand{b := matrix [[3/5,3/7,3/11],[3/13,3/17,3/19]]\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch19}
-\begin{paste}{ugxMatrixCreatePageFull19}{ugxMatrixCreatePageEmpty19}
-\pastebutton{ugxMatrixCreatePageFull19}{\hidepaste}
-\tab{5}\spadcommand{horizConcat(a,b)\free{a b }}
-\indentrel{3}\begin{verbatim}
-         Ú1  1  1  3   3    3¿
-         ³Ä  Ä  Ä  Ä   Ä   ÄÄ³
-         ³2  3  4  5   7   11³
-   (19)  ³                   ³
-         ³1  1  1   3   3   3³
-         ³Ä  Ä  Ä  ÄÄ  ÄÄ  ÄÄ³
-         À5  6  7  13  17  19Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty19}
-\begin{paste}{ugxMatrixCreatePageEmpty19}{ugxMatrixCreatePagePatch19}
-\pastebutton{ugxMatrixCreatePageEmpty19}{\showpaste}
-\tab{5}\spadcommand{horizConcat(a,b)\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch20}
-\begin{paste}{ugxMatrixCreatePageFull20}{ugxMatrixCreatePageEmpty20}
-\pastebutton{ugxMatrixCreatePageFull20}{\hidepaste}
-\tab{5}\spadcommand{vab := vertConcat(a,b)\free{a b }\bound{vab }}
-\indentrel{3}\begin{verbatim}
-         Ú1   1   1 ¿
-         ³Ä   Ä   Ä ³
-         ³2   3   4 ³
-         ³          ³
-         ³1   1   1 ³
-         ³Ä   Ä   Ä ³
-         ³5   6   7 ³
-   (20)  ³          ³
-         ³3   3    3³
-         ³Ä   Ä   ÄÄ³
-         ³5   7   11³
-         ³          ³
-         ³ 3   3   3³
-         ³ÄÄ  ÄÄ  ÄÄ³
-         À13  17  19Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty20}
-\begin{paste}{ugxMatrixCreatePageEmpty20}{ugxMatrixCreatePagePatch20}
-\pastebutton{ugxMatrixCreatePageEmpty20}{\showpaste}
-\tab{5}\spadcommand{vab := vertConcat(a,b)\free{a b }\bound{vab }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePagePatch21}
-\begin{paste}{ugxMatrixCreatePageFull21}{ugxMatrixCreatePageEmpty21}
-\pastebutton{ugxMatrixCreatePageFull21}{\hidepaste}
-\tab{5}\spadcommand{transpose vab\free{vab }}
-\indentrel{3}\begin{verbatim}
-         Ú1  1  3    3¿
-         ³Ä  Ä  Ä   ÄÄ³
-         ³2  5  5   13³
-         ³            ³
-         ³1  1  3    3³
-   (21)  ³Ä  Ä  Ä   ÄÄ³
-         ³3  6  7   17³
-         ³            ³
-         ³1  1   3   3³
-         ³Ä  Ä  ÄÄ  ÄÄ³
-         À4  7  11  19Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxMatrixCreatePageEmpty21}
-\begin{paste}{ugxMatrixCreatePageEmpty21}{ugxMatrixCreatePagePatch21}
-\pastebutton{ugxMatrixCreatePageEmpty21}{\showpaste}
-\tab{5}\spadcommand{transpose vab\free{vab }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/mkfunc.pht b/books/pages/mkfunc.pht
deleted file mode 100644
index 8760d48..0000000
--- a/books/pages/mkfunc.pht
+++ /dev/null
@@ -1,171 +0,0 @@
-\begin{patch}{MakeFunctionXmpPagePatch1}
-\begin{paste}{MakeFunctionXmpPageFull1}{MakeFunctionXmpPageEmpty1}
-\pastebutton{MakeFunctionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3\bound{expr }}
-\indentrel{3}\begin{verbatim}
-   (1)
-       3   x 2        4     3   x    5     4    3      2 3
-     (x (%e )  + (- 2x  - 2x )%e  + x  + 2x  + x )sin(x )
-   + 
-          2   x 2        3     2   x     4     3     2
-       (3x (%e )  + (- 6x  - 6x )%e  + 3x  + 6x  + 3x )
-    *
-            2 2
-       sin(x )
-   + 
-            x 2        2        x     3     2           2
-     (3x (%e )  + (- 6x  - 6x)%e  + 3x  + 6x  + 3x)sin(x )
-   + 
-        x 2               x    2
-     (%e )  + (- 2x - 2)%e  + x  + 2x + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty1}
-\begin{paste}{MakeFunctionXmpPageEmpty1}{MakeFunctionXmpPagePatch1}
-\pastebutton{MakeFunctionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{expr := (x - exp x + 1)**2 * (sin(x**2) * x + 1)**3\bound{expr }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch2}
-\begin{paste}{MakeFunctionXmpPageFull2}{MakeFunctionXmpPageEmpty2}
-\pastebutton{MakeFunctionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{function(expr, f, x)\bound{f }\free{expr }}
-\indentrel{3}\begin{verbatim}
-   (2)  f
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty2}
-\begin{paste}{MakeFunctionXmpPageEmpty2}{MakeFunctionXmpPagePatch2}
-\pastebutton{MakeFunctionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{function(expr, f, x)\bound{f }\free{expr }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch3}
-\begin{paste}{MakeFunctionXmpPageFull3}{MakeFunctionXmpPageEmpty3}
-\pastebutton{MakeFunctionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{tbl := [f(0.1 * i - 1) for i in 0..20];\free{f }\bound{tbl }}
-\indentrel{3}\begin{verbatim}
-                                       Type: List Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty3}
-\begin{paste}{MakeFunctionXmpPageEmpty3}{MakeFunctionXmpPagePatch3}
-\pastebutton{MakeFunctionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{tbl := [f(0.1 * i - 1) for i in 0..20];\free{f }\bound{tbl }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch4}
-\begin{paste}{MakeFunctionXmpPageFull4}{MakeFunctionXmpPageEmpty4}
-\pastebutton{MakeFunctionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{e := (x - y + 1)**2 * (x**2 * y + 1)**2\bound{e }}
-\indentrel{3}\begin{verbatim}
-   (4)
-      4 4        5     4     2  3
-     x y  + (- 2x  - 2x  + 2x )y
-   + 
-       6     5    4     3     2      2
-     (x  + 2x  + x  - 4x  - 4x  + 1)y
-   + 
-        4     3     2               2
-     (2x  + 4x  + 2x  - 2x - 2)y + x  + 2x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty4}
-\begin{paste}{MakeFunctionXmpPageEmpty4}{MakeFunctionXmpPagePatch4}
-\pastebutton{MakeFunctionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{e := (x - y + 1)**2 * (x**2 * y + 1)**2\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch5}
-\begin{paste}{MakeFunctionXmpPageFull5}{MakeFunctionXmpPageEmpty5}
-\pastebutton{MakeFunctionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{function(e, g, [x, y])\free{e }}
-\indentrel{3}\begin{verbatim}
-   (5)  g
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty5}
-\begin{paste}{MakeFunctionXmpPageEmpty5}{MakeFunctionXmpPagePatch5}
-\pastebutton{MakeFunctionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{function(e, g, [x, y])\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch6}
-\begin{paste}{MakeFunctionXmpPageFull6}{MakeFunctionXmpPageEmpty6}
-\pastebutton{MakeFunctionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{function(e, h, x, y)\free{e }\bound{h }}
-\indentrel{3}\begin{verbatim}
-   (6)  h
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty6}
-\begin{paste}{MakeFunctionXmpPageEmpty6}{MakeFunctionXmpPagePatch6}
-\pastebutton{MakeFunctionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{function(e, h, x, y)\free{e }\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch7}
-\begin{paste}{MakeFunctionXmpPageFull7}{MakeFunctionXmpPageEmpty7}
-\pastebutton{MakeFunctionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{m1 := squareMatrix [[1, 2], [3, 4]]\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (7)  ³    ³
-        À3  4Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty7}
-\begin{paste}{MakeFunctionXmpPageEmpty7}{MakeFunctionXmpPagePatch7}
-\pastebutton{MakeFunctionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m1 := squareMatrix [[1, 2], [3, 4]]\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch8}
-\begin{paste}{MakeFunctionXmpPageFull8}{MakeFunctionXmpPageEmpty8}
-\pastebutton{MakeFunctionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{m2 := squareMatrix [[1, 0], [-1, 1]]\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú 1   0¿
-   (8)  ³      ³
-        À- 1  1Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty8}
-\begin{paste}{MakeFunctionXmpPageEmpty8}{MakeFunctionXmpPagePatch8}
-\pastebutton{MakeFunctionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{m2 := squareMatrix [[1, 0], [-1, 1]]\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPagePatch9}
-\begin{paste}{MakeFunctionXmpPageFull9}{MakeFunctionXmpPageEmpty9}
-\pastebutton{MakeFunctionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{h(m1, m2)\free{h m1 m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú- 7836   8960 ¿
-   (9)  ³              ³
-        À- 17132  19588Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MakeFunctionXmpPageEmpty9}
-\begin{paste}{MakeFunctionXmpPageEmpty9}{MakeFunctionXmpPagePatch9}
-\pastebutton{MakeFunctionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{h(m1, m2)\free{h m1 m2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/mpoly.pht b/books/pages/mpoly.pht
deleted file mode 100644
index 310a655..0000000
--- a/books/pages/mpoly.pht
+++ /dev/null
@@ -1,190 +0,0 @@
-\begin{patch}{MultivariatePolynomialXmpPagePatch1}
-\begin{paste}{MultivariatePolynomialXmpPageFull1}{MultivariatePolynomialXmpPageEmpty1}
-\pastebutton{MultivariatePolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2\bound{m }}
-\indentrel{3}\begin{verbatim}
-         4     3 3     6       2     4      2
-   (1)  x  - 2y x  + (y  + 6y)x  - 6y x + 9y
-            Type: MultivariatePolynomial([x,y],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty1}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty1}{MultivariatePolynomialXmpPagePatch1}
-\pastebutton{MultivariatePolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m : MPOLY([x,y],INT) := (x**2 - x*y**3 +3*y)**2\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch2}
-\begin{paste}{MultivariatePolynomialXmpPageFull2}{MultivariatePolynomialXmpPageEmpty2}
-\pastebutton{MultivariatePolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-         2 6       4     3 3     2     2     4
-   (2)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
-            Type: MultivariatePolynomial([y,x],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty2}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty2}{MultivariatePolynomialXmpPagePatch2}
-\pastebutton{MultivariatePolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch3}
-\begin{paste}{MultivariatePolynomialXmpPageFull3}{MultivariatePolynomialXmpPageEmpty3}
-\pastebutton{MultivariatePolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p : MPOLY([x,y],POLY INT)\bound{pdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty3}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty3}{MultivariatePolynomialXmpPagePatch3}
-\pastebutton{MultivariatePolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p : MPOLY([x,y],POLY INT)\bound{pdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch4}
-\begin{paste}{MultivariatePolynomialXmpPageFull4}{MultivariatePolynomialXmpPageEmpty4}
-\pastebutton{MultivariatePolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{p := (a**2*x - b*y**2 + 1)**2\free{pdec }\bound{p }}
-\indentrel{3}\begin{verbatim}
-         4 2        2   2     2      2 4       2
-   (4)  a x  + (- 2a b y  + 2a )x + b y  - 2b y  + 1
- Type: MultivariatePolynomial([x,y],Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty4}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty4}{MultivariatePolynomialXmpPagePatch4}
-\pastebutton{MultivariatePolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p := (a**2*x - b*y**2 + 1)**2\free{pdec }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch5}
-\begin{paste}{MultivariatePolynomialXmpPageFull5}{MultivariatePolynomialXmpPageEmpty5}
-\pastebutton{MultivariatePolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p :: POLY INT\free{p }\bound{prev }}
-\indentrel{3}\begin{verbatim}
-         2 4        2          2    4 2     2
-   (5)  b y  + (- 2a b x - 2b)y  + a x  + 2a x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty5}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty5}{MultivariatePolynomialXmpPagePatch5}
-\pastebutton{MultivariatePolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p :: POLY INT\free{p }\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch6}
-\begin{paste}{MultivariatePolynomialXmpPageFull6}{MultivariatePolynomialXmpPageEmpty6}
-\pastebutton{MultivariatePolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{\% :: MPOLY([a,b],POLY INT)\free{prev }}
-\indentrel{3}\begin{verbatim}
-         2 4          2        2    4 2     2
-   (6)  x a  + (- 2x y b + 2x)a  + y b  - 2y b + 1
- Type: MultivariatePolynomial([a,b],Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty6}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty6}{MultivariatePolynomialXmpPagePatch6}
-\pastebutton{MultivariatePolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{\% :: MPOLY([a,b],POLY INT)\free{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch7}
-\begin{paste}{MultivariatePolynomialXmpPageFull7}{MultivariatePolynomialXmpPageEmpty7}
-\pastebutton{MultivariatePolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{q : UP(x, FRAC MPOLY([y,z],INT))\bound{qdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty7}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty7}{MultivariatePolynomialXmpPagePatch7}
-\pastebutton{MultivariatePolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{q : UP(x, FRAC MPOLY([y,z],INT))\bound{qdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch8}
-\begin{paste}{MultivariatePolynomialXmpPageFull8}{MultivariatePolynomialXmpPageEmpty8}
-\pastebutton{MultivariatePolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{q := (x**2 - x*(z+1)/y +2)**2\free{qdec }\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (8)
-                          2    2
-      4   - 2z - 2  3   4y  + z  + 2z + 1  2   - 4z - 4
-     x  + ÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x
-              y                  2                 y
-                                y
-   + 
-     4
-Type: UnivariatePolynomial(x,Fraction MultivariatePolynomial([y,z],Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty8}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty8}{MultivariatePolynomialXmpPagePatch8}
-\pastebutton{MultivariatePolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{q := (x**2 - x*(z+1)/y +2)**2\free{qdec }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch9}
-\begin{paste}{MultivariatePolynomialXmpPageFull9}{MultivariatePolynomialXmpPageEmpty9}
-\pastebutton{MultivariatePolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{q :: UP(z, FRAC MPOLY([x,y],INT))\free{q }}
-\indentrel{3}\begin{verbatim}
-   (9)
-      2            3     2
-     x   2   - 2y x  + 2x  - 4y x
-     ÄÄ z  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ z
-      2                2
-     y                y
-   + 
-      2 4       3      2      2            2
-     y x  - 2y x  + (4y  + 1)x  - 4y x + 4y
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                         2
-                        y
-Type: UnivariatePolynomial(z,Fraction MultivariatePolynomial([x,y],Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty9}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty9}{MultivariatePolynomialXmpPagePatch9}
-\pastebutton{MultivariatePolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{q :: UP(z, FRAC MPOLY([x,y],INT))\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPagePatch10}
-\begin{paste}{MultivariatePolynomialXmpPageFull10}{MultivariatePolynomialXmpPageEmpty10}
-\pastebutton{MultivariatePolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{q :: MPOLY([x,z], FRAC UP(y,INT))\free{q }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                                            2
-      4      2     2  3     1  2    2     4y  + 1  2
-     x  + (- Ä z - Ä)x  + (ÄÄ z  + ÄÄ z + ÄÄÄÄÄÄÄ)x
-             y     y        2       2         2
-                           y       y         y
-   + 
-        4     4
-     (- Ä z - Ä)x + 4
-        y     y
-Type: MultivariatePolynomial([x,z],Fraction UnivariatePolynomial(y,Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultivariatePolynomialXmpPageEmpty10}
-\begin{paste}{MultivariatePolynomialXmpPageEmpty10}{MultivariatePolynomialXmpPagePatch10}
-\pastebutton{MultivariatePolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{q :: MPOLY([x,z], FRAC UP(y,INT))\free{q }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/mset.pht b/books/pages/mset.pht
deleted file mode 100644
index 09fc539..0000000
--- a/books/pages/mset.pht
+++ /dev/null
@@ -1,192 +0,0 @@
-\begin{patch}{MultiSetXmpPagePatch1}
-\begin{paste}{MultiSetXmpPageFull1}{MultiSetXmpPageEmpty1}
-\pastebutton{MultiSetXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (1)  {7,2: 5,3: 3,1,10,6,4: 4,2: 2}
-                         Type: Multiset PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty1}
-\begin{paste}{MultiSetXmpPageEmpty1}{MultiSetXmpPagePatch1}
-\pastebutton{MultiSetXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{s := multiset [1,2,3,4,5,4,3,2,3,4,5,6,7,4,10]\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch2}
-\begin{paste}{MultiSetXmpPageFull2}{MultiSetXmpPageEmpty2}
-\pastebutton{MultiSetXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{insert!(3,s)\bound{s1 }\free{s }}
-\indentrel{3}\begin{verbatim}
-   (2)  {7,2: 5,4: 3,1,10,6,4: 4,2: 2}
-                         Type: Multiset PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty2}
-\begin{paste}{MultiSetXmpPageEmpty2}{MultiSetXmpPagePatch2}
-\pastebutton{MultiSetXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{insert!(3,s)\bound{s1 }\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch3}
-\begin{paste}{MultiSetXmpPageFull3}{MultiSetXmpPageEmpty3}
-\pastebutton{MultiSetXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{remove!(3,s,1); s\bound{s2 }\free{s1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  {7,2: 5,3: 3,1,10,6,4: 4,2: 2}
-                         Type: Multiset PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty3}
-\begin{paste}{MultiSetXmpPageEmpty3}{MultiSetXmpPagePatch3}
-\pastebutton{MultiSetXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{remove!(3,s,1); s\bound{s2 }\free{s1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch4}
-\begin{paste}{MultiSetXmpPageFull4}{MultiSetXmpPageEmpty4}
-\pastebutton{MultiSetXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{remove!(5,s); s\bound{s2 }\free{s1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  {7,3: 3,1,10,6,4: 4,2: 2}
-                         Type: Multiset PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty4}
-\begin{paste}{MultiSetXmpPageEmpty4}{MultiSetXmpPagePatch4}
-\pastebutton{MultiSetXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{remove!(5,s); s\bound{s2 }\free{s1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch5}
-\begin{paste}{MultiSetXmpPageFull5}{MultiSetXmpPageEmpty5}
-\pastebutton{MultiSetXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{count(5,s)\free{s2 }}
-\indentrel{3}\begin{verbatim}
-   (5)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty5}
-\begin{paste}{MultiSetXmpPageEmpty5}{MultiSetXmpPagePatch5}
-\pastebutton{MultiSetXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{count(5,s)\free{s2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch6}
-\begin{paste}{MultiSetXmpPageFull6}{MultiSetXmpPageEmpty6}
-\pastebutton{MultiSetXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{t := multiset [2,2,2,-9]\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (6)  {- 9,3: 2}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty6}
-\begin{paste}{MultiSetXmpPageEmpty6}{MultiSetXmpPagePatch6}
-\pastebutton{MultiSetXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{t := multiset [2,2,2,-9]\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch7}
-\begin{paste}{MultiSetXmpPageFull7}{MultiSetXmpPageEmpty7}
-\pastebutton{MultiSetXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{U := union(s,t)\bound{U }}
-\indentrel{3}\begin{verbatim}
-   (7)  {7,3: 3,1,- 9,10,6,4: 4,5: 2}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty7}
-\begin{paste}{MultiSetXmpPageEmpty7}{MultiSetXmpPagePatch7}
-\pastebutton{MultiSetXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{U := union(s,t)\bound{U }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch8}
-\begin{paste}{MultiSetXmpPageFull8}{MultiSetXmpPageEmpty8}
-\pastebutton{MultiSetXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{I := intersect(s,t)\bound{I }}
-\indentrel{3}\begin{verbatim}
-   (8)  {5: 2}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty8}
-\begin{paste}{MultiSetXmpPageEmpty8}{MultiSetXmpPagePatch8}
-\pastebutton{MultiSetXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{I := intersect(s,t)\bound{I }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch9}
-\begin{paste}{MultiSetXmpPageFull9}{MultiSetXmpPageEmpty9}
-\pastebutton{MultiSetXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{difference(s,t)\free{s2 t }}
-\indentrel{3}\begin{verbatim}
-   (9)  {7,3: 3,1,10,6,4: 4}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty9}
-\begin{paste}{MultiSetXmpPageEmpty9}{MultiSetXmpPagePatch9}
-\pastebutton{MultiSetXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{difference(s,t)\free{s2 t }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch10}
-\begin{paste}{MultiSetXmpPageFull10}{MultiSetXmpPageEmpty10}
-\pastebutton{MultiSetXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{S := symmetricDifference(s,t)\bound{S }\free{s2 t }}
-\indentrel{3}\begin{verbatim}
-   (10)  {7,3: 3,1,- 9,10,6,4: 4}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty10}
-\begin{paste}{MultiSetXmpPageEmpty10}{MultiSetXmpPagePatch10}
-\pastebutton{MultiSetXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{S := symmetricDifference(s,t)\bound{S }\free{s2 t }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch11}
-\begin{paste}{MultiSetXmpPageFull11}{MultiSetXmpPageEmpty11}
-\pastebutton{MultiSetXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{(U = union(S,I))@Boolean\free{S I U }}
-\indentrel{3}\begin{verbatim}
-   (11)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty11}
-\begin{paste}{MultiSetXmpPageEmpty11}{MultiSetXmpPagePatch11}
-\pastebutton{MultiSetXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{(U = union(S,I))@Boolean\free{S I U }}
-\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPagePatch12}
-\begin{paste}{MultiSetXmpPageFull12}{MultiSetXmpPageEmpty12}
-\pastebutton{MultiSetXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{t1 := multiset [1,2,2,3]; [t1 < t, t1 < s, t < s, t1 <= s]\free{t s2 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [false,true,false,true]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{MultiSetXmpPageEmpty12}
-\begin{paste}{MultiSetXmpPageEmpty12}{MultiSetXmpPagePatch12}
-\pastebutton{MultiSetXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{t1 := multiset [1,2,2,3]; [t1 < t, t1 < s, t < s, t1 <= s]\free{t s2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/none.pht b/books/pages/none.pht
deleted file mode 100644
index 7e748c0..0000000
--- a/books/pages/none.pht
+++ /dev/null
@@ -1,48 +0,0 @@
-\begin{patch}{NoneXmpPagePatch1}
-\begin{paste}{NoneXmpPageFull1}{NoneXmpPageEmpty1}
-\pastebutton{NoneXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{[]}
-\indentrel{3}\begin{verbatim}
-   (1)  []
-                                        Type: List None
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{NoneXmpPageEmpty1}
-\begin{paste}{NoneXmpPageEmpty1}{NoneXmpPagePatch1}
-\pastebutton{NoneXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{[]}
-\end{paste}\end{patch}
-
-\begin{patch}{NoneXmpPagePatch2}
-\begin{paste}{NoneXmpPageFull2}{NoneXmpPageEmpty2}
-\pastebutton{NoneXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{[] :: List Float}
-\indentrel{3}\begin{verbatim}
-   (2)  []
-                                       Type: List Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{NoneXmpPageEmpty2}
-\begin{paste}{NoneXmpPageEmpty2}{NoneXmpPagePatch2}
-\pastebutton{NoneXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{[] :: List Float}
-\end{paste}\end{patch}
-
-\begin{patch}{NoneXmpPagePatch3}
-\begin{paste}{NoneXmpPageFull3}{NoneXmpPageEmpty3}
-\pastebutton{NoneXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[]$List(NonNegativeInteger)}
-\indentrel{3}\begin{verbatim}
-   (3)  []
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{NoneXmpPageEmpty3}
-\begin{paste}{NoneXmpPageEmpty3}{NoneXmpPagePatch3}
-\pastebutton{NoneXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[]$List(NonNegativeInteger)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/numbers.pht b/books/pages/numbers.pht
deleted file mode 100644
index 52f963f..0000000
--- a/books/pages/numbers.pht
+++ /dev/null
@@ -1,607 +0,0 @@
-\begin{patch}{IntegerPagePatch1}
-\begin{paste}{IntegerPageFull1}{IntegerPageEmpty1}
-\pastebutton{IntegerPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x := factorial(200)\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)
-  788657867364790503552363213932185062295135977687173263_
-   29474253324435944996340334292030428401198462390417721_
-   21389196388302576427902426371050619266249528299311134_
-   62857270763317237396988943922445621451664240254033291_
-   86413122742829485327752424240757390324032125740557956_
-   86602260319041703240623517008587961789222227896237038_
-   97374720000000000000000000000000000000000000000000000_
-   000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty1}
-\begin{paste}{IntegerPageEmpty1}{IntegerPagePatch1}
-\pastebutton{IntegerPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x := factorial(200)\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch2}
-\begin{paste}{IntegerPageFull2}{IntegerPageEmpty2}
-\pastebutton{IntegerPageFull2}{\hidepaste}
-\tab{5}\spadcommand{y := 2**90 - 1\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (2)  1237940039285380274899124223
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty2}
-\begin{paste}{IntegerPageEmpty2}{IntegerPagePatch2}
-\pastebutton{IntegerPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{y := 2**90 - 1\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch3}
-\begin{paste}{IntegerPageFull3}{IntegerPageEmpty3}
-\pastebutton{IntegerPageFull3}{\hidepaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (3)
-  788657867364790503552363213932185062295135977687173263_
-   29474253324435944996340334292030428401198462390417721_
-   21389196388302576427902426371050619266249528299311134_
-   62857270763317237396988943922445621451664240254033291_
-   86413122742829485327752424240757390324032125740557956_
-   86602260319041703240623517008587961789222227896237038_
-   97374720000000000000000000001237940039285380274899124_
-   223
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty3}
-\begin{paste}{IntegerPageEmpty3}{IntegerPagePatch3}
-\pastebutton{IntegerPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x + y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch4}
-\begin{paste}{IntegerPageFull4}{IntegerPageEmpty4}
-\pastebutton{IntegerPageFull4}{\hidepaste}
-\tab{5}\spadcommand{x - y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (4)
-  788657867364790503552363213932185062295135977687173263_
-   29474253324435944996340334292030428401198462390417721_
-   21389196388302576427902426371050619266249528299311134_
-   62857270763317237396988943922445621451664240254033291_
-   86413122742829485327752424240757390324032125740557956_
-   86602260319041703240623517008587961789222227896237038_
-   97374719999999999999999999998762059960714619725100875_
-   777
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty4}
-\begin{paste}{IntegerPageEmpty4}{IntegerPagePatch4}
-\pastebutton{IntegerPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{x - y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch5}
-\begin{paste}{IntegerPageFull5}{IntegerPageEmpty5}
-\pastebutton{IntegerPageFull5}{\hidepaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  976311151308292982184363119660950225776642966765414042_
-   37079496488133389834070329188092355479782812765687260_
-   17975734913119466356078732929100728088106228471338396_
-   75509315106953260921744797014165125163884859138819053_
-   52475858689630194698878995048210905618067437176553811_
-   33973032509524956986554360537566475497856969235918273_
-   09521182392695050703382396859842560000000000000000000_
-   000000000000000000000000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty5}
-\begin{paste}{IntegerPageEmpty5}{IntegerPagePatch5}
-\pastebutton{IntegerPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{x * y\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch6}
-\begin{paste}{IntegerPageFull6}{IntegerPageEmpty6}
-\pastebutton{IntegerPageFull6}{\hidepaste}
-\tab{5}\spadcommand{factor(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (6)
-      197 97 49 32  19  16  11  10  8  6  6  5  4  4  4  3
-     2   3  5  7  11  13  17  19  23 29 31 37 41 43 47 53
-  *
-       3  3  2  2  2  2  2  2  2
-     59 61 67 71 73 79 83 89 97 101 103 107 109 113 127
-  *
-     131 137 139 149 151 157 163 167 173 179 181 191 193
-  *
-     197 199
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty6}
-\begin{paste}{IntegerPageEmpty6}{IntegerPagePatch6}
-\pastebutton{IntegerPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{factor(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerPagePatch7}
-\begin{paste}{IntegerPageFull7}{IntegerPageEmpty7}
-\pastebutton{IntegerPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factor(y)\free{y }}
-\indentrel{3}\begin{verbatim}
-         3
-   (7)  3 7 11 19 31 73 151 331 631 23311 18837001
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerPageEmpty7}
-\begin{paste}{IntegerPageEmpty7}{IntegerPagePatch7}
-\pastebutton{IntegerPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factor(y)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionPagePatch1}
-\begin{paste}{FractionPageFull1}{FractionPageEmpty1}
-\pastebutton{FractionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{1/4 - 1/5}
-\indentrel{3}\begin{verbatim}
-         1
-   (1)  ÄÄ
-        20
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionPageEmpty1}
-\begin{paste}{FractionPageEmpty1}{FractionPagePatch1}
-\pastebutton{FractionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{1/4 - 1/5}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionPagePatch2}
-\begin{paste}{FractionPageFull2}{FractionPageEmpty2}
-\pastebutton{FractionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := (x**2 + 1)/(x - 1)\bound{f }}
-\indentrel{3}\begin{verbatim}
-         2
-        x  + 1
-   (2)  ÄÄÄÄÄÄ
-         x - 1
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionPageEmpty2}
-\begin{paste}{FractionPageEmpty2}{FractionPagePatch2}
-\pastebutton{FractionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := (x**2 + 1)/(x - 1)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionPagePatch3}
-\begin{paste}{FractionPageFull3}{FractionPageEmpty3}
-\pastebutton{FractionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{g := (x**2 - 3*x + 2)/(x + 2)\bound{g }}
-\indentrel{3}\begin{verbatim}
-         2
-        x  - 3x + 2
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄ
-           x + 2
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionPageEmpty3}
-\begin{paste}{FractionPageEmpty3}{FractionPagePatch3}
-\pastebutton{FractionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{g := (x**2 - 3*x + 2)/(x + 2)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{FractionPagePatch4}
-\begin{paste}{FractionPageFull4}{FractionPageEmpty4}
-\pastebutton{FractionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f * g\free{f g }}
-\indentrel{3}\begin{verbatim}
-         3     2
-        x  - 2x  + x - 2
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              x + 2
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{FractionPageEmpty4}
-\begin{paste}{FractionPageEmpty4}{FractionPagePatch4}
-\pastebutton{FractionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f * g\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch1}
-\begin{paste}{IntegerProblemAnswerPage1Full1}{IntegerProblemAnswerPage1Empty1}
-\pastebutton{IntegerProblemAnswerPage1Full1}{\hidepaste}
-\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty1}
-\begin{paste}{IntegerProblemAnswerPage1Empty1}{IntegerProblemAnswerPage1Patch1}
-\pastebutton{IntegerProblemAnswerPage1Empty1}{\showpaste}
-\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch2}
-\begin{paste}{IntegerProblemAnswerPage1Full2}{IntegerProblemAnswerPage1Empty2}
-\pastebutton{IntegerProblemAnswerPage1Full2}{\hidepaste}
-\tab{5}\spadcommand{f(n) == 2**n - 1\bound{f }\free{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty2}
-\begin{paste}{IntegerProblemAnswerPage1Empty2}{IntegerProblemAnswerPage1Patch2}
-\pastebutton{IntegerProblemAnswerPage1Empty2}{\showpaste}
-\tab{5}\spadcommand{f(n) == 2**n - 1\bound{f }\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch3}
-\begin{paste}{IntegerProblemAnswerPage1Full3}{IntegerProblemAnswerPage1Empty3}
-\pastebutton{IntegerProblemAnswerPage1Full3}{\hidepaste}
-\tab{5}\spadcommand{factor f(7)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  127
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty3}
-\begin{paste}{IntegerProblemAnswerPage1Empty3}{IntegerProblemAnswerPage1Patch3}
-\pastebutton{IntegerProblemAnswerPage1Empty3}{\showpaste}
-\tab{5}\spadcommand{factor f(7)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch4}
-\begin{paste}{IntegerProblemAnswerPage1Full4}{IntegerProblemAnswerPage1Empty4}
-\pastebutton{IntegerProblemAnswerPage1Full4}{\hidepaste}
-\tab{5}\spadcommand{ints := [n for n in 1..]\bound{ints }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,2,3,4,5,6,7,8,9,10,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty4}
-\begin{paste}{IntegerProblemAnswerPage1Empty4}{IntegerProblemAnswerPage1Patch4}
-\pastebutton{IntegerProblemAnswerPage1Empty4}{\showpaste}
-\tab{5}\spadcommand{ints := [n for n in 1..]\bound{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch5}
-\begin{paste}{IntegerProblemAnswerPage1Full5}{IntegerProblemAnswerPage1Empty5}
-\pastebutton{IntegerProblemAnswerPage1Full5}{\hidepaste}
-\tab{5}\spadcommand{primes := [x for x in ints | prime? x]\bound{primes }\free{ints }}
-\indentrel{3}\begin{verbatim}
-   (5)  [2,3,5,7,11,13,17,19,23,29,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty5}
-\begin{paste}{IntegerProblemAnswerPage1Empty5}{IntegerProblemAnswerPage1Patch5}
-\pastebutton{IntegerProblemAnswerPage1Empty5}{\showpaste}
-\tab{5}\spadcommand{primes := [x for x in ints | prime? x]\bound{primes }\free{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch6}
-\begin{paste}{IntegerProblemAnswerPage1Full6}{IntegerProblemAnswerPage1Empty6}
-\pastebutton{IntegerProblemAnswerPage1Full6}{\hidepaste}
-\tab{5}\spadcommand{primes.25\free{primes }}
-\indentrel{3}\begin{verbatim}
-   (6)  97
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty6}
-\begin{paste}{IntegerProblemAnswerPage1Empty6}{IntegerProblemAnswerPage1Patch6}
-\pastebutton{IntegerProblemAnswerPage1Empty6}{\showpaste}
-\tab{5}\spadcommand{primes.25\free{primes }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch7}
-\begin{paste}{IntegerProblemAnswerPage1Full7}{IntegerProblemAnswerPage1Empty7}
-\pastebutton{IntegerProblemAnswerPage1Full7}{\hidepaste}
-\tab{5}\spadcommand{numbers := [f(n) for n in primes]\bound{numbers }\free{primes f }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [3, 7, 31, 127, 2047, 8191, 131071, 524287, 8388607,
-    536870911, ...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty7}
-\begin{paste}{IntegerProblemAnswerPage1Empty7}{IntegerProblemAnswerPage1Patch7}
-\pastebutton{IntegerProblemAnswerPage1Empty7}{\showpaste}
-\tab{5}\spadcommand{numbers := [f(n) for n in primes]\bound{numbers }\free{primes f }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch8}
-\begin{paste}{IntegerProblemAnswerPage1Full8}{IntegerProblemAnswerPage1Empty8}
-\pastebutton{IntegerProblemAnswerPage1Full8}{\hidepaste}
-\tab{5}\spadcommand{factors := [factor n for n in numbers]\bound{factors }\free{numbers }}
-\indentrel{3}\begin{verbatim}
-   (8)
-   [3, 7, 31, 127, 23 89, 8191, 131071, 524287,
-    47 178481, 233 1103 2089, ...]
-                          Type: Stream Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty8}
-\begin{paste}{IntegerProblemAnswerPage1Empty8}{IntegerProblemAnswerPage1Patch8}
-\pastebutton{IntegerProblemAnswerPage1Empty8}{\showpaste}
-\tab{5}\spadcommand{factors := [factor n for n in numbers]\bound{factors }\free{numbers }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Patch9}
-\begin{paste}{IntegerProblemAnswerPage1Full9}{IntegerProblemAnswerPage1Empty9}
-\pastebutton{IntegerProblemAnswerPage1Full9}{\hidepaste}
-\tab{5}\spadcommand{nums := [x for x in numbers | not prime? x]\bound{nums }\free{numbers }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [2047, 8388607, 536870911, 137438953471,
-    2199023255551, 8796093022207, 140737488355327,
-    9007199254740991, 576460752303423487,
-    147573952589676412927, ...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage1Empty9}
-\begin{paste}{IntegerProblemAnswerPage1Empty9}{IntegerProblemAnswerPage1Patch9}
-\pastebutton{IntegerProblemAnswerPage1Empty9}{\showpaste}
-\tab{5}\spadcommand{nums := [x for x in numbers | not prime? x]\bound{nums }\free{numbers }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage2Patch1}
-\begin{paste}{IntegerProblemAnswerPage2Full1}{IntegerProblemAnswerPage2Empty1}
-\pastebutton{IntegerProblemAnswerPage2Full1}{\hidepaste}
-\tab{5}\spadcommand{numbers := [n**2 - n + 41 for n in 0..40]\bound{numbers }}
-\indentrel{3}\begin{verbatim}
-   (1)
-   [41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151,
-    173, 197, 223, 251, 281, 313, 347, 383, 421, 461,
-    503, 547, 593, 641, 691, 743, 797, 853, 911, 971,
-    1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage2Empty1}
-\begin{paste}{IntegerProblemAnswerPage2Empty1}{IntegerProblemAnswerPage2Patch1}
-\pastebutton{IntegerProblemAnswerPage2Empty1}{\showpaste}
-\tab{5}\spadcommand{numbers := [n**2 - n + 41 for n in 0..40]\bound{numbers }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage2Patch2}
-\begin{paste}{IntegerProblemAnswerPage2Full2}{IntegerProblemAnswerPage2Empty2}
-\pastebutton{IntegerProblemAnswerPage2Full2}{\hidepaste}
-\tab{5}\spadcommand{[factor n for n in numbers]\free{numbers }}
-\indentrel{3}\begin{verbatim}
-   (2)
-   [41, 41, 43, 47, 53, 61, 71, 83, 97, 113, 131, 151,
-    173, 197, 223, 251, 281, 313, 347, 383, 421, 461,
-    503, 547, 593, 641, 691, 743, 797, 853, 911, 971,
-    1033, 1097, 1163, 1231, 1301, 1373, 1447, 1523, 1601]
-                            Type: List Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerProblemAnswerPage2Empty2}
-\begin{paste}{IntegerProblemAnswerPage2Empty2}{IntegerProblemAnswerPage2Patch2}
-\pastebutton{IntegerProblemAnswerPage2Empty2}{\showpaste}
-\tab{5}\spadcommand{[factor n for n in numbers]\free{numbers }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePagePatch1}
-\begin{paste}{IntegerExamplePageFull1}{IntegerExamplePageEmpty1}
-\pastebutton{IntegerExamplePageFull1}{\hidepaste}
-\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePageEmpty1}
-\begin{paste}{IntegerExamplePageEmpty1}{IntegerExamplePagePatch1}
-\pastebutton{IntegerExamplePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f: NNI -> INT\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePagePatch2}
-\begin{paste}{IntegerExamplePageFull2}{IntegerExamplePageEmpty2}
-\pastebutton{IntegerExamplePageFull2}{\hidepaste}
-\tab{5}\spadcommand{f(n) == 2**(2**n) + 1\bound{f }\free{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePageEmpty2}
-\begin{paste}{IntegerExamplePageEmpty2}{IntegerExamplePagePatch2}
-\pastebutton{IntegerExamplePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f(n) == 2**(2**n) + 1\bound{f }\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePagePatch3}
-\begin{paste}{IntegerExamplePageFull3}{IntegerExamplePageEmpty3}
-\pastebutton{IntegerExamplePageFull3}{\hidepaste}
-\tab{5}\spadcommand{factor f(1)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  5
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePageEmpty3}
-\begin{paste}{IntegerExamplePageEmpty3}{IntegerExamplePagePatch3}
-\pastebutton{IntegerExamplePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{factor f(1)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePagePatch4}
-\begin{paste}{IntegerExamplePageFull4}{IntegerExamplePageEmpty4}
-\pastebutton{IntegerExamplePageFull4}{\hidepaste}
-\tab{5}\spadcommand{factor f(2)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (4)  17
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePageEmpty4}
-\begin{paste}{IntegerExamplePageEmpty4}{IntegerExamplePagePatch4}
-\pastebutton{IntegerExamplePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factor f(2)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePagePatch5}
-\begin{paste}{IntegerExamplePageFull5}{IntegerExamplePageEmpty5}
-\pastebutton{IntegerExamplePageFull5}{\hidepaste}
-\tab{5}\spadcommand{for n in 1..6 repeat output factor f(n)\free{f }}
-\indentrel{3}\begin{verbatim}
-   5
-   17
-   257
-   65537
-   641 6700417
-   274177 67280421310721
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerExamplePageEmpty5}
-\begin{paste}{IntegerExamplePageEmpty5}{IntegerExamplePagePatch5}
-\pastebutton{IntegerExamplePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{for n in 1..6 repeat output factor f(n)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch1}
-\begin{paste}{RationalNumberPageFull1}{RationalNumberPageEmpty1}
-\pastebutton{RationalNumberPageFull1}{\hidepaste}
-\tab{5}\spadcommand{61657 ** 10 / 999983 ** 12}
-\indentrel{3}\begin{verbatim}
-   (1)
-     794006207119672937688869745365148806136551203249
-  /
-    9997960190729191813417704955587887712239578440952258_
-     46167460930641229761
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty1}
-\begin{paste}{RationalNumberPageEmpty1}{RationalNumberPagePatch1}
-\pastebutton{RationalNumberPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{61657 ** 10 / 999983 ** 12}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch2}
-\begin{paste}{RationalNumberPageFull2}{RationalNumberPageEmpty2}
-\pastebutton{RationalNumberPageFull2}{\hidepaste}
-\tab{5}\spadcommand{x := 104348/33215\bound{x }}
-\indentrel{3}\begin{verbatim}
-        104348
-   (2)  ÄÄÄÄÄÄ
-         33215
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty2}
-\begin{paste}{RationalNumberPageEmpty2}{RationalNumberPagePatch2}
-\pastebutton{RationalNumberPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{x := 104348/33215\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch3}
-\begin{paste}{RationalNumberPageFull3}{RationalNumberPageEmpty3}
-\pastebutton{RationalNumberPageFull3}{\hidepaste}
-\tab{5}\spadcommand{numeric x\free{x }}
-\indentrel{3}\begin{verbatim}
-   (3)  3.1415926539 214210447
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty3}
-\begin{paste}{RationalNumberPageEmpty3}{RationalNumberPagePatch3}
-\pastebutton{RationalNumberPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{numeric x\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch4}
-\begin{paste}{RationalNumberPageFull4}{RationalNumberPageEmpty4}
-\pastebutton{RationalNumberPageFull4}{\hidepaste}
-\tab{5}\spadcommand{numer(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (4)  104348
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty4}
-\begin{paste}{RationalNumberPageEmpty4}{RationalNumberPagePatch4}
-\pastebutton{RationalNumberPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{numer(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch5}
-\begin{paste}{RationalNumberPageFull5}{RationalNumberPageEmpty5}
-\pastebutton{RationalNumberPageFull5}{\hidepaste}
-\tab{5}\spadcommand{denom(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (5)  33215
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty5}
-\begin{paste}{RationalNumberPageEmpty5}{RationalNumberPagePatch5}
-\pastebutton{RationalNumberPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{denom(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPagePatch6}
-\begin{paste}{RationalNumberPageFull6}{RationalNumberPageEmpty6}
-\pastebutton{RationalNumberPageFull6}{\hidepaste}
-\tab{5}\spadcommand{factor(numer x) / factor(denom x)\free{x }}
-\indentrel{3}\begin{verbatim}
-         2
-        2 19 1373
-   (6)  ÄÄÄÄÄÄÄÄÄ
-        5 7 13 73
-                        Type: Fraction Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RationalNumberPageEmpty6}
-\begin{paste}{RationalNumberPageEmpty6}{RationalNumberPagePatch6}
-\pastebutton{RationalNumberPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{factor(numer x) / factor(denom x)\free{x }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/oct.pht b/books/pages/oct.pht
deleted file mode 100644
index e29fb1b..0000000
--- a/books/pages/oct.pht
+++ /dev/null
@@ -1,333 +0,0 @@
-\begin{patch}{OctonionXmpPagePatch1}
-\begin{paste}{OctonionXmpPageFull1}{OctonionXmpPageEmpty1}
-\pastebutton{OctonionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{oci1 := octon(1,2,3,4,5,6,7,8)\bound{oci1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  1 + 2i + 3j + 4k + 5E + 6I + 7J + 8K
-                                 Type: Octonion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty1}
-\begin{paste}{OctonionXmpPageEmpty1}{OctonionXmpPagePatch1}
-\pastebutton{OctonionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{oci1 := octon(1,2,3,4,5,6,7,8)\bound{oci1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch2}
-\begin{paste}{OctonionXmpPageFull2}{OctonionXmpPageEmpty2}
-\pastebutton{OctonionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{oci2 := octon(7,2,3,-4,5,6,-7,0)\bound{oci2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  7 + 2i + 3j - 4k + 5E + 6I - 7J
-                                 Type: Octonion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty2}
-\begin{paste}{OctonionXmpPageEmpty2}{OctonionXmpPagePatch2}
-\pastebutton{OctonionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{oci2 := octon(7,2,3,-4,5,6,-7,0)\bound{oci2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch3}
-\begin{paste}{OctonionXmpPageFull3}{OctonionXmpPageEmpty3}
-\pastebutton{OctonionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0))\bound{oci3 }}
-\indentrel{3}\begin{verbatim}
-   (3)  - 7 - 12i + 3j - 10k + 5E + 6I + 9J
-                                 Type: Octonion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty3}
-\begin{paste}{OctonionXmpPageEmpty3}{OctonionXmpPagePatch3}
-\pastebutton{OctonionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{oci3 := octon(quatern(-7,-12,3,-10), quatern(5,6,9,0))\bound{oci3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch4}
-\begin{paste}{OctonionXmpPageFull4}{OctonionXmpPageEmpty4}
-\pastebutton{OctonionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)\free{oci1 oci2 oci3 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-   2696i - 2928j - 4072k + 16E - 1192I + 832J + 2616K
-                                 Type: Octonion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty4}
-\begin{paste}{OctonionXmpPageEmpty4}{OctonionXmpPagePatch4}
-\pastebutton{OctonionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(oci1 * oci2) * oci3 - oci1 * (oci2 * oci3)\free{oci1 oci2 oci3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch5}
-\begin{paste}{OctonionXmpPageFull5}{OctonionXmpPageEmpty5}
-\pastebutton{OctonionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1]\free{oci1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1,2,3,4,5,6,7,8]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty5}
-\begin{paste}{OctonionXmpPageEmpty5}{OctonionXmpPagePatch5}
-\pastebutton{OctonionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[real oci1, imagi oci1, imagj oci1, imagk oci1, imagE oci1, imagI oci1, imagJ oci1, imagK oci1]\free{oci1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch6}
-\begin{paste}{OctonionXmpPageFull6}{OctonionXmpPageEmpty6}
-\pastebutton{OctonionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk)\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (6)  q1 + qi i + qj j + qk k
-                    Type: Quaternion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty6}
-\begin{paste}{OctonionXmpPageEmpty6}{OctonionXmpPagePatch6}
-\pastebutton{OctonionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q : Quaternion Polynomial Integer := quatern(q1, qi, qj, qk)\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch7}
-\begin{paste}{OctonionXmpPageFull7}{OctonionXmpPageEmpty7}
-\pastebutton{OctonionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0)\bound{E }}
-\indentrel{3}\begin{verbatim}
-   (7)  E
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty7}
-\begin{paste}{OctonionXmpPageEmpty7}{OctonionXmpPagePatch7}
-\pastebutton{OctonionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{E : Octonion Polynomial Integer:= octon(0,0,0,0,1,0,0,0)\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch8}
-\begin{paste}{OctonionXmpPageFull8}{OctonionXmpPageEmpty8}
-\pastebutton{OctonionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{q * E\free{q E }}
-\indentrel{3}\begin{verbatim}
-   (8)  q1 E + qi I + qj J + qk K
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty8}
-\begin{paste}{OctonionXmpPageEmpty8}{OctonionXmpPagePatch8}
-\pastebutton{OctonionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{q * E\free{q E }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch9}
-\begin{paste}{OctonionXmpPageFull9}{OctonionXmpPageEmpty9}
-\pastebutton{OctonionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{E * q\free{E q }}
-\indentrel{3}\begin{verbatim}
-   (9)  q1 E - qi I - qj J - qk K
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty9}
-\begin{paste}{OctonionXmpPageEmpty9}{OctonionXmpPagePatch9}
-\pastebutton{OctonionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{E * q\free{E q }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch10}
-\begin{paste}{OctonionXmpPageFull10}{OctonionXmpPageEmpty10}
-\pastebutton{OctonionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{q * 1$(Octonion Polynomial Integer)\free{q }}
-\indentrel{3}\begin{verbatim}
-   (10)  q1 + qi i + qj j + qk k
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty10}
-\begin{paste}{OctonionXmpPageEmpty10}{OctonionXmpPagePatch10}
-\pastebutton{OctonionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{q * 1$(Octonion Polynomial Integer)\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch11}
-\begin{paste}{OctonionXmpPageFull11}{OctonionXmpPageEmpty11}
-\pastebutton{OctonionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{1$(Octonion Polynomial Integer) * q\free{q }}
-\indentrel{3}\begin{verbatim}
-   (11)  q1 + qi i + qj j + qk k
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty11}
-\begin{paste}{OctonionXmpPageEmpty11}{OctonionXmpPagePatch11}
-\pastebutton{OctonionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{1$(Octonion Polynomial Integer) * q\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch12}
-\begin{paste}{OctonionXmpPageFull12}{OctonionXmpPageEmpty12}
-\pastebutton{OctonionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK)\bound{o }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   o1 + oi i + oj j + ok k + oE E + oI I + oJ J + oK K
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty12}
-\begin{paste}{OctonionXmpPageEmpty12}{OctonionXmpPagePatch12}
-\pastebutton{OctonionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{o : Octonion Polynomial Integer := octon(o1, oi, oj, ok, oE, oI, oJ, oK)\bound{o }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch13}
-\begin{paste}{OctonionXmpPageFull13}{OctonionXmpPageEmpty13}
-\pastebutton{OctonionXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{norm o\free{o }}
-\indentrel{3}\begin{verbatim}
-           2     2     2     2     2     2     2     2
-   (13)  ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty13}
-\begin{paste}{OctonionXmpPageEmpty13}{OctonionXmpPagePatch13}
-\pastebutton{OctonionXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{norm o\free{o }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch14}
-\begin{paste}{OctonionXmpPageFull14}{OctonionXmpPageEmpty14}
-\pastebutton{OctonionXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK)\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (14)
-   p1 + pi i + pj j + pk k + pE E + pI I + pJ J + pK K
-                      Type: Octonion Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty14}
-\begin{paste}{OctonionXmpPageEmpty14}{OctonionXmpPagePatch14}
-\pastebutton{OctonionXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{p : Octonion Polynomial Integer := octon(p1, pi, pj, pk, pE, pI, pJ, pK)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPagePatch15}
-\begin{paste}{OctonionXmpPageFull15}{OctonionXmpPageEmpty15}
-\pastebutton{OctonionXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{norm(o*p)-norm(p)*norm(p)\free{o p }}
-\indentrel{3}\begin{verbatim}
-   (15)
-         4
-     - pk
-   + 
-              2      2      2      2      2      2      2
-         - 2pj  - 2pi  - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1
-       + 
-           2     2     2     2     2     2     2     2
-         ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1
-    *
-         2
-       pk
-   + 
-         4
-     - pj
-   + 
-              2      2      2      2      2      2     2
-         - 2pi  - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1  + ok
-       + 
-           2     2     2     2     2     2     2
-         oj  + oi  + oK  + oJ  + oI  + oE  + o1
-    *
-         2
-       pj
-   + 
-         4
-     - pi
-   + 
-              2      2      2      2      2     2     2
-         - 2pK  - 2pJ  - 2pI  - 2pE  - 2p1  + ok  + oj
-       + 
-           2     2     2     2     2     2
-         oi  + oK  + oJ  + oI  + oE  + o1
-    *
-         2
-       pi
-   + 
-         4
-     - pK
-   + 
-              2      2      2      2     2     2     2
-         - 2pJ  - 2pI  - 2pE  - 2p1  + ok  + oj  + oi
-       + 
-           2     2     2     2     2
-         oK  + oJ  + oI  + oE  + o1
-    *
-         2
-       pK
-   + 
-         4
-     - pJ
-   + 
-              2      2      2     2     2     2     2
-         - 2pI  - 2pE  - 2p1  + ok  + oj  + oi  + oK
-       + 
-           2     2     2     2
-         oJ  + oI  + oE  + o1
-    *
-         2
-       pJ
-   + 
-         4
-     - pI
-   + 
-              2      2     2     2     2     2     2     2
-         - 2pE  - 2p1  + ok  + oj  + oi  + oK  + oJ  + oI
-       + 
-           2     2
-         oE  + o1
-    *
-         2
-       pI
-   + 
-         4
-     - pE
-   + 
-              2     2     2     2     2     2     2     2
-         - 2p1  + ok  + oj  + oi  + oK  + oJ  + oI  + oE
-       + 
-           2
-         o1
-    *
-         2
-       pE
-   + 
-         4
-     - p1
-   + 
-        2     2     2     2     2     2     2     2   2
-     (ok  + oj  + oi  + oK  + oJ  + oI  + oE  + o1 )p1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OctonionXmpPageEmpty15}
-\begin{paste}{OctonionXmpPageEmpty15}{OctonionXmpPagePatch15}
-\pastebutton{OctonionXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{norm(o*p)-norm(p)*norm(p)\free{o p }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/odpol.pht b/books/pages/odpol.pht
deleted file mode 100644
index 2c37bab..0000000
--- a/books/pages/odpol.pht
+++ /dev/null
@@ -1,626 +0,0 @@
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch1}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull1}{OrderlyDifferentialPolynomialXmpPageEmpty1}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{dpol:= ODPOL(FRAC INT)\bound{dpol }}
-\indentrel{3}\begin{verbatim}
-   (1)  OrderlyDifferentialPolynomial Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty1}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty1}{OrderlyDifferentialPolynomialXmpPagePatch1}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{dpol:= ODPOL(FRAC INT)\bound{dpol }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch2}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull2}{OrderlyDifferentialPolynomialXmpPageEmpty2}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{w := makeVariable('w)$dpol\free{dpol }\bound{w }}
-\indentrel{3}\begin{verbatim}
-   (2)  theMap(DPOLCAT-;makeVariable;AM;17!0,62)
-Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty2}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty2}{OrderlyDifferentialPolynomialXmpPagePatch2}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{w := makeVariable('w)$dpol\free{dpol }\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch3}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull3}{OrderlyDifferentialPolynomialXmpPageEmpty3}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{z := makeVariable('z)$dpol\free{dpol }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (3)  theMap(DPOLCAT-;makeVariable;AM;17!0,187)
-Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty3}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty3}{OrderlyDifferentialPolynomialXmpPagePatch3}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{z := makeVariable('z)$dpol\free{dpol }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch4}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull4}{OrderlyDifferentialPolynomialXmpPageEmpty4}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{w.5\free{w }}
-\indentrel{3}\begin{verbatim}
-   (4)  w
-         5
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty4}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty4}{OrderlyDifferentialPolynomialXmpPagePatch4}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{w.5\free{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch5}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull5}{OrderlyDifferentialPolynomialXmpPageEmpty5}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{w 0\free{w }}
-\indentrel{3}\begin{verbatim}
-   (5)  w
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty5}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty5}{OrderlyDifferentialPolynomialXmpPagePatch5}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{w 0\free{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch6}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull6}{OrderlyDifferentialPolynomialXmpPageEmpty6}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[z.i for i in 1..5]\free{z }}
-\indentrel{3}\begin{verbatim}
-   (6)  [z ,z ,z ,z ,z ]
-          1  2  3  4  5
-Type: List OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty6}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty6}{OrderlyDifferentialPolynomialXmpPagePatch6}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[z.i for i in 1..5]\free{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch7}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull7}{OrderlyDifferentialPolynomialXmpPageEmpty7}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{f:= w.4 - w.1 * w.1 * z.3\free{w }\free{z }\bound{f }}
-\indentrel{3}\begin{verbatim}
-               2
-   (7)  w  - w  z
-         4    1  3
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty7}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty7}{OrderlyDifferentialPolynomialXmpPagePatch7}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f:= w.4 - w.1 * w.1 * z.3\free{w }\free{z }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch8}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull8}{OrderlyDifferentialPolynomialXmpPageEmpty8}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{g:=(z.1)**3 * (z.2)**2 - w.2\free{z }\free{w }\bound{g }}
-\indentrel{3}\begin{verbatim}
-          3  2
-   (8)  z  z   - w
-         1  2     2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty8}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty8}{OrderlyDifferentialPolynomialXmpPagePatch8}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g:=(z.1)**3 * (z.2)**2 - w.2\free{z }\free{w }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch9}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull9}{OrderlyDifferentialPolynomialXmpPageEmpty9}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{D(f)\free{f }}
-\indentrel{3}\begin{verbatim}
-               2
-   (9)  w  - w  z  - 2w w z
-         5    1  4     1 2 3
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty9}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty9}{OrderlyDifferentialPolynomialXmpPagePatch9}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{D(f)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch10}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull10}{OrderlyDifferentialPolynomialXmpPageEmpty10}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{D(f,4)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (10)
-            2                               2
-     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
-      8    1  7     1 2 6         1 3      2   5     1 3 5
-   + 
-                                         2
-     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
-          1 4      2 3  4     2 3 4     3  3
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty10}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty10}{OrderlyDifferentialPolynomialXmpPagePatch10}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{D(f,4)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch11}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull11}{OrderlyDifferentialPolynomialXmpPageEmpty11}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{df:=makeVariable(f)$dpol\free{f }\bound{df }}
-\indentrel{3}\begin{verbatim}
-   (11)  theMap(DPOLCAT-;makeVariable;AM;17!0,488)
-Type: (NonNegativeInteger -> OrderlyDifferentialPolynomial Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty11}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty11}{OrderlyDifferentialPolynomialXmpPagePatch11}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{df:=makeVariable(f)$dpol\free{f }\bound{df }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch12}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull12}{OrderlyDifferentialPolynomialXmpPageEmpty12}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{df.4\free{df }}
-\indentrel{3}\begin{verbatim}
-   (12)
-            2                               2
-     w  - w  z  - 8w w z  + (- 12w w  - 12w  )z  - 2w z w
-      8    1  7     1 2 6         1 3      2   5     1 3 5
-   + 
-                                         2
-     (- 8w w  - 24w w )z  - 8w z w  - 6w  z
-          1 4      2 3  4     2 3 4     3  3
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty12}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty12}{OrderlyDifferentialPolynomialXmpPagePatch12}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{df.4\free{df }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch13}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull13}{OrderlyDifferentialPolynomialXmpPageEmpty13}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{order(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (13)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty13}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty13}{OrderlyDifferentialPolynomialXmpPagePatch13}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{order(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch14}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull14}{OrderlyDifferentialPolynomialXmpPageEmpty14}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{order(g, 'w)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (14)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty14}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty14}{OrderlyDifferentialPolynomialXmpPagePatch14}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{order(g, 'w)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch15}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull15}{OrderlyDifferentialPolynomialXmpPageEmpty15}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{differentialVariables(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (15)  [z,w]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty15}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty15}{OrderlyDifferentialPolynomialXmpPagePatch15}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{differentialVariables(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch16}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull16}{OrderlyDifferentialPolynomialXmpPageEmpty16}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{degree(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-           2  3
-   (16)  z  z
-          2  1
-Type: IndexedExponents OrderlyDifferentialVariable Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty16}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty16}{OrderlyDifferentialPolynomialXmpPagePatch16}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{degree(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch17}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull17}{OrderlyDifferentialPolynomialXmpPageEmpty17}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{degree(g, 'w)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (17)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty17}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty17}{OrderlyDifferentialPolynomialXmpPagePatch17}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{degree(g, 'w)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch18}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull18}{OrderlyDifferentialPolynomialXmpPageEmpty18}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{weights(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (18)  [7,2]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty18}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty18}{OrderlyDifferentialPolynomialXmpPagePatch18}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{weights(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch19}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull19}{OrderlyDifferentialPolynomialXmpPageEmpty19}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{weights(g,'w)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (19)  [2]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty19}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty19}{OrderlyDifferentialPolynomialXmpPagePatch19}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{weights(g,'w)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch20}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull20}{OrderlyDifferentialPolynomialXmpPageEmpty20}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{weight(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (20)  7
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty20}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty20}{OrderlyDifferentialPolynomialXmpPagePatch20}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{weight(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch21}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull21}{OrderlyDifferentialPolynomialXmpPageEmpty21}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{isobaric?(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (21)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty21}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty21}{OrderlyDifferentialPolynomialXmpPagePatch21}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{isobaric?(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch22}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull22}{OrderlyDifferentialPolynomialXmpPageEmpty22}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{eval(g,['w::Symbol],[f])\free{f }\free{g }}
-\indentrel{3}\begin{verbatim}
-   (22)
-            2                           2        3  2
-   - w  + w  z  + 4w w z  + (2w w  + 2w  )z  + z  z
-      6    1  5     1 2 4      1 3     2   3    1  2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty22}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty22}{OrderlyDifferentialPolynomialXmpPagePatch22}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{eval(g,['w::Symbol],[f])\free{f }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch23}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull23}{OrderlyDifferentialPolynomialXmpPageEmpty23}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{eval(g,variables(w.0),[f])\free{f }\free{g }}
-\indentrel{3}\begin{verbatim}
-           3  2
-   (23)  z  z   - w
-          1  2     2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty23}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty23}{OrderlyDifferentialPolynomialXmpPagePatch23}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{eval(g,variables(w.0),[f])\free{f }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch24}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull24}{OrderlyDifferentialPolynomialXmpPageEmpty24}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{monomials(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-            3  2
-   (24)  [z  z  ,- w ]
-           1  2     2
-Type: List OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty24}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty24}{OrderlyDifferentialPolynomialXmpPagePatch24}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{monomials(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch25}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull25}{OrderlyDifferentialPolynomialXmpPageEmpty25}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{variables(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (25)  [z ,w ,z ]
-           2  2  1
-          Type: List OrderlyDifferentialVariable Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty25}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty25}{OrderlyDifferentialPolynomialXmpPagePatch25}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{variables(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch26}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull26}{OrderlyDifferentialPolynomialXmpPageEmpty26}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{gcd(f,g)\free{f }\free{g }}
-\indentrel{3}\begin{verbatim}
-   (26)  1
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty26}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty26}{OrderlyDifferentialPolynomialXmpPagePatch26}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{gcd(f,g)\free{f }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch27}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull27}{OrderlyDifferentialPolynomialXmpPageEmpty27}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{groebner([f,g])\free{f }\free{g }}
-\indentrel{3}\begin{verbatim}
-                 2     3  2
-   (27)  [w  - w  z ,z  z   - w ]
-           4    1  3  1  2     2
-Type: List OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty27}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty27}{OrderlyDifferentialPolynomialXmpPagePatch27}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{groebner([f,g])\free{f }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch28}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull28}{OrderlyDifferentialPolynomialXmpPageEmpty28}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{lg:=leader(g)\free{g }\bound{lg }}
-\indentrel{3}\begin{verbatim}
-   (28)  z
-          2
-               Type: OrderlyDifferentialVariable Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty28}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty28}{OrderlyDifferentialPolynomialXmpPagePatch28}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{lg:=leader(g)\free{g }\bound{lg }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch29}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull29}{OrderlyDifferentialPolynomialXmpPageEmpty29}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{sg:=separant(g)\free{g }\bound{sg }}
-\indentrel{3}\begin{verbatim}
-            3
-   (29)  2z  z
-           1  2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty29}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty29}{OrderlyDifferentialPolynomialXmpPagePatch29}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{sg:=separant(g)\free{g }\bound{sg }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch30}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull30}{OrderlyDifferentialPolynomialXmpPageEmpty30}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{ig:=initial(g)\free{g }\bound{ig }}
-\indentrel{3}\begin{verbatim}
-           3
-   (30)  z
-          1
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty30}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty30}{OrderlyDifferentialPolynomialXmpPagePatch30}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{ig:=initial(g)\free{g }\bound{ig }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch31}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull31}{OrderlyDifferentialPolynomialXmpPageEmpty31}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{g1 := D g\free{g }\bound{g1 }}
-\indentrel{3}\begin{verbatim}
-            3               2  3
-   (31)  2z  z z  - w  + 3z  z
-           1  2 3    3     1  2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty31}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty31}{OrderlyDifferentialPolynomialXmpPagePatch31}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{g1 := D g\free{g }\bound{g1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch32}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull32}{OrderlyDifferentialPolynomialXmpPageEmpty32}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{lg1:= leader g1\free{g1 }\bound{lg1 }}
-\indentrel{3}\begin{verbatim}
-   (32)  z
-          3
-               Type: OrderlyDifferentialVariable Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty32}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty32}{OrderlyDifferentialPolynomialXmpPagePatch32}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{lg1:= leader g1\free{g1 }\bound{lg1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch33}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull33}{OrderlyDifferentialPolynomialXmpPageEmpty33}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{pdf:=D(f, lg1)\free{f }\free{lg1 }\bound{pdf }}
-\indentrel{3}\begin{verbatim}
-             2
-   (33)  - w
-            1
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty33}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty33}{OrderlyDifferentialPolynomialXmpPagePatch33}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{pdf:=D(f, lg1)\free{f }\free{lg1 }\bound{pdf }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch34}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull34}{OrderlyDifferentialPolynomialXmpPageEmpty34}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{prf:=sg * f- pdf * g1\free{f }\free{sg }\free{pdf }\free{g1 }\bound{prf }}
-\indentrel{3}\begin{verbatim}
-            3         2        2  2  3
-   (34)  2z  z w  - w  w  + 3w  z  z
-           1  2 4    1  3     1  1  2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty34}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty34}{OrderlyDifferentialPolynomialXmpPagePatch34}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{prf:=sg * f- pdf * g1\free{f }\free{sg }\free{pdf }\free{g1 }\bound{prf }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch35}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull35}{OrderlyDifferentialPolynomialXmpPageEmpty35}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{lcf:=leadingCoefficient univariate(prf, lg)\free{prf }\free{lg }\bound{lcf }}
-\indentrel{3}\begin{verbatim}
-            2  2
-   (35)  3w  z
-           1  1
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty35}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty35}{OrderlyDifferentialPolynomialXmpPagePatch35}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{lcf:=leadingCoefficient univariate(prf, lg)\free{prf }\free{lg }\bound{lcf }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPagePatch36}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageFull36}{OrderlyDifferentialPolynomialXmpPageEmpty36}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{ig * prf - lcf * g * lg\free{ig }\free{prf }\free{lcf }\free{g }\free{lg }}
-\indentrel{3}\begin{verbatim}
-            6         2  3        2  2
-   (36)  2z  z w  - w  z  w  + 3w  z  w z
-           1  2 4    1  1  3     1  1  2 2
-   Type: OrderlyDifferentialPolynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderlyDifferentialPolynomialXmpPageEmpty36}
-\begin{paste}{OrderlyDifferentialPolynomialXmpPageEmpty36}{OrderlyDifferentialPolynomialXmpPagePatch36}
-\pastebutton{OrderlyDifferentialPolynomialXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{ig * prf - lcf * g * lg\free{ig }\free{prf }\free{lcf }\free{g }\free{lg }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/op.pht b/books/pages/op.pht
deleted file mode 100644
index 4b55386..0000000
--- a/books/pages/op.pht
+++ /dev/null
@@ -1,373 +0,0 @@
-\begin{patch}{OperatorXmpPagePatch1}
-\begin{paste}{OperatorXmpPageFull1}{OperatorXmpPageEmpty1}
-\pastebutton{OperatorXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := SQMATRIX(2, INT)\bound{r }}
-\indentrel{3}\begin{verbatim}
-   (1)  SquareMatrix(2,Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty1}
-\begin{paste}{OperatorXmpPageEmpty1}{OperatorXmpPagePatch1}
-\pastebutton{OperatorXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := SQMATRIX(2, INT)\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch2}
-\begin{paste}{OperatorXmpPageFull2}{OperatorXmpPageEmpty2}
-\pastebutton{OperatorXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t := operator("tilde") :: OP(R)\free{r }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (2)  tilde
-                 Type: Operator SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty2}
-\begin{paste}{OperatorXmpPageEmpty2}{OperatorXmpPagePatch2}
-\pastebutton{OperatorXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t := operator("tilde") :: OP(R)\free{r }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch3}
-\begin{paste}{OperatorXmpPageFull3}{OperatorXmpPageEmpty3}
-\pastebutton{OperatorXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{)set expose add constructor Operator\free{t }\bound{expose }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty3}
-\begin{paste}{OperatorXmpPageEmpty3}{OperatorXmpPagePatch3}
-\pastebutton{OperatorXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{)set expose add constructor Operator\free{t }\bound{expose }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch4}
-\begin{paste}{OperatorXmpPageFull4}{OperatorXmpPageEmpty4}
-\pastebutton{OperatorXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{evaluate(t, m +-> transpose m)\free{expose }\free{t }\bound{evt }}
-\indentrel{3}\begin{verbatim}
-   (3)  tilde
-                 Type: Operator SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty4}
-\begin{paste}{OperatorXmpPageEmpty4}{OperatorXmpPagePatch4}
-\pastebutton{OperatorXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{evaluate(t, m +-> transpose m)\free{expose }\free{t }\bound{evt }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch5}
-\begin{paste}{OperatorXmpPageFull5}{OperatorXmpPageEmpty5}
-\pastebutton{OperatorXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{s : R := matrix [[0, 1], [1, 0]]\bound{s }}
-\indentrel{3}\begin{verbatim}
-        Ú0  1¿
-   (4)  ³    ³
-        À1  0Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty5}
-\begin{paste}{OperatorXmpPageEmpty5}{OperatorXmpPagePatch5}
-\pastebutton{OperatorXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{s : R := matrix [[0, 1], [1, 0]]\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch6}
-\begin{paste}{OperatorXmpPageFull6}{OperatorXmpPageEmpty6}
-\pastebutton{OperatorXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{rho := t * s\free{evt s }\bound{rho }}
-\indentrel{3}\begin{verbatim}
-             Ú0  1¿
-   (5)  tilde³    ³
-             À1  0Ù
-                 Type: Operator SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty6}
-\begin{paste}{OperatorXmpPageEmpty6}{OperatorXmpPagePatch6}
-\pastebutton{OperatorXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{rho := t * s\free{evt s }\bound{rho }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch7}
-\begin{paste}{OperatorXmpPageFull7}{OperatorXmpPageEmpty7}
-\pastebutton{OperatorXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{z := rho**4 - 1\free{rho }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (6)
-              Ú0  1¿     Ú0  1¿     Ú0  1¿     Ú0  1¿
-   - 1 + tilde³    ³tilde³    ³tilde³    ³tilde³    ³
-              À1  0Ù     À1  0Ù     À1  0Ù     À1  0Ù
-                 Type: Operator SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty7}
-\begin{paste}{OperatorXmpPageEmpty7}{OperatorXmpPagePatch7}
-\pastebutton{OperatorXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{z := rho**4 - 1\free{rho }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch8}
-\begin{paste}{OperatorXmpPageFull8}{OperatorXmpPageEmpty8}
-\pastebutton{OperatorXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{m:R := matrix [[1, 2], [3, 4]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (7)  ³    ³
-        À3  4Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty8}
-\begin{paste}{OperatorXmpPageEmpty8}{OperatorXmpPagePatch8}
-\pastebutton{OperatorXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{m:R := matrix [[1, 2], [3, 4]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch9}
-\begin{paste}{OperatorXmpPageFull9}{OperatorXmpPageEmpty9}
-\pastebutton{OperatorXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{z m\free{z m }}
-\indentrel{3}\begin{verbatim}
-        Ú0  0¿
-   (8)  ³    ³
-        À0  0Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty9}
-\begin{paste}{OperatorXmpPageEmpty9}{OperatorXmpPagePatch9}
-\pastebutton{OperatorXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{z m\free{z m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch10}
-\begin{paste}{OperatorXmpPageFull10}{OperatorXmpPageEmpty10}
-\pastebutton{OperatorXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{rho m\free{rho m }}
-\indentrel{3}\begin{verbatim}
-        Ú3  1¿
-   (9)  ³    ³
-        À4  2Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty10}
-\begin{paste}{OperatorXmpPageEmpty10}{OperatorXmpPagePatch10}
-\pastebutton{OperatorXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{rho m\free{rho m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch11}
-\begin{paste}{OperatorXmpPageFull11}{OperatorXmpPageEmpty11}
-\pastebutton{OperatorXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{rho rho m\free{rho m }}
-\indentrel{3}\begin{verbatim}
-         Ú4  3¿
-   (10)  ³    ³
-         À2  1Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty11}
-\begin{paste}{OperatorXmpPageEmpty11}{OperatorXmpPagePatch11}
-\pastebutton{OperatorXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{rho rho m\free{rho m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch12}
-\begin{paste}{OperatorXmpPageFull12}{OperatorXmpPageEmpty12}
-\pastebutton{OperatorXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{(rho**3) m\free{rho m }}
-\indentrel{3}\begin{verbatim}
-         Ú2  4¿
-   (11)  ³    ³
-         À1  3Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty12}
-\begin{paste}{OperatorXmpPageEmpty12}{OperatorXmpPagePatch12}
-\pastebutton{OperatorXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{(rho**3) m\free{rho m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch13}
-\begin{paste}{OperatorXmpPageFull13}{OperatorXmpPageEmpty13}
-\pastebutton{OperatorXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{b := t * s - s * t\free{s evt }\bound{b }}
-\indentrel{3}\begin{verbatim}
-           Ú0  1¿             Ú0  1¿
-   (12)  - ³    ³tilde + tilde³    ³
-           À1  0Ù             À1  0Ù
-                 Type: Operator SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty13}
-\begin{paste}{OperatorXmpPageEmpty13}{OperatorXmpPagePatch13}
-\pastebutton{OperatorXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{b := t * s - s * t\free{s evt }\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch14}
-\begin{paste}{OperatorXmpPageFull14}{OperatorXmpPageEmpty14}
-\pastebutton{OperatorXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{b m\free{b m }}
-\indentrel{3}\begin{verbatim}
-         Ú1  - 3¿
-   (13)  ³      ³
-         À3  - 1Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty14}
-\begin{paste}{OperatorXmpPageEmpty14}{OperatorXmpPagePatch14}
-\pastebutton{OperatorXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{b m\free{b m }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch15}
-\begin{paste}{OperatorXmpPageFull15}{OperatorXmpPageEmpty15}
-\pastebutton{OperatorXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{L n ==
-  n = 0 => 1
-  n = 1 => x
-  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
-\bound{l }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty15}
-\begin{paste}{OperatorXmpPageEmpty15}{OperatorXmpPagePatch15}
-\pastebutton{OperatorXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{L n ==
-  n = 0 => 1
-  n = 1 => x
-  (2*n-1)/n * x * L(n-1) - (n-1)/n * L(n-2)
-\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch16}
-\begin{paste}{OperatorXmpPageFull16}{OperatorXmpPageEmpty16}
-\pastebutton{OperatorXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{dx := operator("D") :: OP(POLY FRAC INT)\bound{dx }}
-\indentrel{3}\begin{verbatim}
-   (15)  D
-             Type: Operator Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty16}
-\begin{paste}{OperatorXmpPageEmpty16}{OperatorXmpPagePatch16}
-\pastebutton{OperatorXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{dx := operator("D") :: OP(POLY FRAC INT)\bound{dx }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch17}
-\begin{paste}{OperatorXmpPageFull17}{OperatorXmpPageEmpty17}
-\pastebutton{OperatorXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{evaluate(dx, p +-> D(p, 'x))\free{dx }\bound{edx }}
-\indentrel{3}\begin{verbatim}
-   (16)  D
-             Type: Operator Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty17}
-\begin{paste}{OperatorXmpPageEmpty17}{OperatorXmpPagePatch17}
-\pastebutton{OperatorXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{evaluate(dx, p +-> D(p, 'x))\free{dx }\bound{edx }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch18}
-\begin{paste}{OperatorXmpPageFull18}{OperatorXmpPageEmpty18}
-\pastebutton{OperatorXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1)\free{edx }\bound{E }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty18}
-\begin{paste}{OperatorXmpPageEmpty18}{OperatorXmpPagePatch18}
-\pastebutton{OperatorXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{E n == (1 - x**2) * dx**2 - 2 * x * dx + n*(n+1)\free{edx }\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch19}
-\begin{paste}{OperatorXmpPageFull19}{OperatorXmpPageEmpty19}
-\pastebutton{OperatorXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{L 15\free{L }}
-\indentrel{3}\begin{verbatim}
-   (18)
-     9694845  15   35102025  13   50702925  11
-     ÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄÄ x
-       2048          2048           2048
-   + 
-       37182145  9   14549535  7   2909907  5   255255  3
-     - ÄÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x  - ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
-         2048          2048          2048        2048
-   + 
-       6435
-     - ÄÄÄÄ x
-       2048
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty19}
-\begin{paste}{OperatorXmpPageEmpty19}{OperatorXmpPagePatch19}
-\pastebutton{OperatorXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{L 15\free{L }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch20}
-\begin{paste}{OperatorXmpPageFull20}{OperatorXmpPageEmpty20}
-\pastebutton{OperatorXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{E 15\free{E }}
-\indentrel{3}\begin{verbatim}
-                        2      2
-   (19)  240 - 2x D - (x  - 1)D
-             Type: Operator Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty20}
-\begin{paste}{OperatorXmpPageEmpty20}{OperatorXmpPagePatch20}
-\pastebutton{OperatorXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{E 15\free{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPagePatch21}
-\begin{paste}{OperatorXmpPageFull21}{OperatorXmpPageEmpty21}
-\pastebutton{OperatorXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{(E 15)(L 15)\free{L E }}
-\indentrel{3}\begin{verbatim}
-   (20)  0
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OperatorXmpPageEmpty21}
-\begin{paste}{OperatorXmpPageEmpty21}{OperatorXmpPagePatch21}
-\pastebutton{OperatorXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{(E 15)(L 15)\free{L E }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ovar.pht b/books/pages/ovar.pht
deleted file mode 100644
index fee0ca6..0000000
--- a/books/pages/ovar.pht
+++ /dev/null
@@ -1,80 +0,0 @@
-\begin{patch}{OrderedVariableListXmpPagePatch1}
-\begin{paste}{OrderedVariableListXmpPageFull1}{OrderedVariableListXmpPageEmpty1}
-\pastebutton{OrderedVariableListXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ls:List Symbol:=['x,'a,'z]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (1)  [x,a,z]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPageEmpty1}
-\begin{paste}{OrderedVariableListXmpPageEmpty1}{OrderedVariableListXmpPagePatch1}
-\pastebutton{OrderedVariableListXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ls:List Symbol:=['x,'a,'z]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPagePatch2}
-\begin{paste}{OrderedVariableListXmpPageFull2}{OrderedVariableListXmpPageEmpty2}
-\pastebutton{OrderedVariableListXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Z:=OVAR ls\bound{Z }\free{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  OrderedVariableList [x,a,z]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPageEmpty2}
-\begin{paste}{OrderedVariableListXmpPageEmpty2}{OrderedVariableListXmpPagePatch2}
-\pastebutton{OrderedVariableListXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Z:=OVAR ls\bound{Z }\free{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPagePatch3}
-\begin{paste}{OrderedVariableListXmpPageFull3}{OrderedVariableListXmpPageEmpty3}
-\pastebutton{OrderedVariableListXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{size()$Z\free{Z }}
-\indentrel{3}\begin{verbatim}
-   (3)  3
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPageEmpty3}
-\begin{paste}{OrderedVariableListXmpPageEmpty3}{OrderedVariableListXmpPagePatch3}
-\pastebutton{OrderedVariableListXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{size()$Z\free{Z }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPagePatch4}
-\begin{paste}{OrderedVariableListXmpPageFull4}{OrderedVariableListXmpPageEmpty4}
-\pastebutton{OrderedVariableListXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{lv:=[index(i::PI)$Z for i in 1..size()$Z]\bound{lv }\free{Z }}
-\indentrel{3}\begin{verbatim}
-   (4)  [x,a,z]
-                 Type: List OrderedVariableList [x,a,z]
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPageEmpty4}
-\begin{paste}{OrderedVariableListXmpPageEmpty4}{OrderedVariableListXmpPagePatch4}
-\pastebutton{OrderedVariableListXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{lv:=[index(i::PI)$Z for i in 1..size()$Z]\bound{lv }\free{Z }}
-\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPagePatch5}
-\begin{paste}{OrderedVariableListXmpPageFull5}{OrderedVariableListXmpPageEmpty5}
-\pastebutton{OrderedVariableListXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{sorted?(>,lv)\free{lv }}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{OrderedVariableListXmpPageEmpty5}
-\begin{paste}{OrderedVariableListXmpPageEmpty5}{OrderedVariableListXmpPagePatch5}
-\pastebutton{OrderedVariableListXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sorted?(>,lv)\free{lv }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/perman.pht b/books/pages/perman.pht
deleted file mode 100644
index 684dd7f..0000000
--- a/books/pages/perman.pht
+++ /dev/null
@@ -1,59 +0,0 @@
-\begin{patch}{PermanentXmpPagePatch1}
-\begin{paste}{PermanentXmpPageFull1}{PermanentXmpPageEmpty1}
-\pastebutton{PermanentXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{kn n ==
-  r : MATRIX INT := new(n,n,1)
-  for i in 1..n repeat
-    r.i.i := 0
-  r
-\bound{kn }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PermanentXmpPageEmpty1}
-\begin{paste}{PermanentXmpPageEmpty1}{PermanentXmpPagePatch1}
-\pastebutton{PermanentXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{kn n ==
-  r : MATRIX INT := new(n,n,1)
-  for i in 1..n repeat
-    r.i.i := 0
-  r
-\bound{kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{PermanentXmpPagePatch2}
-\begin{paste}{PermanentXmpPageFull2}{PermanentXmpPageEmpty2}
-\pastebutton{PermanentXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{permanent(kn(5) :: SQMATRIX(5,INT))\free{kn }}
-\indentrel{3}\begin{verbatim}
-   (2)  44
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PermanentXmpPageEmpty2}
-\begin{paste}{PermanentXmpPageEmpty2}{PermanentXmpPagePatch2}
-\pastebutton{PermanentXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{permanent(kn(5) :: SQMATRIX(5,INT))\free{kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{PermanentXmpPagePatch3}
-\begin{paste}{PermanentXmpPageFull3}{PermanentXmpPageEmpty3}
-\pastebutton{PermanentXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13]\free{kn }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [0, 1, 2, 9, 44, 265, 1854, 14833, 133496, 1334961,
-    14684570, 176214841, 2290792932]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PermanentXmpPageEmpty3}
-\begin{paste}{PermanentXmpPageEmpty3}{PermanentXmpPagePatch3}
-\pastebutton{PermanentXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[permanent(kn(n) :: SQMATRIX(n,INT)) for n in 1..13]\free{kn }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/pfr.pht b/books/pages/pfr.pht
deleted file mode 100644
index 8933919..0000000
--- a/books/pages/pfr.pht
+++ /dev/null
@@ -1,204 +0,0 @@
-\begin{patch}{PartialFractionXmpPagePatch1}
-\begin{paste}{PartialFractionXmpPageFull1}{PartialFractionXmpPageEmpty1}
-\pastebutton{PartialFractionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{partialFraction(1,factorial 10)\bound{prev1 }}
-\indentrel{3}\begin{verbatim}
-        159   23   12   1
-   (1)  ÄÄÄ - ÄÄ - ÄÄ + Ä
-          8    4    2   7
-         2    3    5
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty1}
-\begin{paste}{PartialFractionXmpPageEmpty1}{PartialFractionXmpPagePatch1}
-\pastebutton{PartialFractionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{partialFraction(1,factorial 10)\bound{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch2}
-\begin{paste}{PartialFractionXmpPageFull2}{PartialFractionXmpPageEmpty2}
-\pastebutton{PartialFractionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := padicFraction(\%)\free{prev1 }\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (2)
-   1    1    1    1    1    1    2    1    2   2    2   1
-   Ä + ÄÄ + ÄÄ + ÄÄ + ÄÄ + ÄÄ - ÄÄ - ÄÄ - ÄÄ - Ä - ÄÄ + Ä
-   2    4    5    6    7    8    2    3    4   5    2   7
-       2    2    2    2    2    3    3    3        5
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty2}
-\begin{paste}{PartialFractionXmpPageEmpty2}{PartialFractionXmpPagePatch2}
-\pastebutton{PartialFractionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := padicFraction(\%)\free{prev1 }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch3}
-\begin{paste}{PartialFractionXmpPageFull3}{PartialFractionXmpPageEmpty3}
-\pastebutton{PartialFractionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{compactFraction(f)\free{f }}
-\indentrel{3}\begin{verbatim}
-        159   23   12   1
-   (3)  ÄÄÄ - ÄÄ - ÄÄ + Ä
-          8    4    2   7
-         2    3    5
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty3}
-\begin{paste}{PartialFractionXmpPageEmpty3}{PartialFractionXmpPagePatch3}
-\pastebutton{PartialFractionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{compactFraction(f)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch4}
-\begin{paste}{PartialFractionXmpPageFull4}{PartialFractionXmpPageEmpty4}
-\pastebutton{PartialFractionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{numberOfFractionalTerms(f)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (4)  12
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty4}
-\begin{paste}{PartialFractionXmpPageEmpty4}{PartialFractionXmpPagePatch4}
-\pastebutton{PartialFractionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{numberOfFractionalTerms(f)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch5}
-\begin{paste}{PartialFractionXmpPageFull5}{PartialFractionXmpPageEmpty5}
-\pastebutton{PartialFractionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{nthFractionalTerm(f,3)\free{f }}
-\indentrel{3}\begin{verbatim}
-         1
-   (5)  ÄÄ
-         5
-        2
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty5}
-\begin{paste}{PartialFractionXmpPageEmpty5}{PartialFractionXmpPagePatch5}
-\pastebutton{PartialFractionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{nthFractionalTerm(f,3)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch6}
-\begin{paste}{PartialFractionXmpPageFull6}{PartialFractionXmpPageEmpty6}
-\pastebutton{PartialFractionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{partialFraction(1,- 13 + 14 * \%i)\bound{prev2 }}
-\indentrel{3}\begin{verbatim}
-             1         4
-   (6)  - ÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄ
-          1 + 2%i   3 + 8%i
-                  Type: PartialFraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty6}
-\begin{paste}{PartialFractionXmpPageEmpty6}{PartialFractionXmpPagePatch6}
-\pastebutton{PartialFractionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{partialFraction(1,- 13 + 14 * \%i)\bound{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch7}
-\begin{paste}{PartialFractionXmpPageFull7}{PartialFractionXmpPageEmpty7}
-\pastebutton{PartialFractionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{prev2 }}
-\indentrel{3}\begin{verbatim}
-              %i
-   (7)  - ÄÄÄÄÄÄÄÄÄ
-          14 + 13%i
-                         Type: Fraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty7}
-\begin{paste}{PartialFractionXmpPageEmpty7}{PartialFractionXmpPagePatch7}
-\pastebutton{PartialFractionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{\% :: Fraction Complex Integer\free{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch8}
-\begin{paste}{PartialFractionXmpPageFull8}{PartialFractionXmpPageEmpty8}
-\pastebutton{PartialFractionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4])\bound{u }}
-\indentrel{3}\begin{verbatim}
-                      2       3       4
-   (8)  (x + 1)(x + 2) (x + 3) (x + 4)
-Type: Factored UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty8}
-\begin{paste}{PartialFractionXmpPageEmpty8}{PartialFractionXmpPagePatch8}
-\pastebutton{PartialFractionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{u : FR UP(x, FRAC INT) := reduce(*,[primeFactor(x+i,i) for i in 1..4])\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch9}
-\begin{paste}{PartialFractionXmpPageFull9}{PartialFractionXmpPageEmpty9}
-\pastebutton{PartialFractionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{partialFraction(1,u)\free{u }\bound{prev3 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-       1     1      7     17  2         139
-      ÄÄÄ    Ä x + ÄÄ   - ÄÄ x  - 12x - ÄÄÄ
-      648    4     16      8             8
-     ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-     x + 1          2                3
-             (x + 2)          (x + 3)
-   + 
-     607  3   10115  2   391     44179
-     ÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄ x + ÄÄÄÄÄ
-     324       432        4       324
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                         4
-                  (x + 4)
-Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty9}
-\begin{paste}{PartialFractionXmpPageEmpty9}{PartialFractionXmpPagePatch9}
-\pastebutton{PartialFractionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{partialFraction(1,u)\free{u }\bound{prev3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPagePatch10}
-\begin{paste}{PartialFractionXmpPageFull10}{PartialFractionXmpPageEmpty10}
-\pastebutton{PartialFractionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{padicFraction \%\free{prev3 }}
-\indentrel{3}\begin{verbatim}
-   (10)
-       1       1         1        17        3
-      ÄÄÄ      Ä        ÄÄ        ÄÄ        Ä
-      648      4        16         8        4
-     ÄÄÄÄÄ + ÄÄÄÄÄ - ÄÄÄÄÄÄÄÄ - ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
-     x + 1   x + 2          2   x + 3          2
-                     (x + 2)            (x + 3)
-   + 
-           1       607       403        13          1
-           Ä       ÄÄÄ       ÄÄÄ        ÄÄ         ÄÄ
-           2       324       432        36         12
-     - ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ + ÄÄÄÄÄÄÄÄ
-              3   x + 4          2          3          4
-       (x + 3)            (x + 4)    (x + 4)    (x + 4)
-Type: PartialFraction UnivariatePolynomial(x,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PartialFractionXmpPageEmpty10}
-\begin{paste}{PartialFractionXmpPageEmpty10}{PartialFractionXmpPagePatch10}
-\pastebutton{PartialFractionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{padicFraction \%\free{prev3 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/poly.pht b/books/pages/poly.pht
deleted file mode 100644
index 8a94c23..0000000
--- a/books/pages/poly.pht
+++ /dev/null
@@ -1,501 +0,0 @@
-\begin{patch}{PolynomialGCDPagePatch1}
-\begin{paste}{PolynomialGCDPageFull1}{PolynomialGCDPageEmpty1}
-\pastebutton{PolynomialGCDPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2\bound{p }}
-\indentrel{3}\begin{verbatim}
-          8     7     2
-   (1)  3x  + 2x  + 6x  + 7x + 2
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPageEmpty1}
-\begin{paste}{PolynomialGCDPageEmpty1}{PolynomialGCDPagePatch1}
-\pastebutton{PolynomialGCDPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := 3*x**8 + 2*x**7 + 6*x**2 + 7*x + 2\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPagePatch2}
-\begin{paste}{PolynomialGCDPageFull2}{PolynomialGCDPageEmpty2}
-\pastebutton{PolynomialGCDPageFull2}{\hidepaste}
-\tab{5}\spadcommand{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5\bound{q }}
-\indentrel{3}\begin{verbatim}
-          13     7     6
-   (2)  2x   + 9x  + 2x  + 10x + 5
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPageEmpty2}
-\begin{paste}{PolynomialGCDPageEmpty2}{PolynomialGCDPagePatch2}
-\pastebutton{PolynomialGCDPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{q := 2*x**13 + 9*x**7 + 2*x**6 + 10*x + 5\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPagePatch3}
-\begin{paste}{PolynomialGCDPageFull3}{PolynomialGCDPageEmpty3}
-\pastebutton{PolynomialGCDPageFull3}{\hidepaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-         7
-   (3)  x  + 2x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPageEmpty3}
-\begin{paste}{PolynomialGCDPageEmpty3}{PolynomialGCDPagePatch3}
-\pastebutton{PolynomialGCDPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPagePatch4}
-\begin{paste}{PolynomialGCDPageFull4}{PolynomialGCDPageEmpty4}
-\pastebutton{PolynomialGCDPageFull4}{\hidepaste}
-\tab{5}\spadcommand{resultant(p,q,x)\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (4)  0
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialGCDPageEmpty4}
-\begin{paste}{PolynomialGCDPageEmpty4}{PolynomialGCDPagePatch4}
-\pastebutton{PolynomialGCDPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{resultant(p,q,x)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch1}
-\begin{paste}{PolynomialSubstitutionPageFull1}{PolynomialSubstitutionPageEmpty1}
-\pastebutton{PolynomialSubstitutionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := x**2 + y**2\bound{p }}
-\indentrel{3}\begin{verbatim}
-         2    2
-   (1)  y  + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty1}
-\begin{paste}{PolynomialSubstitutionPageEmpty1}{PolynomialSubstitutionPagePatch1}
-\pastebutton{PolynomialSubstitutionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := x**2 + y**2\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch2}
-\begin{paste}{PolynomialSubstitutionPageFull2}{PolynomialSubstitutionPageEmpty2}
-\pastebutton{PolynomialSubstitutionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{eval(p,x=5)\free{p }}
-\indentrel{3}\begin{verbatim}
-         2
-   (2)  y  + 25
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty2}
-\begin{paste}{PolynomialSubstitutionPageEmpty2}{PolynomialSubstitutionPagePatch2}
-\pastebutton{PolynomialSubstitutionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eval(p,x=5)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch3}
-\begin{paste}{PolynomialSubstitutionPageFull3}{PolynomialSubstitutionPageEmpty3}
-\pastebutton{PolynomialSubstitutionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{eval(p,[x = a + b,y = c + d])\free{p }}
-\indentrel{3}\begin{verbatim}
-         2           2    2           2
-   (3)  d  + 2c d + c  + b  + 2a b + a
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty3}
-\begin{paste}{PolynomialSubstitutionPageEmpty3}{PolynomialSubstitutionPagePatch3}
-\pastebutton{PolynomialSubstitutionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{eval(p,[x = a + b,y = c + d])\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch4}
-\begin{paste}{PolynomialSubstitutionPageFull4}{PolynomialSubstitutionPageEmpty4}
-\pastebutton{PolynomialSubstitutionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{q := x**3 + 5*x - y**4\bound{q }}
-\indentrel{3}\begin{verbatim}
-           4    3
-   (4)  - y  + x  + 5x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty4}
-\begin{paste}{PolynomialSubstitutionPageEmpty4}{PolynomialSubstitutionPagePatch4}
-\pastebutton{PolynomialSubstitutionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{q := x**3 + 5*x - y**4\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch5}
-\begin{paste}{PolynomialSubstitutionPageFull5}{PolynomialSubstitutionPageEmpty5}
-\pastebutton{PolynomialSubstitutionPageFull5}{\hidepaste}
-\tab{5}\spadcommand{eval(q,[x=y,y=x])\free{q }}
-\indentrel{3}\begin{verbatim}
-         3         4
-   (5)  y  + 5y - x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty5}
-\begin{paste}{PolynomialSubstitutionPageEmpty5}{PolynomialSubstitutionPagePatch5}
-\pastebutton{PolynomialSubstitutionPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{eval(q,[x=y,y=x])\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch6}
-\begin{paste}{PolynomialSubstitutionPageFull6}{PolynomialSubstitutionPageEmpty6}
-\pastebutton{PolynomialSubstitutionPageFull6}{\hidepaste}
-\tab{5}\spadcommand{px := eval(p, y = sin(2.0))\bound{px }\free{p }}
-\indentrel{3}\begin{verbatim}
-         2
-   (6)  x  + 0.8268218104 3180595732
-                                 Type: Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty6}
-\begin{paste}{PolynomialSubstitutionPageEmpty6}{PolynomialSubstitutionPagePatch6}
-\pastebutton{PolynomialSubstitutionPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{px := eval(p, y = sin(2.0))\bound{px }\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPagePatch7}
-\begin{paste}{PolynomialSubstitutionPageFull7}{PolynomialSubstitutionPageEmpty7}
-\pastebutton{PolynomialSubstitutionPageFull7}{\hidepaste}
-\tab{5}\spadcommand{eval(px, x = cos(2.0))\free{px }}
-\indentrel{3}\begin{verbatim}
-   (7)  1.0
-                                 Type: Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialSubstitutionPageEmpty7}
-\begin{paste}{PolynomialSubstitutionPageEmpty7}{PolynomialSubstitutionPagePatch7}
-\pastebutton{PolynomialSubstitutionPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{eval(px, x = cos(2.0))\free{px }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch1}
-\begin{paste}{PolynomialBasicPageFull1}{PolynomialBasicPageEmpty1}
-\pastebutton{PolynomialBasicPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := a*x**2 + b*x*y + c*y**2\bound{p }}
-\indentrel{3}\begin{verbatim}
-           2              2
-   (1)  c y  + b x y + a x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty1}
-\begin{paste}{PolynomialBasicPageEmpty1}{PolynomialBasicPagePatch1}
-\pastebutton{PolynomialBasicPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := a*x**2 + b*x*y + c*y**2\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch2}
-\begin{paste}{PolynomialBasicPageFull2}{PolynomialBasicPageEmpty2}
-\pastebutton{PolynomialBasicPageFull2}{\hidepaste}
-\tab{5}\spadcommand{q := 13*x**2 + 3*z\bound{q }}
-\indentrel{3}\begin{verbatim}
-                2
-   (2)  3z + 13x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty2}
-\begin{paste}{PolynomialBasicPageEmpty2}{PolynomialBasicPagePatch2}
-\pastebutton{PolynomialBasicPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{q := 13*x**2 + 3*z\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch3}
-\begin{paste}{PolynomialBasicPageFull3}{PolynomialBasicPageEmpty3}
-\pastebutton{PolynomialBasicPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p + q\free{p q }}
-\indentrel{3}\begin{verbatim}
-                2                    2
-   (3)  3z + c y  + b x y + (a + 13)x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty3}
-\begin{paste}{PolynomialBasicPageEmpty3}{PolynomialBasicPagePatch3}
-\pastebutton{PolynomialBasicPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p + q\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch4}
-\begin{paste}{PolynomialBasicPageFull4}{PolynomialBasicPageEmpty4}
-\pastebutton{PolynomialBasicPageFull4}{\hidepaste}
-\tab{5}\spadcommand{p - 3*q\free{p q }}
-\indentrel{3}\begin{verbatim}
-                  2                    2
-   (4)  - 9z + c y  + b x y + (a - 39)x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty4}
-\begin{paste}{PolynomialBasicPageEmpty4}{PolynomialBasicPagePatch4}
-\pastebutton{PolynomialBasicPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p - 3*q\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch5}
-\begin{paste}{PolynomialBasicPageFull5}{PolynomialBasicPageEmpty5}
-\pastebutton{PolynomialBasicPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p**2 + p*q\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (5)
-          2                2      2 4           3
-     (3c y  + 3b x y + 3a x )z + c y  + 2b c x y
-   + 
-                  2  2 2               3      2        4
-   ((2a + 13)c + b )x y  + (2a + 13)b x y + (a  + 13a)x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty5}
-\begin{paste}{PolynomialBasicPageEmpty5}{PolynomialBasicPagePatch5}
-\pastebutton{PolynomialBasicPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p**2 + p*q\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch6}
-\begin{paste}{PolynomialBasicPageFull6}{PolynomialBasicPageEmpty6}
-\pastebutton{PolynomialBasicPageFull6}{\hidepaste}
-\tab{5}\spadcommand{r := (p + q)**2\bound{r }\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (6)
-       2        2                      2      2 4
-     9z  + (6c y  + 6b x y + (6a + 78)x )z + c y
-   + 
-             3                  2  2 2               3
-     2b c x y  + ((2a + 26)c + b )x y  + (2a + 26)b x y
-   + 
-       2              4
-     (a  + 26a + 169)x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty6}
-\begin{paste}{PolynomialBasicPageEmpty6}{PolynomialBasicPagePatch6}
-\pastebutton{PolynomialBasicPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{r := (p + q)**2\bound{r }\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch7}
-\begin{paste}{PolynomialBasicPageFull7}{PolynomialBasicPageEmpty7}
-\pastebutton{PolynomialBasicPageFull7}{\hidepaste}
-\tab{5}\spadcommand{setVariableOrder [a,b,c,x,y,z]\bound{vord }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty7}
-\begin{paste}{PolynomialBasicPageEmpty7}{PolynomialBasicPagePatch7}
-\pastebutton{PolynomialBasicPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{setVariableOrder [a,b,c,x,y,z]\bound{vord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch8}
-\begin{paste}{PolynomialBasicPageFull8}{PolynomialBasicPageEmpty8}
-\pastebutton{PolynomialBasicPageFull8}{\hidepaste}
-\tab{5}\spadcommand{p\free{p vord }}
-\indentrel{3}\begin{verbatim}
-         2             2
-   (8)  x a + y x b + y c
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty8}
-\begin{paste}{PolynomialBasicPageEmpty8}{PolynomialBasicPagePatch8}
-\pastebutton{PolynomialBasicPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p\free{p vord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch9}
-\begin{paste}{PolynomialBasicPageFull9}{PolynomialBasicPageEmpty9}
-\pastebutton{PolynomialBasicPageFull9}{\hidepaste}
-\tab{5}\spadcommand{q\free{q vord }}
-\indentrel{3}\begin{verbatim}
-           2
-   (9)  13x  + 3z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty9}
-\begin{paste}{PolynomialBasicPageEmpty9}{PolynomialBasicPagePatch9}
-\pastebutton{PolynomialBasicPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{q\free{q vord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch10}
-\begin{paste}{PolynomialBasicPageFull10}{PolynomialBasicPageEmpty10}
-\pastebutton{PolynomialBasicPageFull10}{\hidepaste}
-\tab{5}\spadcommand{r\free{r vord }}
-\indentrel{3}\begin{verbatim}
-   (10)
-      4 2        3      2 2       4       2      2 2 2
-     x a  + (2y x b + 2y x c + 26x  + 6z x )a + y x b
-   + 
-        3           3               4 2
-     (2y x c + 26y x  + 6z y x)b + y c
-   + 
-         2 2       2         4        2     2
-     (26y x  + 6z y )c + 169x  + 78z x  + 9z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty10}
-\begin{paste}{PolynomialBasicPageEmpty10}{PolynomialBasicPagePatch10}
-\pastebutton{PolynomialBasicPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{r\free{r vord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch11}
-\begin{paste}{PolynomialBasicPageFull11}{PolynomialBasicPageEmpty11}
-\pastebutton{PolynomialBasicPageFull11}{\hidepaste}
-\tab{5}\spadcommand{resetVariableOrder()\bound{rvord }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty11}
-\begin{paste}{PolynomialBasicPageEmpty11}{PolynomialBasicPagePatch11}
-\pastebutton{PolynomialBasicPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{resetVariableOrder()\bound{rvord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch12}
-\begin{paste}{PolynomialBasicPageFull12}{PolynomialBasicPageEmpty12}
-\pastebutton{PolynomialBasicPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p\free{p rvord }}
-\indentrel{3}\begin{verbatim}
-            2              2
-   (12)  c y  + b x y + a x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty12}
-\begin{paste}{PolynomialBasicPageEmpty12}{PolynomialBasicPagePatch12}
-\pastebutton{PolynomialBasicPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p\free{p rvord }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch13}
-\begin{paste}{PolynomialBasicPageFull13}{PolynomialBasicPageEmpty13}
-\pastebutton{PolynomialBasicPageFull13}{\hidepaste}
-\tab{5}\spadcommand{coefficient(q,x,2)\free{q }}
-\indentrel{3}\begin{verbatim}
-   (13)  13
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty13}
-\begin{paste}{PolynomialBasicPageEmpty13}{PolynomialBasicPagePatch13}
-\pastebutton{PolynomialBasicPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{coefficient(q,x,2)\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch14}
-\begin{paste}{PolynomialBasicPageFull14}{PolynomialBasicPageEmpty14}
-\pastebutton{PolynomialBasicPageFull14}{\hidepaste}
-\tab{5}\spadcommand{coefficient(r,x,3)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (14)  (2a + 26)b y
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty14}
-\begin{paste}{PolynomialBasicPageEmpty14}{PolynomialBasicPagePatch14}
-\pastebutton{PolynomialBasicPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{coefficient(r,x,3)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch15}
-\begin{paste}{PolynomialBasicPageFull15}{PolynomialBasicPageEmpty15}
-\pastebutton{PolynomialBasicPageFull15}{\hidepaste}
-\tab{5}\spadcommand{c := coefficient(r,z,1)\free{r }\bound{c }}
-\indentrel{3}\begin{verbatim}
-             2                      2
-   (15)  6c y  + 6b x y + (6a + 78)x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty15}
-\begin{paste}{PolynomialBasicPageEmpty15}{PolynomialBasicPagePatch15}
-\pastebutton{PolynomialBasicPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{c := coefficient(r,z,1)\free{r }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch16}
-\begin{paste}{PolynomialBasicPageFull16}{PolynomialBasicPageEmpty16}
-\pastebutton{PolynomialBasicPageFull16}{\hidepaste}
-\tab{5}\spadcommand{coefficient(c,x,2)\free{c }}
-\indentrel{3}\begin{verbatim}
-   (16)  6a + 78
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty16}
-\begin{paste}{PolynomialBasicPageEmpty16}{PolynomialBasicPagePatch16}
-\pastebutton{PolynomialBasicPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{coefficient(c,x,2)\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch17}
-\begin{paste}{PolynomialBasicPageFull17}{PolynomialBasicPageEmpty17}
-\pastebutton{PolynomialBasicPageFull17}{\hidepaste}
-\tab{5}\spadcommand{coefficient(q**2, [x,z], [2,1])\free{q }}
-\indentrel{3}\begin{verbatim}
-   (17)  78
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty17}
-\begin{paste}{PolynomialBasicPageEmpty17}{PolynomialBasicPagePatch17}
-\pastebutton{PolynomialBasicPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{coefficient(q**2, [x,z], [2,1])\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPagePatch18}
-\begin{paste}{PolynomialBasicPageFull18}{PolynomialBasicPageEmpty18}
-\pastebutton{PolynomialBasicPageFull18}{\hidepaste}
-\tab{5}\spadcommand{coefficient(r, [x,y], [2,2])\free{r }}
-\indentrel{3}\begin{verbatim}
-                       2
-   (18)  (2a + 26)c + b
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialBasicPageEmpty18}
-\begin{paste}{PolynomialBasicPageEmpty18}{PolynomialBasicPagePatch18}
-\pastebutton{PolynomialBasicPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{coefficient(r, [x,y], [2,2])\free{r }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/poly1.pht b/books/pages/poly1.pht
deleted file mode 100644
index c3067fb..0000000
--- a/books/pages/poly1.pht
+++ /dev/null
@@ -1,773 +0,0 @@
-\begin{patch}{PolynomialXmpPagePatch1}
-\begin{paste}{PolynomialXmpPageFull1}{PolynomialXmpPageEmpty1}
-\pastebutton{PolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x + 1}
-\indentrel{3}\begin{verbatim}
-   (1)  x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty1}
-\begin{paste}{PolynomialXmpPageEmpty1}{PolynomialXmpPagePatch1}
-\pastebutton{PolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x + 1}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch2}
-\begin{paste}{PolynomialXmpPageFull2}{PolynomialXmpPageEmpty2}
-\pastebutton{PolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{z - 2.3}
-\indentrel{3}\begin{verbatim}
-   (2)  z - 2.3
-                                 Type: Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty2}
-\begin{paste}{PolynomialXmpPageEmpty2}{PolynomialXmpPagePatch2}
-\pastebutton{PolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{z - 2.3}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch3}
-\begin{paste}{PolynomialXmpPageFull3}{PolynomialXmpPageEmpty3}
-\pastebutton{PolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{y**2 - z + 3/4}
-\indentrel{3}\begin{verbatim}
-               2   3
-   (3)  - z + y  + Ä
-                   4
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty3}
-\begin{paste}{PolynomialXmpPageEmpty3}{PolynomialXmpPagePatch3}
-\pastebutton{PolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{y**2 - z + 3/4}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch4}
-\begin{paste}{PolynomialXmpPageFull4}{PolynomialXmpPageEmpty4}
-\pastebutton{PolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{y **2 + x*y + y\bound{prev }}
-\indentrel{3}\begin{verbatim}
-         2
-   (4)  y  + (x + 1)y
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty4}
-\begin{paste}{PolynomialXmpPageEmpty4}{PolynomialXmpPagePatch4}
-\pastebutton{PolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{y **2 + x*y + y\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch5}
-\begin{paste}{PolynomialXmpPageFull5}{PolynomialXmpPageEmpty5}
-\pastebutton{PolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{\% :: DMP([y,x],INT)\free{prev }}
-\indentrel{3}\begin{verbatim}
-         2
-   (5)  y  + y x + y
- Type: DistributedMultivariatePolynomial([y,x],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty5}
-\begin{paste}{PolynomialXmpPageEmpty5}{PolynomialXmpPagePatch5}
-\pastebutton{PolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{\% :: DMP([y,x],INT)\free{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch6}
-\begin{paste}{PolynomialXmpPageFull6}{PolynomialXmpPageEmpty6}
-\pastebutton{PolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p := (y-1)**2 * x * z\bound{p }}
-\indentrel{3}\begin{verbatim}
-            2
-   (6)  (x y  - 2x y + x)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty6}
-\begin{paste}{PolynomialXmpPageEmpty6}{PolynomialXmpPagePatch6}
-\pastebutton{PolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p := (y-1)**2 * x * z\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch7}
-\begin{paste}{PolynomialXmpPageFull7}{PolynomialXmpPageEmpty7}
-\pastebutton{PolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{q := (y-1) * x * (z+5)\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (7)  (x y - x)z + 5x y - 5x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty7}
-\begin{paste}{PolynomialXmpPageEmpty7}{PolynomialXmpPagePatch7}
-\pastebutton{PolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{q := (y-1) * x * (z+5)\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch8}
-\begin{paste}{PolynomialXmpPageFull8}{PolynomialXmpPageEmpty8}
-\pastebutton{PolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{factor(q)\free{q }}
-\indentrel{3}\begin{verbatim}
-   (8)  x(y - 1)(z + 5)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty8}
-\begin{paste}{PolynomialXmpPageEmpty8}{PolynomialXmpPagePatch8}
-\pastebutton{PolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{factor(q)\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch9}
-\begin{paste}{PolynomialXmpPageFull9}{PolynomialXmpPageEmpty9}
-\pastebutton{PolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{p - q**2\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (9)
-         2 2     2     2  2
-     (- x y  + 2x y - x )z
-   + 
-            2      2       2             2            2 2
-     ((- 10x  + x)y  + (20x  - 2x)y - 10x  + x)z - 25x y
-   + 
-        2       2
-     50x y - 25x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty9}
-\begin{paste}{PolynomialXmpPageEmpty9}{PolynomialXmpPagePatch9}
-\pastebutton{PolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p - q**2\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch10}
-\begin{paste}{PolynomialXmpPageFull10}{PolynomialXmpPageEmpty10}
-\pastebutton{PolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }\bound{prev4 }}
-\indentrel{3}\begin{verbatim}
-   (10)  x y - x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty10}
-\begin{paste}{PolynomialXmpPageEmpty10}{PolynomialXmpPagePatch10}
-\pastebutton{PolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }\bound{prev4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch11}
-\begin{paste}{PolynomialXmpPageFull11}{PolynomialXmpPageEmpty11}
-\pastebutton{PolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{factor \%\free{prev4 }}
-\indentrel{3}\begin{verbatim}
-   (11)  x(y - 1)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty11}
-\begin{paste}{PolynomialXmpPageEmpty11}{PolynomialXmpPagePatch11}
-\pastebutton{PolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{factor \%\free{prev4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch12}
-\begin{paste}{PolynomialXmpPageFull12}{PolynomialXmpPageEmpty12}
-\pastebutton{PolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{lcm(p,q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-             2             2        2
-   (12)  (x y  - 2x y + x)z  + (5x y  - 10x y + 5x)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty12}
-\begin{paste}{PolynomialXmpPageEmpty12}{PolynomialXmpPagePatch12}
-\pastebutton{PolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{lcm(p,q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch13}
-\begin{paste}{PolynomialXmpPageFull13}{PolynomialXmpPageEmpty13}
-\pastebutton{PolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{content p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty13}
-\begin{paste}{PolynomialXmpPageEmpty13}{PolynomialXmpPagePatch13}
-\pastebutton{PolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{content p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch14}
-\begin{paste}{PolynomialXmpPageFull14}{PolynomialXmpPageEmpty14}
-\pastebutton{PolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{resultant(p,q,z)\free{p q }}
-\indentrel{3}\begin{verbatim}
-           2 3      2 2      2      2
-   (14)  5x y  - 15x y  + 15x y - 5x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty14}
-\begin{paste}{PolynomialXmpPageEmpty14}{PolynomialXmpPagePatch14}
-\pastebutton{PolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{resultant(p,q,z)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch15}
-\begin{paste}{PolynomialXmpPageFull15}{PolynomialXmpPageEmpty15}
-\pastebutton{PolynomialXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{resultant(p,q,x)\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-   (15)  0
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty15}
-\begin{paste}{PolynomialXmpPageEmpty15}{PolynomialXmpPagePatch15}
-\pastebutton{PolynomialXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{resultant(p,q,x)\free{p }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch16}
-\begin{paste}{PolynomialXmpPageFull16}{PolynomialXmpPageEmpty16}
-\pastebutton{PolynomialXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{mainVariable p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (16)  z
-                                Type: Union(Symbol,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty16}
-\begin{paste}{PolynomialXmpPageEmpty16}{PolynomialXmpPagePatch16}
-\pastebutton{PolynomialXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{mainVariable p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch17}
-\begin{paste}{PolynomialXmpPageFull17}{PolynomialXmpPageEmpty17}
-\pastebutton{PolynomialXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{mainVariable(1 :: POLY INT)}
-\indentrel{3}\begin{verbatim}
-   (17)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty17}
-\begin{paste}{PolynomialXmpPageEmpty17}{PolynomialXmpPagePatch17}
-\pastebutton{PolynomialXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{mainVariable(1 :: POLY INT)}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch18}
-\begin{paste}{PolynomialXmpPageFull18}{PolynomialXmpPageEmpty18}
-\pastebutton{PolynomialXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{ground? p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (18)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty18}
-\begin{paste}{PolynomialXmpPageEmpty18}{PolynomialXmpPagePatch18}
-\pastebutton{PolynomialXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{ground? p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch19}
-\begin{paste}{PolynomialXmpPageFull19}{PolynomialXmpPageEmpty19}
-\pastebutton{PolynomialXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{ground?(1 :: POLY INT)}
-\indentrel{3}\begin{verbatim}
-   (19)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty19}
-\begin{paste}{PolynomialXmpPageEmpty19}{PolynomialXmpPagePatch19}
-\pastebutton{PolynomialXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{ground?(1 :: POLY INT)}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch20}
-\begin{paste}{PolynomialXmpPageFull20}{PolynomialXmpPageEmpty20}
-\pastebutton{PolynomialXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{variables p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (20)  [z,y,x]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty20}
-\begin{paste}{PolynomialXmpPageEmpty20}{PolynomialXmpPagePatch20}
-\pastebutton{PolynomialXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{variables p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch21}
-\begin{paste}{PolynomialXmpPageFull21}{PolynomialXmpPageEmpty21}
-\pastebutton{PolynomialXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{degree(p,x)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (21)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty21}
-\begin{paste}{PolynomialXmpPageEmpty21}{PolynomialXmpPagePatch21}
-\pastebutton{PolynomialXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{degree(p,x)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch22}
-\begin{paste}{PolynomialXmpPageFull22}{PolynomialXmpPageEmpty22}
-\pastebutton{PolynomialXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{degree(p,y)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (22)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty22}
-\begin{paste}{PolynomialXmpPageEmpty22}{PolynomialXmpPagePatch22}
-\pastebutton{PolynomialXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{degree(p,y)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch23}
-\begin{paste}{PolynomialXmpPageFull23}{PolynomialXmpPageEmpty23}
-\pastebutton{PolynomialXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{degree(p,z)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (23)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty23}
-\begin{paste}{PolynomialXmpPageEmpty23}{PolynomialXmpPagePatch23}
-\pastebutton{PolynomialXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{degree(p,z)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch24}
-\begin{paste}{PolynomialXmpPageFull24}{PolynomialXmpPageEmpty24}
-\pastebutton{PolynomialXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{degree(p,[x,y,z])\free{p }}
-\indentrel{3}\begin{verbatim}
-   (24)  [1,2,1]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty24}
-\begin{paste}{PolynomialXmpPageEmpty24}{PolynomialXmpPagePatch24}
-\pastebutton{PolynomialXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{degree(p,[x,y,z])\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch25}
-\begin{paste}{PolynomialXmpPageFull25}{PolynomialXmpPageEmpty25}
-\pastebutton{PolynomialXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{minimumDegree(p,z)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (25)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty25}
-\begin{paste}{PolynomialXmpPageEmpty25}{PolynomialXmpPagePatch25}
-\pastebutton{PolynomialXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{minimumDegree(p,z)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch26}
-\begin{paste}{PolynomialXmpPageFull26}{PolynomialXmpPageEmpty26}
-\pastebutton{PolynomialXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{totalDegree p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (26)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty26}
-\begin{paste}{PolynomialXmpPageEmpty26}{PolynomialXmpPagePatch26}
-\pastebutton{PolynomialXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{totalDegree p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch27}
-\begin{paste}{PolynomialXmpPageFull27}{PolynomialXmpPageEmpty27}
-\pastebutton{PolynomialXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{leadingMonomial p\free{p }}
-\indentrel{3}\begin{verbatim}
-            2
-   (27)  x y z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty27}
-\begin{paste}{PolynomialXmpPageEmpty27}{PolynomialXmpPagePatch27}
-\pastebutton{PolynomialXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{leadingMonomial p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch28}
-\begin{paste}{PolynomialXmpPageFull28}{PolynomialXmpPageEmpty28}
-\pastebutton{PolynomialXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{reductum p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (28)  (- 2x y + x)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty28}
-\begin{paste}{PolynomialXmpPageEmpty28}{PolynomialXmpPagePatch28}
-\pastebutton{PolynomialXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{reductum p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch29}
-\begin{paste}{PolynomialXmpPageFull29}{PolynomialXmpPageEmpty29}
-\pastebutton{PolynomialXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{p - leadingMonomial p - reductum p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (29)  0
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty29}
-\begin{paste}{PolynomialXmpPageEmpty29}{PolynomialXmpPagePatch29}
-\pastebutton{PolynomialXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{p - leadingMonomial p - reductum p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch30}
-\begin{paste}{PolynomialXmpPageFull30}{PolynomialXmpPageEmpty30}
-\pastebutton{PolynomialXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{leadingCoefficient p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (30)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty30}
-\begin{paste}{PolynomialXmpPageEmpty30}{PolynomialXmpPagePatch30}
-\pastebutton{PolynomialXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{leadingCoefficient p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch31}
-\begin{paste}{PolynomialXmpPageFull31}{PolynomialXmpPageEmpty31}
-\pastebutton{PolynomialXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{p\free{p }}
-\indentrel{3}\begin{verbatim}
-             2
-   (31)  (x y  - 2x y + x)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty31}
-\begin{paste}{PolynomialXmpPageEmpty31}{PolynomialXmpPagePatch31}
-\pastebutton{PolynomialXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch32}
-\begin{paste}{PolynomialXmpPageFull32}{PolynomialXmpPageEmpty32}
-\pastebutton{PolynomialXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{eval(p,x,w)\free{p }}
-\indentrel{3}\begin{verbatim}
-             2
-   (32)  (w y  - 2w y + w)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty32}
-\begin{paste}{PolynomialXmpPageEmpty32}{PolynomialXmpPagePatch32}
-\pastebutton{PolynomialXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{eval(p,x,w)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch33}
-\begin{paste}{PolynomialXmpPageFull33}{PolynomialXmpPageEmpty33}
-\pastebutton{PolynomialXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{eval(p,x,1)\free{p }}
-\indentrel{3}\begin{verbatim}
-           2
-   (33)  (y  - 2y + 1)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty33}
-\begin{paste}{PolynomialXmpPageEmpty33}{PolynomialXmpPagePatch33}
-\pastebutton{PolynomialXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{eval(p,x,1)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch34}
-\begin{paste}{PolynomialXmpPageFull34}{PolynomialXmpPageEmpty34}
-\pastebutton{PolynomialXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{eval(p,x,y**2 - 1)\free{p }}
-\indentrel{3}\begin{verbatim}
-           4     3
-   (34)  (y  - 2y  + 2y - 1)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty34}
-\begin{paste}{PolynomialXmpPageEmpty34}{PolynomialXmpPagePatch34}
-\pastebutton{PolynomialXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{eval(p,x,y**2 - 1)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch35}
-\begin{paste}{PolynomialXmpPageFull35}{PolynomialXmpPageEmpty35}
-\pastebutton{PolynomialXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{D(p,x)\free{p }}
-\indentrel{3}\begin{verbatim}
-           2
-   (35)  (y  - 2y + 1)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty35}
-\begin{paste}{PolynomialXmpPageEmpty35}{PolynomialXmpPagePatch35}
-\pastebutton{PolynomialXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{D(p,x)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch36}
-\begin{paste}{PolynomialXmpPageFull36}{PolynomialXmpPageEmpty36}
-\pastebutton{PolynomialXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{D(p,y)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (36)  (2x y - 2x)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty36}
-\begin{paste}{PolynomialXmpPageEmpty36}{PolynomialXmpPagePatch36}
-\pastebutton{PolynomialXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{D(p,y)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch37}
-\begin{paste}{PolynomialXmpPageFull37}{PolynomialXmpPageEmpty37}
-\pastebutton{PolynomialXmpPageFull37}{\hidepaste}
-\tab{5}\spadcommand{D(p,z)\free{p }}
-\indentrel{3}\begin{verbatim}
-            2
-   (37)  x y  - 2x y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty37}
-\begin{paste}{PolynomialXmpPageEmpty37}{PolynomialXmpPagePatch37}
-\pastebutton{PolynomialXmpPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{D(p,z)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch38}
-\begin{paste}{PolynomialXmpPageFull38}{PolynomialXmpPageEmpty38}
-\pastebutton{PolynomialXmpPageFull38}{\hidepaste}
-\tab{5}\spadcommand{integrate(p,y)\free{p }}
-\indentrel{3}\begin{verbatim}
-          1    3      2
-   (38)  (Ä x y  - x y  + x y)z
-          3
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty38}
-\begin{paste}{PolynomialXmpPageEmpty38}{PolynomialXmpPagePatch38}
-\pastebutton{PolynomialXmpPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{integrate(p,y)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch39}
-\begin{paste}{PolynomialXmpPageFull39}{PolynomialXmpPageEmpty39}
-\pastebutton{PolynomialXmpPageFull39}{\hidepaste}
-\tab{5}\spadcommand{qr := monicDivide(p,x+1,x)\free{p }\bound{qr }}
-\indentrel{3}\begin{verbatim}
-   (39)
-                2                           2
-   [quotient= (y  - 2y + 1)z,remainder= (- y  + 2y - 1)z]
-Type: Record(quotient: Polynomial Integer,remainder: Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty39}
-\begin{paste}{PolynomialXmpPageEmpty39}{PolynomialXmpPagePatch39}
-\pastebutton{PolynomialXmpPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{qr := monicDivide(p,x+1,x)\free{p }\bound{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch40}
-\begin{paste}{PolynomialXmpPageFull40}{PolynomialXmpPageEmpty40}
-\pastebutton{PolynomialXmpPageFull40}{\hidepaste}
-\tab{5}\spadcommand{qr.remainder\free{qr }}
-\indentrel{3}\begin{verbatim}
-             2
-   (40)  (- y  + 2y - 1)z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty40}
-\begin{paste}{PolynomialXmpPageEmpty40}{PolynomialXmpPagePatch40}
-\pastebutton{PolynomialXmpPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{qr.remainder\free{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch41}
-\begin{paste}{PolynomialXmpPageFull41}{PolynomialXmpPageEmpty41}
-\pastebutton{PolynomialXmpPageFull41}{\hidepaste}
-\tab{5}\spadcommand{p - ((x+1) * qr.quotient + qr.remainder)\free{p }\free{qr }}
-\indentrel{3}\begin{verbatim}
-   (41)  0
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty41}
-\begin{paste}{PolynomialXmpPageEmpty41}{PolynomialXmpPagePatch41}
-\pastebutton{PolynomialXmpPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{p - ((x+1) * qr.quotient + qr.remainder)\free{p }\free{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch42}
-\begin{paste}{PolynomialXmpPageFull42}{PolynomialXmpPageEmpty42}
-\pastebutton{PolynomialXmpPageFull42}{\hidepaste}
-\tab{5}\spadcommand{p/q\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-         (y - 1)z
-   (42)  ÄÄÄÄÄÄÄÄ
-           z + 5
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty42}
-\begin{paste}{PolynomialXmpPageEmpty42}{PolynomialXmpPagePatch42}
-\pastebutton{PolynomialXmpPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{p/q\free{p }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch43}
-\begin{paste}{PolynomialXmpPageFull43}{PolynomialXmpPageEmpty43}
-\pastebutton{PolynomialXmpPageFull43}{\hidepaste}
-\tab{5}\spadcommand{(2/3) * x**2 - y + 4/5\bound{prev1 }}
-\indentrel{3}\begin{verbatim}
-               2  2   4
-   (43)  - y + Ä x  + Ä
-               3      5
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty43}
-\begin{paste}{PolynomialXmpPageEmpty43}{PolynomialXmpPagePatch43}
-\pastebutton{PolynomialXmpPageEmpty43}{\showpaste}
-\tab{5}\spadcommand{(2/3) * x**2 - y + 4/5\bound{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch44}
-\begin{paste}{PolynomialXmpPageFull44}{PolynomialXmpPageEmpty44}
-\pastebutton{PolynomialXmpPageFull44}{\hidepaste}
-\tab{5}\spadcommand{\% :: FRAC POLY INT\free{prev1 }\bound{prev2 }}
-\indentrel{3}\begin{verbatim}
-                    2
-         - 15y + 10x  + 12
-   (44)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 15
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty44}
-\begin{paste}{PolynomialXmpPageEmpty44}{PolynomialXmpPagePatch44}
-\pastebutton{PolynomialXmpPageEmpty44}{\showpaste}
-\tab{5}\spadcommand{\% :: FRAC POLY INT\free{prev1 }\bound{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch45}
-\begin{paste}{PolynomialXmpPageFull45}{PolynomialXmpPageEmpty45}
-\pastebutton{PolynomialXmpPageFull45}{\hidepaste}
-\tab{5}\spadcommand{\% :: POLY FRAC INT\free{prev2 }\bound{prev3 }}
-\indentrel{3}\begin{verbatim}
-               2  2   4
-   (45)  - y + Ä x  + Ä
-               3      5
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty45}
-\begin{paste}{PolynomialXmpPageEmpty45}{PolynomialXmpPagePatch45}
-\pastebutton{PolynomialXmpPageEmpty45}{\showpaste}
-\tab{5}\spadcommand{\% :: POLY FRAC INT\free{prev2 }\bound{prev3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPagePatch46}
-\begin{paste}{PolynomialXmpPageFull46}{PolynomialXmpPageEmpty46}
-\pastebutton{PolynomialXmpPageFull46}{\hidepaste}
-\tab{5}\spadcommand{map(numeric,\%)\free{prev3 }}
-\indentrel{3}\begin{verbatim}
-                                            2
-   (46)  - 1.0 y + 0.6666666666 6666666667 x  + 0.8
-                                 Type: Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{PolynomialXmpPageEmpty46}
-\begin{paste}{PolynomialXmpPageEmpty46}{PolynomialXmpPagePatch46}
-\pastebutton{PolynomialXmpPageEmpty46}{\showpaste}
-\tab{5}\spadcommand{map(numeric,\%)\free{prev3 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/quat.pht b/books/pages/quat.pht
deleted file mode 100644
index 5d872fe..0000000
--- a/books/pages/quat.pht
+++ /dev/null
@@ -1,201 +0,0 @@
-\begin{patch}{QuaternionXmpPagePatch1}
-\begin{paste}{QuaternionXmpPageFull1}{QuaternionXmpPageEmpty1}
-\pastebutton{QuaternionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{q := quatern(2/11,-8,3/4,1)\bound{q }}
-\indentrel{3}\begin{verbatim}
-         2        3
-   (1)  ÄÄ - 8i + Ä j + k
-        11        4
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty1}
-\begin{paste}{QuaternionXmpPageEmpty1}{QuaternionXmpPagePatch1}
-\pastebutton{QuaternionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{q := quatern(2/11,-8,3/4,1)\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch2}
-\begin{paste}{QuaternionXmpPageFull2}{QuaternionXmpPageEmpty2}
-\pastebutton{QuaternionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{[real q, imagI q, imagJ q, imagK q]\free{q }}
-\indentrel{3}\begin{verbatim}
-          2     3
-   (2)  [ÄÄ,- 8,Ä,1]
-         11     4
-                            Type: List Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty2}
-\begin{paste}{QuaternionXmpPageEmpty2}{QuaternionXmpPagePatch2}
-\pastebutton{QuaternionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{[real q, imagI q, imagJ q, imagK q]\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch3}
-\begin{paste}{QuaternionXmpPageFull3}{QuaternionXmpPageEmpty3}
-\pastebutton{QuaternionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{inv q\free{q }}
-\indentrel{3}\begin{verbatim}
-          352     15488      484       1936
-   (3)  ÄÄÄÄÄÄ + ÄÄÄÄÄÄ i - ÄÄÄÄÄ j - ÄÄÄÄÄÄ k
-        126993   126993     42331     126993
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty3}
-\begin{paste}{QuaternionXmpPageEmpty3}{QuaternionXmpPagePatch3}
-\pastebutton{QuaternionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{inv q\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch4}
-\begin{paste}{QuaternionXmpPageFull4}{QuaternionXmpPageEmpty4}
-\pastebutton{QuaternionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{q**6\free{q }}
-\indentrel{3}\begin{verbatim}
-   (4)
-       2029490709319345   48251690851     144755072553
-     - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄÄÄÄÄÄÄÄ i + ÄÄÄÄÄÄÄÄÄÄÄÄ j
-          7256313856        1288408         41229056
-   + 
-     48251690851
-     ÄÄÄÄÄÄÄÄÄÄÄ k
-       10307264
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty4}
-\begin{paste}{QuaternionXmpPageEmpty4}{QuaternionXmpPagePatch4}
-\pastebutton{QuaternionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{q**6\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch5}
-\begin{paste}{QuaternionXmpPageFull5}{QuaternionXmpPageEmpty5}
-\pastebutton{QuaternionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{r := quatern(-2,3,23/9,-89); q + r\bound{r }\free{q }}
-\indentrel{3}\begin{verbatim}
-          20        119
-   (5)  - ÄÄ - 5i + ÄÄÄ j - 88k
-          11         36
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty5}
-\begin{paste}{QuaternionXmpPageEmpty5}{QuaternionXmpPagePatch5}
-\pastebutton{QuaternionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{r := quatern(-2,3,23/9,-89); q + r\bound{r }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch6}
-\begin{paste}{QuaternionXmpPageFull6}{QuaternionXmpPageEmpty6}
-\pastebutton{QuaternionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q * r - r * q\free{q r }}
-\indentrel{3}\begin{verbatim}
-          2495             817
-   (6)  - ÄÄÄÄ i - 1418j - ÄÄÄ k
-           18               18
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty6}
-\begin{paste}{QuaternionXmpPageEmpty6}{QuaternionXmpPagePatch6}
-\pastebutton{QuaternionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q * r - r * q\free{q r }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch7}
-\begin{paste}{QuaternionXmpPageFull7}{QuaternionXmpPageEmpty7}
-\pastebutton{QuaternionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1)\bound{i j k }}
-\indentrel{3}\begin{verbatim}
-   (7)  k
-                               Type: Quaternion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty7}
-\begin{paste}{QuaternionXmpPageEmpty7}{QuaternionXmpPagePatch7}
-\pastebutton{QuaternionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{i:=quatern(0,1,0,0); j:=quatern(0,0,1,0); k:=quatern(0,0,0,1)\bound{i j k }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch8}
-\begin{paste}{QuaternionXmpPageFull8}{QuaternionXmpPageEmpty8}
-\pastebutton{QuaternionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{[i*i, j*j, k*k, i*j, j*k, k*i, q*i]\free{i j k q }}
-\indentrel{3}\begin{verbatim}
-                                2         3
-   (8)  [- 1,- 1,- 1,k,i,j,8 + ÄÄ i + j - Ä k]
-                               11         4
-                 Type: List Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty8}
-\begin{paste}{QuaternionXmpPageEmpty8}{QuaternionXmpPagePatch8}
-\pastebutton{QuaternionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{[i*i, j*j, k*k, i*j, j*k, k*i, q*i]\free{i j k q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch9}
-\begin{paste}{QuaternionXmpPageFull9}{QuaternionXmpPageEmpty9}
-\pastebutton{QuaternionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{norm q\free{q }}
-\indentrel{3}\begin{verbatim}
-        126993
-   (9)  ÄÄÄÄÄÄ
-         1936
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty9}
-\begin{paste}{QuaternionXmpPageEmpty9}{QuaternionXmpPagePatch9}
-\pastebutton{QuaternionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{norm q\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch10}
-\begin{paste}{QuaternionXmpPageFull10}{QuaternionXmpPageEmpty10}
-\pastebutton{QuaternionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{conjugate q\free{q }\bound{prev }}
-\indentrel{3}\begin{verbatim}
-          2        3
-   (10)  ÄÄ + 8i - Ä j - k
-         11        4
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty10}
-\begin{paste}{QuaternionXmpPageEmpty10}{QuaternionXmpPagePatch10}
-\pastebutton{QuaternionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{conjugate q\free{q }\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPagePatch11}
-\begin{paste}{QuaternionXmpPageFull11}{QuaternionXmpPageEmpty11}
-\pastebutton{QuaternionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{q * \%\free{q prev }}
-\indentrel{3}\begin{verbatim}
-         126993
-   (11)  ÄÄÄÄÄÄ
-          1936
-                      Type: Quaternion Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{QuaternionXmpPageEmpty11}
-\begin{paste}{QuaternionXmpPageEmpty11}{QuaternionXmpPagePatch11}
-\pastebutton{QuaternionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{q * \%\free{q prev }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/radix.pht b/books/pages/radix.pht
deleted file mode 100644
index dc7b4dc..0000000
--- a/books/pages/radix.pht
+++ /dev/null
@@ -1,284 +0,0 @@
-\begin{patch}{RadixExpansionXmpPagePatch1}
-\begin{paste}{RadixExpansionXmpPageFull1}{RadixExpansionXmpPageEmpty1}
-\pastebutton{RadixExpansionXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{111::RadixExpansion(5)}
-\indentrel{3}\begin{verbatim}
-   (1)  421
-                                 Type: RadixExpansion 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty1}
-\begin{paste}{RadixExpansionXmpPageEmpty1}{RadixExpansionXmpPagePatch1}
-\pastebutton{RadixExpansionXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{111::RadixExpansion(5)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch2}
-\begin{paste}{RadixExpansionXmpPageFull2}{RadixExpansionXmpPageEmpty2}
-\pastebutton{RadixExpansionXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(2)}
-\indentrel{3}\begin{verbatim}
-             __
-   (2)  0.00110
-                                 Type: RadixExpansion 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty2}
-\begin{paste}{RadixExpansionXmpPageEmpty2}{RadixExpansionXmpPagePatch2}
-\pastebutton{RadixExpansionXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(2)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch3}
-\begin{paste}{RadixExpansionXmpPageFull3}{RadixExpansionXmpPageEmpty3}
-\pastebutton{RadixExpansionXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(3)}
-\indentrel{3}\begin{verbatim}
-           __
-   (3)  0.012
-                                 Type: RadixExpansion 3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty3}
-\begin{paste}{RadixExpansionXmpPageEmpty3}{RadixExpansionXmpPagePatch3}
-\pastebutton{RadixExpansionXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(3)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch4}
-\begin{paste}{RadixExpansionXmpPageFull4}{RadixExpansionXmpPageEmpty4}
-\pastebutton{RadixExpansionXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(8)}
-\indentrel{3}\begin{verbatim}
-           __
-   (4)  0.152
-                                 Type: RadixExpansion 8
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty4}
-\begin{paste}{RadixExpansionXmpPageEmpty4}{RadixExpansionXmpPagePatch4}
-\pastebutton{RadixExpansionXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(8)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch5}
-\begin{paste}{RadixExpansionXmpPageFull5}{RadixExpansionXmpPageEmpty5}
-\pastebutton{RadixExpansionXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(10)}
-\indentrel{3}\begin{verbatim}
-             _
-   (5)  0.2083
-                                Type: RadixExpansion 10
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty5}
-\begin{paste}{RadixExpansionXmpPageEmpty5}{RadixExpansionXmpPagePatch5}
-\pastebutton{RadixExpansionXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(10)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch6}
-\begin{paste}{RadixExpansionXmpPageFull6}{RadixExpansionXmpPageEmpty6}
-\pastebutton{RadixExpansionXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(12)}
-\indentrel{3}\begin{verbatim}
-   (6)  0.26
-                                Type: RadixExpansion 12
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty6}
-\begin{paste}{RadixExpansionXmpPageEmpty6}{RadixExpansionXmpPagePatch6}
-\pastebutton{RadixExpansionXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(12)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch7}
-\begin{paste}{RadixExpansionXmpPageFull7}{RadixExpansionXmpPageEmpty7}
-\pastebutton{RadixExpansionXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(16)}
-\indentrel{3}\begin{verbatim}
-           _
-   (7)  0.35
-                                Type: RadixExpansion 16
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty7}
-\begin{paste}{RadixExpansionXmpPageEmpty7}{RadixExpansionXmpPagePatch7}
-\pastebutton{RadixExpansionXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(16)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch8}
-\begin{paste}{RadixExpansionXmpPageFull8}{RadixExpansionXmpPageEmpty8}
-\pastebutton{RadixExpansionXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(36)}
-\indentrel{3}\begin{verbatim}
-   (8)  0.7I
-                                Type: RadixExpansion 36
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty8}
-\begin{paste}{RadixExpansionXmpPageEmpty8}{RadixExpansionXmpPagePatch8}
-\pastebutton{RadixExpansionXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(36)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch9}
-\begin{paste}{RadixExpansionXmpPageFull9}{RadixExpansionXmpPageEmpty9}
-\pastebutton{RadixExpansionXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(38)}
-\indentrel{3}\begin{verbatim}
-                    _____
-   (9)  0 . 7 34 31 25 12
-                                Type: RadixExpansion 38
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty9}
-\begin{paste}{RadixExpansionXmpPageEmpty9}{RadixExpansionXmpPagePatch9}
-\pastebutton{RadixExpansionXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{(5/24)::RadixExpansion(38)}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch10}
-\begin{paste}{RadixExpansionXmpPageFull10}{RadixExpansionXmpPageEmpty10}
-\pastebutton{RadixExpansionXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{a := (76543/210)::RadixExpansion(8)\bound{a }}
-\indentrel{3}\begin{verbatim}
-              ____
-   (10)  554.37307
-                                 Type: RadixExpansion 8
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty10}
-\begin{paste}{RadixExpansionXmpPageEmpty10}{RadixExpansionXmpPagePatch10}
-\pastebutton{RadixExpansionXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{a := (76543/210)::RadixExpansion(8)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch11}
-\begin{paste}{RadixExpansionXmpPageFull11}{RadixExpansionXmpPageEmpty11}
-\pastebutton{RadixExpansionXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{w := wholeRagits a\free{a }\bound{w }}
-\indentrel{3}\begin{verbatim}
-   (11)  [5,5,4]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty11}
-\begin{paste}{RadixExpansionXmpPageEmpty11}{RadixExpansionXmpPagePatch11}
-\pastebutton{RadixExpansionXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{w := wholeRagits a\free{a }\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch12}
-\begin{paste}{RadixExpansionXmpPageFull12}{RadixExpansionXmpPageEmpty12}
-\pastebutton{RadixExpansionXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{f0 := prefixRagits a\free{a }\bound{f0 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [3]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty12}
-\begin{paste}{RadixExpansionXmpPageEmpty12}{RadixExpansionXmpPagePatch12}
-\pastebutton{RadixExpansionXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{f0 := prefixRagits a\free{a }\bound{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch13}
-\begin{paste}{RadixExpansionXmpPageFull13}{RadixExpansionXmpPageEmpty13}
-\pastebutton{RadixExpansionXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{f1 := cycleRagits a\free{a }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (13)  [7,3,0,7]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty13}
-\begin{paste}{RadixExpansionXmpPageEmpty13}{RadixExpansionXmpPagePatch13}
-\pastebutton{RadixExpansionXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{f1 := cycleRagits a\free{a }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch14}
-\begin{paste}{RadixExpansionXmpPageFull14}{RadixExpansionXmpPageEmpty14}
-\pastebutton{RadixExpansionXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)\free{w f0 f1 }\bound{u }}
-\indentrel{3}\begin{verbatim}
-              ____
-   (14)  554.37307
-                                 Type: RadixExpansion 8
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty14}
-\begin{paste}{RadixExpansionXmpPageEmpty14}{RadixExpansionXmpPagePatch14}
-\pastebutton{RadixExpansionXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{u:RadixExpansion(8):=wholeRadix(w)+fractRadix(f0,f1)\free{w f0 f1 }\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch15}
-\begin{paste}{RadixExpansionXmpPageFull15}{RadixExpansionXmpPageEmpty15}
-\pastebutton{RadixExpansionXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0])\bound{v }}
-\indentrel{3}\begin{verbatim}
-               _
-   (15)  0.123B0
-                                Type: RadixExpansion 12
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty15}
-\begin{paste}{RadixExpansionXmpPageEmpty15}{RadixExpansionXmpPagePatch15}
-\pastebutton{RadixExpansionXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{v: RadixExpansion(12) := fractRadix([1,2,3,11], [0])\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch16}
-\begin{paste}{RadixExpansionXmpPageFull16}{RadixExpansionXmpPageEmpty16}
-\pastebutton{RadixExpansionXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{fractRagits(u)\free{u }}
-\indentrel{3}\begin{verbatim}
-              _______
-   (16)  [3,7,3,0,7,7]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty16}
-\begin{paste}{RadixExpansionXmpPageEmpty16}{RadixExpansionXmpPagePatch16}
-\pastebutton{RadixExpansionXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{fractRagits(u)\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPagePatch17}
-\begin{paste}{RadixExpansionXmpPageFull17}{RadixExpansionXmpPageEmpty17}
-\pastebutton{RadixExpansionXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{a :: Fraction(Integer)\free{a }}
-\indentrel{3}\begin{verbatim}
-         76543
-   (17)  ÄÄÄÄÄ
-          210
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RadixExpansionXmpPageEmpty17}
-\begin{paste}{RadixExpansionXmpPageEmpty17}{RadixExpansionXmpPagePatch17}
-\pastebutton{RadixExpansionXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{a :: Fraction(Integer)\free{a }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/reclos.pht b/books/pages/reclos.pht
deleted file mode 100644
index 2e3ed9c..0000000
--- a/books/pages/reclos.pht
+++ /dev/null
@@ -1,1258 +0,0 @@
-\begin{patch}{RealClosureXmpPagePatch1}
-\begin{paste}{RealClosureXmpPageFull1}{RealClosureXmpPageEmpty1}
-\pastebutton{RealClosureXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Ran := RECLOS(FRAC INT)\bound{Ran }}
-\indentrel{3}\begin{verbatim}
-   (1)  RealClosure Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty1}
-\begin{paste}{RealClosureXmpPageEmpty1}{RealClosureXmpPagePatch1}
-\pastebutton{RealClosureXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Ran := RECLOS(FRAC INT)\bound{Ran }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch2}
-\begin{paste}{RealClosureXmpPageFull2}{RealClosureXmpPageEmpty2}
-\pastebutton{RealClosureXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)\free{Ran }\bound{fs }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty2}
-\begin{paste}{RealClosureXmpPageEmpty2}{RealClosureXmpPagePatch2}
-\pastebutton{RealClosureXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)\free{Ran }\bound{fs }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch3}
-\begin{paste}{RealClosureXmpPageFull3}{RealClosureXmpPageEmpty3}
-\pastebutton{RealClosureXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{squareDiff1 := fourSquares(73,548,60,586)\free{fs }\bound{sd1 }}
-\indentrel{3}\begin{verbatim}
-           ÚÄÄÄ¿    ÚÄÄ¿    ÚÄÄÄ¿    ÚÄÄ¿
-   (3)  - \³586  - \³60  + \³548  + \³73
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty3}
-\begin{paste}{RealClosureXmpPageEmpty3}{RealClosureXmpPagePatch3}
-\pastebutton{RealClosureXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{squareDiff1 := fourSquares(73,548,60,586)\free{fs }\bound{sd1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch4}
-\begin{paste}{RealClosureXmpPageFull4}{RealClosureXmpPageEmpty4}
-\pastebutton{RealClosureXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff1)\free{sd1 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-                ÚÄÄÄ¿          ÚÄÄ¿  ÚÄÄ¿
-         (54602\³548  + 149602\³73 )\³60
-       + 
-               ÚÄÄ¿ ÚÄÄÄ¿
-         49502\³73 \³548  + 9900895
-    *
-        ÚÄÄÄ¿
-       \³586
-   + 
-             ÚÄÄ¿ ÚÄÄÄ¿             ÚÄÄ¿            ÚÄÄÄ¿
-     (154702\³73 \³548  + 30941947)\³60  + 10238421\³548
-   + 
-              ÚÄÄ¿
-     28051871\³73
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty4}
-\begin{paste}{RealClosureXmpPageEmpty4}{RealClosureXmpPagePatch4}
-\pastebutton{RealClosureXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff1)\free{sd1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch5}
-\begin{paste}{RealClosureXmpPageFull5}{RealClosureXmpPageEmpty5}
-\pastebutton{RealClosureXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff1)\free{sd1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty5}
-\begin{paste}{RealClosureXmpPageEmpty5}{RealClosureXmpPagePatch5}
-\pastebutton{RealClosureXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff1)\free{sd1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch6}
-\begin{paste}{RealClosureXmpPageFull6}{RealClosureXmpPageEmpty6}
-\pastebutton{RealClosureXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{squareDiff2 := fourSquares(165,778,86,990)\free{fs }\bound{sd2 }}
-\indentrel{3}\begin{verbatim}
-           ÚÄÄÄ¿    ÚÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
-   (6)  - \³990  - \³86  + \³778  + \³165
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty6}
-\begin{paste}{RealClosureXmpPageEmpty6}{RealClosureXmpPagePatch6}
-\pastebutton{RealClosureXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{squareDiff2 := fourSquares(165,778,86,990)\free{fs }\bound{sd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch7}
-\begin{paste}{RealClosureXmpPageFull7}{RealClosureXmpPageEmpty7}
-\pastebutton{RealClosureXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff2)\free{sd2 }}
-\indentrel{3}\begin{verbatim}
-   (7)
-                 ÚÄÄÄ¿           ÚÄÄÄ¿  ÚÄÄ¿
-         (556778\³778  + 1209010\³165 )\³86
-       + 
-                ÚÄÄÄ¿ ÚÄÄÄ¿
-         401966\³165 \³778  + 144019431
-    *
-        ÚÄÄÄ¿
-       \³990
-   + 
-              ÚÄÄÄ¿ ÚÄÄÄ¿              ÚÄÄ¿
-     (1363822\³165 \³778  + 488640503)\³86
-   + 
-               ÚÄÄÄ¿             ÚÄÄÄ¿
-     162460913\³778  + 352774119\³165
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty7}
-\begin{paste}{RealClosureXmpPageEmpty7}{RealClosureXmpPagePatch7}
-\pastebutton{RealClosureXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff2)\free{sd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch8}
-\begin{paste}{RealClosureXmpPageFull8}{RealClosureXmpPageEmpty8}
-\pastebutton{RealClosureXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff2)\free{sd2 }}
-\indentrel{3}\begin{verbatim}
-   (8)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty8}
-\begin{paste}{RealClosureXmpPageEmpty8}{RealClosureXmpPagePatch8}
-\pastebutton{RealClosureXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff2)\free{sd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch9}
-\begin{paste}{RealClosureXmpPageFull9}{RealClosureXmpPageEmpty9}
-\pastebutton{RealClosureXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{squareDiff3 := fourSquares(217,708,226,692)\free{fs }\bound{sd3 }}
-\indentrel{3}\begin{verbatim}
-           ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
-   (9)  - \³692  - \³226  + \³708  + \³217
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty9}
-\begin{paste}{RealClosureXmpPageEmpty9}{RealClosureXmpPagePatch9}
-\pastebutton{RealClosureXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{squareDiff3 := fourSquares(217,708,226,692)\free{fs }\bound{sd3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch10}
-\begin{paste}{RealClosureXmpPageFull10}{RealClosureXmpPageEmpty10}
-\pastebutton{RealClosureXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff3)\free{sd3 }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                  ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
-         (- 34102\³708  - 61598\³217 )\³226
-       + 
-                 ÚÄÄÄ¿ ÚÄÄÄ¿
-         - 34802\³217 \³708  - 13641141
-    *
-        ÚÄÄÄ¿
-       \³692
-   + 
-              ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿
-     (- 60898\³217 \³708  - 23869841)\³226
-   + 
-                ÚÄÄÄ¿            ÚÄÄÄ¿
-     - 13486123\³708  - 24359809\³217
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty10}
-\begin{paste}{RealClosureXmpPageEmpty10}{RealClosureXmpPagePatch10}
-\pastebutton{RealClosureXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff3)\free{sd3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch11}
-\begin{paste}{RealClosureXmpPageFull11}{RealClosureXmpPageEmpty11}
-\pastebutton{RealClosureXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff3)\free{sd3 }}
-\indentrel{3}\begin{verbatim}
-   (11)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty11}
-\begin{paste}{RealClosureXmpPageEmpty11}{RealClosureXmpPagePatch11}
-\pastebutton{RealClosureXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff3)\free{sd3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch12}
-\begin{paste}{RealClosureXmpPageFull12}{RealClosureXmpPageEmpty12}
-\pastebutton{RealClosureXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{squareDiff4 := fourSquares(155,836,162,820)\free{fs }\bound{sd4 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
-   (12)  - \³820  - \³162  + \³836  + \³155
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty12}
-\begin{paste}{RealClosureXmpPageEmpty12}{RealClosureXmpPagePatch12}
-\pastebutton{RealClosureXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{squareDiff4 := fourSquares(155,836,162,820)\free{fs }\bound{sd4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch13}
-\begin{paste}{RealClosureXmpPageFull13}{RealClosureXmpPageEmpty13}
-\pastebutton{RealClosureXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff4)\free{sd4 }}
-\indentrel{3}\begin{verbatim}
-   (13)
-                  ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
-         (- 37078\³836  - 86110\³155 )\³162
-       + 
-                 ÚÄÄÄ¿ ÚÄÄÄ¿
-         - 37906\³155 \³836  - 13645107
-    *
-        ÚÄÄÄ¿
-       \³820
-   + 
-              ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿
-     (- 85282\³155 \³836  - 30699151)\³162
-   + 
-                ÚÄÄÄ¿            ÚÄÄÄ¿
-     - 13513901\³836  - 31384703\³155
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty13}
-\begin{paste}{RealClosureXmpPageEmpty13}{RealClosureXmpPagePatch13}
-\pastebutton{RealClosureXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff4)\free{sd4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch14}
-\begin{paste}{RealClosureXmpPageFull14}{RealClosureXmpPageEmpty14}
-\pastebutton{RealClosureXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff4)\free{sd4 }}
-\indentrel{3}\begin{verbatim}
-   (14)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty14}
-\begin{paste}{RealClosureXmpPageEmpty14}{RealClosureXmpPagePatch14}
-\pastebutton{RealClosureXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff4)\free{sd4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch15}
-\begin{paste}{RealClosureXmpPageFull15}{RealClosureXmpPageEmpty15}
-\pastebutton{RealClosureXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{squareDiff5 := fourSquares(591,772,552,818)\free{fs }\bound{sd5 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄ¿
-   (15)  - \³818  - \³552  + \³772  + \³591
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty15}
-\begin{paste}{RealClosureXmpPageEmpty15}{RealClosureXmpPagePatch15}
-\pastebutton{RealClosureXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{squareDiff5 := fourSquares(591,772,552,818)\free{fs }\bound{sd5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch16}
-\begin{paste}{RealClosureXmpPageFull16}{RealClosureXmpPageEmpty16}
-\pastebutton{RealClosureXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff5)\free{sd5 }}
-\indentrel{3}\begin{verbatim}
-   (16)
-                ÚÄÄÄ¿         ÚÄÄÄ¿  ÚÄÄÄ¿
-         (70922\³772  + 81058\³591 )\³552
-       + 
-               ÚÄÄÄ¿ ÚÄÄÄ¿
-         68542\³591 \³772  + 46297673
-    *
-        ÚÄÄÄ¿
-       \³818
-   + 
-            ÚÄÄÄ¿ ÚÄÄÄ¿             ÚÄÄÄ¿            ÚÄÄÄ¿
-     (83438\³591 \³772  + 56359389)\³552  + 47657051\³772
-   + 
-              ÚÄÄÄ¿
-     54468081\³591
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty16}
-\begin{paste}{RealClosureXmpPageEmpty16}{RealClosureXmpPagePatch16}
-\pastebutton{RealClosureXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff5)\free{sd5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch17}
-\begin{paste}{RealClosureXmpPageFull17}{RealClosureXmpPageEmpty17}
-\pastebutton{RealClosureXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff5)\free{sd5 }}
-\indentrel{3}\begin{verbatim}
-   (17)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty17}
-\begin{paste}{RealClosureXmpPageEmpty17}{RealClosureXmpPagePatch17}
-\pastebutton{RealClosureXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff5)\free{sd5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch18}
-\begin{paste}{RealClosureXmpPageFull18}{RealClosureXmpPageEmpty18}
-\pastebutton{RealClosureXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{squareDiff6 := fourSquares(434,1053,412,1088)\free{fs }\bound{sd6 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
-   (18)  - \³1088  - \³412  + \³1053  + \³434
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty18}
-\begin{paste}{RealClosureXmpPageEmpty18}{RealClosureXmpPagePatch18}
-\pastebutton{RealClosureXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{squareDiff6 := fourSquares(434,1053,412,1088)\free{fs }\bound{sd6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch19}
-\begin{paste}{RealClosureXmpPageFull19}{RealClosureXmpPageEmpty19}
-\pastebutton{RealClosureXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff6)\free{sd6 }}
-\indentrel{3}\begin{verbatim}
-   (19)
-                 ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
-         (115442\³1053  + 179818\³434 )\³412
-       + 
-                ÚÄÄÄ¿ ÚÄÄÄÄ¿
-         112478\³434 \³1053  + 76037291
-    *
-        ÚÄÄÄÄ¿
-       \³1088
-   + 
-             ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
-     (182782\³434 \³1053  + 123564147)\³412
-   + 
-              ÚÄÄÄÄ¿             ÚÄÄÄ¿
-     77290639\³1053  + 120391609\³434
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty19}
-\begin{paste}{RealClosureXmpPageEmpty19}{RealClosureXmpPagePatch19}
-\pastebutton{RealClosureXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff6)\free{sd6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch20}
-\begin{paste}{RealClosureXmpPageFull20}{RealClosureXmpPageEmpty20}
-\pastebutton{RealClosureXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff6)\free{sd6 }}
-\indentrel{3}\begin{verbatim}
-   (20)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty20}
-\begin{paste}{RealClosureXmpPageEmpty20}{RealClosureXmpPagePatch20}
-\pastebutton{RealClosureXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff6)\free{sd6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch21}
-\begin{paste}{RealClosureXmpPageFull21}{RealClosureXmpPageEmpty21}
-\pastebutton{RealClosureXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{squareDiff7 := fourSquares(514,1049,446,1152)\free{fs }\bound{sd7 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
-   (21)  - \³1152  - \³446  + \³1049  + \³514
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty21}
-\begin{paste}{RealClosureXmpPageEmpty21}{RealClosureXmpPagePatch21}
-\pastebutton{RealClosureXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{squareDiff7 := fourSquares(514,1049,446,1152)\free{fs }\bound{sd7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch22}
-\begin{paste}{RealClosureXmpPageFull22}{RealClosureXmpPageEmpty22}
-\pastebutton{RealClosureXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff7)\free{sd7 }}
-\indentrel{3}\begin{verbatim}
-   (22)
-                 ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
-         (349522\³1049  + 499322\³514 )\³446
-       + 
-                ÚÄÄÄ¿ ÚÄÄÄÄ¿
-         325582\³514 \³1049  + 239072537
-    *
-        ÚÄÄÄÄ¿
-       \³1152
-   + 
-             ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
-     (523262\³514 \³1049  + 384227549)\³446
-   + 
-               ÚÄÄÄÄ¿             ÚÄÄÄ¿
-     250534873\³1049  + 357910443\³514
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty22}
-\begin{paste}{RealClosureXmpPageEmpty22}{RealClosureXmpPagePatch22}
-\pastebutton{RealClosureXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff7)\free{sd7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch23}
-\begin{paste}{RealClosureXmpPageFull23}{RealClosureXmpPageEmpty23}
-\pastebutton{RealClosureXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff7)\free{sd7 }}
-\indentrel{3}\begin{verbatim}
-   (23)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty23}
-\begin{paste}{RealClosureXmpPageEmpty23}{RealClosureXmpPagePatch23}
-\pastebutton{RealClosureXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff7)\free{sd7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch24}
-\begin{paste}{RealClosureXmpPageFull24}{RealClosureXmpPageEmpty24}
-\pastebutton{RealClosureXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{squareDiff8 := fourSquares(190,1751,208,1698)\free{fs }\bound{sd8 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄ¿    ÚÄÄÄ¿    ÚÄÄÄÄ¿    ÚÄÄÄ¿
-   (24)  - \³1698  - \³208  + \³1751  + \³190
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty24}
-\begin{paste}{RealClosureXmpPageEmpty24}{RealClosureXmpPagePatch24}
-\pastebutton{RealClosureXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{squareDiff8 := fourSquares(190,1751,208,1698)\free{fs }\bound{sd8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch25}
-\begin{paste}{RealClosureXmpPageFull25}{RealClosureXmpPageEmpty25}
-\pastebutton{RealClosureXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{recip(squareDiff8)\free{sd8 }}
-\indentrel{3}\begin{verbatim}
-   (25)
-                   ÚÄÄÄÄ¿          ÚÄÄÄ¿  ÚÄÄÄ¿
-         (- 214702\³1751  - 651782\³190 )\³208
-       + 
-                  ÚÄÄÄ¿ ÚÄÄÄÄ¿
-         - 224642\³190 \³1751  - 129571901
-    *
-        ÚÄÄÄÄ¿
-       \³1698
-   + 
-               ÚÄÄÄ¿ ÚÄÄÄÄ¿              ÚÄÄÄ¿
-     (- 641842\³190 \³1751  - 370209881)\³208
-   + 
-                 ÚÄÄÄÄ¿             ÚÄÄÄ¿
-     - 127595865\³1751  - 387349387\³190
-          Type: Union(RealClosure Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty25}
-\begin{paste}{RealClosureXmpPageEmpty25}{RealClosureXmpPagePatch25}
-\pastebutton{RealClosureXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{recip(squareDiff8)\free{sd8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch26}
-\begin{paste}{RealClosureXmpPageFull26}{RealClosureXmpPageEmpty26}
-\pastebutton{RealClosureXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{sign(squareDiff8)\free{sd8 }}
-\indentrel{3}\begin{verbatim}
-   (26)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty26}
-\begin{paste}{RealClosureXmpPageEmpty26}{RealClosureXmpPagePatch26}
-\pastebutton{RealClosureXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{sign(squareDiff8)\free{sd8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch27}
-\begin{paste}{RealClosureXmpPageFull27}{RealClosureXmpPageEmpty27}
-\pastebutton{RealClosureXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{relativeApprox(squareDiff8,10**(-3))::Float\free{sd8 }}
-\indentrel{3}\begin{verbatim}
-   (27)  - 0.2340527771 5937700123 E -10
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty27}
-\begin{paste}{RealClosureXmpPageEmpty27}{RealClosureXmpPagePatch27}
-\pastebutton{RealClosureXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{relativeApprox(squareDiff8,10**(-3))::Float\free{sd8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch28}
-\begin{paste}{RealClosureXmpPageFull28}{RealClosureXmpPageEmpty28}
-\pastebutton{RealClosureXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{l := allRootsOf((x**2-2)**2-2)$Ran\free{Ran }\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (28)  [%R33,%R34,%R35,%R36]
-                Type: List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty28}
-\begin{paste}{RealClosureXmpPageEmpty28}{RealClosureXmpPagePatch28}
-\pastebutton{RealClosureXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{l := allRootsOf((x**2-2)**2-2)$Ran\free{Ran }\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch29}
-\begin{paste}{RealClosureXmpPageFull29}{RealClosureXmpPageEmpty29}
-\pastebutton{RealClosureXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{removeDuplicates map(mainDefiningPolynomial,l)\free{l }}
-\indentrel{3}\begin{verbatim}
-           4     2
-   (29)  [?  - 4?  + 2]
-Type: List Union(SparseUnivariatePolynomial RealClosure Fraction Integer,"failed")
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty29}
-\begin{paste}{RealClosureXmpPageEmpty29}{RealClosureXmpPagePatch29}
-\pastebutton{RealClosureXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{removeDuplicates map(mainDefiningPolynomial,l)\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch30}
-\begin{paste}{RealClosureXmpPageFull30}{RealClosureXmpPageEmpty30}
-\pastebutton{RealClosureXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{map(mainCharacterization,l)\free{l }}
-\indentrel{3}\begin{verbatim}
-   (30)  [[- 2,- 1[,[- 1,0[,[0,1[,[1,2[]
-Type: List Union(RightOpenIntervalRootCharacterization(RealClosure Fraction Integer,SparseUnivariatePolynomial RealClosure Fraction Integer),"failed")
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty30}
-\begin{paste}{RealClosureXmpPageEmpty30}{RealClosureXmpPagePatch30}
-\pastebutton{RealClosureXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{map(mainCharacterization,l)\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch31}
-\begin{paste}{RealClosureXmpPageFull31}{RealClosureXmpPageEmpty31}
-\pastebutton{RealClosureXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{[reduce(+,l),reduce(*,l)-2]\free{l }}
-\indentrel{3}\begin{verbatim}
-   (31)  [0,0]
-                Type: List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty31}
-\begin{paste}{RealClosureXmpPageEmpty31}{RealClosureXmpPagePatch31}
-\pastebutton{RealClosureXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{[reduce(+,l),reduce(*,l)-2]\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch32}
-\begin{paste}{RealClosureXmpPageFull32}{RealClosureXmpPageEmpty32}
-\pastebutton{RealClosureXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)\free{Ran }\bound{s2 }\bound{s5 }\bound{s10 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄ¿
-   (32)  \³10
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty32}
-\begin{paste}{RealClosureXmpPageEmpty32}{RealClosureXmpPagePatch32}
-\pastebutton{RealClosureXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)\free{Ran }\bound{s2 }\bound{s5 }\bound{s10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch33}
-\begin{paste}{RealClosureXmpPageFull33}{RealClosureXmpPageEmpty33}
-\pastebutton{RealClosureXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)\free{s2 }\free{s5 }\free{s10 }\bound{eq1 }}
-\indentrel{3}\begin{verbatim}
-   (33)
-      ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿
-      ³ ÚÄÄ¿      ³ ÚÄ¿         ³ ÚÄÄ¿      ³ ÚÄ¿
-   - \³\³10  - 3 \³\³5  - 2  + \³\³10  + 3 \³\³5  + 2  =
-      ÚÄÄÄÄÄÄÄÄÄÄÄ¿
-      ³   ÚÄ¿
-     \³10\³2  + 10
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty33}
-\begin{paste}{RealClosureXmpPageEmpty33}{RealClosureXmpPagePatch33}
-\pastebutton{RealClosureXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)\free{s2 }\free{s5 }\free{s10 }\bound{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch34}
-\begin{paste}{RealClosureXmpPageFull34}{RealClosureXmpPageEmpty34}
-\pastebutton{RealClosureXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{eq1::Boolean\free{eq1 }}
-\indentrel{3}\begin{verbatim}
-   (34)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty34}
-\begin{paste}{RealClosureXmpPageEmpty34}{RealClosureXmpPagePatch34}
-\pastebutton{RealClosureXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{eq1::Boolean\free{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch35}
-\begin{paste}{RealClosureXmpPageFull35}{RealClosureXmpPageEmpty35}
-\pastebutton{RealClosureXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2 }\free{s5 }\free{s10 }\bound{eq2 }}
-\indentrel{3}\begin{verbatim}
-   (35)
-      ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄ¿
-      ³ ÚÄ¿      ³ ÚÄ¿         ³ ÚÄ¿      ³ ÚÄ¿
-   - \³\³5  - 2 \³\³2  - 1  + \³\³5  + 2 \³\³2  + 1  =
-      ÚÄÄÄÄÄÄÄÄÄÄ¿
-      ³  ÚÄÄ¿
-     \³2\³10  + 2
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty35}
-\begin{paste}{RealClosureXmpPageEmpty35}{RealClosureXmpPagePatch35}
-\pastebutton{RealClosureXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)\free{s2 }\free{s5 }\free{s10 }\bound{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch36}
-\begin{paste}{RealClosureXmpPageFull36}{RealClosureXmpPageEmpty36}
-\pastebutton{RealClosureXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{eq2::Boolean\free{eq2 }}
-\indentrel{3}\begin{verbatim}
-   (36)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty36}
-\begin{paste}{RealClosureXmpPageEmpty36}{RealClosureXmpPagePatch36}
-\pastebutton{RealClosureXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{eq2::Boolean\free{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch37}
-\begin{paste}{RealClosureXmpPageFull37}{RealClosureXmpPageEmpty37}
-\pastebutton{RealClosureXmpPageFull37}{\hidepaste}
-\tab{5}\spadcommand{s3 := sqrt(3)$Ran\free{Ran }\bound{s3 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄ¿
-   (37)  \³3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty37}
-\begin{paste}{RealClosureXmpPageEmpty37}{RealClosureXmpPagePatch37}
-\pastebutton{RealClosureXmpPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{s3 := sqrt(3)$Ran\free{Ran }\bound{s3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch38}
-\begin{paste}{RealClosureXmpPageFull38}{RealClosureXmpPageEmpty38}
-\pastebutton{RealClosureXmpPageFull38}{\hidepaste}
-\tab{5}\spadcommand{s7:= sqrt(7)$Ran\free{Ran }\bound{s7 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄ¿
-   (38)  \³7
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty38}
-\begin{paste}{RealClosureXmpPageEmpty38}{RealClosureXmpPagePatch38}
-\pastebutton{RealClosureXmpPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{s7:= sqrt(7)$Ran\free{Ran }\bound{s7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch39}
-\begin{paste}{RealClosureXmpPageFull39}{RealClosureXmpPageEmpty39}
-\pastebutton{RealClosureXmpPageFull39}{\hidepaste}
-\tab{5}\spadcommand{e1 := sqrt(2*s7-3*s3,3)\free{s7 }\free{s3 }\bound{e1 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-         3³  ÚÄ¿     ÚÄ¿
-   (39)  \³2\³7  - 3\³3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty39}
-\begin{paste}{RealClosureXmpPageEmpty39}{RealClosureXmpPagePatch39}
-\pastebutton{RealClosureXmpPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{e1 := sqrt(2*s7-3*s3,3)\free{s7 }\free{s3 }\bound{e1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch40}
-\begin{paste}{RealClosureXmpPageFull40}{RealClosureXmpPageEmpty40}
-\pastebutton{RealClosureXmpPageFull40}{\hidepaste}
-\tab{5}\spadcommand{e2 := sqrt(2*s7+3*s3,3)\free{s7 }\free{s3 }\bound{e2 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-         3³  ÚÄ¿     ÚÄ¿
-   (40)  \³2\³7  + 3\³3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty40}
-\begin{paste}{RealClosureXmpPageEmpty40}{RealClosureXmpPagePatch40}
-\pastebutton{RealClosureXmpPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{e2 := sqrt(2*s7+3*s3,3)\free{s7 }\free{s3 }\bound{e2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch41}
-\begin{paste}{RealClosureXmpPageFull41}{RealClosureXmpPageEmpty41}
-\pastebutton{RealClosureXmpPageFull41}{\hidepaste}
-\tab{5}\spadcommand{e2-e1-s3\free{e2 }\free{e1 }\free{s3 }}
-\indentrel{3}\begin{verbatim}
-   (41)  0
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty41}
-\begin{paste}{RealClosureXmpPageEmpty41}{RealClosureXmpPagePatch41}
-\pastebutton{RealClosureXmpPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{e2-e1-s3\free{e2 }\free{e1 }\free{s3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch42}
-\begin{paste}{RealClosureXmpPageFull42}{RealClosureXmpPageEmpty42}
-\pastebutton{RealClosureXmpPageFull42}{\hidepaste}
-\tab{5}\spadcommand{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)\free{Ran }\bound{pol }}
-\indentrel{3}\begin{verbatim}
-          4   7  2         100
-   (42)  x  + Ä x  + 30x - ÄÄÄ
-              3             3
-Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty42}
-\begin{paste}{RealClosureXmpPageEmpty42}{RealClosureXmpPagePatch42}
-\pastebutton{RealClosureXmpPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)\free{Ran }\bound{pol }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch43}
-\begin{paste}{RealClosureXmpPageFull43}{RealClosureXmpPageEmpty43}
-\pastebutton{RealClosureXmpPageFull43}{\hidepaste}
-\tab{5}\spadcommand{r1 := sqrt(7633)$Ran\free{Ran }\bound{r1 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄ¿
-   (43)  \³7633
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty43}
-\begin{paste}{RealClosureXmpPageEmpty43}{RealClosureXmpPagePatch43}
-\pastebutton{RealClosureXmpPageEmpty43}{\showpaste}
-\tab{5}\spadcommand{r1 := sqrt(7633)$Ran\free{Ran }\bound{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch44}
-\begin{paste}{RealClosureXmpPageFull44}{RealClosureXmpPageEmpty44}
-\pastebutton{RealClosureXmpPageFull44}{\hidepaste}
-\tab{5}\spadcommand{alpha := sqrt(5*r1-436,3)/3\free{r1 }\bound{alpha }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-         1 3³  ÚÄÄÄÄ¿
-   (44)  Ä \³5\³7633  - 436
-         3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty44}
-\begin{paste}{RealClosureXmpPageEmpty44}{RealClosureXmpPagePatch44}
-\pastebutton{RealClosureXmpPageEmpty44}{\showpaste}
-\tab{5}\spadcommand{alpha := sqrt(5*r1-436,3)/3\free{r1 }\bound{alpha }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch45}
-\begin{paste}{RealClosureXmpPageFull45}{RealClosureXmpPageEmpty45}
-\pastebutton{RealClosureXmpPageFull45}{\hidepaste}
-\tab{5}\spadcommand{beta := -sqrt(5*r1+436,3)/3\free{r1 }\bound{beta }}
-\indentrel{3}\begin{verbatim}
-              ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-           1 3³  ÚÄÄÄÄ¿
-   (45)  - Ä \³5\³7633  + 436
-           3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty45}
-\begin{paste}{RealClosureXmpPageEmpty45}{RealClosureXmpPagePatch45}
-\pastebutton{RealClosureXmpPageEmpty45}{\showpaste}
-\tab{5}\spadcommand{beta := -sqrt(5*r1+436,3)/3\free{r1 }\bound{beta }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch46}
-\begin{paste}{RealClosureXmpPageFull46}{RealClosureXmpPageEmpty46}
-\pastebutton{RealClosureXmpPageFull46}{\hidepaste}
-\tab{5}\spadcommand{pol.(alpha+beta-1/3)\free{pol }\free{alpha }\free{beta }}
-\indentrel{3}\begin{verbatim}
-   (46)  0
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty46}
-\begin{paste}{RealClosureXmpPageEmpty46}{RealClosureXmpPagePatch46}
-\pastebutton{RealClosureXmpPageEmpty46}{\showpaste}
-\tab{5}\spadcommand{pol.(alpha+beta-1/3)\free{pol }\free{alpha }\free{beta }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch47}
-\begin{paste}{RealClosureXmpPageFull47}{RealClosureXmpPageEmpty47}
-\pastebutton{RealClosureXmpPageFull47}{\hidepaste}
-\tab{5}\spadcommand{qol : UP(x,Ran) := x**5+10*x**3+20*x+22\free{Ran }\bound{qol }}
-\indentrel{3}\begin{verbatim}
-          5      3
-   (47)  x  + 10x  + 20x + 22
-Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty47}
-\begin{paste}{RealClosureXmpPageEmpty47}{RealClosureXmpPagePatch47}
-\pastebutton{RealClosureXmpPageEmpty47}{\showpaste}
-\tab{5}\spadcommand{qol : UP(x,Ran) := x**5+10*x**3+20*x+22\free{Ran }\bound{qol }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch48}
-\begin{paste}{RealClosureXmpPageFull48}{RealClosureXmpPageEmpty48}
-\pastebutton{RealClosureXmpPageFull48}{\hidepaste}
-\tab{5}\spadcommand{r2 := sqrt(153)$Ran\free{Ran }\bound{r2 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄ¿
-   (48)  \³153
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty48}
-\begin{paste}{RealClosureXmpPageEmpty48}{RealClosureXmpPagePatch48}
-\pastebutton{RealClosureXmpPageEmpty48}{\showpaste}
-\tab{5}\spadcommand{r2 := sqrt(153)$Ran\free{Ran }\bound{r2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch49}
-\begin{paste}{RealClosureXmpPageFull49}{RealClosureXmpPageEmpty49}
-\pastebutton{RealClosureXmpPageFull49}{\hidepaste}
-\tab{5}\spadcommand{alpha2 := sqrt(r2-11,5)\free{r2 }\bound{alpha2 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄÄ¿
-         5³ ÚÄÄÄ¿
-   (49)  \³\³153  - 11
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty49}
-\begin{paste}{RealClosureXmpPageEmpty49}{RealClosureXmpPagePatch49}
-\pastebutton{RealClosureXmpPageEmpty49}{\showpaste}
-\tab{5}\spadcommand{alpha2 := sqrt(r2-11,5)\free{r2 }\bound{alpha2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch50}
-\begin{paste}{RealClosureXmpPageFull50}{RealClosureXmpPageEmpty50}
-\pastebutton{RealClosureXmpPageFull50}{\hidepaste}
-\tab{5}\spadcommand{beta2 := -sqrt(r2+11,5)\free{r2 }\bound{beta2 }}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄÄÄÄÄÄÄÄ¿
-           5³ ÚÄÄÄ¿
-   (50)  - \³\³153  + 11
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty50}
-\begin{paste}{RealClosureXmpPageEmpty50}{RealClosureXmpPagePatch50}
-\pastebutton{RealClosureXmpPageEmpty50}{\showpaste}
-\tab{5}\spadcommand{beta2 := -sqrt(r2+11,5)\free{r2 }\bound{beta2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch51}
-\begin{paste}{RealClosureXmpPageFull51}{RealClosureXmpPageEmpty51}
-\pastebutton{RealClosureXmpPageFull51}{\hidepaste}
-\tab{5}\spadcommand{qol(alpha2+beta2)\free{qol }\free{alpha2 }\free{beta2 }}
-\indentrel{3}\begin{verbatim}
-   (51)  0
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty51}
-\begin{paste}{RealClosureXmpPageEmpty51}{RealClosureXmpPagePatch51}
-\pastebutton{RealClosureXmpPageEmpty51}{\showpaste}
-\tab{5}\spadcommand{qol(alpha2+beta2)\free{qol }\free{alpha2 }\free{beta2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch52}
-\begin{paste}{RealClosureXmpPageFull52}{RealClosureXmpPageEmpty52}
-\pastebutton{RealClosureXmpPageFull52}{\hidepaste}
-\tab{5}\spadcommand{dst1:=sqrt(9+4*s2)=1+2*s2\free{s2 }\bound{dst1 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄ¿
-          ³  ÚÄ¿         ÚÄ¿
-   (52)  \³4\³2  + 9 = 2\³2  + 1
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty52}
-\begin{paste}{RealClosureXmpPageEmpty52}{RealClosureXmpPagePatch52}
-\pastebutton{RealClosureXmpPageEmpty52}{\showpaste}
-\tab{5}\spadcommand{dst1:=sqrt(9+4*s2)=1+2*s2\free{s2 }\bound{dst1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch53}
-\begin{paste}{RealClosureXmpPageFull53}{RealClosureXmpPageEmpty53}
-\pastebutton{RealClosureXmpPageFull53}{\hidepaste}
-\tab{5}\spadcommand{dst1::Boolean\free{dst1 }}
-\indentrel{3}\begin{verbatim}
-   (53)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty53}
-\begin{paste}{RealClosureXmpPageEmpty53}{RealClosureXmpPagePatch53}
-\pastebutton{RealClosureXmpPageEmpty53}{\showpaste}
-\tab{5}\spadcommand{dst1::Boolean\free{dst1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch54}
-\begin{paste}{RealClosureXmpPageFull54}{RealClosureXmpPageEmpty54}
-\pastebutton{RealClosureXmpPageFull54}{\hidepaste}
-\tab{5}\spadcommand{s6:Ran:=sqrt 6\free{Ran }\bound{s6 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄ¿
-   (54)  \³6
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty54}
-\begin{paste}{RealClosureXmpPageEmpty54}{RealClosureXmpPagePatch54}
-\pastebutton{RealClosureXmpPageEmpty54}{\showpaste}
-\tab{5}\spadcommand{s6:Ran:=sqrt 6\free{Ran }\bound{s6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch55}
-\begin{paste}{RealClosureXmpPageFull55}{RealClosureXmpPageEmpty55}
-\pastebutton{RealClosureXmpPageFull55}{\hidepaste}
-\tab{5}\spadcommand{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3\free{s6 }\free{s3 }\bound{dst2 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄ¿
-          ³    ÚÄ¿         ³  ÚÄ¿         ÚÄ¿
-   (55)  \³- 2\³6  + 5  + \³2\³6  + 5 = 2\³3
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty55}
-\begin{paste}{RealClosureXmpPageEmpty55}{RealClosureXmpPagePatch55}
-\pastebutton{RealClosureXmpPageEmpty55}{\showpaste}
-\tab{5}\spadcommand{dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3\free{s6 }\free{s3 }\bound{dst2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch56}
-\begin{paste}{RealClosureXmpPageFull56}{RealClosureXmpPageEmpty56}
-\pastebutton{RealClosureXmpPageFull56}{\hidepaste}
-\tab{5}\spadcommand{dst2::Boolean\free{dst2 }}
-\indentrel{3}\begin{verbatim}
-   (56)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty56}
-\begin{paste}{RealClosureXmpPageEmpty56}{RealClosureXmpPagePatch56}
-\pastebutton{RealClosureXmpPageEmpty56}{\showpaste}
-\tab{5}\spadcommand{dst2::Boolean\free{dst2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch57}
-\begin{paste}{RealClosureXmpPageFull57}{RealClosureXmpPageEmpty57}
-\pastebutton{RealClosureXmpPageFull57}{\hidepaste}
-\tab{5}\spadcommand{s29:Ran:=sqrt 29\free{Ran }\bound{s29 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄ¿
-   (57)  \³29
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty57}
-\begin{paste}{RealClosureXmpPageEmpty57}{RealClosureXmpPagePatch57}
-\pastebutton{RealClosureXmpPageEmpty57}{\showpaste}
-\tab{5}\spadcommand{s29:Ran:=sqrt 29\free{Ran }\bound{s29 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch58}
-\begin{paste}{RealClosureXmpPageFull58}{RealClosureXmpPageEmpty58}
-\pastebutton{RealClosureXmpPageFull58}{\hidepaste}
-\tab{5}\spadcommand{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5\free{s29 }\free{s5 }\bound{dst4 }}
-\indentrel{3}\begin{verbatim}
-   (58)
-    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-    ³  ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-    ³  ³     ÚÄÄ¿           ÚÄÄ¿
-   \³2\³- 10\³29  + 55  - 2\³29  + 16  =
-        ÚÄÄÄÄÄÄÄÄÄÄÄ¿    ÚÄÄÄÄÄÄÄÄÄÄ¿
-        ³  ÚÄÄ¿          ³  ÚÄ¿          ÚÄ¿
-     - \³2\³29  + 11  + \³2\³5  + 22  + \³5
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty58}
-\begin{paste}{RealClosureXmpPageEmpty58}{RealClosureXmpPagePatch58}
-\pastebutton{RealClosureXmpPageEmpty58}{\showpaste}
-\tab{5}\spadcommand{dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5\free{s29 }\free{s5 }\bound{dst4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch59}
-\begin{paste}{RealClosureXmpPageFull59}{RealClosureXmpPageEmpty59}
-\pastebutton{RealClosureXmpPageFull59}{\hidepaste}
-\tab{5}\spadcommand{dst4::Boolean\free{dst4 }}
-\indentrel{3}\begin{verbatim}
-   (59)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty59}
-\begin{paste}{RealClosureXmpPageEmpty59}{RealClosureXmpPagePatch59}
-\pastebutton{RealClosureXmpPageEmpty59}{\showpaste}
-\tab{5}\spadcommand{dst4::Boolean\free{dst4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch60}
-\begin{paste}{RealClosureXmpPageFull60}{RealClosureXmpPageEmpty60}
-\pastebutton{RealClosureXmpPageFull60}{\hidepaste}
-\tab{5}\spadcommand{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5\free{s2 }\free{s5 }\bound{dst6 }}
-\indentrel{3}\begin{verbatim}
-   (60)
-    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-    ³    ÚÄ¿       ÚÄ¿      ÚÄ¿
-   \³(34\³2  + 46)\³5  + 70\³2  + 112  =
-       ÚÄ¿      ÚÄ¿     ÚÄ¿
-     (\³2  + 3)\³5  + 4\³2  + 5
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty60}
-\begin{paste}{RealClosureXmpPageEmpty60}{RealClosureXmpPagePatch60}
-\pastebutton{RealClosureXmpPageEmpty60}{\showpaste}
-\tab{5}\spadcommand{dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5\free{s2 }\free{s5 }\bound{dst6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch61}
-\begin{paste}{RealClosureXmpPageFull61}{RealClosureXmpPageEmpty61}
-\pastebutton{RealClosureXmpPageFull61}{\hidepaste}
-\tab{5}\spadcommand{dst6::Boolean\free{dst6 }}
-\indentrel{3}\begin{verbatim}
-   (61)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty61}
-\begin{paste}{RealClosureXmpPageEmpty61}{RealClosureXmpPagePatch61}
-\pastebutton{RealClosureXmpPageEmpty61}{\showpaste}
-\tab{5}\spadcommand{dst6::Boolean\free{dst6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch62}
-\begin{paste}{RealClosureXmpPageFull62}{RealClosureXmpPageEmpty62}
-\pastebutton{RealClosureXmpPageFull62}{\hidepaste}
-\tab{5}\spadcommand{f3:Ran:=sqrt(3,5)\free{Ran }\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-         5ÚÄ¿
-   (62)  \³3
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty62}
-\begin{paste}{RealClosureXmpPageEmpty62}{RealClosureXmpPagePatch62}
-\pastebutton{RealClosureXmpPageEmpty62}{\showpaste}
-\tab{5}\spadcommand{f3:Ran:=sqrt(3,5)\free{Ran }\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch63}
-\begin{paste}{RealClosureXmpPageFull63}{RealClosureXmpPageEmpty63}
-\pastebutton{RealClosureXmpPageFull63}{\hidepaste}
-\tab{5}\spadcommand{f25:Ran:=sqrt(1/25,5)\free{Ran }\bound{f25 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄ¿
-          ³ 1
-   (63)  5³ÄÄ
-         \³25
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty63}
-\begin{paste}{RealClosureXmpPageEmpty63}{RealClosureXmpPagePatch63}
-\pastebutton{RealClosureXmpPageEmpty63}{\showpaste}
-\tab{5}\spadcommand{f25:Ran:=sqrt(1/25,5)\free{Ran }\bound{f25 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch64}
-\begin{paste}{RealClosureXmpPageFull64}{RealClosureXmpPageEmpty64}
-\pastebutton{RealClosureXmpPageFull64}{\hidepaste}
-\tab{5}\spadcommand{f32:Ran:=sqrt(32/5,5)\free{Ran }\bound{f32 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄ¿
-          ³32
-   (64)  5³ÄÄ
-         \³ 5
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty64}
-\begin{paste}{RealClosureXmpPageEmpty64}{RealClosureXmpPagePatch64}
-\pastebutton{RealClosureXmpPageEmpty64}{\showpaste}
-\tab{5}\spadcommand{f32:Ran:=sqrt(32/5,5)\free{Ran }\bound{f32 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch65}
-\begin{paste}{RealClosureXmpPageFull65}{RealClosureXmpPageEmpty65}
-\pastebutton{RealClosureXmpPageFull65}{\hidepaste}
-\tab{5}\spadcommand{f27:Ran:=sqrt(27/5,5)\free{Ran }\bound{f27 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄ¿
-          ³27
-   (65)  5³ÄÄ
-         \³ 5
-                     Type: RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty65}
-\begin{paste}{RealClosureXmpPageEmpty65}{RealClosureXmpPagePatch65}
-\pastebutton{RealClosureXmpPageEmpty65}{\showpaste}
-\tab{5}\spadcommand{f27:Ran:=sqrt(27/5,5)\free{Ran }\bound{f27 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch66}
-\begin{paste}{RealClosureXmpPageFull66}{RealClosureXmpPageEmpty66}
-\pastebutton{RealClosureXmpPageFull66}{\hidepaste}
-\tab{5}\spadcommand{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32 }\free{f27 }\free{f25 }\free{f3 }\bound{dst5 }}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-          ³   ÚÄÄ¿    ÚÄÄ¿                         ÚÄÄ¿
-          ³   ³27     ³32       5ÚÄ¿2   5ÚÄ¿       ³ 1
-   (66)  3³- 5³ÄÄ  + 5³ÄÄ  = (- \³3   + \³3  + 1) 5³ÄÄ
-         \³  \³ 5    \³ 5                         \³25
-            Type: Equation RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty66}
-\begin{paste}{RealClosureXmpPageEmpty66}{RealClosureXmpPagePatch66}
-\pastebutton{RealClosureXmpPageEmpty66}{\showpaste}
-\tab{5}\spadcommand{dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)\free{f32 }\free{f27 }\free{f25 }\free{f3 }\bound{dst5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPagePatch67}
-\begin{paste}{RealClosureXmpPageFull67}{RealClosureXmpPageEmpty67}
-\pastebutton{RealClosureXmpPageFull67}{\hidepaste}
-\tab{5}\spadcommand{dst5::Boolean\free{dst5 }}
-\indentrel{3}\begin{verbatim}
-   (67)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RealClosureXmpPageEmpty67}
-\begin{paste}{RealClosureXmpPageEmpty67}{RealClosureXmpPagePatch67}
-\pastebutton{RealClosureXmpPageEmpty67}{\showpaste}
-\tab{5}\spadcommand{dst5::Boolean\free{dst5 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/regset.pht b/books/pages/regset.pht
deleted file mode 100644
index 9c62078..0000000
--- a/books/pages/regset.pht
+++ /dev/null
@@ -1,1012 +0,0 @@
-\begin{patch}{RegularTriangularSetXmpPagePatch1}
-\begin{paste}{RegularTriangularSetXmpPageFull1}{RegularTriangularSetXmpPageEmpty1}
-\pastebutton{RegularTriangularSetXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty1}
-\begin{paste}{RegularTriangularSetXmpPageEmpty1}{RegularTriangularSetXmpPagePatch1}
-\pastebutton{RegularTriangularSetXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch2}
-\begin{paste}{RegularTriangularSetXmpPageFull2}{RegularTriangularSetXmpPageEmpty2}
-\pastebutton{RegularTriangularSetXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [x,y,z,t]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty2}
-\begin{paste}{RegularTriangularSetXmpPageEmpty2}{RegularTriangularSetXmpPagePatch2}
-\pastebutton{RegularTriangularSetXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch3}
-\begin{paste}{RegularTriangularSetXmpPageFull3}{RegularTriangularSetXmpPageEmpty3}
-\pastebutton{RegularTriangularSetXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\indentrel{3}\begin{verbatim}
-   (3)  OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty3}
-\begin{paste}{RegularTriangularSetXmpPageEmpty3}{RegularTriangularSetXmpPagePatch3}
-\pastebutton{RegularTriangularSetXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch4}
-\begin{paste}{RegularTriangularSetXmpPageFull4}{RegularTriangularSetXmpPageEmpty4}
-\pastebutton{RegularTriangularSetXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\indentrel{3}\begin{verbatim}
-   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty4}
-\begin{paste}{RegularTriangularSetXmpPageEmpty4}{RegularTriangularSetXmpPagePatch4}
-\pastebutton{RegularTriangularSetXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch5}
-\begin{paste}{RegularTriangularSetXmpPageFull5}{RegularTriangularSetXmpPageEmpty5}
-\pastebutton{RegularTriangularSetXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  NewSparseMultivariatePolynomial(Integer,OrderedVariable
-  List [x,y,z,t])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty5}
-\begin{paste}{RegularTriangularSetXmpPageEmpty5}{RegularTriangularSetXmpPagePatch5}
-\pastebutton{RegularTriangularSetXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch6}
-\begin{paste}{RegularTriangularSetXmpPageFull6}{RegularTriangularSetXmpPageEmpty6}
-\pastebutton{RegularTriangularSetXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (6)  x
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty6}
-\begin{paste}{RegularTriangularSetXmpPageEmpty6}{RegularTriangularSetXmpPagePatch6}
-\pastebutton{RegularTriangularSetXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch7}
-\begin{paste}{RegularTriangularSetXmpPageFull7}{RegularTriangularSetXmpPageEmpty7}
-\pastebutton{RegularTriangularSetXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (7)  y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty7}
-\begin{paste}{RegularTriangularSetXmpPageEmpty7}{RegularTriangularSetXmpPagePatch7}
-\pastebutton{RegularTriangularSetXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch8}
-\begin{paste}{RegularTriangularSetXmpPageFull8}{RegularTriangularSetXmpPageEmpty8}
-\pastebutton{RegularTriangularSetXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (8)  z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty8}
-\begin{paste}{RegularTriangularSetXmpPageEmpty8}{RegularTriangularSetXmpPagePatch8}
-\pastebutton{RegularTriangularSetXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch9}
-\begin{paste}{RegularTriangularSetXmpPageFull9}{RegularTriangularSetXmpPageEmpty9}
-\pastebutton{RegularTriangularSetXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (9)  t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty9}
-\begin{paste}{RegularTriangularSetXmpPageEmpty9}{RegularTriangularSetXmpPagePatch9}
-\pastebutton{RegularTriangularSetXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch10}
-\begin{paste}{RegularTriangularSetXmpPageFull10}{RegularTriangularSetXmpPageEmpty10}
-\pastebutton{RegularTriangularSetXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\indentrel{3}\begin{verbatim}
-   (10)
-  RegularTriangularSet(Integer,IndexedExponents OrderedVa
-  riableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewS
-  parseMultivariatePolynomial(Integer,OrderedVariableList
-   [x,y,z,t]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty10}
-\begin{paste}{RegularTriangularSetXmpPageEmpty10}{RegularTriangularSetXmpPagePatch10}
-\pastebutton{RegularTriangularSetXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch11}
-\begin{paste}{RegularTriangularSetXmpPageFull11}{RegularTriangularSetXmpPageEmpty11}
-\pastebutton{RegularTriangularSetXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-          31    6
-   (11)  x   - x  - x - y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty11}
-\begin{paste}{RegularTriangularSetXmpPageEmpty11}{RegularTriangularSetXmpPagePatch11}
-\pastebutton{RegularTriangularSetXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch12}
-\begin{paste}{RegularTriangularSetXmpPageFull12}{RegularTriangularSetXmpPageEmpty12}
-\pastebutton{RegularTriangularSetXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-          8
-   (12)  x  - z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty12}
-\begin{paste}{RegularTriangularSetXmpPageEmpty12}{RegularTriangularSetXmpPagePatch12}
-\pastebutton{RegularTriangularSetXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch13}
-\begin{paste}{RegularTriangularSetXmpPageFull13}{RegularTriangularSetXmpPageEmpty13}
-\pastebutton{RegularTriangularSetXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-          10
-   (13)  x   - t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty13}
-\begin{paste}{RegularTriangularSetXmpPageEmpty13}{RegularTriangularSetXmpPagePatch13}
-\pastebutton{RegularTriangularSetXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch14}
-\begin{paste}{RegularTriangularSetXmpPageFull14}{RegularTriangularSetXmpPageEmpty14}
-\pastebutton{RegularTriangularSetXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-           31    6          8      10
-   (14)  [x   - x  - x - y,x  - z,x   - t]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty14}
-\begin{paste}{RegularTriangularSetXmpPageEmpty14}{RegularTriangularSetXmpPagePatch14}
-\pastebutton{RegularTriangularSetXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch15}
-\begin{paste}{RegularTriangularSetXmpPageFull15}{RegularTriangularSetXmpPageEmpty15}
-\pastebutton{RegularTriangularSetXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [
-       5    4       2     3     8     5    3    2
-     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
-        4                2
-      (t  - t)x - t y - z }
-     ]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty15}
-\begin{paste}{RegularTriangularSetXmpPageEmpty15}{RegularTriangularSetXmpPagePatch15}
-\pastebutton{RegularTriangularSetXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch16}
-\begin{paste}{RegularTriangularSetXmpPageFull16}{RegularTriangularSetXmpPageEmpty16}
-\pastebutton{RegularTriangularSetXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (16)
-   [
-       5    4       2     3     8     5    3    2
-     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
-        4                2
-      (t  - t)x - t y - z }
-     ,
-      3      5          2     3         2
-    {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t},
-    {t,z,y,x}]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty16}
-\begin{paste}{RegularTriangularSetXmpPageEmpty16}{RegularTriangularSetXmpPagePatch16}
-\pastebutton{RegularTriangularSetXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch17}
-\begin{paste}{RegularTriangularSetXmpPageFull17}{RegularTriangularSetXmpPageEmpty17}
-\pastebutton{RegularTriangularSetXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
-\indentrel{3}\begin{verbatim}
-   (17)  [1,0,0]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty17}
-\begin{paste}{RegularTriangularSetXmpPageEmpty17}{RegularTriangularSetXmpPagePatch17}
-\pastebutton{RegularTriangularSetXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts]\free{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch18}
-\begin{paste}{RegularTriangularSetXmpPageFull18}{RegularTriangularSetXmpPageEmpty18}
-\pastebutton{RegularTriangularSetXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{f1 := y**2*z+2*x*y*t-2*x-z\free{z }\free{x }\free{y }\free{t }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                          2
-   (18)  (2t y - 2)x + z y  - z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty18}
-\begin{paste}{RegularTriangularSetXmpPageEmpty18}{RegularTriangularSetXmpPagePatch18}
-\pastebutton{RegularTriangularSetXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{f1 := y**2*z+2*x*y*t-2*x-z\free{z }\free{x }\free{y }\free{t }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch19}
-\begin{paste}{RegularTriangularSetXmpPageFull19}{RegularTriangularSetXmpPageEmpty19}
-\pastebutton{RegularTriangularSetXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (19)
-          3              2        2              3      2
-     - z x  + (4t y + 4)x  + (4z y  + 4z)x + 2t y  - 10y
-   + 
-     - 10t y + 2
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty19}
-\begin{paste}{RegularTriangularSetXmpPageEmpty19}{RegularTriangularSetXmpPagePatch19}
-\pastebutton{RegularTriangularSetXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch20}
-\begin{paste}{RegularTriangularSetXmpPageFull20}{RegularTriangularSetXmpPageEmpty20}
-\pastebutton{RegularTriangularSetXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{f3 := 2*y*z*t+x*t**2-x-2*z\free{z }\free{x }\free{y }\free{t }\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-           2
-   (20)  (t  - 1)x + 2t z y - 2z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty20}
-\begin{paste}{RegularTriangularSetXmpPageEmpty20}{RegularTriangularSetXmpPagePatch20}
-\pastebutton{RegularTriangularSetXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{f3 := 2*y*z*t+x*t**2-x-2*z\free{z }\free{x }\free{y }\free{t }\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch21}
-\begin{paste}{RegularTriangularSetXmpPageFull21}{RegularTriangularSetXmpPageEmpty21}
-\pastebutton{RegularTriangularSetXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f4 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-         3      2                2     3             2
-     (- z  + (4t  + 4)z)x + (4t z  + 2t  - 10t)y + 4z
-   + 
-          2
-     - 10t  + 2
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty21}
-\begin{paste}{RegularTriangularSetXmpPageEmpty21}{RegularTriangularSetXmpPagePatch21}
-\pastebutton{RegularTriangularSetXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\bound{f4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch22}
-\begin{paste}{RegularTriangularSetXmpPageFull22}{RegularTriangularSetXmpPageEmpty22}
-\pastebutton{RegularTriangularSetXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{lf := [f1, f2, f3, f4]\free{f1 }\free{f2 }\free{f3 }\free{f4 }\bound{lf }}
-\indentrel{3}\begin{verbatim}
-   (22)
-                     2
-   [(2t y - 2)x + z y  - z,
-
-            3              2        2              3
-       - z x  + (4t y + 4)x  + (4z y  + 4z)x + 2t y
-     + 
-            2
-       - 10y  - 10t y + 2
-     ,
-      2
-    (t  - 1)x + 2t z y - 2z,
-
-           3      2                2     3             2
-       (- z  + (4t  + 4)z)x + (4t z  + 2t  - 10t)y + 4z
-     + 
-            2
-       - 10t  + 2
-     ]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty22}
-\begin{paste}{RegularTriangularSetXmpPageEmpty22}{RegularTriangularSetXmpPagePatch22}
-\pastebutton{RegularTriangularSetXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{lf := [f1, f2, f3, f4]\free{f1 }\free{f2 }\free{f3 }\free{f4 }\bound{lf }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch23}
-\begin{paste}{RegularTriangularSetXmpPageFull23}{RegularTriangularSetXmpPageEmpty23}
-\pastebutton{RegularTriangularSetXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lf)$T\free{lf }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (23)
-   [
-       2       8      6       2
-     {t  - 1, z  - 16z  + 256z  - 256, t y - 1,
-        3            2
-      (z  - 8z)x - 8z  + 16}
-     ,
-       2      2     2
-    {3t  + 1,z  - 7t  - 1,y + t,x + z},
-      8      6      2         3            2
-    {t  - 10t  + 10t  - 1,z,(t  - 5t)y - 5t  + 1,x},
-      2      2
-    {t  + 3,z  - 4,y + t,x - z}]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty23}
-\begin{paste}{RegularTriangularSetXmpPageEmpty23}{RegularTriangularSetXmpPagePatch23}
-\pastebutton{RegularTriangularSetXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lf)$T\free{lf }\free{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch24}
-\begin{paste}{RegularTriangularSetXmpPageFull24}{RegularTriangularSetXmpPageEmpty24}
-\pastebutton{RegularTriangularSetXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{lts2 := zeroSetSplit(lf,false)$T\free{lf }\free{T }\bound{lts2 }}
-\indentrel{3}\begin{verbatim}
-   (24)
-      8      6      2         3            2
-   [{t  - 10t  + 10t  - 1,z,(t  - 5t)y - 5t  + 1,x},
-
-       2       8      6       2
-     {t  - 1, z  - 16z  + 256z  - 256, t y - 1,
-        3            2
-      (z  - 8z)x - 8z  + 16}
-     ,
-       2      2     2
-    {3t  + 1,z  - 7t  - 1,y + t,x + z},
-      2      2
-    {t  + 3,z  - 4,y + t,x - z}]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty24}
-\begin{paste}{RegularTriangularSetXmpPageEmpty24}{RegularTriangularSetXmpPagePatch24}
-\pastebutton{RegularTriangularSetXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{lts2 := zeroSetSplit(lf,false)$T\free{lf }\free{T }\bound{lts2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch25}
-\begin{paste}{RegularTriangularSetXmpPageFull25}{RegularTriangularSetXmpPageEmpty25}
-\pastebutton{RegularTriangularSetXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts2]\free{lts2 }}
-\indentrel{3}\begin{verbatim}
-   (25)  [0,0,0,0]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty25}
-\begin{paste}{RegularTriangularSetXmpPageEmpty25}{RegularTriangularSetXmpPagePatch25}
-\pastebutton{RegularTriangularSetXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{[coHeight(ts) for ts in lts2]\free{lts2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch26}
-\begin{paste}{RegularTriangularSetXmpPageFull26}{RegularTriangularSetXmpPageEmpty26}
-\pastebutton{RegularTriangularSetXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{degrees := [degree(ts) for ts in lts2]\free{lts2 }\bound{degrees }}
-\indentrel{3}\begin{verbatim}
-   (26)  [8,16,4,4]
-                          Type: List NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty26}
-\begin{paste}{RegularTriangularSetXmpPageEmpty26}{RegularTriangularSetXmpPagePatch26}
-\pastebutton{RegularTriangularSetXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{degrees := [degree(ts) for ts in lts2]\free{lts2 }\bound{degrees }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch27}
-\begin{paste}{RegularTriangularSetXmpPageFull27}{RegularTriangularSetXmpPageEmpty27}
-\pastebutton{RegularTriangularSetXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,degrees)\free{degrees }}
-\indentrel{3}\begin{verbatim}
-   (27)  32
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty27}
-\begin{paste}{RegularTriangularSetXmpPageEmpty27}{RegularTriangularSetXmpPagePatch27}
-\pastebutton{RegularTriangularSetXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{reduce(+,degrees)\free{degrees }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch28}
-\begin{paste}{RegularTriangularSetXmpPageFull28}{RegularTriangularSetXmpPageEmpty28}
-\pastebutton{RegularTriangularSetXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{u : R := 2\free{R }\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (28)  2
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty28}
-\begin{paste}{RegularTriangularSetXmpPageEmpty28}{RegularTriangularSetXmpPagePatch28}
-\pastebutton{RegularTriangularSetXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{u : R := 2\free{R }\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch29}
-\begin{paste}{RegularTriangularSetXmpPageFull29}{RegularTriangularSetXmpPageEmpty29}
-\pastebutton{RegularTriangularSetXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q1 }}
-\indentrel{3}\begin{verbatim}
-   (29)
-       2           2  2
-     (y  - 2t y + t )x
-   + 
-          2                            2           2
-     (- 2y  + ((2t + 4)z + 2t)y + (- 2t  + 2)z - 4t  - 2)x
-   + 
-      2                      2       2          2
-     y  + (- 2t z - 4t)y + (t  + 10)z  - 8z + 4t  + 2
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty29}
-\begin{paste}{RegularTriangularSetXmpPageEmpty29}{RegularTriangularSetXmpPagePatch29}
-\pastebutton{RegularTriangularSetXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch30}
-\begin{paste}{RegularTriangularSetXmpPageFull30}{RegularTriangularSetXmpPageEmpty30}
-\pastebutton{RegularTriangularSetXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q2 }}
-\indentrel{3}\begin{verbatim}
-                                               2
-   (30)  (- 3z y + 2t z + t)x + (z + 4)y + 4t z  - 7t z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty30}
-\begin{paste}{RegularTriangularSetXmpPageEmpty30}{RegularTriangularSetXmpPagePatch30}
-\pastebutton{RegularTriangularSetXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{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\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch31}
-\begin{paste}{RegularTriangularSetXmpPageFull31}{RegularTriangularSetXmpPageEmpty31}
-\pastebutton{RegularTriangularSetXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q3 }}
-\indentrel{3}\begin{verbatim}
-                         2
-   (31)  (- 2z - 2)x - 2z  + 8z - 2
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty31}
-\begin{paste}{RegularTriangularSetXmpPageEmpty31}{RegularTriangularSetXmpPagePatch31}
-\pastebutton{RegularTriangularSetXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{q3 := -u**2*(z-1)**2+ 2*z*(z-x)-2*(x-1)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch32}
-\begin{paste}{RegularTriangularSetXmpPageFull32}{RegularTriangularSetXmpPageEmpty32}
-\pastebutton{RegularTriangularSetXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{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)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q4 }}
-\indentrel{3}\begin{verbatim}
-   (32)
-        2     2      2        2                      2
-     (3y  - 3t  - 4)x  + (- 6y  + (12t z + 12t)y + 6t z)x
-   + 
-       2                       2      2         2
-     3y  + (12t z - 12t)y + (9t  + 4)z  + (- 24t  - 4)z
-   + 
-        2
-     12t  + 4
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty32}
-\begin{paste}{RegularTriangularSetXmpPageEmpty32}{RegularTriangularSetXmpPagePatch32}
-\pastebutton{RegularTriangularSetXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{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)\free{z }\free{x }\free{y }\free{t }\free{u }\bound{q4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch33}
-\begin{paste}{RegularTriangularSetXmpPageFull33}{RegularTriangularSetXmpPageEmpty33}
-\pastebutton{RegularTriangularSetXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{lq := [q1, q2, q3, q4]\free{q1 }\free{q2 }\free{q3 }\free{q4 }\bound{lq }}
-\indentrel{3}\begin{verbatim}
-   (33)
-   [
-         2           2  2
-       (y  - 2t y + t )x
-     + 
-               2                            2           2
-           - 2y  + ((2t + 4)z + 2t)y + (- 2t  + 2)z - 4t
-         + 
-           - 2
-      *
-         x
-     + 
-        2                      2       2          2
-       y  + (- 2t z - 4t)y + (t  + 10)z  - 8z + 4t  + 2
-     ,
-                                          2
-    (- 3z y + 2t z + t)x + (z + 4)y + 4t z  - 7t z,
-                    2
-    (- 2z - 2)x - 2z  + 8z - 2,
-
-          2     2      2
-       (3y  - 3t  - 4)x
-     + 
-            2                      2        2
-       (- 6y  + (12t z + 12t)y + 6t z)x + 3y
-     + 
-                           2      2         2            2
-       (12t z - 12t)y + (9t  + 4)z  + (- 24t  - 4)z + 12t
-     + 
-       4
-     ]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty33}
-\begin{paste}{RegularTriangularSetXmpPageEmpty33}{RegularTriangularSetXmpPagePatch33}
-\pastebutton{RegularTriangularSetXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{lq := [q1, q2, q3, q4]\free{q1 }\free{q2 }\free{q3 }\free{q4 }\bound{lq }}
-\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPagePatch34}
-\begin{paste}{RegularTriangularSetXmpPageFull34}{RegularTriangularSetXmpPageEmpty34}
-\pastebutton{RegularTriangularSetXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lq,true,true)$T\free{lq }\free{T }}
-\indentrel{3}\begin{verbatim}
-
-   *** QCMPACK Statistics ***
-      Table     size:  36
-      Entries reused:  255
-
-   *** REGSETGCD: Gcd Statistics ***
-      Table     size:  125
-      Entries reused:  0
-
-   *** REGSETGCD: Inv Set Statistics ***
-      Table     size:  30
-      Entries reused:  0
-   (34)
-   [
-     {
-                         24                   23
-         960725655771966t   + 386820897948702t
-       + 
-                          22                    21
-         8906817198608181t   + 2704966893949428t
-       + 
-                           20                    19
-         37304033340228264t   + 7924782817170207t
-       + 
-                           18                     17
-         93126799040354990t   + 13101273653130910t
-       + 
-                            16                     15
-         156146250424711858t   + 16626490957259119t
-       + 
-                            14                     13
-         190699288479805763t   + 24339173367625275t
-       + 
-                            12                     11
-         180532313014960135t   + 35288089030975378t
-       + 
-                            10                     9
-         135054975747656285t   + 34733736952488540t
-       + 
-                           8                     7
-         75947600354493972t  + 19772555692457088t
-       + 
-                           6                    5
-         28871558573755428t  + 5576152439081664t
-       + 
-                          4                   3
-         6321711820352976t  + 438314209312320t
-       + 
-                       2
-       581105748367008t  - 60254467992576t + 1449115951104
-       ,
-
-              266042108694913023855152657370520823616684_
-               74181372891857784
-            *
-                23
-               t
-           + 
-              443104378424686086067294899528296664238693_
-               556855017735265295
-            *
-                22
-               t
-           + 
-              279078393286701234679141342358988327155321_
-               305829547090310242
-            *
-                21
-               t
-           + 
-              339027636141323246510761717661554305462062_
-               6391823613392185226
-            *
-                20
-               t
-           + 
-              941478179503540575554198645220352803719793_
-               196473813837434129
-            *
-                19
-               t
-           + 
-              115478551946794752422116967496739493525857_
-               47674184320988144390
-            *
-                18
-               t
-           + 
-              134360956676559778988170165669941321646721_
-               5660333356417241432
-            *
-                17
-               t
-           + 
-              232338138681478735039335516171756408598991_
-               02987800663566699334
-            *
-                16
-               t
-           + 
-              869574020537672336950845440508790740850931_
-               336484983573386433
-            *
-                15
-               t
-           + 
-              315615543058769348754194614869699265542417_
-               50065103460820476969
-            *
-                14
-               t
-           + 
-              127140099028771748744206595254773187955482_
-               3889855386072264931
-            *
-                13
-               t
-           + 
-              319450899138637360448025269640795401983370_
-               49550503295825160523
-            *
-                12
-               t
-           + 
-              373873570428814450987137156023284588443910_
-               2270778010470931960
-            *
-                11
-               t
-           + 
-              252939975123914120261446014357711315875619_
-               05532992045692885927
-            *
-                10
-               t
-           + 
-              521023900984606712346926279987005277341047_
-               1135950175008046524
-            *
-                9
-               t
-           + 
-              150838879869302971662598705686082704274031_
-               87606238713491129188
-            *
-                8
-               t
-           + 
-              352208723469293012638368627077577955348176_
-               9125670839075109000
-            *
-                7
-               t
-           + 
-              607994520039568101308653379256888649110124_
-               4247440034969288588
-            *
-                6
-               t
-           + 
-              109063485243390088819991375624798602319698_
-               7723469934933603680
-            *
-                5
-               t
-           + 
-              140581943087190710229443253753833540210283_
-               8994019667487458352
-            *
-                4
-               t
-           + 
-              880715279503204500725366712655077488783478_
-               28884933605202432
-            *
-                3
-               t
-           + 
-              135882489433640933229781177155977768016065_
-               765482378657129440
-            *
-                2
-               t
-           + 
-             -
-                 139572834428822622305598946074003140825_
-                  16690749975646520320
-               *
-                  t
-           + 
-            33463769297318929927725832570930847259211711_
-             2855749713920
-        *
-           z
-       + 
-          8567175484043952879756725964506833932149637101_
-           090521164936
-        *
-            23
-           t
-       + 
-          1497923928642017918457083740327289424987975192_
-           51667250945721
-        *
-            22
-           t
-       + 
-          7725837178364582215741086158215976413812300307_
-           4190374021550
-        *
-            21
-           t
-       + 
-          1108862254126854214498918940708612211184560556_
-           764334742191654
-        *
-            20
-           t
-       + 
-          2132504944606788652197744801068260537838157896_
-           21501732672327
-        *
-            19
-           t
-       + 
-          3668929075160666195729177894178343514501987898_
-           410131431699882
-        *
-            18
-           t
-       + 
-          1713889064710018728794901243687482363147654590_
-           39567820048872
-        *
-            17
-           t
-       + 
-          7192430746914602166660233477331022483144921771_
-           645523139658986
-        *
-            16
-           t
-       + 
-         -
-             1287986746896900728128799656330902919596631_
-              43108437362453385
-           *
-               15
-              t
-       + 
-          9553010858341425909306423132921134040856028790_
-           803526430270671
-        *
-            14
-           t
-       + 
-         -
-             1329609624567549287453868764630043782465845_
-              8709144441096603
-           *
-               13
-              t
-       + 
-          9475806805814145326383085518325333106881690568_
-           644274964864413
-        *
-            12
-           t
-       + 
-          8032346879251334588616598556640849276062987947_
-           99856265539336
-        *
-            11
-           t
-       + 
-          7338202759292865165994622349207516400662174302_
-           614595173333825
-        *
-            10
-           t
-       + 
-          1308004628480367351164369613111971668880538855_
-           640917200187108
-        *
-            9
-           t
-       + 
-          4268059455741255498880229598973705747098216067_
-           697754352634748
-        *
-            8
-           t
-       + 
-          8928935268585140957913187759040933001030456015_
-           14470613580600
-        *
-            7
-           t
-       + 
-          1679152575460683956631925852181341501981598137_
-           465328797013652
-        *
-            6
-           t
-       + 
-          2697574157679229803789671541433578355441131582_
-           80591408043936
-        *
-            5
-           t
-       + 
-          3809515278646575290335808298012827240813453726_
-           80202920198224
-        *
-            4
-           t
-       + 
-          1978554529422849503299882693760134113272503533_
-           9452913286656
-        *
-            3
-           t
-       + 
-          3647741205738478294236663530339663776330392817_
-           4935079178528
-        *
-            2
-           t
-       + 
-         -
-             3722212879279038648713080422224976273210890_
-              229485838670848
-           *
-              t
-       + 
-        890797248531143483612306344840138620247285999068_
-         74105856
-       ,
-         3      2                  3       2
-      (3z  - 11z  + 8z + 4)y + 2t z  + 4t z  - 5t z - t,
-                  2
-      (z + 1)x + z  - 4z + 1}
-     ]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RegularTriangularSetXmpPageEmpty34}
-\begin{paste}{RegularTriangularSetXmpPageEmpty34}{RegularTriangularSetXmpPagePatch34}
-\pastebutton{RegularTriangularSetXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lq,true,true)$T\free{lq }\free{T }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/roman.pht b/books/pages/roman.pht
deleted file mode 100644
index 7983f3b..0000000
--- a/books/pages/roman.pht
+++ /dev/null
@@ -1,182 +0,0 @@
-\begin{patch}{RomanNumeralXmpPagePatch1}
-\begin{paste}{RomanNumeralXmpPageFull1}{RomanNumeralXmpPageEmpty1}
-\pastebutton{RomanNumeralXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := operator 'f\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (1)  f
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty1}
-\begin{paste}{RomanNumeralXmpPageEmpty1}{RomanNumeralXmpPagePatch1}
-\pastebutton{RomanNumeralXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := operator 'f\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch2}
-\begin{paste}{RomanNumeralXmpPageFull2}{RomanNumeralXmpPageEmpty2}
-\pastebutton{RomanNumeralXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{D(f x,x,7)\free{f }}
-\indentrel{3}\begin{verbatim}
-         (vii)
-   (2)  f     (x)
-
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty2}
-\begin{paste}{RomanNumeralXmpPageEmpty2}{RomanNumeralXmpPagePatch2}
-\pastebutton{RomanNumeralXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{D(f x,x,7)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch3}
-\begin{paste}{RomanNumeralXmpPageFull3}{RomanNumeralXmpPageEmpty3}
-\pastebutton{RomanNumeralXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{a := roman(1978 - 1965)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (3)  XIII
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty3}
-\begin{paste}{RomanNumeralXmpPageEmpty3}{RomanNumeralXmpPagePatch3}
-\pastebutton{RomanNumeralXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a := roman(1978 - 1965)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch4}
-\begin{paste}{RomanNumeralXmpPageFull4}{RomanNumeralXmpPageEmpty4}
-\pastebutton{RomanNumeralXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{x : UTS(ROMAN,'x,0) := x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (4)  x
-         Type: UnivariateTaylorSeries(RomanNumeral,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty4}
-\begin{paste}{RomanNumeralXmpPageEmpty4}{RomanNumeralXmpPagePatch4}
-\pastebutton{RomanNumeralXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{x : UTS(ROMAN,'x,0) := x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch5}
-\begin{paste}{RomanNumeralXmpPageFull5}{RomanNumeralXmpPageEmpty5}
-\pastebutton{RomanNumeralXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{recip(1 - x - x**2)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                 2        3      4         5         6
-     I + x + II x  + III x  + V x  + VIII x  + XIII x
-   + 
-          7          8       9           10      11
-     XXI x  + XXXIV x  + LV x  + LXXXIX x   + O(x  )
-Type: Union(UnivariateTaylorSeries(RomanNumeral,x,0),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty5}
-\begin{paste}{RomanNumeralXmpPageEmpty5}{RomanNumeralXmpPagePatch5}
-\pastebutton{RomanNumeralXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{recip(1 - x - x**2)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch6}
-\begin{paste}{RomanNumeralXmpPageFull6}{RomanNumeralXmpPageEmpty6}
-\pastebutton{RomanNumeralXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m : MATRIX FRAC ROMAN\bound{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty6}
-\begin{paste}{RomanNumeralXmpPageEmpty6}{RomanNumeralXmpPagePatch6}
-\pastebutton{RomanNumeralXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m : MATRIX FRAC ROMAN\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch7}
-\begin{paste}{RomanNumeralXmpPageFull7}{RomanNumeralXmpPageEmpty7}
-\pastebutton{RomanNumeralXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3]\free{m }\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú I    I    I¿
-        ³ÄÄ   ÄÄÄ  ÄÄ³
-        ³II   III  IV³
-        ³            ³
-        ³ I    I   I ³
-   (7)  ³ÄÄÄ  ÄÄ   Ä ³
-        ³III  IV   V ³
-        ³            ³
-        ³ I    I    I³
-        ³ÄÄ    Ä   ÄÄ³
-        ÀIV    V   VIÙ
-                     Type: Matrix Fraction RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty7}
-\begin{paste}{RomanNumeralXmpPageEmpty7}{RomanNumeralXmpPagePatch7}
-\pastebutton{RomanNumeralXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[1/(i + j) for i in 1..3] for j in 1..3]\free{m }\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch8}
-\begin{paste}{RomanNumeralXmpPageFull8}{RomanNumeralXmpPageEmpty8}
-\pastebutton{RomanNumeralXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{inverse m\free{m1 }}
-\indentrel{3}\begin{verbatim}
-        ÚLXXII   - CCXL    CLXXX ¿
-        ³                        ³
-   (8)  ³- CCXL    CM     - DCCXX³
-        ³                        ³
-        ÀCLXXX   - DCCXX    DC   Ù
-          Type: Union(Matrix Fraction RomanNumeral,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty8}
-\begin{paste}{RomanNumeralXmpPageEmpty8}{RomanNumeralXmpPagePatch8}
-\pastebutton{RomanNumeralXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{inverse m\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch9}
-\begin{paste}{RomanNumeralXmpPageFull9}{RomanNumeralXmpPageEmpty9}
-\pastebutton{RomanNumeralXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{y := factorial 10\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (9)  3628800
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty9}
-\begin{paste}{RomanNumeralXmpPageEmpty9}{RomanNumeralXmpPagePatch9}
-\pastebutton{RomanNumeralXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{y := factorial 10\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPagePatch10}
-\begin{paste}{RomanNumeralXmpPageFull10}{RomanNumeralXmpPageEmpty10}
-\pastebutton{RomanNumeralXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{roman y\free{y }}
-\indentrel{3}\begin{verbatim}
-   (10)
-  ((((I))))((((I))))((((I)))) (((I)))(((I)))(((I)))(((I))
-  )(((I)))(((I))) ((I))((I)) MMMMMMMMDCCC
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{RomanNumeralXmpPageEmpty10}
-\begin{paste}{RomanNumeralXmpPageEmpty10}{RomanNumeralXmpPagePatch10}
-\pastebutton{RomanNumeralXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{roman y\free{y }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/seg.pht b/books/pages/seg.pht
deleted file mode 100644
index abaf399..0000000
--- a/books/pages/seg.pht
+++ /dev/null
@@ -1,160 +0,0 @@
-\begin{patch}{SegmentXmpPagePatch1}
-\begin{paste}{SegmentXmpPageFull1}{SegmentXmpPageEmpty1}
-\pastebutton{SegmentXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{s := 3..10\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (1)  3..10
-                          Type: Segment PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty1}
-\begin{paste}{SegmentXmpPageEmpty1}{SegmentXmpPagePatch1}
-\pastebutton{SegmentXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{s := 3..10\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch2}
-\begin{paste}{SegmentXmpPageFull2}{SegmentXmpPageEmpty2}
-\pastebutton{SegmentXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{lo s\free{s }}
-\indentrel{3}\begin{verbatim}
-   (2)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty2}
-\begin{paste}{SegmentXmpPageEmpty2}{SegmentXmpPagePatch2}
-\pastebutton{SegmentXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{lo s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch3}
-\begin{paste}{SegmentXmpPageFull3}{SegmentXmpPageEmpty3}
-\pastebutton{SegmentXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{hi s\free{s }}
-\indentrel{3}\begin{verbatim}
-   (3)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty3}
-\begin{paste}{SegmentXmpPageEmpty3}{SegmentXmpPagePatch3}
-\pastebutton{SegmentXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{hi s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch4}
-\begin{paste}{SegmentXmpPageFull4}{SegmentXmpPageEmpty4}
-\pastebutton{SegmentXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{t := 10..3 by -2\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (4)  10..3 by - 2
-                          Type: Segment PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty4}
-\begin{paste}{SegmentXmpPageEmpty4}{SegmentXmpPagePatch4}
-\pastebutton{SegmentXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{t := 10..3 by -2\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch5}
-\begin{paste}{SegmentXmpPageFull5}{SegmentXmpPageEmpty5}
-\pastebutton{SegmentXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{incr s\free{s }}
-\indentrel{3}\begin{verbatim}
-   (5)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty5}
-\begin{paste}{SegmentXmpPageEmpty5}{SegmentXmpPagePatch5}
-\pastebutton{SegmentXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{incr s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch6}
-\begin{paste}{SegmentXmpPageFull6}{SegmentXmpPageEmpty6}
-\pastebutton{SegmentXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{incr t\free{t }}
-\indentrel{3}\begin{verbatim}
-   (6)  - 2
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty6}
-\begin{paste}{SegmentXmpPageEmpty6}{SegmentXmpPagePatch6}
-\pastebutton{SegmentXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{incr t\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch7}
-\begin{paste}{SegmentXmpPageFull7}{SegmentXmpPageEmpty7}
-\pastebutton{SegmentXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{l := [1..3, 5, 9, 15..11 by -1]\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1..3,5..5,9..9,15..11 by - 1]
-                     Type: List Segment PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty7}
-\begin{paste}{SegmentXmpPageEmpty7}{SegmentXmpPagePatch7}
-\pastebutton{SegmentXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{l := [1..3, 5, 9, 15..11 by -1]\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch8}
-\begin{paste}{SegmentXmpPageFull8}{SegmentXmpPageEmpty8}
-\pastebutton{SegmentXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{expand s\free{s }}
-\indentrel{3}\begin{verbatim}
-   (8)  [3,4,5,6,7,8,9,10]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty8}
-\begin{paste}{SegmentXmpPageEmpty8}{SegmentXmpPagePatch8}
-\pastebutton{SegmentXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{expand s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch9}
-\begin{paste}{SegmentXmpPageFull9}{SegmentXmpPageEmpty9}
-\pastebutton{SegmentXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{expand t\free{t }}
-\indentrel{3}\begin{verbatim}
-   (9)  [10,8,6,4]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty9}
-\begin{paste}{SegmentXmpPageEmpty9}{SegmentXmpPagePatch9}
-\pastebutton{SegmentXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{expand t\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPagePatch10}
-\begin{paste}{SegmentXmpPageFull10}{SegmentXmpPageEmpty10}
-\pastebutton{SegmentXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{expand l\free{l }}
-\indentrel{3}\begin{verbatim}
-   (10)  [1,2,3,5,9,15,14,13,12,11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentXmpPageEmpty10}
-\begin{paste}{SegmentXmpPageEmpty10}{SegmentXmpPagePatch10}
-\pastebutton{SegmentXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{expand l\free{l }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/segbind.pht b/books/pages/segbind.pht
deleted file mode 100644
index 1ae7640..0000000
--- a/books/pages/segbind.pht
+++ /dev/null
@@ -1,100 +0,0 @@
-\begin{patch}{SegmentBindingXmpPagePatch1}
-\begin{paste}{SegmentBindingXmpPageFull1}{SegmentBindingXmpPageEmpty1}
-\pastebutton{SegmentBindingXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x = a..b}
-\indentrel{3}\begin{verbatim}
-   (1)  x= a..b
-                            Type: SegmentBinding Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty1}
-\begin{paste}{SegmentBindingXmpPageEmpty1}{SegmentBindingXmpPagePatch1}
-\pastebutton{SegmentBindingXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x = a..b}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPagePatch2}
-\begin{paste}{SegmentBindingXmpPageFull2}{SegmentBindingXmpPageEmpty2}
-\pastebutton{SegmentBindingXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{sum(i**2, i = 0..n)}
-\indentrel{3}\begin{verbatim}
-          3     2
-        2n  + 3n  + n
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              6
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty2}
-\begin{paste}{SegmentBindingXmpPageEmpty2}{SegmentBindingXmpPagePatch2}
-\pastebutton{SegmentBindingXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sum(i**2, i = 0..n)}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPagePatch3}
-\begin{paste}{SegmentBindingXmpPageFull3}{SegmentBindingXmpPageEmpty3}
-\pastebutton{SegmentBindingXmpPageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2, x = -2..2)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/segmentbindingxmppage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/segmentbindingxmppage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty3}
-\begin{paste}{SegmentBindingXmpPageEmpty3}{SegmentBindingXmpPagePatch3}
-\pastebutton{SegmentBindingXmpPageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(x**2, x = -2..2)}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPagePatch4}
-\begin{paste}{SegmentBindingXmpPageFull4}{SegmentBindingXmpPageEmpty4}
-\pastebutton{SegmentBindingXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{sb := y = 1/2..3/2\bound{sb }}
-\indentrel{3}\begin{verbatim}
-            1    3
-   (4)  y= (Ä)..(Ä)
-            2    2
-                  Type: SegmentBinding Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty4}
-\begin{paste}{SegmentBindingXmpPageEmpty4}{SegmentBindingXmpPagePatch4}
-\pastebutton{SegmentBindingXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sb := y = 1/2..3/2\bound{sb }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPagePatch5}
-\begin{paste}{SegmentBindingXmpPageFull5}{SegmentBindingXmpPageEmpty5}
-\pastebutton{SegmentBindingXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{variable(sb)\free{sb }}
-\indentrel{3}\begin{verbatim}
-   (5)  y
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty5}
-\begin{paste}{SegmentBindingXmpPageEmpty5}{SegmentBindingXmpPagePatch5}
-\pastebutton{SegmentBindingXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{variable(sb)\free{sb }}
-\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPagePatch6}
-\begin{paste}{SegmentBindingXmpPageFull6}{SegmentBindingXmpPageEmpty6}
-\pastebutton{SegmentBindingXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{segment(sb)\free{sb }}
-\indentrel{3}\begin{verbatim}
-         1    3
-   (6)  (Ä)..(Ä)
-         2    2
-                         Type: Segment Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SegmentBindingXmpPageEmpty6}
-\begin{paste}{SegmentBindingXmpPageEmpty6}{SegmentBindingXmpPagePatch6}
-\pastebutton{SegmentBindingXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{segment(sb)\free{sb }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/set.pht b/books/pages/set.pht
deleted file mode 100644
index aef8d01..0000000
--- a/books/pages/set.pht
+++ /dev/null
@@ -1,326 +0,0 @@
-\begin{patch}{SetXmpPagePatch1}
-\begin{paste}{SetXmpPageFull1}{SetXmpPageEmpty1}
-\pastebutton{SetXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{s := set [x**2-1, y**2-1, z**2-1]\bound{s }}
-\indentrel{3}\begin{verbatim}
-          2      2      2
-   (1)  {x  - 1,y  - 1,z  - 1}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty1}
-\begin{paste}{SetXmpPageEmpty1}{SetXmpPagePatch1}
-\pastebutton{SetXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{s := set [x**2-1, y**2-1, z**2-1]\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch2}
-\begin{paste}{SetXmpPageFull2}{SetXmpPageEmpty2}
-\pastebutton{SetXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t := set [x**i - i+1 for i in 2..10 | prime? i]\bound{t }}
-\indentrel{3}\begin{verbatim}
-          2      3      5      7
-   (2)  {x  - 1,x  - 2,x  - 4,x  - 6}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty2}
-\begin{paste}{SetXmpPageEmpty2}{SetXmpPagePatch2}
-\pastebutton{SetXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t := set [x**i - i+1 for i in 2..10 | prime? i]\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch3}
-\begin{paste}{SetXmpPageFull3}{SetXmpPageEmpty3}
-\pastebutton{SetXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{i := intersect(s,t)\free{s t }\bound{i }}
-\indentrel{3}\begin{verbatim}
-          2
-   (3)  {x  - 1}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty3}
-\begin{paste}{SetXmpPageEmpty3}{SetXmpPagePatch3}
-\pastebutton{SetXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i := intersect(s,t)\free{s t }\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch4}
-\begin{paste}{SetXmpPageFull4}{SetXmpPageEmpty4}
-\pastebutton{SetXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{u := union(s,t)\free{s t }\bound{u }}
-\indentrel{3}\begin{verbatim}
-          2      3      5      7      2      2
-   (4)  {x  - 1,x  - 2,x  - 4,x  - 6,y  - 1,z  - 1}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty4}
-\begin{paste}{SetXmpPageEmpty4}{SetXmpPagePatch4}
-\pastebutton{SetXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{u := union(s,t)\free{s t }\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch5}
-\begin{paste}{SetXmpPageFull5}{SetXmpPageEmpty5}
-\pastebutton{SetXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{difference(s,t)\free{s t }}
-\indentrel{3}\begin{verbatim}
-          2      2
-   (5)  {y  - 1,z  - 1}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty5}
-\begin{paste}{SetXmpPageEmpty5}{SetXmpPagePatch5}
-\pastebutton{SetXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{difference(s,t)\free{s t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch6}
-\begin{paste}{SetXmpPageFull6}{SetXmpPageEmpty6}
-\pastebutton{SetXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{symmetricDifference(s,t)\free{s t }}
-\indentrel{3}\begin{verbatim}
-          3      5      7      2      2
-   (6)  {x  - 2,x  - 4,x  - 6,y  - 1,z  - 1}
-                           Type: Set Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty6}
-\begin{paste}{SetXmpPageEmpty6}{SetXmpPagePatch6}
-\pastebutton{SetXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{symmetricDifference(s,t)\free{s t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch7}
-\begin{paste}{SetXmpPageFull7}{SetXmpPageEmpty7}
-\pastebutton{SetXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{member?(y, s)\free{s }}
-\indentrel{3}\begin{verbatim}
-   (7)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty7}
-\begin{paste}{SetXmpPageEmpty7}{SetXmpPagePatch7}
-\pastebutton{SetXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{member?(y, s)\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch8}
-\begin{paste}{SetXmpPageFull8}{SetXmpPageEmpty8}
-\pastebutton{SetXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{member?((y+1)*(y-1), s)\free{s }}
-\indentrel{3}\begin{verbatim}
-   (8)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty8}
-\begin{paste}{SetXmpPageEmpty8}{SetXmpPagePatch8}
-\pastebutton{SetXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{member?((y+1)*(y-1), s)\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch9}
-\begin{paste}{SetXmpPageFull9}{SetXmpPageEmpty9}
-\pastebutton{SetXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{subset?(i, s)\free{i s }}
-\indentrel{3}\begin{verbatim}
-   (9)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty9}
-\begin{paste}{SetXmpPageEmpty9}{SetXmpPagePatch9}
-\pastebutton{SetXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{subset?(i, s)\free{i s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch10}
-\begin{paste}{SetXmpPageFull10}{SetXmpPageEmpty10}
-\pastebutton{SetXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{subset?(u, s)\free{u s }}
-\indentrel{3}\begin{verbatim}
-   (10)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty10}
-\begin{paste}{SetXmpPageEmpty10}{SetXmpPagePatch10}
-\pastebutton{SetXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{subset?(u, s)\free{u s }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch11}
-\begin{paste}{SetXmpPageFull11}{SetXmpPageEmpty11}
-\pastebutton{SetXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)]\bound{gs }}
-\indentrel{3}\begin{verbatim}
-   (11)  {2,6,7,8}
-                                Type: Set PrimeField 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty11}
-\begin{paste}{SetXmpPageEmpty11}{SetXmpPagePatch11}
-\pastebutton{SetXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{gs := set [g for i in 1..11 | primitive?(g := i::PF 11)]\bound{gs }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch12}
-\begin{paste}{SetXmpPageFull12}{SetXmpPageEmpty12}
-\pastebutton{SetXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{complement gs\free{gs }}
-\indentrel{3}\begin{verbatim}
-   (12)  {1,3,4,5,9,10,0}
-                                Type: Set PrimeField 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty12}
-\begin{paste}{SetXmpPageEmpty12}{SetXmpPagePatch12}
-\pastebutton{SetXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{complement gs\free{gs }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch13}
-\begin{paste}{SetXmpPageFull13}{SetXmpPageEmpty13}
-\pastebutton{SetXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{a := set [i**2 for i in 1..5]\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (13)  {1,4,9,16,25}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty13}
-\begin{paste}{SetXmpPageEmpty13}{SetXmpPagePatch13}
-\pastebutton{SetXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{a := set [i**2 for i in 1..5]\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch14}
-\begin{paste}{SetXmpPageFull14}{SetXmpPageEmpty14}
-\pastebutton{SetXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{insert!(32, a)\free{a }\bound{ainsert }}
-\indentrel{3}\begin{verbatim}
-   (14)  {1,4,9,16,25,32}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty14}
-\begin{paste}{SetXmpPageEmpty14}{SetXmpPagePatch14}
-\pastebutton{SetXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{insert!(32, a)\free{a }\bound{ainsert }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch15}
-\begin{paste}{SetXmpPageFull15}{SetXmpPageEmpty15}
-\pastebutton{SetXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{remove!(25, a)\free{a }\bound{aremove }}
-\indentrel{3}\begin{verbatim}
-   (15)  {1,4,9,16,32}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty15}
-\begin{paste}{SetXmpPageEmpty15}{SetXmpPagePatch15}
-\pastebutton{SetXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{remove!(25, a)\free{a }\bound{aremove }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch16}
-\begin{paste}{SetXmpPageFull16}{SetXmpPageEmpty16}
-\pastebutton{SetXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{a\free{aremove ainsert }}
-\indentrel{3}\begin{verbatim}
-   (16)  {1,4,9,16,32}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty16}
-\begin{paste}{SetXmpPageEmpty16}{SetXmpPagePatch16}
-\pastebutton{SetXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{a\free{aremove ainsert }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch17}
-\begin{paste}{SetXmpPageFull17}{SetXmpPageEmpty17}
-\pastebutton{SetXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{b := b0 := set [i**2 for i in 1..5]\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (17)  {1,4,9,16,25}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty17}
-\begin{paste}{SetXmpPageEmpty17}{SetXmpPagePatch17}
-\pastebutton{SetXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{b := b0 := set [i**2 for i in 1..5]\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch18}
-\begin{paste}{SetXmpPageFull18}{SetXmpPageEmpty18}
-\pastebutton{SetXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{b := union(b,32)\free{b }\bound{binsert }}
-\indentrel{3}\begin{verbatim}
-   (18)  {1,4,9,16,25,32}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty18}
-\begin{paste}{SetXmpPageEmpty18}{SetXmpPagePatch18}
-\pastebutton{SetXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{b := union(b,32)\free{b }\bound{binsert }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch19}
-\begin{paste}{SetXmpPageFull19}{SetXmpPageEmpty19}
-\pastebutton{SetXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{b := difference(b,25)\free{binsert }\bound{bremove }}
-\indentrel{3}\begin{verbatim}
-   (19)  {1,4,9,16,32}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty19}
-\begin{paste}{SetXmpPageEmpty19}{SetXmpPagePatch19}
-\pastebutton{SetXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{b := difference(b,25)\free{binsert }\bound{bremove }}
-\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPagePatch20}
-\begin{paste}{SetXmpPageFull20}{SetXmpPageEmpty20}
-\pastebutton{SetXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{b0\free{bremove }}
-\indentrel{3}\begin{verbatim}
-   (20)  {1,4,9,16,25}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SetXmpPageEmpty20}
-\begin{paste}{SetXmpPageEmpty20}{SetXmpPagePatch20}
-\pastebutton{SetXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{b0\free{bremove }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/sint.pht b/books/pages/sint.pht
deleted file mode 100644
index 82df8c2..0000000
--- a/books/pages/sint.pht
+++ /dev/null
@@ -1,176 +0,0 @@
-\begin{patch}{SingleIntegerXmpPagePatch1}
-\begin{paste}{SingleIntegerXmpPageFull1}{SingleIntegerXmpPageEmpty1}
-\pastebutton{SingleIntegerXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{min()$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (1)  - 134217728
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty1}
-\begin{paste}{SingleIntegerXmpPageEmpty1}{SingleIntegerXmpPagePatch1}
-\pastebutton{SingleIntegerXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{min()$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch2}
-\begin{paste}{SingleIntegerXmpPageFull2}{SingleIntegerXmpPageEmpty2}
-\pastebutton{SingleIntegerXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{max()$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (2)  134217727
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty2}
-\begin{paste}{SingleIntegerXmpPageEmpty2}{SingleIntegerXmpPagePatch2}
-\pastebutton{SingleIntegerXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{max()$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch3}
-\begin{paste}{SingleIntegerXmpPageFull3}{SingleIntegerXmpPageEmpty3}
-\pastebutton{SingleIntegerXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{a := 1234 :: SingleInteger\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (3)  1234
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty3}
-\begin{paste}{SingleIntegerXmpPageEmpty3}{SingleIntegerXmpPagePatch3}
-\pastebutton{SingleIntegerXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a := 1234 :: SingleInteger\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch4}
-\begin{paste}{SingleIntegerXmpPageFull4}{SingleIntegerXmpPageEmpty4}
-\pastebutton{SingleIntegerXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b := 124$SingleInteger\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (4)  124
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty4}
-\begin{paste}{SingleIntegerXmpPageEmpty4}{SingleIntegerXmpPagePatch4}
-\pastebutton{SingleIntegerXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b := 124$SingleInteger\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch5}
-\begin{paste}{SingleIntegerXmpPageFull5}{SingleIntegerXmpPageEmpty5}
-\pastebutton{SingleIntegerXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{gcd(a,b)\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (5)  2
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty5}
-\begin{paste}{SingleIntegerXmpPageEmpty5}{SingleIntegerXmpPagePatch5}
-\pastebutton{SingleIntegerXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{gcd(a,b)\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch6}
-\begin{paste}{SingleIntegerXmpPageFull6}{SingleIntegerXmpPageEmpty6}
-\pastebutton{SingleIntegerXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{lcm(a,b)\free{a }\free{b }}
-\indentrel{3}\begin{verbatim}
-   (6)  76508
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty6}
-\begin{paste}{SingleIntegerXmpPageEmpty6}{SingleIntegerXmpPagePatch6}
-\pastebutton{SingleIntegerXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{lcm(a,b)\free{a }\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch7}
-\begin{paste}{SingleIntegerXmpPageFull7}{SingleIntegerXmpPageEmpty7}
-\pastebutton{SingleIntegerXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{mulmod(5,6,13)$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (7)  4
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty7}
-\begin{paste}{SingleIntegerXmpPageEmpty7}{SingleIntegerXmpPagePatch7}
-\pastebutton{SingleIntegerXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{mulmod(5,6,13)$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch8}
-\begin{paste}{SingleIntegerXmpPageFull8}{SingleIntegerXmpPageEmpty8}
-\pastebutton{SingleIntegerXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{positiveRemainder(37,13)$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (8)  11
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty8}
-\begin{paste}{SingleIntegerXmpPageEmpty8}{SingleIntegerXmpPagePatch8}
-\pastebutton{SingleIntegerXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{positiveRemainder(37,13)$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch9}
-\begin{paste}{SingleIntegerXmpPageFull9}{SingleIntegerXmpPageEmpty9}
-\pastebutton{SingleIntegerXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{And(3,4)$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty9}
-\begin{paste}{SingleIntegerXmpPageEmpty9}{SingleIntegerXmpPagePatch9}
-\pastebutton{SingleIntegerXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{And(3,4)$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch10}
-\begin{paste}{SingleIntegerXmpPageFull10}{SingleIntegerXmpPageEmpty10}
-\pastebutton{SingleIntegerXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{shift(1,4)$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (10)  16
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty10}
-\begin{paste}{SingleIntegerXmpPageEmpty10}{SingleIntegerXmpPagePatch10}
-\pastebutton{SingleIntegerXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{shift(1,4)$SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPagePatch11}
-\begin{paste}{SingleIntegerXmpPageFull11}{SingleIntegerXmpPageEmpty11}
-\pastebutton{SingleIntegerXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{shift(31,-1)$SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (11)  15
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SingleIntegerXmpPageEmpty11}
-\begin{paste}{SingleIntegerXmpPageEmpty11}{SingleIntegerXmpPagePatch11}
-\pastebutton{SingleIntegerXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{shift(31,-1)$SingleInteger}
-\end{paste}\end{patch}
-
diff --git a/books/pages/sqmatrix.pht b/books/pages/sqmatrix.pht
deleted file mode 100644
index e58b3c6..0000000
--- a/books/pages/sqmatrix.pht
+++ /dev/null
@@ -1,110 +0,0 @@
-\begin{patch}{SquareMatrixXmpPagePatch1}
-\begin{paste}{SquareMatrixXmpPageFull1}{SquareMatrixXmpPageEmpty1}
-\pastebutton{SquareMatrixXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set expose add constructor SquareMatrix\bound{SQ }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty1}
-\begin{paste}{SquareMatrixXmpPageEmpty1}{SquareMatrixXmpPagePatch1}
-\pastebutton{SquareMatrixXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set expose add constructor SquareMatrix\bound{SQ }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPagePatch2}
-\begin{paste}{SquareMatrixXmpPageFull2}{SquareMatrixXmpPageEmpty2}
-\pastebutton{SquareMatrixXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := squareMatrix [[1,-\%i],[\%i,4]]\bound{m }\free{SQ }}
-\indentrel{3}\begin{verbatim}
-        Ú1   - %i¿
-   (1)  ³        ³
-        À%i   4  Ù
-                  Type: SquareMatrix(2,Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty2}
-\begin{paste}{SquareMatrixXmpPageEmpty2}{SquareMatrixXmpPagePatch2}
-\pastebutton{SquareMatrixXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := squareMatrix [[1,-\%i],[\%i,4]]\bound{m }\free{SQ }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPagePatch3}
-\begin{paste}{SquareMatrixXmpPageFull3}{SquareMatrixXmpPageEmpty3}
-\pastebutton{SquareMatrixXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{m*m - m\free{m }}
-\indentrel{3}\begin{verbatim}
-        Ú 1   - 4%i¿
-   (2)  ³          ³
-        À4%i   13  Ù
-                  Type: SquareMatrix(2,Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty3}
-\begin{paste}{SquareMatrixXmpPageEmpty3}{SquareMatrixXmpPagePatch3}
-\pastebutton{SquareMatrixXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{m*m - m\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPagePatch4}
-\begin{paste}{SquareMatrixXmpPageFull4}{SquareMatrixXmpPageEmpty4}
-\pastebutton{SquareMatrixXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{mm := squareMatrix [[m, 1], [1-m, m**2]]\free{m }\bound{mm }}
-\indentrel{3}\begin{verbatim}
-        ÚÚ1   - %i¿      Ú1  0¿   ¿
-        ³³        ³      ³    ³   ³
-        ³À%i   4  Ù      À0  1Ù   ³
-   (3)  ³                         ³
-        ³Ú 0    %i ¿  Ú 2   - 5%i¿³
-        ³³         ³  ³          ³³
-        ÀÀ- %i  - 3Ù  À5%i   17  ÙÙ
-  Type: SquareMatrix(2,SquareMatrix(2,Complex Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty4}
-\begin{paste}{SquareMatrixXmpPageEmpty4}{SquareMatrixXmpPagePatch4}
-\pastebutton{SquareMatrixXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{mm := squareMatrix [[m, 1], [1-m, m**2]]\free{m }\bound{mm }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPagePatch5}
-\begin{paste}{SquareMatrixXmpPageFull5}{SquareMatrixXmpPageEmpty5}
-\pastebutton{SquareMatrixXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p := (x + m)**2\free{m }\bound{p }}
-\indentrel{3}\begin{verbatim}
-         2   Ú 2   - 2%i¿    Ú 2   - 5%i¿
-   (4)  x  + ³          ³x + ³          ³
-             À2%i    8  Ù    À5%i   17  Ù
-       Type: Polynomial SquareMatrix(2,Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty5}
-\begin{paste}{SquareMatrixXmpPageEmpty5}{SquareMatrixXmpPagePatch5}
-\pastebutton{SquareMatrixXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p := (x + m)**2\free{m }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPagePatch6}
-\begin{paste}{SquareMatrixXmpPageFull6}{SquareMatrixXmpPageEmpty6}
-\pastebutton{SquareMatrixXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p::SquareMatrix(2, ?)\free{p }}
-\indentrel{3}\begin{verbatim}
-        Ú 2                        ¿
-        ³x  + 2x + 2  - 2%i x - 5%i³
-   (5)  ³                          ³
-        ³              2           ³
-        À2%i x + 5%i  x  + 8x + 17 Ù
-       Type: SquareMatrix(2,Polynomial Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareMatrixXmpPageEmpty6}
-\begin{paste}{SquareMatrixXmpPageEmpty6}{SquareMatrixXmpPagePatch6}
-\pastebutton{SquareMatrixXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p::SquareMatrix(2, ?)\free{p }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/sregset.pht b/books/pages/sregset.pht
deleted file mode 100644
index ea96c7b..0000000
--- a/books/pages/sregset.pht
+++ /dev/null
@@ -1,416 +0,0 @@
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch1}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull1}{SquareFreeRegularTriangularSetXmpPageEmpty1}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty1}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty1}{SquareFreeRegularTriangularSetXmpPagePatch1}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch2}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull2}{SquareFreeRegularTriangularSetXmpPageEmpty2}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [x,y,z,t]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty2}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty2}{SquareFreeRegularTriangularSetXmpPagePatch2}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch3}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull3}{SquareFreeRegularTriangularSetXmpPageEmpty3}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\indentrel{3}\begin{verbatim}
-   (3)  OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty3}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty3}{SquareFreeRegularTriangularSetXmpPagePatch3}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch4}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull4}{SquareFreeRegularTriangularSetXmpPageEmpty4}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\indentrel{3}\begin{verbatim}
-   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty4}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty4}{SquareFreeRegularTriangularSetXmpPagePatch4}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch5}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull5}{SquareFreeRegularTriangularSetXmpPageEmpty5}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  NewSparseMultivariatePolynomial(Integer,OrderedVariable
-  List [x,y,z,t])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty5}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty5}{SquareFreeRegularTriangularSetXmpPagePatch5}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch6}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull6}{SquareFreeRegularTriangularSetXmpPageEmpty6}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (6)  x
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty6}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty6}{SquareFreeRegularTriangularSetXmpPagePatch6}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch7}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull7}{SquareFreeRegularTriangularSetXmpPageEmpty7}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (7)  y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty7}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty7}{SquareFreeRegularTriangularSetXmpPagePatch7}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch8}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull8}{SquareFreeRegularTriangularSetXmpPageEmpty8}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (8)  z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty8}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty8}{SquareFreeRegularTriangularSetXmpPagePatch8}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch9}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull9}{SquareFreeRegularTriangularSetXmpPageEmpty9}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (9)  t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty9}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty9}{SquareFreeRegularTriangularSetXmpPagePatch9}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch10}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull10}{SquareFreeRegularTriangularSetXmpPageEmpty10}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
-\indentrel{3}\begin{verbatim}
-   (10)
-  SquareFreeRegularTriangularSet(Integer,IndexedExponents
-   OrderedVariableList [x,y,z,t],OrderedVariableList [x,y
-  ,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVa
-  riableList [x,y,z,t]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty10}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty10}{SquareFreeRegularTriangularSetXmpPagePatch10}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{ST := SREGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{ST }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch11}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull11}{SquareFreeRegularTriangularSetXmpPageEmpty11}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-          31    6
-   (11)  x   - x  - x - y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty11}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty11}{SquareFreeRegularTriangularSetXmpPagePatch11}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch12}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull12}{SquareFreeRegularTriangularSetXmpPageEmpty12}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-          8
-   (12)  x  - z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty12}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty12}{SquareFreeRegularTriangularSetXmpPagePatch12}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch13}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull13}{SquareFreeRegularTriangularSetXmpPageEmpty13}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-          10
-   (13)  x   - t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty13}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty13}{SquareFreeRegularTriangularSetXmpPagePatch13}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch14}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull14}{SquareFreeRegularTriangularSetXmpPageEmpty14}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-           31    6          8      10
-   (14)  [x   - x  - x - y,x  - z,x   - t]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty14}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty14}{SquareFreeRegularTriangularSetXmpPagePatch14}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch15}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull15}{SquareFreeRegularTriangularSetXmpPageEmpty15}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$ST\free{lp }\free{ST }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [
-       5    4       2     3     8     5    3    2
-     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
-        4                2
-      (t  - t)x - t y - z }
-     ]
-Type: List SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty15}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty15}{SquareFreeRegularTriangularSetXmpPagePatch15}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$ST\free{lp }\free{ST }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch16}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull16}{SquareFreeRegularTriangularSetXmpPageEmpty16}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lp,false)$ST\free{lp }\free{ST }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (16)
-   [
-       5    4       2     3     8     5    3    2
-     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
-        4                2
-      (t  - t)x - t y - z }
-     ,
-      3      5            2    2
-    {t  - 1,z  - t,t y + z ,z x  - t}, {t,z,y,x}]
-Type: List SquareFreeRegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty16}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty16}{SquareFreeRegularTriangularSetXmpPagePatch16}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lp,false)$ST\free{lp }\free{ST }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch17}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull17}{SquareFreeRegularTriangularSetXmpPageEmpty17}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\indentrel{3}\begin{verbatim}
-   (17)
-  RegularTriangularSet(Integer,IndexedExponents OrderedVa
-  riableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewS
-  parseMultivariatePolynomial(Integer,OrderedVariableList
-   [x,y,z,t]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty17}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty17}{SquareFreeRegularTriangularSetXmpPagePatch17}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{T := REGSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch18}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull18}{SquareFreeRegularTriangularSetXmpPageEmpty18}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (18)
-   [
-       5    4       2     3     8     5    3    2
-     {z  - t , t z y  + 2z y - t  + 2t  + t  - t ,
-        4                2
-      (t  - t)x - t y - z }
-     ,
-      3      5          2     3         2
-    {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t},
-    {t,z,y,x}]
-Type: List RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty18}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty18}{SquareFreeRegularTriangularSetXmpPagePatch18}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{lts := zeroSetSplit(lp,false)$T\free{lp }\free{T }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch19}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull19}{SquareFreeRegularTriangularSetXmpPageEmpty19}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{ts := lts.2\free{lts }\bound{ts }}
-\indentrel{3}\begin{verbatim}
-           3      5          2     3         2
-   (19)  {t  - 1,z  - t,t z y  + 2z y + 1,z x  - t}
-Type: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty19}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty19}{SquareFreeRegularTriangularSetXmpPagePatch19}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{ts := lts.2\free{lts }\bound{ts }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch20}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull20}{SquareFreeRegularTriangularSetXmpPageEmpty20}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{pol := select(ts,'y)$T\free{ts }\free{y }\free{T }\bound{pol }}
-\indentrel{3}\begin{verbatim}
-              2     3
-   (20)  t z y  + 2z y + 1
-Type: Union(NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty20}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty20}{SquareFreeRegularTriangularSetXmpPagePatch20}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{pol := select(ts,'y)$T\free{ts }\free{y }\free{T }\bound{pol }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch21}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull21}{SquareFreeRegularTriangularSetXmpPageEmpty21}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{tower := collectUnder(ts,'y)$T\free{ts }\free{y }\free{T }\bound{tower }}
-\indentrel{3}\begin{verbatim}
-           3      5
-   (21)  {t  - 1,z  - t}
-Type: RegularTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty21}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty21}{SquareFreeRegularTriangularSetXmpPagePatch21}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{tower := collectUnder(ts,'y)$T\free{ts }\free{y }\free{T }\bound{tower }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch22}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull22}{SquareFreeRegularTriangularSetXmpPageEmpty22}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{pack := RegularTriangularSetGcdPackage(R,E,V,P,T)\free{R }\free{E }\free{V }\free{P }\free{T }\bound{pack }}
-\indentrel{3}\begin{verbatim}
-   (22)
-  RegularTriangularSetGcdPackage(Integer,IndexedExponents
-   OrderedVariableList [x,y,z,t],OrderedVariableList [x,y
-  ,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVa
-  riableList [x,y,z,t]),RegularTriangularSet(Integer,Inde
-  xedExponents OrderedVariableList [x,y,z,t],OrderedVaria
-  bleList [x,y,z,t],NewSparseMultivariatePolynomial(Integ
-  er,OrderedVariableList [x,y,z,t])))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty22}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty22}{SquareFreeRegularTriangularSetXmpPagePatch22}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{pack := RegularTriangularSetGcdPackage(R,E,V,P,T)\free{R }\free{E }\free{V }\free{P }\free{T }\bound{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPagePatch23}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageFull23}{SquareFreeRegularTriangularSetXmpPageEmpty23}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{toseSquareFreePart(pol,tower)$pack\free{pol }\free{tower }\free{pack }}
-\indentrel{3}\begin{verbatim}
-                       2          3      5
-   (23)  [[val= t y + z ,tower= {t  - 1,z  - t}]]
-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])))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SquareFreeRegularTriangularSetXmpPageEmpty23}
-\begin{paste}{SquareFreeRegularTriangularSetXmpPageEmpty23}{SquareFreeRegularTriangularSetXmpPagePatch23}
-\pastebutton{SquareFreeRegularTriangularSetXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{toseSquareFreePart(pol,tower)$pack\free{pol }\free{tower }\free{pack }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/stbl.pht b/books/pages/stbl.pht
deleted file mode 100644
index a4e1562..0000000
--- a/books/pages/stbl.pht
+++ /dev/null
@@ -1,112 +0,0 @@
-\begin{patch}{SparseTableXmpPagePatch1}
-\begin{paste}{SparseTableXmpPageFull1}{SparseTableXmpPageEmpty1}
-\pastebutton{SparseTableXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{t: SparseTable(Integer, String, "Try again!") := table()\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (1)  table()
-           Type: SparseTable(Integer,String,Try again!)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty1}
-\begin{paste}{SparseTableXmpPageEmpty1}{SparseTableXmpPagePatch1}
-\pastebutton{SparseTableXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{t: SparseTable(Integer, String, "Try again!") := table()\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch2}
-\begin{paste}{SparseTableXmpPageFull2}{SparseTableXmpPageEmpty2}
-\pastebutton{SparseTableXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{t.3 := "Number three"\free{t }\bound{t1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  "Number three"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty2}
-\begin{paste}{SparseTableXmpPageEmpty2}{SparseTableXmpPagePatch2}
-\pastebutton{SparseTableXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{t.3 := "Number three"\free{t }\bound{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch3}
-\begin{paste}{SparseTableXmpPageFull3}{SparseTableXmpPageEmpty3}
-\pastebutton{SparseTableXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{t.4 := "Number four"\free{t }\bound{t2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  "Number four"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty3}
-\begin{paste}{SparseTableXmpPageEmpty3}{SparseTableXmpPagePatch3}
-\pastebutton{SparseTableXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{t.4 := "Number four"\free{t }\bound{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch4}
-\begin{paste}{SparseTableXmpPageFull4}{SparseTableXmpPageEmpty4}
-\pastebutton{SparseTableXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{t.3\free{t1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  "Number three"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty4}
-\begin{paste}{SparseTableXmpPageEmpty4}{SparseTableXmpPagePatch4}
-\pastebutton{SparseTableXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{t.3\free{t1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch5}
-\begin{paste}{SparseTableXmpPageFull5}{SparseTableXmpPageEmpty5}
-\pastebutton{SparseTableXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{t.2\free{t }}
-\indentrel{3}\begin{verbatim}
-   (5)  "Try again!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty5}
-\begin{paste}{SparseTableXmpPageEmpty5}{SparseTableXmpPagePatch5}
-\pastebutton{SparseTableXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{t.2\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch6}
-\begin{paste}{SparseTableXmpPageFull6}{SparseTableXmpPageEmpty6}
-\pastebutton{SparseTableXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{keys t\free{t1 t2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [4,3]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty6}
-\begin{paste}{SparseTableXmpPageEmpty6}{SparseTableXmpPagePatch6}
-\pastebutton{SparseTableXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{keys t\free{t1 t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPagePatch7}
-\begin{paste}{SparseTableXmpPageFull7}{SparseTableXmpPageEmpty7}
-\pastebutton{SparseTableXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{entries t\free{t1 t2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  ["Number four","Number three"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SparseTableXmpPageEmpty7}
-\begin{paste}{SparseTableXmpPageEmpty7}{SparseTableXmpPagePatch7}
-\pastebutton{SparseTableXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{entries t\free{t1 t2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/stream.pht b/books/pages/stream.pht
deleted file mode 100644
index 98216ce..0000000
--- a/books/pages/stream.pht
+++ /dev/null
@@ -1,190 +0,0 @@
-\begin{patch}{StreamXmpPagePatch1}
-\begin{paste}{StreamXmpPageFull1}{StreamXmpPageEmpty1}
-\pastebutton{StreamXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ints := [i for i in 0..]\bound{ints }}
-\indentrel{3}\begin{verbatim}
-   (1)  [0,1,2,3,4,5,6,7,8,9,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty1}
-\begin{paste}{StreamXmpPageEmpty1}{StreamXmpPagePatch1}
-\pastebutton{StreamXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ints := [i for i in 0..]\bound{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch2}
-\begin{paste}{StreamXmpPageFull2}{StreamXmpPageEmpty2}
-\pastebutton{StreamXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f : List INT -> List INT\bound{fdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty2}
-\begin{paste}{StreamXmpPageEmpty2}{StreamXmpPagePatch2}
-\pastebutton{StreamXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f : List INT -> List INT\bound{fdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch3}
-\begin{paste}{StreamXmpPageFull3}{StreamXmpPageEmpty3}
-\pastebutton{StreamXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f x == [x.1 + x.2, x.1]\bound{f }\free{fdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty3}
-\begin{paste}{StreamXmpPageEmpty3}{StreamXmpPagePatch3}
-\pastebutton{StreamXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f x == [x.1 + x.2, x.1]\bound{f }\free{fdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch4}
-\begin{paste}{StreamXmpPageFull4}{StreamXmpPageEmpty4}
-\pastebutton{StreamXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{fibs := [i.2 for i in [generate(f,[1,1])]]\bound{fibs }\free{f }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,1,2,3,5,8,13,21,34,55,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty4}
-\begin{paste}{StreamXmpPageEmpty4}{StreamXmpPagePatch4}
-\pastebutton{StreamXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{fibs := [i.2 for i in [generate(f,[1,1])]]\bound{fibs }\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch5}
-\begin{paste}{StreamXmpPageFull5}{StreamXmpPageEmpty5}
-\pastebutton{StreamXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[i for i in ints | odd? i]\free{ints }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1,3,5,7,9,11,13,15,17,19,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty5}
-\begin{paste}{StreamXmpPageEmpty5}{StreamXmpPagePatch5}
-\pastebutton{StreamXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[i for i in ints | odd? i]\free{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch6}
-\begin{paste}{StreamXmpPageFull6}{StreamXmpPageEmpty6}
-\pastebutton{StreamXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{odds := [2*i+1 for i in ints]\bound{odds }\free{ints }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,3,5,7,9,11,13,15,17,19,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty6}
-\begin{paste}{StreamXmpPageEmpty6}{StreamXmpPagePatch6}
-\pastebutton{StreamXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{odds := [2*i+1 for i in ints]\bound{odds }\free{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch7}
-\begin{paste}{StreamXmpPageFull7}{StreamXmpPageEmpty7}
-\pastebutton{StreamXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{scan(0,+,odds)\free{odds }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1,4,9,16,25,36,49,64,81,100,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty7}
-\begin{paste}{StreamXmpPageEmpty7}{StreamXmpPagePatch7}
-\pastebutton{StreamXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{scan(0,+,odds)\free{odds }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch8}
-\begin{paste}{StreamXmpPageFull8}{StreamXmpPageEmpty8}
-\pastebutton{StreamXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{[i*j for i in ints for j in odds]\free{ints }\free{odds }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0,3,10,21,36,55,78,105,136,171,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty8}
-\begin{paste}{StreamXmpPageEmpty8}{StreamXmpPagePatch8}
-\pastebutton{StreamXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{[i*j for i in ints for j in odds]\free{ints }\free{odds }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch9}
-\begin{paste}{StreamXmpPageFull9}{StreamXmpPageEmpty9}
-\pastebutton{StreamXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{map(*,ints,odds)\free{ints odds }}
-\indentrel{3}\begin{verbatim}
-   (9)  [0,3,10,21,36,55,78,105,136,171,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty9}
-\begin{paste}{StreamXmpPageEmpty9}{StreamXmpPagePatch9}
-\pastebutton{StreamXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{map(*,ints,odds)\free{ints odds }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch10}
-\begin{paste}{StreamXmpPageFull10}{StreamXmpPageEmpty10}
-\pastebutton{StreamXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{first ints\free{ints }}
-\indentrel{3}\begin{verbatim}
-   (10)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty10}
-\begin{paste}{StreamXmpPageEmpty10}{StreamXmpPagePatch10}
-\pastebutton{StreamXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{first ints\free{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch11}
-\begin{paste}{StreamXmpPageFull11}{StreamXmpPageEmpty11}
-\pastebutton{StreamXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{rest ints\free{ints }}
-\indentrel{3}\begin{verbatim}
-   (11)  [1,2,3,4,5,6,7,8,9,10,...]
-                        Type: Stream NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty11}
-\begin{paste}{StreamXmpPageEmpty11}{StreamXmpPagePatch11}
-\pastebutton{StreamXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{rest ints\free{ints }}
-\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPagePatch12}
-\begin{paste}{StreamXmpPageFull12}{StreamXmpPageEmpty12}
-\pastebutton{StreamXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{fibs 20\free{fibs }}
-\indentrel{3}\begin{verbatim}
-   (12)  6765
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StreamXmpPageEmpty12}
-\begin{paste}{StreamXmpPageEmpty12}{StreamXmpPagePatch12}
-\pastebutton{StreamXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{fibs 20\free{fibs }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/string.pht b/books/pages/string.pht
deleted file mode 100644
index db07822..0000000
--- a/books/pages/string.pht
+++ /dev/null
@@ -1,559 +0,0 @@
-\begin{patch}{StringXmpPagePatch1}
-\begin{paste}{StringXmpPageFull1}{StringXmpPageEmpty1}
-\pastebutton{StringXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{hello := "Hello, I'm AXIOM!"\bound{hello }}
-\indentrel{3}\begin{verbatim}
-   (1)  "Hello, I'm AXIOM!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty1}
-\begin{paste}{StringXmpPageEmpty1}{StringXmpPagePatch1}
-\pastebutton{StringXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{hello := "Hello, I'm AXIOM!"\bound{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch2}
-\begin{paste}{StringXmpPageFull2}{StringXmpPageEmpty2}
-\pastebutton{StringXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{said := "Jane said, _"Look!_""\bound{said }}
-\indentrel{3}\begin{verbatim}
-   (2)  "Jane said, "Look!""
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty2}
-\begin{paste}{StringXmpPageEmpty2}{StringXmpPagePatch2}
-\pastebutton{StringXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{said := "Jane said, _"Look!_""\bound{said }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch3}
-\begin{paste}{StringXmpPageFull3}{StringXmpPageEmpty3}
-\pastebutton{StringXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{saw := "She saw exactly one underscore: __."\bound{saw }}
-\indentrel{3}\begin{verbatim}
-   (3)  "She saw exactly one underscore: _."
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty3}
-\begin{paste}{StringXmpPageEmpty3}{StringXmpPagePatch3}
-\pastebutton{StringXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{saw := "She saw exactly one underscore: __."\bound{saw }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch4}
-\begin{paste}{StringXmpPageFull4}{StringXmpPageEmpty4}
-\pastebutton{StringXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{gasp: String := new(32, char "x")\bound{gasp }}
-\indentrel{3}\begin{verbatim}
-   (4)  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty4}
-\begin{paste}{StringXmpPageEmpty4}{StringXmpPagePatch4}
-\pastebutton{StringXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{gasp: String := new(32, char "x")\bound{gasp }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch5}
-\begin{paste}{StringXmpPageFull5}{StringXmpPageEmpty5}
-\pastebutton{StringXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{\#gasp\free{gasp }}
-\indentrel{3}\begin{verbatim}
-   (5)  32
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty5}
-\begin{paste}{StringXmpPageEmpty5}{StringXmpPagePatch5}
-\pastebutton{StringXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{\#gasp\free{gasp }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch6}
-\begin{paste}{StringXmpPageFull6}{StringXmpPageEmpty6}
-\pastebutton{StringXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{hello.2\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (6)  e
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty6}
-\begin{paste}{StringXmpPageEmpty6}{StringXmpPagePatch6}
-\pastebutton{StringXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{hello.2\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch7}
-\begin{paste}{StringXmpPageFull7}{StringXmpPageEmpty7}
-\pastebutton{StringXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{hello 2\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (7)  e
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty7}
-\begin{paste}{StringXmpPageEmpty7}{StringXmpPagePatch7}
-\pastebutton{StringXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{hello 2\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch8}
-\begin{paste}{StringXmpPageFull8}{StringXmpPageEmpty8}
-\pastebutton{StringXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{hello(2)\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (8)  e
-                                        Type: Character
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty8}
-\begin{paste}{StringXmpPageEmpty8}{StringXmpPagePatch8}
-\pastebutton{StringXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{hello(2)\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch9}
-\begin{paste}{StringXmpPageFull9}{StringXmpPageEmpty9}
-\pastebutton{StringXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{hullo := copy hello\free{hello }\bound{hullo0 }}
-\indentrel{3}\begin{verbatim}
-   (9)  "Hello, I'm AXIOM!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty9}
-\begin{paste}{StringXmpPageEmpty9}{StringXmpPagePatch9}
-\pastebutton{StringXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{hullo := copy hello\free{hello }\bound{hullo0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch10}
-\begin{paste}{StringXmpPageFull10}{StringXmpPageEmpty10}
-\pastebutton{StringXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{hullo.2 := char "u"; [hello, hullo]\free{hullo0 hello }\bound{hullo }}
-\indentrel{3}\begin{verbatim}
-   (10)  ["Hello, I'm AXIOM!","Hullo, I'm AXIOM!"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty10}
-\begin{paste}{StringXmpPageEmpty10}{StringXmpPagePatch10}
-\pastebutton{StringXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{hullo.2 := char "u"; [hello, hullo]\free{hullo0 hello }\bound{hullo }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch11}
-\begin{paste}{StringXmpPageFull11}{StringXmpPageEmpty11}
-\pastebutton{StringXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{saidsaw := concat ["alpha","---","omega"]\bound{saidsaw }}
-\indentrel{3}\begin{verbatim}
-   (11)  "alpha---omega"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty11}
-\begin{paste}{StringXmpPageEmpty11}{StringXmpPagePatch11}
-\pastebutton{StringXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{saidsaw := concat ["alpha","---","omega"]\bound{saidsaw }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch12}
-\begin{paste}{StringXmpPageFull12}{StringXmpPageEmpty12}
-\pastebutton{StringXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{concat("hello ","goodbye")}
-\indentrel{3}\begin{verbatim}
-   (12)  "hello goodbye"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty12}
-\begin{paste}{StringXmpPageEmpty12}{StringXmpPagePatch12}
-\pastebutton{StringXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{concat("hello ","goodbye")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch13}
-\begin{paste}{StringXmpPageFull13}{StringXmpPageEmpty13}
-\pastebutton{StringXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{"This " "is " "several " "strings " "concatenated."}
-\indentrel{3}\begin{verbatim}
-   (13)  "This is several strings concatenated."
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty13}
-\begin{paste}{StringXmpPageEmpty13}{StringXmpPagePatch13}
-\pastebutton{StringXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{"This " "is " "several " "strings " "concatenated."}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch14}
-\begin{paste}{StringXmpPageFull14}{StringXmpPageEmpty14}
-\pastebutton{StringXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{hello(1..5)\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (14)  "Hello"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty14}
-\begin{paste}{StringXmpPageEmpty14}{StringXmpPagePatch14}
-\pastebutton{StringXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{hello(1..5)\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch15}
-\begin{paste}{StringXmpPageFull15}{StringXmpPageEmpty15}
-\pastebutton{StringXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{hello(8..)\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (15)  "I'm AXIOM!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty15}
-\begin{paste}{StringXmpPageEmpty15}{StringXmpPagePatch15}
-\pastebutton{StringXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{hello(8..)\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch16}
-\begin{paste}{StringXmpPageFull16}{StringXmpPageEmpty16}
-\pastebutton{StringXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{split(hello, char " ")\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (16)  ["Hello,","I'm","AXIOM!"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty16}
-\begin{paste}{StringXmpPageEmpty16}{StringXmpPagePatch16}
-\pastebutton{StringXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{split(hello, char " ")\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch17}
-\begin{paste}{StringXmpPageFull17}{StringXmpPageEmpty17}
-\pastebutton{StringXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{other := complement alphanumeric();\bound{other }}
-\indentrel{3}\begin{verbatim}
-                                   Type: CharacterClass
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty17}
-\begin{paste}{StringXmpPageEmpty17}{StringXmpPagePatch17}
-\pastebutton{StringXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{other := complement alphanumeric();\bound{other }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch18}
-\begin{paste}{StringXmpPageFull18}{StringXmpPageEmpty18}
-\pastebutton{StringXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{split(saidsaw, other)\free{saidsaw other }}
-\indentrel{3}\begin{verbatim}
-   (18)  ["alpha","omega"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty18}
-\begin{paste}{StringXmpPageEmpty18}{StringXmpPagePatch18}
-\pastebutton{StringXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{split(saidsaw, other)\free{saidsaw other }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch19}
-\begin{paste}{StringXmpPageFull19}{StringXmpPageEmpty19}
-\pastebutton{StringXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", char "\#")}
-\indentrel{3}\begin{verbatim}
-   (19)  " ++ relax ++ "
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty19}
-\begin{paste}{StringXmpPageEmpty19}{StringXmpPagePatch19}
-\pastebutton{StringXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", char "\#")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch20}
-\begin{paste}{StringXmpPageFull20}{StringXmpPageEmpty20}
-\pastebutton{StringXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", other)\free{other }}
-\indentrel{3}\begin{verbatim}
-   (20)  "relax"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty20}
-\begin{paste}{StringXmpPageEmpty20}{StringXmpPagePatch20}
-\pastebutton{StringXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{trim ("\#\# ++ relax ++ \#\#", other)\free{other }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch21}
-\begin{paste}{StringXmpPageFull21}{StringXmpPageEmpty21}
-\pastebutton{StringXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{leftTrim ("\#\# ++ relax ++ \#\#", other)\free{other }}
-\indentrel{3}\begin{verbatim}
-   (21)  "relax ++ ##"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty21}
-\begin{paste}{StringXmpPageEmpty21}{StringXmpPagePatch21}
-\pastebutton{StringXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{leftTrim ("\#\# ++ relax ++ \#\#", other)\free{other }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch22}
-\begin{paste}{StringXmpPageFull22}{StringXmpPageEmpty22}
-\pastebutton{StringXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{rightTrim("\#\# ++ relax ++ \#\#", other)\free{other }}
-\indentrel{3}\begin{verbatim}
-   (22)  "## ++ relax"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty22}
-\begin{paste}{StringXmpPageEmpty22}{StringXmpPagePatch22}
-\pastebutton{StringXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{rightTrim("\#\# ++ relax ++ \#\#", other)\free{other }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch23}
-\begin{paste}{StringXmpPageFull23}{StringXmpPageEmpty23}
-\pastebutton{StringXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{upperCase hello\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (23)  "HELLO, I'M AXIOM!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty23}
-\begin{paste}{StringXmpPageEmpty23}{StringXmpPagePatch23}
-\pastebutton{StringXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{upperCase hello\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch24}
-\begin{paste}{StringXmpPageFull24}{StringXmpPageEmpty24}
-\pastebutton{StringXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{lowerCase hello\free{hello }}
-\indentrel{3}\begin{verbatim}
-   (24)  "hello, i'm axiom!"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty24}
-\begin{paste}{StringXmpPageEmpty24}{StringXmpPagePatch24}
-\pastebutton{StringXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{lowerCase hello\free{hello }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch25}
-\begin{paste}{StringXmpPageFull25}{StringXmpPageEmpty25}
-\pastebutton{StringXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{prefix?("He", "Hello")}
-\indentrel{3}\begin{verbatim}
-   (25)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty25}
-\begin{paste}{StringXmpPageEmpty25}{StringXmpPagePatch25}
-\pastebutton{StringXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{prefix?("He", "Hello")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch26}
-\begin{paste}{StringXmpPageFull26}{StringXmpPageEmpty26}
-\pastebutton{StringXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{prefix?("Her", "Hello")}
-\indentrel{3}\begin{verbatim}
-   (26)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty26}
-\begin{paste}{StringXmpPageEmpty26}{StringXmpPagePatch26}
-\pastebutton{StringXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{prefix?("Her", "Hello")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch27}
-\begin{paste}{StringXmpPageFull27}{StringXmpPageEmpty27}
-\pastebutton{StringXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{suffix?("", "Hello")}
-\indentrel{3}\begin{verbatim}
-   (27)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty27}
-\begin{paste}{StringXmpPageEmpty27}{StringXmpPagePatch27}
-\pastebutton{StringXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{suffix?("", "Hello")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch28}
-\begin{paste}{StringXmpPageFull28}{StringXmpPageEmpty28}
-\pastebutton{StringXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{suffix?("LO", "Hello")}
-\indentrel{3}\begin{verbatim}
-   (28)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty28}
-\begin{paste}{StringXmpPageEmpty28}{StringXmpPagePatch28}
-\pastebutton{StringXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{suffix?("LO", "Hello")}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch29}
-\begin{paste}{StringXmpPageFull29}{StringXmpPageEmpty29}
-\pastebutton{StringXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{substring?("ll", "Hello", 3)}
-\indentrel{3}\begin{verbatim}
-   (29)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty29}
-\begin{paste}{StringXmpPageEmpty29}{StringXmpPagePatch29}
-\pastebutton{StringXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{substring?("ll", "Hello", 3)}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch30}
-\begin{paste}{StringXmpPageFull30}{StringXmpPageEmpty30}
-\pastebutton{StringXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{substring?("ll", "Hello", 4)}
-\indentrel{3}\begin{verbatim}
-   (30)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty30}
-\begin{paste}{StringXmpPageEmpty30}{StringXmpPagePatch30}
-\pastebutton{StringXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{substring?("ll", "Hello", 4)}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch31}
-\begin{paste}{StringXmpPageFull31}{StringXmpPageEmpty31}
-\pastebutton{StringXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{n := position("nd", "underground", 1)\bound{n }}
-\indentrel{3}\begin{verbatim}
-   (31)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty31}
-\begin{paste}{StringXmpPageEmpty31}{StringXmpPagePatch31}
-\pastebutton{StringXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{n := position("nd", "underground", 1)\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch32}
-\begin{paste}{StringXmpPageFull32}{StringXmpPageEmpty32}
-\pastebutton{StringXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n }\bound{n1 }}
-\indentrel{3}\begin{verbatim}
-   (32)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty32}
-\begin{paste}{StringXmpPageEmpty32}{StringXmpPagePatch32}
-\pastebutton{StringXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n }\bound{n1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch33}
-\begin{paste}{StringXmpPageFull33}{StringXmpPageEmpty33}
-\pastebutton{StringXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n1 }\bound{n2 }}
-\indentrel{3}\begin{verbatim}
-   (33)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty33}
-\begin{paste}{StringXmpPageEmpty33}{StringXmpPagePatch33}
-\pastebutton{StringXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{n := position("nd", "underground", n+1)\free{n1 }\bound{n2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch34}
-\begin{paste}{StringXmpPageFull34}{StringXmpPageEmpty34}
-\pastebutton{StringXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{position(char "d", "underground", 1)}
-\indentrel{3}\begin{verbatim}
-   (34)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty34}
-\begin{paste}{StringXmpPageEmpty34}{StringXmpPagePatch34}
-\pastebutton{StringXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{position(char "d", "underground", 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPagePatch35}
-\begin{paste}{StringXmpPageFull35}{StringXmpPageEmpty35}
-\pastebutton{StringXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{position(hexDigit(), "underground", 1)}
-\indentrel{3}\begin{verbatim}
-   (35)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringXmpPageEmpty35}
-\begin{paste}{StringXmpPageEmpty35}{StringXmpPagePatch35}
-\pastebutton{StringXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{position(hexDigit(), "underground", 1)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/strtbl.pht b/books/pages/strtbl.pht
deleted file mode 100644
index e68e216..0000000
--- a/books/pages/strtbl.pht
+++ /dev/null
@@ -1,57 +0,0 @@
-\begin{patch}{StringTableXmpPagePatch1}
-\begin{paste}{StringTableXmpPageFull1}{StringTableXmpPageEmpty1}
-\pastebutton{StringTableXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{t: StringTable(Integer) := table()\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (1)  table()
-                              Type: StringTable Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringTableXmpPageEmpty1}
-\begin{paste}{StringTableXmpPageEmpty1}{StringTableXmpPagePatch1}
-\pastebutton{StringTableXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{t: StringTable(Integer) := table()\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringTableXmpPagePatch2}
-\begin{paste}{StringTableXmpPageFull2}{StringTableXmpPageEmpty2}
-\pastebutton{StringTableXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{for s in split("My name is Ian Watt.",char " ")
-  repeat
-    t.s := \#s
-\free{t }\bound{h }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringTableXmpPageEmpty2}
-\begin{paste}{StringTableXmpPageEmpty2}{StringTableXmpPagePatch2}
-\pastebutton{StringTableXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{for s in split("My name is Ian Watt.",char " ")
-  repeat
-    t.s := \#s
-\free{t }\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{StringTableXmpPagePatch3}
-\begin{paste}{StringTableXmpPageFull3}{StringTableXmpPageEmpty3}
-\pastebutton{StringTableXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for key in keys t repeat output [key, t.key]\free{t h }}
-\indentrel{3}\begin{verbatim}
-   ["Ian",3]
-   ["My",2]
-   ["Watt.",5]
-   ["name",4]
-   ["is",2]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{StringTableXmpPageEmpty3}
-\begin{paste}{StringTableXmpPageEmpty3}{StringTableXmpPagePatch3}
-\pastebutton{StringTableXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for key in keys t repeat output [key, t.key]\free{t h }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/symbol.pht b/books/pages/symbol.pht
deleted file mode 100644
index 86909eb..0000000
--- a/books/pages/symbol.pht
+++ /dev/null
@@ -1,398 +0,0 @@
-\begin{patch}{SymbolXmpPagePatch1}
-\begin{paste}{SymbolXmpPageFull1}{SymbolXmpPageEmpty1}
-\pastebutton{SymbolXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{X: Symbol := 'x\bound{X }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty1}
-\begin{paste}{SymbolXmpPageEmpty1}{SymbolXmpPagePatch1}
-\pastebutton{SymbolXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{X: Symbol := 'x\bound{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch2}
-\begin{paste}{SymbolXmpPageFull2}{SymbolXmpPageEmpty2}
-\pastebutton{SymbolXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{XX: Symbol := x}
-\indentrel{3}\begin{verbatim}
-   (2)  x
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty2}
-\begin{paste}{SymbolXmpPageEmpty2}{SymbolXmpPagePatch2}
-\pastebutton{SymbolXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{XX: Symbol := x}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch3}
-\begin{paste}{SymbolXmpPageFull3}{SymbolXmpPageEmpty3}
-\pastebutton{SymbolXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{A := 'a}
-\indentrel{3}\begin{verbatim}
-   (3)  a
-                                       Type: Variable a
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty3}
-\begin{paste}{SymbolXmpPageEmpty3}{SymbolXmpPagePatch3}
-\pastebutton{SymbolXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{A := 'a}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch4}
-\begin{paste}{SymbolXmpPageFull4}{SymbolXmpPageEmpty4}
-\pastebutton{SymbolXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{B := b}
-\indentrel{3}\begin{verbatim}
-   (4)  b
-                                       Type: Variable b
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty4}
-\begin{paste}{SymbolXmpPageEmpty4}{SymbolXmpPagePatch4}
-\pastebutton{SymbolXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{B := b}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch5}
-\begin{paste}{SymbolXmpPageFull5}{SymbolXmpPageEmpty5}
-\pastebutton{SymbolXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{x**2 + 1}
-\indentrel{3}\begin{verbatim}
-         2
-   (5)  x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty5}
-\begin{paste}{SymbolXmpPageEmpty5}{SymbolXmpPagePatch5}
-\pastebutton{SymbolXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{x**2 + 1}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch6}
-\begin{paste}{SymbolXmpPageFull6}{SymbolXmpPageEmpty6}
-\pastebutton{SymbolXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{"Hello"::Symbol}
-\indentrel{3}\begin{verbatim}
-   (6)  Hello
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty6}
-\begin{paste}{SymbolXmpPageEmpty6}{SymbolXmpPagePatch6}
-\pastebutton{SymbolXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{"Hello"::Symbol}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch7}
-\begin{paste}{SymbolXmpPageFull7}{SymbolXmpPageEmpty7}
-\pastebutton{SymbolXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{new()$Symbol}
-\indentrel{3}\begin{verbatim}
-   (7)  %A
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty7}
-\begin{paste}{SymbolXmpPageEmpty7}{SymbolXmpPagePatch7}
-\pastebutton{SymbolXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{new()$Symbol}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch8}
-\begin{paste}{SymbolXmpPageFull8}{SymbolXmpPageEmpty8}
-\pastebutton{SymbolXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{new()$Symbol}
-\indentrel{3}\begin{verbatim}
-   (8)  %B
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty8}
-\begin{paste}{SymbolXmpPageEmpty8}{SymbolXmpPagePatch8}
-\pastebutton{SymbolXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{new()$Symbol}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch9}
-\begin{paste}{SymbolXmpPageFull9}{SymbolXmpPageEmpty9}
-\pastebutton{SymbolXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{new("xyz")$Symbol}
-\indentrel{3}\begin{verbatim}
-   (9)  %xyz0
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty9}
-\begin{paste}{SymbolXmpPageEmpty9}{SymbolXmpPagePatch9}
-\pastebutton{SymbolXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{new("xyz")$Symbol}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch10}
-\begin{paste}{SymbolXmpPageFull10}{SymbolXmpPageEmpty10}
-\pastebutton{SymbolXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{X[i,j]\free{X }}
-\indentrel{3}\begin{verbatim}
-   (10)  x
-          i,j
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty10}
-\begin{paste}{SymbolXmpPageEmpty10}{SymbolXmpPagePatch10}
-\pastebutton{SymbolXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{X[i,j]\free{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch11}
-\begin{paste}{SymbolXmpPageFull11}{SymbolXmpPageEmpty11}
-\pastebutton{SymbolXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{U := subscript(u, [1,2,1,2])\bound{U }}
-\indentrel{3}\begin{verbatim}
-   (11)  u
-          1,2,1,2
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty11}
-\begin{paste}{SymbolXmpPageEmpty11}{SymbolXmpPagePatch11}
-\pastebutton{SymbolXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{U := subscript(u, [1,2,1,2])\bound{U }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch12}
-\begin{paste}{SymbolXmpPageFull12}{SymbolXmpPageEmpty12}
-\pastebutton{SymbolXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{V := superscript(v, [n])\bound{V }}
-\indentrel{3}\begin{verbatim}
-          n
-   (12)  v
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty12}
-\begin{paste}{SymbolXmpPageEmpty12}{SymbolXmpPagePatch12}
-\pastebutton{SymbolXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{V := superscript(v, [n])\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch13}
-\begin{paste}{SymbolXmpPageFull13}{SymbolXmpPageEmpty13}
-\pastebutton{SymbolXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{P := argscript(p, [t])\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (13)  p(t)
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty13}
-\begin{paste}{SymbolXmpPageEmpty13}{SymbolXmpPagePatch13}
-\pastebutton{SymbolXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{P := argscript(p, [t])\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch14}
-\begin{paste}{SymbolXmpPageFull14}{SymbolXmpPageEmpty14}
-\pastebutton{SymbolXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{scripted? U\free{U }}
-\indentrel{3}\begin{verbatim}
-   (14)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty14}
-\begin{paste}{SymbolXmpPageEmpty14}{SymbolXmpPagePatch14}
-\pastebutton{SymbolXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{scripted? U\free{U }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch15}
-\begin{paste}{SymbolXmpPageFull15}{SymbolXmpPageEmpty15}
-\pastebutton{SymbolXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{scripted? X\free{X }}
-\indentrel{3}\begin{verbatim}
-   (15)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty15}
-\begin{paste}{SymbolXmpPageEmpty15}{SymbolXmpPagePatch15}
-\pastebutton{SymbolXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{scripted? X\free{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch16}
-\begin{paste}{SymbolXmpPageFull16}{SymbolXmpPageEmpty16}
-\pastebutton{SymbolXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{string X\free{X }}
-\indentrel{3}\begin{verbatim}
-   (16)  "x"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty16}
-\begin{paste}{SymbolXmpPageEmpty16}{SymbolXmpPagePatch16}
-\pastebutton{SymbolXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{string X\free{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch17}
-\begin{paste}{SymbolXmpPageFull17}{SymbolXmpPageEmpty17}
-\pastebutton{SymbolXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{name U\free{U }}
-\indentrel{3}\begin{verbatim}
-   (17)  u
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty17}
-\begin{paste}{SymbolXmpPageEmpty17}{SymbolXmpPagePatch17}
-\pastebutton{SymbolXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{name U\free{U }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch18}
-\begin{paste}{SymbolXmpPageFull18}{SymbolXmpPageEmpty18}
-\pastebutton{SymbolXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{scripts U\free{U }}
-\indentrel{3}\begin{verbatim}
-   (18)
-   [sub= [1,2,1,2],sup= [],presup= [],presub= [],args= []]
-Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty18}
-\begin{paste}{SymbolXmpPageEmpty18}{SymbolXmpPagePatch18}
-\pastebutton{SymbolXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{scripts U\free{U }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch19}
-\begin{paste}{SymbolXmpPageFull19}{SymbolXmpPageEmpty19}
-\pastebutton{SymbolXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{name X\free{X }}
-\indentrel{3}\begin{verbatim}
-   (19)  x
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty19}
-\begin{paste}{SymbolXmpPageEmpty19}{SymbolXmpPagePatch19}
-\pastebutton{SymbolXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{name X\free{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch20}
-\begin{paste}{SymbolXmpPageFull20}{SymbolXmpPageEmpty20}
-\pastebutton{SymbolXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{scripts X\free{X }}
-\indentrel{3}\begin{verbatim}
-   (20)
-   [sub= [],sup= [],presup= [],presub= [],args= []]
-Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty20}
-\begin{paste}{SymbolXmpPageEmpty20}{SymbolXmpPagePatch20}
-\pastebutton{SymbolXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{scripts X\free{X }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch21}
-\begin{paste}{SymbolXmpPageFull21}{SymbolXmpPageEmpty21}
-\pastebutton{SymbolXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]])\bound{M }}
-\indentrel{3}\begin{verbatim}
-         0,1       k,l
-   (21)     Mammoth   (u,v,w)
-           2       i,j
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty21}
-\begin{paste}{SymbolXmpPageEmpty21}{SymbolXmpPagePatch21}
-\pastebutton{SymbolXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{M := script(Mammoth, [[i,j],[k,l],[0,1],[2],[u,v,w]])\bound{M }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch22}
-\begin{paste}{SymbolXmpPageFull22}{SymbolXmpPageEmpty22}
-\pastebutton{SymbolXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{scripts M\free{M }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [sub= [i,j], sup= [k,l], presup= [0,1], presub= [2],
-    args= [u,v,w]]
-Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty22}
-\begin{paste}{SymbolXmpPageEmpty22}{SymbolXmpPagePatch22}
-\pastebutton{SymbolXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{scripts M\free{M }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch23}
-\begin{paste}{SymbolXmpPageFull23}{SymbolXmpPageEmpty23}
-\pastebutton{SymbolXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{N := script(Nut, [[i,j],[k,l],[0,1]])\bound{N }}
-\indentrel{3}\begin{verbatim}
-         0,1   k,l
-   (23)     Nut
-               i,j
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty23}
-\begin{paste}{SymbolXmpPageEmpty23}{SymbolXmpPagePatch23}
-\pastebutton{SymbolXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{N := script(Nut, [[i,j],[k,l],[0,1]])\bound{N }}
-\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPagePatch24}
-\begin{paste}{SymbolXmpPageFull24}{SymbolXmpPageEmpty24}
-\pastebutton{SymbolXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{scripts N\free{N }}
-\indentrel{3}\begin{verbatim}
-   (24)
-   [sub= [i,j], sup= [k,l], presup= [0,1], presub= [],
-    args= []]
-Type: Record(sub: List OutputForm,sup: List OutputForm,presup: List OutputForm,presub: List OutputForm,args: List OutputForm)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{SymbolXmpPageEmpty24}
-\begin{paste}{SymbolXmpPageEmpty24}{SymbolXmpPagePatch24}
-\pastebutton{SymbolXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{scripts N\free{N }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/table.pht b/books/pages/table.pht
deleted file mode 100644
index a7a88d2..0000000
--- a/books/pages/table.pht
+++ /dev/null
@@ -1,289 +0,0 @@
-\begin{patch}{TableXmpPagePatch1}
-\begin{paste}{TableXmpPageFull1}{TableXmpPageEmpty1}
-\pastebutton{TableXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{t: Table(Polynomial Integer, String) := table()\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (1)  table()
-                 Type: Table(Polynomial Integer,String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty1}
-\begin{paste}{TableXmpPageEmpty1}{TableXmpPagePatch1}
-\pastebutton{TableXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{t: Table(Polynomial Integer, String) := table()\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch2}
-\begin{paste}{TableXmpPageFull2}{TableXmpPageEmpty2}
-\pastebutton{TableXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{setelt(t, x**2 - 1, "Easy to factor")\bound{p1 }\free{t }}
-\indentrel{3}\begin{verbatim}
-   (2)  "Easy to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty2}
-\begin{paste}{TableXmpPageEmpty2}{TableXmpPagePatch2}
-\pastebutton{TableXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{setelt(t, x**2 - 1, "Easy to factor")\bound{p1 }\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch3}
-\begin{paste}{TableXmpPageFull3}{TableXmpPageEmpty3}
-\pastebutton{TableXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{t(x**3 + 1) := "Harder to factor"\bound{p2 }\free{p1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  "Harder to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty3}
-\begin{paste}{TableXmpPageEmpty3}{TableXmpPagePatch3}
-\pastebutton{TableXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{t(x**3 + 1) := "Harder to factor"\bound{p2 }\free{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch4}
-\begin{paste}{TableXmpPageFull4}{TableXmpPageEmpty4}
-\pastebutton{TableXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{t(x) := "The easiest to factor"\bound{p3 }\free{p2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  "The easiest to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty4}
-\begin{paste}{TableXmpPageEmpty4}{TableXmpPagePatch4}
-\pastebutton{TableXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{t(x) := "The easiest to factor"\bound{p3 }\free{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch5}
-\begin{paste}{TableXmpPageFull5}{TableXmpPageEmpty5}
-\pastebutton{TableXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{elt(t, x)\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (5)  "The easiest to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty5}
-\begin{paste}{TableXmpPageEmpty5}{TableXmpPagePatch5}
-\pastebutton{TableXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{elt(t, x)\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch6}
-\begin{paste}{TableXmpPageFull6}{TableXmpPageEmpty6}
-\pastebutton{TableXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{t.x\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (6)  "The easiest to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty6}
-\begin{paste}{TableXmpPageEmpty6}{TableXmpPagePatch6}
-\pastebutton{TableXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{t.x\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch7}
-\begin{paste}{TableXmpPageFull7}{TableXmpPageEmpty7}
-\pastebutton{TableXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{t x\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (7)  "The easiest to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty7}
-\begin{paste}{TableXmpPageEmpty7}{TableXmpPagePatch7}
-\pastebutton{TableXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{t x\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch8}
-\begin{paste}{TableXmpPageFull8}{TableXmpPageEmpty8}
-\pastebutton{TableXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{t.(x**2 - 1)\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (8)  "Easy to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty8}
-\begin{paste}{TableXmpPageEmpty8}{TableXmpPagePatch8}
-\pastebutton{TableXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{t.(x**2 - 1)\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch9}
-\begin{paste}{TableXmpPageFull9}{TableXmpPageEmpty9}
-\pastebutton{TableXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{t (x**3 + 1)\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (9)  "Harder to factor"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty9}
-\begin{paste}{TableXmpPageEmpty9}{TableXmpPagePatch9}
-\pastebutton{TableXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{t (x**3 + 1)\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch10}
-\begin{paste}{TableXmpPageFull10}{TableXmpPageEmpty10}
-\pastebutton{TableXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{keys t\free{p3 }}
-\indentrel{3}\begin{verbatim}
-             3      2
-   (10)  [x,x  + 1,x  - 1]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty10}
-\begin{paste}{TableXmpPageEmpty10}{TableXmpPagePatch10}
-\pastebutton{TableXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{keys t\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch11}
-\begin{paste}{TableXmpPageFull11}{TableXmpPageEmpty11}
-\pastebutton{TableXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{search(x, t)\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (11)  "The easiest to factor"
-                                Type: Union(String,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty11}
-\begin{paste}{TableXmpPageEmpty11}{TableXmpPagePatch11}
-\pastebutton{TableXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{search(x, t)\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch12}
-\begin{paste}{TableXmpPageFull12}{TableXmpPageEmpty12}
-\pastebutton{TableXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{search(x**2, t)\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (12)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty12}
-\begin{paste}{TableXmpPageEmpty12}{TableXmpPagePatch12}
-\pastebutton{TableXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{search(x**2, t)\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch13}
-\begin{paste}{TableXmpPageFull13}{TableXmpPageEmpty13}
-\pastebutton{TableXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{search(x**2, t) case "failed"\free{p3 }}
-\indentrel{3}\begin{verbatim}
-   (13)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty13}
-\begin{paste}{TableXmpPageEmpty13}{TableXmpPagePatch13}
-\pastebutton{TableXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{search(x**2, t) case "failed"\free{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch14}
-\begin{paste}{TableXmpPageFull14}{TableXmpPageEmpty14}
-\pastebutton{TableXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{remove!(x**2-1, t)\free{p3 }\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (14)  "Easy to factor"
-                                Type: Union(String,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty14}
-\begin{paste}{TableXmpPageEmpty14}{TableXmpPagePatch14}
-\pastebutton{TableXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{remove!(x**2-1, t)\free{p3 }\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch15}
-\begin{paste}{TableXmpPageFull15}{TableXmpPageEmpty15}
-\pastebutton{TableXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{remove!(x-1, t)\free{p4 }\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (15)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty15}
-\begin{paste}{TableXmpPageEmpty15}{TableXmpPagePatch15}
-\pastebutton{TableXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{remove!(x-1, t)\free{p4 }\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch16}
-\begin{paste}{TableXmpPageFull16}{TableXmpPageEmpty16}
-\pastebutton{TableXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{\#t\free{p5 }}
-\indentrel{3}\begin{verbatim}
-   (16)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty16}
-\begin{paste}{TableXmpPageEmpty16}{TableXmpPagePatch16}
-\pastebutton{TableXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{\#t\free{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch17}
-\begin{paste}{TableXmpPageFull17}{TableXmpPageEmpty17}
-\pastebutton{TableXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{members t\free{p5 }}
-\indentrel{3}\begin{verbatim}
-   (17)  ["The easiest to factor","Harder to factor"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty17}
-\begin{paste}{TableXmpPageEmpty17}{TableXmpPagePatch17}
-\pastebutton{TableXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{members t\free{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPagePatch18}
-\begin{paste}{TableXmpPageFull18}{TableXmpPageEmpty18}
-\pastebutton{TableXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{count(s: String +-> prefix?("Hard", s), t)\free{p5 }}
-\indentrel{3}\begin{verbatim}
-   (18)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TableXmpPageEmpty18}
-\begin{paste}{TableXmpPageEmpty18}{TableXmpPagePatch18}
-\pastebutton{TableXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{count(s: String +-> prefix?("Hard", s), t)\free{p5 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/textfile.pht b/books/pages/textfile.pht
deleted file mode 100644
index ebf5125..0000000
--- a/books/pages/textfile.pht
+++ /dev/null
@@ -1,179 +0,0 @@
-\begin{patch}{TextFileXmpPagePatch1}
-\begin{paste}{TextFileXmpPageFull1}{TextFileXmpPageEmpty1}
-\pastebutton{TextFileXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f1: TextFile := open("/etc/group", "input")\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  "/etc/group"
-                                         Type: TextFile
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty1}
-\begin{paste}{TextFileXmpPageEmpty1}{TextFileXmpPagePatch1}
-\pastebutton{TextFileXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f1: TextFile := open("/etc/group", "input")\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch2}
-\begin{paste}{TextFileXmpPageFull2}{TextFileXmpPageEmpty2}
-\pastebutton{TextFileXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f2: TextFile := open("/tmp/MOTD", "output")\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  "/tmp/MOTD"
-                                         Type: TextFile
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty2}
-\begin{paste}{TextFileXmpPageEmpty2}{TextFileXmpPagePatch2}
-\pastebutton{TextFileXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f2: TextFile := open("/tmp/MOTD", "output")\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch3}
-\begin{paste}{TextFileXmpPageFull3}{TextFileXmpPageEmpty3}
-\pastebutton{TextFileXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{l := readLine! f1\free{f1 }\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (3)  "system:*:0:root"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty3}
-\begin{paste}{TextFileXmpPageEmpty3}{TextFileXmpPagePatch3}
-\pastebutton{TextFileXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{l := readLine! f1\free{f1 }\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch4}
-\begin{paste}{TextFileXmpPageFull4}{TextFileXmpPageEmpty4}
-\pastebutton{TextFileXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{writeLine!(f2, upperCase l)\free{f2 l }}
-\indentrel{3}\begin{verbatim}
-   (4)  "SYSTEM:*:0:ROOT"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty4}
-\begin{paste}{TextFileXmpPageEmpty4}{TextFileXmpPagePatch4}
-\pastebutton{TextFileXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{writeLine!(f2, upperCase l)\free{f2 l }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch5}
-\begin{paste}{TextFileXmpPageFull5}{TextFileXmpPageEmpty5}
-\pastebutton{TextFileXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{while not endOfFile? f1 repeat
-    s := readLine! f1
-    writeLine!(f2, upperCase s)
-\free{f1 f2 }\bound{Copied }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty5}
-\begin{paste}{TextFileXmpPageEmpty5}{TextFileXmpPagePatch5}
-\pastebutton{TextFileXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{while not endOfFile? f1 repeat
-    s := readLine! f1
-    writeLine!(f2, upperCase s)
-\free{f1 f2 }\bound{Copied }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch6}
-\begin{paste}{TextFileXmpPageFull6}{TextFileXmpPageEmpty6}
-\pastebutton{TextFileXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{close! f1\free{Copied }\bound{closed1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  "/etc/group"
-                                         Type: TextFile
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty6}
-\begin{paste}{TextFileXmpPageEmpty6}{TextFileXmpPagePatch6}
-\pastebutton{TextFileXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{close! f1\free{Copied }\bound{closed1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch7}
-\begin{paste}{TextFileXmpPageFull7}{TextFileXmpPageEmpty7}
-\pastebutton{TextFileXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{write!(f2, "-The-")\free{Copied }\bound{tthhee }}
-\indentrel{3}\begin{verbatim}
-   (7)  "-The-"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty7}
-\begin{paste}{TextFileXmpPageEmpty7}{TextFileXmpPagePatch7}
-\pastebutton{TextFileXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{write!(f2, "-The-")\free{Copied }\bound{tthhee }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch8}
-\begin{paste}{TextFileXmpPageFull8}{TextFileXmpPageEmpty8}
-\pastebutton{TextFileXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{write!(f2, "-End-")\free{tthhee }\bound{eenndd }}
-\indentrel{3}\begin{verbatim}
-   (8)  "-End-"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty8}
-\begin{paste}{TextFileXmpPageEmpty8}{TextFileXmpPagePatch8}
-\pastebutton{TextFileXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{write!(f2, "-End-")\free{tthhee }\bound{eenndd }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch9}
-\begin{paste}{TextFileXmpPageFull9}{TextFileXmpPageEmpty9}
-\pastebutton{TextFileXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{writeLine! f2\free{eenndd }\bound{LastLine }}
-\indentrel{3}\begin{verbatim}
-   (9)  ""
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty9}
-\begin{paste}{TextFileXmpPageEmpty9}{TextFileXmpPagePatch9}
-\pastebutton{TextFileXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{writeLine! f2\free{eenndd }\bound{LastLine }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch10}
-\begin{paste}{TextFileXmpPageFull10}{TextFileXmpPageEmpty10}
-\pastebutton{TextFileXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{close! f2\free{LastLine }\bound{closed2 }}
-\indentrel{3}\begin{verbatim}
-   (10)  "/tmp/MOTD"
-                                         Type: TextFile
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty10}
-\begin{paste}{TextFileXmpPageEmpty10}{TextFileXmpPagePatch10}
-\pastebutton{TextFileXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{close! f2\free{LastLine }\bound{closed2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPagePatch11}
-\begin{paste}{TextFileXmpPageFull11}{TextFileXmpPageEmpty11}
-\pastebutton{TextFileXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{)system rm /tmp/MOTD\free{closed2 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{TextFileXmpPageEmpty11}
-\begin{paste}{TextFileXmpPageEmpty11}{TextFileXmpPagePatch11}
-\pastebutton{TextFileXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{)system rm /tmp/MOTD\free{closed2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug01.pht b/books/pages/ug01.pht
deleted file mode 100644
index c92e1ff..0000000
--- a/books/pages/ug01.pht
+++ /dev/null
@@ -1,3673 +0,0 @@
-\begin{patch}{ugIntroCalcDerivPagePatch1}
-\begin{paste}{ugIntroCalcDerivPageFull1}{ugIntroCalcDerivPageEmpty1}
-\pastebutton{ugIntroCalcDerivPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := exp exp x\bound{f }}
-\indentrel{3}\begin{verbatim}
-            x
-          %e
-   (1)  %e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty1}
-\begin{paste}{ugIntroCalcDerivPageEmpty1}{ugIntroCalcDerivPagePatch1}
-\pastebutton{ugIntroCalcDerivPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := exp exp x\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch2}
-\begin{paste}{ugIntroCalcDerivPageFull2}{ugIntroCalcDerivPageEmpty2}
-\pastebutton{ugIntroCalcDerivPageFull2}{\hidepaste}
-\tab{5}\spadcommand{D(f, x)\free{f }}
-\indentrel{3}\begin{verbatim}
-               x
-          x  %e
-   (2)  %e %e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty2}
-\begin{paste}{ugIntroCalcDerivPageEmpty2}{ugIntroCalcDerivPagePatch2}
-\pastebutton{ugIntroCalcDerivPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{D(f, x)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch3}
-\begin{paste}{ugIntroCalcDerivPageFull3}{ugIntroCalcDerivPageEmpty3}
-\pastebutton{ugIntroCalcDerivPageFull3}{\hidepaste}
-\tab{5}\spadcommand{D(f, x, 4)\free{f }}
-\indentrel{3}\begin{verbatim}
-                                              x
-            x 4       x 3       x 2     x   %e
-   (3)  ((%e )  + 6(%e )  + 7(%e )  + %e )%e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty3}
-\begin{paste}{ugIntroCalcDerivPageEmpty3}{ugIntroCalcDerivPagePatch3}
-\pastebutton{ugIntroCalcDerivPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{D(f, x, 4)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch4}
-\begin{paste}{ugIntroCalcDerivPageFull4}{ugIntroCalcDerivPageEmpty4}
-\pastebutton{ugIntroCalcDerivPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g := sin(x**2 + y)\bound{g }}
-\indentrel{3}\begin{verbatim}
-                 2
-   (4)  sin(y + x )
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty4}
-\begin{paste}{ugIntroCalcDerivPageEmpty4}{ugIntroCalcDerivPagePatch4}
-\pastebutton{ugIntroCalcDerivPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g := sin(x**2 + y)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch5}
-\begin{paste}{ugIntroCalcDerivPageFull5}{ugIntroCalcDerivPageEmpty5}
-\pastebutton{ugIntroCalcDerivPageFull5}{\hidepaste}
-\tab{5}\spadcommand{D(g, y)\free{g }}
-\indentrel{3}\begin{verbatim}
-                 2
-   (5)  cos(y + x )
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty5}
-\begin{paste}{ugIntroCalcDerivPageEmpty5}{ugIntroCalcDerivPagePatch5}
-\pastebutton{ugIntroCalcDerivPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{D(g, y)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch6}
-\begin{paste}{ugIntroCalcDerivPageFull6}{ugIntroCalcDerivPageEmpty6}
-\pastebutton{ugIntroCalcDerivPageFull6}{\hidepaste}
-\tab{5}\spadcommand{D(g, [y, y, x, x])\free{g }}
-\indentrel{3}\begin{verbatim}
-          2         2              2
-   (6)  4x sin(y + x ) - 2cos(y + x )
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty6}
-\begin{paste}{ugIntroCalcDerivPageEmpty6}{ugIntroCalcDerivPagePatch6}
-\pastebutton{ugIntroCalcDerivPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{D(g, [y, y, x, x])\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch7}
-\begin{paste}{ugIntroCalcDerivPageFull7}{ugIntroCalcDerivPageEmpty7}
-\pastebutton{ugIntroCalcDerivPageFull7}{\hidepaste}
-\tab{5}\spadcommand{D(F,x)}
-\indentrel{3}\begin{verbatim}
-   (7)  0
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty7}
-\begin{paste}{ugIntroCalcDerivPageEmpty7}{ugIntroCalcDerivPagePatch7}
-\pastebutton{ugIntroCalcDerivPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{D(F,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch8}
-\begin{paste}{ugIntroCalcDerivPageFull8}{ugIntroCalcDerivPageEmpty8}
-\pastebutton{ugIntroCalcDerivPageFull8}{\hidepaste}
-\tab{5}\spadcommand{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y }}
-\indentrel{3}\begin{verbatim}
-   (8)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty8}
-\begin{paste}{ugIntroCalcDerivPageEmpty8}{ugIntroCalcDerivPagePatch8}
-\pastebutton{ugIntroCalcDerivPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{F := operator 'F; x := operator 'x; y := operator 'y\bound{F x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch9}
-\begin{paste}{ugIntroCalcDerivPageFull9}{ugIntroCalcDerivPageEmpty9}
-\pastebutton{ugIntroCalcDerivPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a := F(x z, y z, z**2) + x y(z+1)\bound{a }\free{F }\free{x }\free{y }}
-\indentrel{3}\begin{verbatim}
-                                   2
-   (9)  x(y(z + 1)) + F(x(z),y(z),z )
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty9}
-\begin{paste}{ugIntroCalcDerivPageEmpty9}{ugIntroCalcDerivPagePatch9}
-\pastebutton{ugIntroCalcDerivPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a := F(x z, y z, z**2) + x y(z+1)\bound{a }\free{F }\free{x }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch10}
-\begin{paste}{ugIntroCalcDerivPageFull10}{ugIntroCalcDerivPageEmpty10}
-\pastebutton{ugIntroCalcDerivPageFull10}{\hidepaste}
-\tab{5}\spadcommand{dadz := D(a, z)\bound{da }\free{a }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                      2     ,                  2
-     2zF  (x(z),y(z),z ) + y (z)F  (x(z),y(z),z )
-        ,3                       ,2
-   + 
-      ,                  2     ,           ,
-     x (z)F  (x(z),y(z),z ) + x (y(z + 1))y (z + 1)
-           ,1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty10}
-\begin{paste}{ugIntroCalcDerivPageEmpty10}{ugIntroCalcDerivPagePatch10}
-\pastebutton{ugIntroCalcDerivPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{dadz := D(a, z)\bound{da }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch11}
-\begin{paste}{ugIntroCalcDerivPageFull11}{ugIntroCalcDerivPageEmpty11}
-\pastebutton{ugIntroCalcDerivPageFull11}{\hidepaste}
-\tab{5}\spadcommand{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da }}
-\indentrel{3}\begin{verbatim}
-   (11)
-          2            z             2
-       (2z  + 2z)F  (%e ,log(z + 1),z )
-                  ,3
-     + 
-             z             2
-       F  (%e ,log(z + 1),z )
-        ,2
-     + 
-                z      z             2
-       (z + 1)%e F  (%e ,log(z + 1),z ) + z + 1
-                  ,1
-  /
-     z + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty11}
-\begin{paste}{ugIntroCalcDerivPageEmpty11}{ugIntroCalcDerivPagePatch11}
-\pastebutton{ugIntroCalcDerivPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{eval(eval(dadz, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{da }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch12}
-\begin{paste}{ugIntroCalcDerivPageFull12}{ugIntroCalcDerivPageEmpty12}
-\pastebutton{ugIntroCalcDerivPageFull12}{\hidepaste}
-\tab{5}\spadcommand{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{a }\bound{eva }}
-\indentrel{3}\begin{verbatim}
-             z             2
-   (12)  F(%e ,log(z + 1),z ) + z + 2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty12}
-\begin{paste}{ugIntroCalcDerivPageEmpty12}{ugIntroCalcDerivPagePatch12}
-\pastebutton{ugIntroCalcDerivPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{eval(eval(a, 'x, z +-> exp z), 'y, z +-> log(z+1))\free{a }\bound{eva }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPagePatch13}
-\begin{paste}{ugIntroCalcDerivPageFull13}{ugIntroCalcDerivPageEmpty13}
-\pastebutton{ugIntroCalcDerivPageFull13}{\hidepaste}
-\tab{5}\spadcommand{D(\%, z)\free{eva }}
-\indentrel{3}\begin{verbatim}
-   (13)
-          2            z             2
-       (2z  + 2z)F  (%e ,log(z + 1),z )
-                  ,3
-     + 
-             z             2
-       F  (%e ,log(z + 1),z )
-        ,2
-     + 
-                z      z             2
-       (z + 1)%e F  (%e ,log(z + 1),z ) + z + 1
-                  ,1
-  /
-     z + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcDerivPageEmpty13}
-\begin{paste}{ugIntroCalcDerivPageEmpty13}{ugIntroCalcDerivPagePatch13}
-\pastebutton{ugIntroCalcDerivPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{D(\%, z)\free{eva }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch1}
-\begin{paste}{ugIntroVariablesPageFull1}{ugIntroVariablesPageEmpty1}
-\pastebutton{ugIntroVariablesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(x**2 - x*y**3 +3*y)**2}
-\indentrel{3}\begin{verbatim}
-         2 6       4     3 3     2     2     4
-   (1)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty1}
-\begin{paste}{ugIntroVariablesPageEmpty1}{ugIntroVariablesPagePatch1}
-\pastebutton{ugIntroVariablesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(x**2 - x*y**3 +3*y)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch2}
-\begin{paste}{ugIntroVariablesPageFull2}{ugIntroVariablesPageEmpty2}
-\pastebutton{ugIntroVariablesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
-\indentrel{3}\begin{verbatim}
-           3      2
-   (2)  18x  + 60x  - 46x + 8
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty2}
-\begin{paste}{ugIntroVariablesPageEmpty2}{ugIntroVariablesPagePatch2}
-\pastebutton{ugIntroVariablesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p: UP(x,INT) := (3*x-1)**2 * (2*x + 8)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch3}
-\begin{paste}{ugIntroVariablesPageFull3}{ugIntroVariablesPageEmpty3}
-\pastebutton{ugIntroVariablesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2\bound{m }}
-\indentrel{3}\begin{verbatim}
-         4     3 3     6       2     4      2
-   (3)  x  - 2y x  + (y  + 6y)x  - 6y x + 9y
-            Type: MultivariatePolynomial([x,y],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty3}
-\begin{paste}{ugIntroVariablesPageEmpty3}{ugIntroVariablesPagePatch3}
-\pastebutton{ugIntroVariablesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{m: MPOLY([x,y],INT) := (x**2-x*y**3+3*y)**2\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch4}
-\begin{paste}{ugIntroVariablesPageFull4}{ugIntroVariablesPageEmpty4}
-\pastebutton{ugIntroVariablesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-         2 6       4     3 3     2     2     4
-   (4)  x y  - 6x y  - 2x y  + 9y  + 6x y + x
-            Type: MultivariatePolynomial([y,x],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty4}
-\begin{paste}{ugIntroVariablesPageEmpty4}{ugIntroVariablesPagePatch4}
-\pastebutton{ugIntroVariablesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m :: MPOLY([y,x],INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch5}
-\begin{paste}{ugIntroVariablesPageFull5}{ugIntroVariablesPageEmpty5}
-\pastebutton{ugIntroVariablesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{m :: DMP([y,x],INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-         6 2     4      3 3     2       2    4
-   (5)  y x  - 6y x - 2y x  + 9y  + 6y x  + x
- Type: DistributedMultivariatePolynomial([y,x],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty5}
-\begin{paste}{ugIntroVariablesPageEmpty5}{ugIntroVariablesPagePatch5}
-\pastebutton{ugIntroVariablesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{m :: DMP([y,x],INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPagePatch6}
-\begin{paste}{ugIntroVariablesPageFull6}{ugIntroVariablesPageEmpty6}
-\pastebutton{ugIntroVariablesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m :: HDMP([y,x],INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-         6 2     3 3     4     4       2     2
-   (6)  y x  - 2y x  - 6y x + x  + 6y x  + 9y
-Type: HomogeneousDistributedMultivariatePolynomial([y,x],Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroVariablesPageEmpty6}
-\begin{paste}{ugIntroVariablesPageEmpty6}{ugIntroVariablesPagePatch6}
-\pastebutton{ugIntroVariablesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m :: HDMP([y,x],INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch1}
-\begin{paste}{ugIntroIntegratePageFull1}{ugIntroIntegratePageEmpty1}
-\pastebutton{ugIntroIntegratePageFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\indentrel{3}\begin{verbatim}
-              3     2
-        atan(x  + 3x  + 3x + 1)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   3
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty1}
-\begin{paste}{ugIntroIntegratePageEmpty1}{ugIntroIntegratePagePatch1}
-\pastebutton{ugIntroIntegratePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate((x**2+2*x+1)/((x+1)**6+1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch2}
-\begin{paste}{ugIntroIntegratePageFull2}{ugIntroIntegratePageEmpty2}
-\pastebutton{ugIntroIntegratePageFull2}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-               2      ÚÄÄÄ¿
-             (x  - a)\³- a  + 2a x         ÚÄ¿
-         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)      x\³a
-                      2             atan(ÄÄÄÄÄ)
-                     x  + a                a
-   (2)  [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄ]
-                     ÚÄÄÄ¿               ÚÄ¿
-                   2\³- a               \³a
-               Type: Union(List Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty2}
-\begin{paste}{ugIntroIntegratePageEmpty2}{ugIntroIntegratePagePatch2}
-\pastebutton{ugIntroIntegratePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch3}
-\begin{paste}{ugIntroIntegratePageFull3}{ugIntroIntegratePageEmpty3}
-\pastebutton{ugIntroIntegratePageFull3}{\hidepaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\indentrel{3}\begin{verbatim}
-              ÚÄÄÄ¿              ÚÄÄÄ¿
-            x\³- a  + a        x\³- a  - a
-        log(ÄÄÄÄÄÄÄÄÄÄÄ) - log(ÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄ¿              ÚÄÄÄ¿
-               \³- a              \³- a
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                        ÚÄÄÄ¿
-                      2\³- a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty3}
-\begin{paste}{ugIntroIntegratePageEmpty3}{ugIntroIntegratePagePatch3}
-\pastebutton{ugIntroIntegratePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{complexIntegrate(1/(x**2 + a),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch4}
-\begin{paste}{ugIntroIntegratePageFull4}{ugIntroIntegratePageEmpty4}
-\pastebutton{ugIntroIntegratePageFull4}{\hidepaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\indentrel{3}\begin{verbatim}
-   (4)
-        3 3         2 2       2          3 3ÚÄÄÄÄÄÄÄ¿2
-   (120b x  - 135a b x  + 162a b x - 243a )\³b x + a
-   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                              4
-                          440b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty4}
-\begin{paste}{ugIntroIntegratePageEmpty4}{ugIntroIntegratePagePatch4}
-\pastebutton{ugIntroIntegratePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{integrate(x**3 / (a+b*x)**(1/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch5}
-\begin{paste}{ugIntroIntegratePageFull5}{ugIntroIntegratePageEmpty5}
-\pastebutton{ugIntroIntegratePageFull5}{\hidepaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\indentrel{3}\begin{verbatim}
-   (5)
-       -
-              2 2 ÚÄ¿
-            2b x \³3
-         *
-                3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2   3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-            log(\³a \³b x + a   + \³a   \³b x + a + a)
-     + 
-         2 2 ÚÄ¿    3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿
-       4b x \³3 log(\³a   \³b x + a - a)
-     + 
-                    ÚÄ¿3ÚÄ¿2 3ÚÄÄÄÄÄÄÄ¿    ÚÄ¿
-          2 2     2\³3 \³a   \³b x + a + a\³3
-       12b x atan(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                               3a
-     + 
-                    ÚÄ¿3ÚÄ¿3ÚÄÄÄÄÄÄÄ¿2
-       (12b x - 9a)\³3 \³a \³b x + a
-  /
-        2 2 ÚÄ¿3ÚÄ¿
-     18a x \³3 \³a
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty5}
-\begin{paste}{ugIntroIntegratePageEmpty5}{ugIntroIntegratePagePatch5}
-\pastebutton{ugIntroIntegratePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{integrate(1 / (x**3 * (a+b*x)**(1/3)),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch6}
-\begin{paste}{ugIntroIntegratePageFull6}{ugIntroIntegratePageEmpty6}
-\pastebutton{ugIntroIntegratePageFull6}{\hidepaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\indentrel{3}\begin{verbatim}
-           x      ÚÄÄÄÄÄÄÄÄ¿
-         Ú¿  log(\³b + %S a  + 1)
-   (6)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%S
-        ÀÙ            %S
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty6}
-\begin{paste}{ugIntroIntegratePageEmpty6}{ugIntroIntegratePagePatch6}
-\pastebutton{ugIntroIntegratePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a*x + b)) / x,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch7}
-\begin{paste}{ugIntroIntegratePageFull7}{ugIntroIntegratePageEmpty7}
-\pastebutton{ugIntroIntegratePageFull7}{\hidepaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
-\indentrel{3}\begin{verbatim}
-   (7)
-                          ÚÄÄÄÄÄ¿
-                 - 2cosh(\³x + b  + 1) - 2x
-     2log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                ÚÄÄÄÄÄ¿              ÚÄÄÄÄÄ¿
-          sinh(\³x + b  + 1) - cosh(\³x + b  + 1)
-   + 
-         ÚÄÄÄÄÄ¿
-     - 2\³x + b
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty7}
-\begin{paste}{ugIntroIntegratePageEmpty7}{ugIntroIntegratePagePatch7}
-\pastebutton{ugIntroIntegratePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{integrate((sinh(1+sqrt(x+b))+2*sqrt(x+b)) / (sqrt(x+b) * (x + cosh(1+sqrt(x + b)))), x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch8}
-\begin{paste}{ugIntroIntegratePageFull8}{ugIntroIntegratePageEmpty8}
-\pastebutton{ugIntroIntegratePageFull8}{\hidepaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\indentrel{3}\begin{verbatim}
-   (8)
-                 atan(x) 2             atan(x) 2
-       8log(3tan(ÄÄÄÄÄÄÄ)  - 1) - 3tan(ÄÄÄÄÄÄÄ)
-                    3                     3
-     + 
-               atan(x)
-       18x tan(ÄÄÄÄÄÄÄ)
-                  3
-  /
-     18
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty8}
-\begin{paste}{ugIntroIntegratePageEmpty8}{ugIntroIntegratePagePatch8}
-\pastebutton{ugIntroIntegratePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{integrate(tan(atan(x)/3),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch9}
-\begin{paste}{ugIntroIntegratePageFull9}{ugIntroIntegratePageEmpty9}
-\pastebutton{ugIntroIntegratePageFull9}{\hidepaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
-\indentrel{3}\begin{verbatim}
-            ÚÄÄÄÄÄÄÄÄÄÄ¿
-          2\³log(x) + x
-   (9)  - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-            log(x) + x
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty9}
-\begin{paste}{ugIntroIntegratePageEmpty9}{ugIntroIntegratePagePatch9}
-\pastebutton{ugIntroIntegratePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{integrate((x + 1) / (x*(x + log x) ** (3/2)), x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePagePatch10}
-\begin{paste}{ugIntroIntegratePageFull10}{ugIntroIntegratePageEmpty10}
-\pastebutton{ugIntroIntegratePageFull10}{\hidepaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\indentrel{3}\begin{verbatim}
-                      ÚÄÄÄ¿    erf(x) - 1      ÚÄÄÄ¿
-         (erf(x) - 1)\³%pi log(ÄÄÄÄÄÄÄÄÄÄ) - 2\³%pi
-                               erf(x) + 1
-   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                         8erf(x) - 8
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroIntegratePageEmpty10}
-\begin{paste}{ugIntroIntegratePageEmpty10}{ugIntroIntegratePagePatch10}
-\pastebutton{ugIntroIntegratePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{integrate(exp(-x**2) * erf(x) / (erf(x)**3 - erf(x)**2 - erf(x) + 1),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch1}
-\begin{paste}{ugIntroCalcLimitsPageFull1}{ugIntroCalcLimitsPageEmpty1}
-\pastebutton{ugIntroCalcLimitsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{g := csc(a*x) / csch(b*x)\bound{g }}
-\indentrel{3}\begin{verbatim}
-         csc(a x)
-   (1)  ÄÄÄÄÄÄÄÄÄ
-        csch(b x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty1}
-\begin{paste}{ugIntroCalcLimitsPageEmpty1}{ugIntroCalcLimitsPagePatch1}
-\pastebutton{ugIntroCalcLimitsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{g := csc(a*x) / csch(b*x)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch2}
-\begin{paste}{ugIntroCalcLimitsPageFull2}{ugIntroCalcLimitsPageEmpty2}
-\pastebutton{ugIntroCalcLimitsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(g,x=0)\free{g }}
-\indentrel{3}\begin{verbatim}
-        b
-   (2)  Ä
-        a
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty2}
-\begin{paste}{ugIntroCalcLimitsPageEmpty2}{ugIntroCalcLimitsPagePatch2}
-\pastebutton{ugIntroCalcLimitsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(g,x=0)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch3}
-\begin{paste}{ugIntroCalcLimitsPageFull3}{ugIntroCalcLimitsPageEmpty3}
-\pastebutton{ugIntroCalcLimitsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{h := (1 + k/x)**x\bound{h }}
-\indentrel{3}\begin{verbatim}
-         x + k x
-   (3)  (ÄÄÄÄÄ)
-           x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty3}
-\begin{paste}{ugIntroCalcLimitsPageEmpty3}{ugIntroCalcLimitsPagePatch3}
-\pastebutton{ugIntroCalcLimitsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{h := (1 + k/x)**x\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch4}
-\begin{paste}{ugIntroCalcLimitsPageFull4}{ugIntroCalcLimitsPageEmpty4}
-\pastebutton{ugIntroCalcLimitsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{limit(h,x=\%plusInfinity)\free{h }}
-\indentrel{3}\begin{verbatim}
-          k
-   (4)  %e
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty4}
-\begin{paste}{ugIntroCalcLimitsPageEmpty4}{ugIntroCalcLimitsPagePatch4}
-\pastebutton{ugIntroCalcLimitsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{limit(h,x=\%plusInfinity)\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch5}
-\begin{paste}{ugIntroCalcLimitsPageFull5}{ugIntroCalcLimitsPageEmpty5}
-\pastebutton{ugIntroCalcLimitsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\indentrel{3}\begin{verbatim}
-   (5)  [leftHandLimit= - 1,rightHandLimit= 1]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty5}
-\begin{paste}{ugIntroCalcLimitsPageEmpty5}{ugIntroCalcLimitsPagePatch5}
-\pastebutton{ugIntroCalcLimitsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch6}
-\begin{paste}{ugIntroCalcLimitsPageFull6}{ugIntroCalcLimitsPageEmpty6}
-\pastebutton{ugIntroCalcLimitsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{limit(exp(-1/x**2),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (6)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty6}
-\begin{paste}{ugIntroCalcLimitsPageEmpty6}{ugIntroCalcLimitsPagePatch6}
-\pastebutton{ugIntroCalcLimitsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{limit(exp(-1/x**2),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPagePatch7}
-\begin{paste}{ugIntroCalcLimitsPageFull7}{ugIntroCalcLimitsPageEmpty7}
-\pastebutton{ugIntroCalcLimitsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(exp(-1/x**2),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (7)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCalcLimitsPageEmpty7}
-\begin{paste}{ugIntroCalcLimitsPageEmpty7}{ugIntroCalcLimitsPagePatch7}
-\pastebutton{ugIntroCalcLimitsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{complexLimit(exp(-1/x**2),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch1}
-\begin{paste}{ugIntroSysCmmandsPageFull1}{ugIntroSysCmmandsPageEmpty1}
-\pastebutton{ugIntroSysCmmandsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)what operations integrate}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty1}
-\begin{paste}{ugIntroSysCmmandsPageEmpty1}{ugIntroSysCmmandsPagePatch1}
-\pastebutton{ugIntroSysCmmandsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)what operations integrate}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch2}
-\begin{paste}{ugIntroSysCmmandsPageFull2}{ugIntroSysCmmandsPageEmpty2}
-\pastebutton{ugIntroSysCmmandsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f(0) == 1; g(0) == 1\bound{u1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty2}
-\begin{paste}{ugIntroSysCmmandsPageEmpty2}{ugIntroSysCmmandsPagePatch2}
-\pastebutton{ugIntroSysCmmandsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f(0) == 1; g(0) == 1\bound{u1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch3}
-\begin{paste}{ugIntroSysCmmandsPageFull3}{ugIntroSysCmmandsPageEmpty3}
-\pastebutton{ugIntroSysCmmandsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2 }\free{u1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty3}
-\begin{paste}{ugIntroSysCmmandsPageEmpty3}{ugIntroSysCmmandsPagePatch3}
-\pastebutton{ugIntroSysCmmandsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(n) == e/2*f(n-1) - x*g(n-1)\bound{u2 }\free{u1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch4}
-\begin{paste}{ugIntroSysCmmandsPageFull4}{ugIntroSysCmmandsPageEmpty4}
-\pastebutton{ugIntroSysCmmandsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3 }\free{u2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty4}
-\begin{paste}{ugIntroSysCmmandsPageEmpty4}{ugIntroSysCmmandsPagePatch4}
-\pastebutton{ugIntroSysCmmandsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g(n) == -x*f(n-1) + d/3*g(n-1)\bound{u3 }\free{u2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch5}
-\begin{paste}{ugIntroSysCmmandsPageFull5}{ugIntroSysCmmandsPageEmpty5}
-\pastebutton{ugIntroSysCmmandsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f(3)\bound{u4 }\free{u3 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-      3        1    2      1  2   1       1  2     1  3
-   - x  + (e + Ä d)x  + (- Ä e  - Ä d e - Ä d )x + Ä e
-               3           4      6       9        8
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty5}
-\begin{paste}{ugIntroSysCmmandsPageEmpty5}{ugIntroSysCmmandsPagePatch5}
-\pastebutton{ugIntroSysCmmandsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f(3)\bound{u4 }\free{u3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch6}
-\begin{paste}{ugIntroSysCmmandsPageFull6}{ugIntroSysCmmandsPageEmpty6}
-\pastebutton{ugIntroSysCmmandsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{)undo 2\bound{u5 }\free{u4 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty6}
-\begin{paste}{ugIntroSysCmmandsPageEmpty6}{ugIntroSysCmmandsPagePatch6}
-\pastebutton{ugIntroSysCmmandsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{)undo 2\bound{u5 }\free{u4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch7}
-\begin{paste}{ugIntroSysCmmandsPageFull7}{ugIntroSysCmmandsPageEmpty7}
-\pastebutton{ugIntroSysCmmandsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6 }\free{u5 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty7}
-\begin{paste}{ugIntroSysCmmandsPageEmpty7}{ugIntroSysCmmandsPagePatch7}
-\pastebutton{ugIntroSysCmmandsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f(n) == d/3*f(n-1) - x*g(n-1)\bound{u6 }\free{u5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch8}
-\begin{paste}{ugIntroSysCmmandsPageFull8}{ugIntroSysCmmandsPageEmpty8}
-\pastebutton{ugIntroSysCmmandsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{)undo )redo\bound{u7 }\free{u6 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty8}
-\begin{paste}{ugIntroSysCmmandsPageEmpty8}{ugIntroSysCmmandsPagePatch8}
-\pastebutton{ugIntroSysCmmandsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{)undo )redo\bound{u7 }\free{u6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch9}
-\begin{paste}{ugIntroSysCmmandsPageFull9}{ugIntroSysCmmandsPageEmpty9}
-\pastebutton{ugIntroSysCmmandsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{)undo 4\bound{u8 }\free{u7 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty9}
-\begin{paste}{ugIntroSysCmmandsPageEmpty9}{ugIntroSysCmmandsPagePatch9}
-\pastebutton{ugIntroSysCmmandsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{)undo 4\bound{u8 }\free{u7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPagePatch10}
-\begin{paste}{ugIntroSysCmmandsPageFull10}{ugIntroSysCmmandsPageEmpty10}
-\pastebutton{ugIntroSysCmmandsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{f(3)\bound{u9 }\free{u8 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-      3        1    2      1  2   1       1  2     1  3
-   - x  + (e + Ä d)x  + (- Ä e  - Ä d e - Ä d )x + Ä e
-               3           4      6       9        8
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSysCmmandsPageEmpty10}
-\begin{paste}{ugIntroSysCmmandsPageEmpty10}{ugIntroSysCmmandsPagePatch10}
-\pastebutton{ugIntroSysCmmandsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{f(3)\bound{u9 }\free{u8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPagePatch1}
-\begin{paste}{ugIntroArithmeticPageFull1}{ugIntroArithmeticPageEmpty1}
-\pastebutton{ugIntroArithmeticPageFull1}{\hidepaste}
-\tab{5}\spadcommand{1 + 2 - 3 / 4 * 3 ** 2 - 1}
-\indentrel{3}\begin{verbatim}
-          19
-   (1)  - ÄÄ
-           4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPageEmpty1}
-\begin{paste}{ugIntroArithmeticPageEmpty1}{ugIntroArithmeticPagePatch1}
-\pastebutton{ugIntroArithmeticPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{1 + 2 - 3 / 4 * 3 ** 2 - 1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPagePatch2}
-\begin{paste}{ugIntroArithmeticPageFull2}{ugIntroArithmeticPageEmpty2}
-\pastebutton{ugIntroArithmeticPageFull2}{\hidepaste}
-\tab{5}\spadcommand{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
-\indentrel{3}\begin{verbatim}
-          19
-   (2)  - ÄÄ
-           4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPageEmpty2}
-\begin{paste}{ugIntroArithmeticPageEmpty2}{ugIntroArithmeticPagePatch2}
-\pastebutton{ugIntroArithmeticPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{((1 + 2) - ((3 / 4) * (3 ** 2))) - 1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPagePatch3}
-\begin{paste}{ugIntroArithmeticPageFull3}{ugIntroArithmeticPageEmpty3}
-\pastebutton{ugIntroArithmeticPageFull3}{\hidepaste}
-\tab{5}\spadcommand{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
-\indentrel{3}\begin{verbatim}
-        11
-   (3)  ÄÄ
-         4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroArithmeticPageEmpty3}
-\begin{paste}{ugIntroArithmeticPageEmpty3}{ugIntroArithmeticPagePatch3}
-\pastebutton{ugIntroArithmeticPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{1 + 2 - 3/ (4 * 3 ** (2 - 1))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroConversionPagePatch1}
-\begin{paste}{ugIntroConversionPageFull1}{ugIntroConversionPageEmpty1}
-\pastebutton{ugIntroConversionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := r**2 + 2/3\bound{p }}
-\indentrel{3}\begin{verbatim}
-         2   2
-   (1)  r  + Ä
-             3
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroConversionPageEmpty1}
-\begin{paste}{ugIntroConversionPageEmpty1}{ugIntroConversionPagePatch1}
-\pastebutton{ugIntroConversionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := r**2 + 2/3\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroConversionPagePatch2}
-\begin{paste}{ugIntroConversionPageFull2}{ugIntroConversionPageEmpty2}
-\pastebutton{ugIntroConversionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p :: Fraction Polynomial Integer\free{p }}
-\indentrel{3}\begin{verbatim}
-          2
-        3r  + 2
-   (2)  ÄÄÄÄÄÄÄ
-           3
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroConversionPageEmpty2}
-\begin{paste}{ugIntroConversionPageEmpty2}{ugIntroConversionPagePatch2}
-\pastebutton{ugIntroConversionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p :: Fraction Polynomial Integer\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch1}
-\begin{paste}{ugIntroYouPageFull1}{ugIntroYouPageEmpty1}
-\pastebutton{ugIntroYouPageFull1}{\hidepaste}
-\tab{5}\spadcommand{fact(0) == 1\bound{fact }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty1}
-\begin{paste}{ugIntroYouPageEmpty1}{ugIntroYouPagePatch1}
-\pastebutton{ugIntroYouPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{fact(0) == 1\bound{fact }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch2}
-\begin{paste}{ugIntroYouPageFull2}{ugIntroYouPageEmpty2}
-\pastebutton{ugIntroYouPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fact(n) == n*fact(n-1)\bound{facta }\free{fact }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty2}
-\begin{paste}{ugIntroYouPageEmpty2}{ugIntroYouPagePatch2}
-\pastebutton{ugIntroYouPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fact(n) == n*fact(n-1)\bound{facta }\free{fact }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch3}
-\begin{paste}{ugIntroYouPageFull3}{ugIntroYouPageEmpty3}
-\pastebutton{ugIntroYouPageFull3}{\hidepaste}
-\tab{5}\spadcommand{fact(50)\free{facta }}
-\indentrel{3}\begin{verbatim}
-   (3)
-  304140932017133780436126081660647688443776415689605120_
-   00000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty3}
-\begin{paste}{ugIntroYouPageEmpty3}{ugIntroYouPagePatch3}
-\pastebutton{ugIntroYouPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{fact(50)\free{facta }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch4}
-\begin{paste}{ugIntroYouPageFull4}{ugIntroYouPageEmpty4}
-\pastebutton{ugIntroYouPageFull4}{\hidepaste}
-\tab{5}\spadcommand{fac(n) == if n < 3 then n else n * fac(n - 1)\bound{fac }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty4}
-\begin{paste}{ugIntroYouPageEmpty4}{ugIntroYouPagePatch4}
-\pastebutton{ugIntroYouPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{fac(n) == if n < 3 then n else n * fac(n - 1)\bound{fac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch5}
-\begin{paste}{ugIntroYouPageFull5}{ugIntroYouPageEmpty5}
-\pastebutton{ugIntroYouPageFull5}{\hidepaste}
-\tab{5}\spadcommand{fac(50)\free{fac }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  304140932017133780436126081660647688443776415689605120_
-   00000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty5}
-\begin{paste}{ugIntroYouPageEmpty5}{ugIntroYouPagePatch5}
-\pastebutton{ugIntroYouPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{fac(50)\free{fac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch6}
-\begin{paste}{ugIntroYouPageFull6}{ugIntroYouPageEmpty6}
-\pastebutton{ugIntroYouPageFull6}{\hidepaste}
-\tab{5}\spadcommand{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)\bound{fa }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty6}
-\begin{paste}{ugIntroYouPageEmpty6}{ugIntroYouPagePatch6}
-\pastebutton{ugIntroYouPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{fa(n) == (a := 1; for i in 2..n repeat a := a*i; a)\bound{fa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch7}
-\begin{paste}{ugIntroYouPageFull7}{ugIntroYouPageEmpty7}
-\pastebutton{ugIntroYouPageFull7}{\hidepaste}
-\tab{5}\spadcommand{fa(50)\free{fa }}
-\indentrel{3}\begin{verbatim}
-   (7)
-  304140932017133780436126081660647688443776415689605120_
-   00000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty7}
-\begin{paste}{ugIntroYouPageEmpty7}{ugIntroYouPagePatch7}
-\pastebutton{ugIntroYouPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{fa(50)\free{fa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch8}
-\begin{paste}{ugIntroYouPageFull8}{ugIntroYouPageEmpty8}
-\pastebutton{ugIntroYouPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f(n) == reduce(*,[i for i in 2..n])\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty8}
-\begin{paste}{ugIntroYouPageEmpty8}{ugIntroYouPagePatch8}
-\pastebutton{ugIntroYouPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f(n) == reduce(*,[i for i in 2..n])\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch9}
-\begin{paste}{ugIntroYouPageFull9}{ugIntroYouPageEmpty9}
-\pastebutton{ugIntroYouPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f(50)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (9)
-  304140932017133780436126081660647688443776415689605120_
-   00000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty9}
-\begin{paste}{ugIntroYouPageEmpty9}{ugIntroYouPagePatch9}
-\pastebutton{ugIntroYouPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f(50)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch10}
-\begin{paste}{ugIntroYouPageFull10}{ugIntroYouPageEmpty10}
-\pastebutton{ugIntroYouPageFull10}{\hidepaste}
-\tab{5}\spadcommand{factorial(50)}
-\indentrel{3}\begin{verbatim}
-   (10)
-  304140932017133780436126081660647688443776415689605120_
-   00000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty10}
-\begin{paste}{ugIntroYouPageEmpty10}{ugIntroYouPagePatch10}
-\pastebutton{ugIntroYouPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{factorial(50)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch11}
-\begin{paste}{ugIntroYouPageFull11}{ugIntroYouPageEmpty11}
-\pastebutton{ugIntroYouPageFull11}{\hidepaste}
-\tab{5}\spadcommand{permMat(n, i, j) ==
-  m := diagonalMatrix
-    [(if i = k or j = k then 0 else 1)
-      for k in 1..n]
-  m(i,j) := 1
-  m(j,i) := 1
-  m
-\bound{permMat }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty11}
-\begin{paste}{ugIntroYouPageEmpty11}{ugIntroYouPagePatch11}
-\pastebutton{ugIntroYouPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{permMat(n, i, j) ==
-  m := diagonalMatrix
-    [(if i = k or j = k then 0 else 1)
-      for k in 1..n]
-  m(i,j) := 1
-  m(j,i) := 1
-  m
-\bound{permMat }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch12}
-\begin{paste}{ugIntroYouPageFull12}{ugIntroYouPageEmpty12}
-\pastebutton{ugIntroYouPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p := permMat(4,2,3)\free{permMat }\bound{p }}
-\indentrel{3}\begin{verbatim}
-         Ú1  0  0  0¿
-         ³          ³
-         ³0  0  1  0³
-   (12)  ³          ³
-         ³0  1  0  0³
-         ³          ³
-         À0  0  0  1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty12}
-\begin{paste}{ugIntroYouPageEmpty12}{ugIntroYouPagePatch12}
-\pastebutton{ugIntroYouPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p := permMat(4,2,3)\free{permMat }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch13}
-\begin{paste}{ugIntroYouPageFull13}{ugIntroYouPageEmpty13}
-\pastebutton{ugIntroYouPageFull13}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m }}
-\indentrel{3}\begin{verbatim}
-         Ú1   2   3   4 ¿
-         ³              ³
-         ³5   6   7   8 ³
-   (13)  ³              ³
-         ³9   10  11  12³
-         ³              ³
-         À13  14  15  16Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty13}
-\begin{paste}{ugIntroYouPageEmpty13}{ugIntroYouPagePatch13}
-\pastebutton{ugIntroYouPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[4*i + j for j in 1..4] for i in 0..3]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch14}
-\begin{paste}{ugIntroYouPageFull14}{ugIntroYouPageEmpty14}
-\pastebutton{ugIntroYouPageFull14}{\hidepaste}
-\tab{5}\spadcommand{permMat(4,2,3) * m\free{p m }}
-\indentrel{3}\begin{verbatim}
-         Ú1   2   3   4 ¿
-         ³              ³
-         ³9   10  11  12³
-   (14)  ³              ³
-         ³5   6   7   8 ³
-         ³              ³
-         À13  14  15  16Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty14}
-\begin{paste}{ugIntroYouPageEmpty14}{ugIntroYouPagePatch14}
-\pastebutton{ugIntroYouPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{permMat(4,2,3) * m\free{p m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch15}
-\begin{paste}{ugIntroYouPageFull15}{ugIntroYouPageEmpty15}
-\pastebutton{ugIntroYouPageFull15}{\hidepaste}
-\tab{5}\spadcommand{t : (Float -> Float, Float) -> Float\bound{tdecl }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty15}
-\begin{paste}{ugIntroYouPageEmpty15}{ugIntroYouPagePatch15}
-\pastebutton{ugIntroYouPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{t : (Float -> Float, Float) -> Float\bound{tdecl }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch16}
-\begin{paste}{ugIntroYouPageFull16}{ugIntroYouPageEmpty16}
-\pastebutton{ugIntroYouPageFull16}{\hidepaste}
-\tab{5}\spadcommand{t(fun, x) == fun(x)**2 + sin(x)**2\free{tdecl }\bound{t }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty16}
-\begin{paste}{ugIntroYouPageEmpty16}{ugIntroYouPagePatch16}
-\pastebutton{ugIntroYouPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{t(fun, x) == fun(x)**2 + sin(x)**2\free{tdecl }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch17}
-\begin{paste}{ugIntroYouPageFull17}{ugIntroYouPageEmpty17}
-\pastebutton{ugIntroYouPageFull17}{\hidepaste}
-\tab{5}\spadcommand{t(cos, 5.2058)\free{t }}
-\indentrel{3}\begin{verbatim}
-   (17)  1.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty17}
-\begin{paste}{ugIntroYouPageEmpty17}{ugIntroYouPagePatch17}
-\pastebutton{ugIntroYouPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{t(cos, 5.2058)\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch18}
-\begin{paste}{ugIntroYouPageFull18}{ugIntroYouPageEmpty18}
-\pastebutton{ugIntroYouPageFull18}{\hidepaste}
-\tab{5}\spadcommand{cosinv(y) == cos(1/y)\bound{cosinv }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty18}
-\begin{paste}{ugIntroYouPageEmpty18}{ugIntroYouPagePatch18}
-\pastebutton{ugIntroYouPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{cosinv(y) == cos(1/y)\bound{cosinv }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch19}
-\begin{paste}{ugIntroYouPageFull19}{ugIntroYouPageEmpty19}
-\pastebutton{ugIntroYouPageFull19}{\hidepaste}
-\tab{5}\spadcommand{t(cosinv, 5.2058)\free{t }\free{cosinv }}
-\indentrel{3}\begin{verbatim}
-   (19)  1.7392237241 800516493
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty19}
-\begin{paste}{ugIntroYouPageEmpty19}{ugIntroYouPagePatch19}
-\pastebutton{ugIntroYouPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{t(cosinv, 5.2058)\free{t }\free{cosinv }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch20}
-\begin{paste}{ugIntroYouPageFull20}{ugIntroYouPageEmpty20}
-\pastebutton{ugIntroYouPageFull20}{\hidepaste}
-\tab{5}\spadcommand{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))\bound{g }}
-\indentrel{3}\begin{verbatim}
-             ÚÄ¿ ÚÄ¿        ÚÄÄÄ¿
-   (20)  %BD\³a \³b  == %BD\³a b
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty20}
-\begin{paste}{ugIntroYouPageEmpty20}{ugIntroYouPagePatch20}
-\pastebutton{ugIntroYouPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{groupSqrt := rule(sqrt(a) * sqrt(b) == sqrt(a*b))\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch21}
-\begin{paste}{ugIntroYouPageFull21}{ugIntroYouPageEmpty21}
-\pastebutton{ugIntroYouPageFull21}{\hidepaste}
-\tab{5}\spadcommand{a := (sqrt(x) + sqrt(y) + sqrt(z))**4\bound{sxy }}
-\indentrel{3}\begin{verbatim}
-   (21)
-                      ÚÄ¿                   ÚÄ¿  ÚÄ¿
-     ((4z + 4y + 12x)\³y  + (4z + 12y + 4x)\³x )\³z
-   + 
-                     ÚÄ¿ ÚÄ¿    2                 2
-     (12z + 4y + 4x)\³x \³y  + z  + (6y + 6x)z + y  + 6x y
-   + 
-      2
-     x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty21}
-\begin{paste}{ugIntroYouPageEmpty21}{ugIntroYouPagePatch21}
-\pastebutton{ugIntroYouPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{a := (sqrt(x) + sqrt(y) + sqrt(z))**4\bound{sxy }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPagePatch22}
-\begin{paste}{ugIntroYouPageFull22}{ugIntroYouPageEmpty22}
-\pastebutton{ugIntroYouPageFull22}{\hidepaste}
-\tab{5}\spadcommand{groupSqrt a\free{sxy }\free{g }}
-\indentrel{3}\begin{verbatim}
-   (22)
-                     ÚÄÄÄ¿                   ÚÄÄÄ¿
-     (4z + 4y + 12x)\³y z  + (4z + 12y + 4x)\³x z
-   + 
-                     ÚÄÄÄ¿    2                 2
-     (12z + 4y + 4x)\³x y  + z  + (6y + 6x)z + y  + 6x y
-   + 
-      2
-     x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroYouPageEmpty22}
-\begin{paste}{ugIntroYouPageEmpty22}{ugIntroYouPagePatch22}
-\pastebutton{ugIntroYouPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{groupSqrt a\free{sxy }\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPagePatch1}
-\begin{paste}{ugIntroTypesPageFull1}{ugIntroTypesPageEmpty1}
-\pastebutton{ugIntroTypesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{8}
-\indentrel{3}\begin{verbatim}
-   (1)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPageEmpty1}
-\begin{paste}{ugIntroTypesPageEmpty1}{ugIntroTypesPagePatch1}
-\pastebutton{ugIntroTypesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{8}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPagePatch2}
-\begin{paste}{ugIntroTypesPageFull2}{ugIntroTypesPageEmpty2}
-\pastebutton{ugIntroTypesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{-8}
-\indentrel{3}\begin{verbatim}
-   (2)  - 8
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPageEmpty2}
-\begin{paste}{ugIntroTypesPageEmpty2}{ugIntroTypesPagePatch2}
-\pastebutton{ugIntroTypesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{-8}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPagePatch3}
-\begin{paste}{ugIntroTypesPageFull3}{ugIntroTypesPageEmpty3}
-\pastebutton{ugIntroTypesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{x**8}
-\indentrel{3}\begin{verbatim}
-         8
-   (3)  x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPageEmpty3}
-\begin{paste}{ugIntroTypesPageEmpty3}{ugIntroTypesPagePatch3}
-\pastebutton{ugIntroTypesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x**8}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPagePatch4}
-\begin{paste}{ugIntroTypesPageFull4}{ugIntroTypesPageEmpty4}
-\pastebutton{ugIntroTypesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{x**(-8)}
-\indentrel{3}\begin{verbatim}
-         1
-   (4)  ÄÄ
-         8
-        x
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTypesPageEmpty4}
-\begin{paste}{ugIntroTypesPageEmpty4}{ugIntroTypesPagePatch4}
-\pastebutton{ugIntroTypesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{x**(-8)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch1}
-\begin{paste}{ugIntroTwoDimPageFull1}{ugIntroTwoDimPageEmpty1}
-\pastebutton{ugIntroTwoDimPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m := matrix([[1,2], [3,4]])\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-   (1)  ³    ³
-        À3  4Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty1}
-\begin{paste}{ugIntroTwoDimPageEmpty1}{ugIntroTwoDimPagePatch1}
-\pastebutton{ugIntroTwoDimPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m := matrix([[1,2], [3,4]])\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch2}
-\begin{paste}{ugIntroTwoDimPageFull2}{ugIntroTwoDimPageEmpty2}
-\pastebutton{ugIntroTwoDimPageFull2}{\hidepaste}
-\tab{5}\spadcommand{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4])\bound{hilb }}
-\indentrel{3}\begin{verbatim}
-        Ú    1        1        1        1  ¿
-        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
-        ³  x - 2    x - 3    x - 4    x - 5³
-        ³                                  ³
-        ³    1        1        1        1  ³
-        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
-        ³  x - 3    x - 4    x - 5    x - 6³
-   (2)  ³                                  ³
-        ³    1        1        1        1  ³
-        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
-        ³  x - 4    x - 5    x - 6    x - 7³
-        ³                                  ³
-        ³    1        1        1        1  ³
-        ³- ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ  - ÄÄÄÄÄ³
-        À  x - 5    x - 6    x - 7    x - 8Ù
-               Type: Matrix Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty2}
-\begin{paste}{ugIntroTwoDimPageEmpty2}{ugIntroTwoDimPagePatch2}
-\pastebutton{ugIntroTwoDimPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{matrix([[1/(i + j - x) for i in 1..4] for j in 1..4])\bound{hilb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch3}
-\begin{paste}{ugIntroTwoDimPageFull3}{ugIntroTwoDimPageEmpty3}
-\pastebutton{ugIntroTwoDimPageFull3}{\hidepaste}
-\tab{5}\spadcommand{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]]\bound{vm }}
-\indentrel{3}\begin{verbatim}
-        Ú1   1   1 ¿
-        ³          ³
-   (3)  ³x   y   z ³
-        ³          ³
-        ³ 2   2   2³
-        Àx   y   z Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty3}
-\begin{paste}{ugIntroTwoDimPageEmpty3}{ugIntroTwoDimPagePatch3}
-\pastebutton{ugIntroTwoDimPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{vm := matrix [[1,1,1], [x,y,z], [x*x,y*y,z*z]]\bound{vm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch4}
-\begin{paste}{ugIntroTwoDimPageFull4}{ugIntroTwoDimPageEmpty4}
-\pastebutton{ugIntroTwoDimPageFull4}{\hidepaste}
-\tab{5}\spadcommand{vm(3,3)\free{vm }}
-\indentrel{3}\begin{verbatim}
-         2
-   (4)  z
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty4}
-\begin{paste}{ugIntroTwoDimPageEmpty4}{ugIntroTwoDimPagePatch4}
-\pastebutton{ugIntroTwoDimPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{vm(3,3)\free{vm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch5}
-\begin{paste}{ugIntroTwoDimPageFull5}{ugIntroTwoDimPageEmpty5}
-\pastebutton{ugIntroTwoDimPageFull5}{\hidepaste}
-\tab{5}\spadcommand{column(vm,2)\free{vm }}
-\indentrel{3}\begin{verbatim}
-              2
-   (5)  [1,y,y ]
-                        Type: Vector Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty5}
-\begin{paste}{ugIntroTwoDimPageEmpty5}{ugIntroTwoDimPagePatch5}
-\pastebutton{ugIntroTwoDimPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{column(vm,2)\free{vm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch6}
-\begin{paste}{ugIntroTwoDimPageFull6}{ugIntroTwoDimPageEmpty6}
-\pastebutton{ugIntroTwoDimPageFull6}{\hidepaste}
-\tab{5}\spadcommand{vm * vm\free{vm }}
-\indentrel{3}\begin{verbatim}
-   (6)
-   Ú    2                2              2          ¿
-   ³   x  + x + 1       y  + y + 1     z  + z + 1  ³
-   ³                                               ³
-   ³  2                 2     2        3           ³
-   ³ x z + x y + x     y z + y  + x   z  + y z + x ³
-   ³                                               ³
-   ³ 2 2      2    2   2 2    3    2   4    2     2³
-   Àx z  + x y  + x   y z  + y  + x   z  + y z + x Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty6}
-\begin{paste}{ugIntroTwoDimPageEmpty6}{ugIntroTwoDimPagePatch6}
-\pastebutton{ugIntroTwoDimPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{vm * vm\free{vm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPagePatch7}
-\begin{paste}{ugIntroTwoDimPageFull7}{ugIntroTwoDimPageEmpty7}
-\pastebutton{ugIntroTwoDimPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factor determinant vm\free{vm }\bound{d }}
-\indentrel{3}\begin{verbatim}
-   (7)  (y - x)(z - y)(z - x)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroTwoDimPageEmpty7}
-\begin{paste}{ugIntroTwoDimPageEmpty7}{ugIntroTwoDimPagePatch7}
-\pastebutton{ugIntroTwoDimPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factor determinant vm\free{vm }\bound{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch1}
-\begin{paste}{ugIntroAssignPageFull1}{ugIntroAssignPageEmpty1}
-\pastebutton{ugIntroAssignPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(x - y*z)**2}
-\indentrel{3}\begin{verbatim}
-         2 2             2
-   (1)  y z  - 2x y z + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty1}
-\begin{paste}{ugIntroAssignPageEmpty1}{ugIntroAssignPagePatch1}
-\pastebutton{ugIntroAssignPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(x - y*z)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch2}
-\begin{paste}{ugIntroAssignPageFull2}{ugIntroAssignPageEmpty2}
-\pastebutton{ugIntroAssignPageFull2}{\hidepaste}
-\tab{5}\spadcommand{x := 4}
-\indentrel{3}\begin{verbatim}
-   (2)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty2}
-\begin{paste}{ugIntroAssignPageEmpty2}{ugIntroAssignPagePatch2}
-\pastebutton{ugIntroAssignPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{x := 4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch3}
-\begin{paste}{ugIntroAssignPageFull3}{ugIntroAssignPageEmpty3}
-\pastebutton{ugIntroAssignPageFull3}{\hidepaste}
-\tab{5}\spadcommand{x := z + 3/5}
-\indentrel{3}\begin{verbatim}
-            3
-   (3)  z + Ä
-            5
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty3}
-\begin{paste}{ugIntroAssignPageEmpty3}{ugIntroAssignPagePatch3}
-\pastebutton{ugIntroAssignPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x := z + 3/5}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch4}
-\begin{paste}{ugIntroAssignPageFull4}{ugIntroAssignPageEmpty4}
-\pastebutton{ugIntroAssignPageFull4}{\hidepaste}
-\tab{5}\spadcommand{y : Integer\bound{y }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty4}
-\begin{paste}{ugIntroAssignPageEmpty4}{ugIntroAssignPagePatch4}
-\pastebutton{ugIntroAssignPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{y : Integer\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch5}
-\begin{paste}{ugIntroAssignPageFull5}{ugIntroAssignPageEmpty5}
-\pastebutton{ugIntroAssignPageFull5}{\hidepaste}
-\tab{5}\spadcommand{y := 89\bound{y1 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (5)  89
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty5}
-\begin{paste}{ugIntroAssignPageEmpty5}{ugIntroAssignPagePatch5}
-\pastebutton{ugIntroAssignPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{y := 89\bound{y1 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch6}
-\begin{paste}{ugIntroAssignPageFull6}{ugIntroAssignPageEmpty6}
-\pastebutton{ugIntroAssignPageFull6}{\hidepaste}
-\tab{5}\spadcommand{y := sin \%pi}
-\indentrel{3}\begin{verbatim}
-   (6)  0
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty6}
-\begin{paste}{ugIntroAssignPageEmpty6}{ugIntroAssignPagePatch6}
-\pastebutton{ugIntroAssignPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{y := sin \%pi}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch7}
-\begin{paste}{ugIntroAssignPageFull7}{ugIntroAssignPageEmpty7}
-\pastebutton{ugIntroAssignPageFull7}{\hidepaste}
-\tab{5}\spadcommand{y := 2/3}
-\indentrel{3}\begin{verbatim}
-   2
-   Ä
-   3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty7}
-\begin{paste}{ugIntroAssignPageEmpty7}{ugIntroAssignPagePatch7}
-\pastebutton{ugIntroAssignPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y := 2/3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch8}
-\begin{paste}{ugIntroAssignPageFull8}{ugIntroAssignPageEmpty8}
-\pastebutton{ugIntroAssignPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f : Float := 2/3}
-\indentrel{3}\begin{verbatim}
-   (7)  0.6666666666 6666666667
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty8}
-\begin{paste}{ugIntroAssignPageEmpty8}{ugIntroAssignPagePatch8}
-\pastebutton{ugIntroAssignPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f : Float := 2/3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch9}
-\begin{paste}{ugIntroAssignPageFull9}{ugIntroAssignPageEmpty9}
-\pastebutton{ugIntroAssignPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f : Float; f := 2/3\bound{fff }}
-\indentrel{3}\begin{verbatim}
-   (8)  0.6666666666 6666666667
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty9}
-\begin{paste}{ugIntroAssignPageEmpty9}{ugIntroAssignPagePatch9}
-\pastebutton{ugIntroAssignPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f : Float; f := 2/3\bound{fff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch10}
-\begin{paste}{ugIntroAssignPageFull10}{ugIntroAssignPageEmpty10}
-\pastebutton{ugIntroAssignPageFull10}{\hidepaste}
-\tab{5}\spadcommand{q}
-\indentrel{3}\begin{verbatim}
-   (9)  q
-                                       Type: Variable q
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty10}
-\begin{paste}{ugIntroAssignPageEmpty10}{ugIntroAssignPagePatch10}
-\pastebutton{ugIntroAssignPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{q}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch11}
-\begin{paste}{ugIntroAssignPageFull11}{ugIntroAssignPageEmpty11}
-\pastebutton{ugIntroAssignPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[q, r]}
-\indentrel{3}\begin{verbatim}
-   (10)  [q,r]
-                   Type: List OrderedVariableList [q,r]
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty11}
-\begin{paste}{ugIntroAssignPageEmpty11}{ugIntroAssignPagePatch11}
-\pastebutton{ugIntroAssignPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[q, r]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch12}
-\begin{paste}{ugIntroAssignPageFull12}{ugIntroAssignPageEmpty12}
-\pastebutton{ugIntroAssignPageFull12}{\hidepaste}
-\tab{5}\spadcommand{f\free{fff }}
-\indentrel{3}\begin{verbatim}
-   (11)  0.6666666666 6666666667
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty12}
-\begin{paste}{ugIntroAssignPageEmpty12}{ugIntroAssignPagePatch12}
-\pastebutton{ugIntroAssignPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{f\free{fff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPagePatch13}
-\begin{paste}{ugIntroAssignPageFull13}{ugIntroAssignPageEmpty13}
-\pastebutton{ugIntroAssignPageFull13}{\hidepaste}
-\tab{5}\spadcommand{'f}
-\indentrel{3}\begin{verbatim}
-   (12)  f
-                                       Type: Variable f
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroAssignPageEmpty13}
-\begin{paste}{ugIntroAssignPageEmpty13}{ugIntroAssignPagePatch13}
-\pastebutton{ugIntroAssignPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{'f}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch1}
-\begin{paste}{ugIntroSeriesPageFull1}{ugIntroSeriesPageEmpty1}
-\pastebutton{ugIntroSeriesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)
-            3        5        7          9
-           a   3    a   5    a    7     a     9
-     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-            6      120      5040      362880
-   + 
-           11
-          a      11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty1}
-\begin{paste}{ugIntroSeriesPageEmpty1}{ugIntroSeriesPagePatch1}
-\pastebutton{ugIntroSeriesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch2}
-\begin{paste}{ugIntroSeriesPageFull2}{ugIntroSeriesPageEmpty2}
-\pastebutton{ugIntroSeriesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{series(sin(a*x),x = \%pi/4)}
-\indentrel{3}\begin{verbatim}
-   (2)
-         a %pi          a %pi      %pi
-     sin(ÄÄÄÄÄ) + a cos(ÄÄÄÄÄ)(x - ÄÄÄ)
-           4              4         4
-   + 
-        2    a %pi                3    a %pi
-       a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
-               4         %pi 2           4         %pi 3
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
-             2            4            6            4
-   + 
-      4    a %pi                5    a %pi
-     a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
-             4         %pi 4           4         %pi 5
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
-          24            4           120           4
-   + 
-        6    a %pi                7    a %pi
-       a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
-               4         %pi 6           4         %pi 7
-     - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
-            720           4          5040           4
-   + 
-      8    a %pi                9    a %pi
-     a sin(ÄÄÄÄÄ)              a cos(ÄÄÄÄÄ)
-             4         %pi 8           4         %pi 9
-     ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)
-         40320          4         362880          4
-   + 
-        10    a %pi
-       a  sin(ÄÄÄÄÄ)
-                4         %pi 10          %pi 11
-     - ÄÄÄÄÄÄÄÄÄÄÄÄÄ (x - ÄÄÄ)   + O((x - ÄÄÄ)  )
-          3628800          4               4
-Type: UnivariatePuiseuxSeries(Expression Integer,x,pi/4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty2}
-\begin{paste}{ugIntroSeriesPageEmpty2}{ugIntroSeriesPagePatch2}
-\pastebutton{ugIntroSeriesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{series(sin(a*x),x = \%pi/4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch3}
-\begin{paste}{ugIntroSeriesPageFull3}{ugIntroSeriesPageEmpty3}
-\pastebutton{ugIntroSeriesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
-\indentrel{3}\begin{verbatim}
-         4      10
-         Ä      ÄÄ
-         3   1   3      5
-   (3)  x  - Ä x   + O(x )
-             6
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty3}
-\begin{paste}{ugIntroSeriesPageEmpty3}{ugIntroSeriesPagePatch3}
-\pastebutton{ugIntroSeriesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((3*n - 4)/6)/factorial(n - 1/3),x = 0,4/3..,2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch4}
-\begin{paste}{ugIntroSeriesPageFull4}{ugIntroSeriesPageEmpty4}
-\pastebutton{ugIntroSeriesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (4)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty4}
-\begin{paste}{ugIntroSeriesPageEmpty4}{ugIntroSeriesPagePatch4}
-\pastebutton{ugIntroSeriesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch5}
-\begin{paste}{ugIntroSeriesPageFull5}{ugIntroSeriesPageEmpty5}
-\pastebutton{ugIntroSeriesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                2     3     4     5     6     7     8
-     1 + 2x + 3x  + 4x  + 5x  + 6x  + 7x  + 8x  + 9x
-   + 
-        9      10      11
-     10x  + 11x   + O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty5}
-\begin{paste}{ugIntroSeriesPageEmpty5}{ugIntroSeriesPagePatch5}
-\pastebutton{ugIntroSeriesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f ** 2\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch6}
-\begin{paste}{ugIntroSeriesPageFull6}{ugIntroSeriesPageEmpty6}
-\pastebutton{ugIntroSeriesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty6}
-\begin{paste}{ugIntroSeriesPageEmpty6}{ugIntroSeriesPagePatch6}
-\pastebutton{ugIntroSeriesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{f := series(1/(1-x),x = 0)\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch7}
-\begin{paste}{ugIntroSeriesPageFull7}{ugIntroSeriesPageEmpty7}
-\pastebutton{ugIntroSeriesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (7)
-         1  2   1  3   1  4   1  5   1  6   1  7   1  8
-     x + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x  + Ä x
-         2      3      4      5      6      7      8
-   + 
-     1  9    1  10    1  11      12
-     Ä x  + ÄÄ x   + ÄÄ x   + O(x  )
-     9      10       11
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty7}
-\begin{paste}{ugIntroSeriesPageEmpty7}{ugIntroSeriesPagePatch7}
-\pastebutton{ugIntroSeriesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g := log(f)\free{f1 }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch8}
-\begin{paste}{ugIntroSeriesPageFull8}{ugIntroSeriesPageEmpty8}
-\pastebutton{ugIntroSeriesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (8)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty8}
-\begin{paste}{ugIntroSeriesPageEmpty8}{ugIntroSeriesPagePatch8}
-\pastebutton{ugIntroSeriesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{exp(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch9}
-\begin{paste}{ugIntroSeriesPageFull9}{ugIntroSeriesPageEmpty9}
-\pastebutton{ugIntroSeriesPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-             1  2   1  3    1  4    1   5    1   6
-     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
-   5040      40320      362880      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty9}
-\begin{paste}{ugIntroSeriesPageEmpty9}{ugIntroSeriesPagePatch9}
-\pastebutton{ugIntroSeriesPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPagePatch10}
-\begin{paste}{ugIntroSeriesPageFull10}{ugIntroSeriesPageEmpty10}
-\pastebutton{ugIntroSeriesPageFull10}{\hidepaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-   (10)
-   [1.0, 2.0, 2.5, 2.6666666666 666666667,
-    2.7083333333 333333333, 2.7166666666 666666667,
-    2.7180555555 555555556, 2.7182539682 53968254,
-    2.7182787698 412698413, 2.7182815255 731922399, ...]
-                          Type: Stream Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSeriesPageEmpty10}
-\begin{paste}{ugIntroSeriesPageEmpty10}{ugIntroSeriesPagePatch10}
-\pastebutton{ugIntroSeriesPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{eval(f,1.0)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPagePatch1}
-\begin{paste}{ugIntroCallFunPageFull1}{ugIntroCallFunPageEmpty1}
-\pastebutton{ugIntroCallFunPageFull1}{\hidepaste}
-\tab{5}\spadcommand{factor(120)}
-\indentrel{3}\begin{verbatim}
-         3
-   (1)  2 3 5
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPageEmpty1}
-\begin{paste}{ugIntroCallFunPageEmpty1}{ugIntroCallFunPagePatch1}
-\pastebutton{ugIntroCallFunPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{factor(120)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPagePatch2}
-\begin{paste}{ugIntroCallFunPageFull2}{ugIntroCallFunPageEmpty2}
-\pastebutton{ugIntroCallFunPageFull2}{\hidepaste}
-\tab{5}\spadcommand{divide(125,7)}
-\indentrel{3}\begin{verbatim}
-   (2)  [quotient= 17,remainder= 6]
-     Type: Record(quotient: Integer,remainder: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPageEmpty2}
-\begin{paste}{ugIntroCallFunPageEmpty2}{ugIntroCallFunPagePatch2}
-\pastebutton{ugIntroCallFunPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{divide(125,7)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPagePatch3}
-\begin{paste}{ugIntroCallFunPageFull3}{ugIntroCallFunPageEmpty3}
-\pastebutton{ugIntroCallFunPageFull3}{\hidepaste}
-\tab{5}\spadcommand{quatern(3.4,5.6,2.9,0.1)}
-\indentrel{3}\begin{verbatim}
-   (3)  3.4 + 5.6 i + 2.9 j + 0.1 k
-                                 Type: Quaternion Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPageEmpty3}
-\begin{paste}{ugIntroCallFunPageEmpty3}{ugIntroCallFunPagePatch3}
-\pastebutton{ugIntroCallFunPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{quatern(3.4,5.6,2.9,0.1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPagePatch4}
-\begin{paste}{ugIntroCallFunPageFull4}{ugIntroCallFunPageEmpty4}
-\pastebutton{ugIntroCallFunPageFull4}{\hidepaste}
-\tab{5}\spadcommand{factorial 10}
-\indentrel{3}\begin{verbatim}
-   (4)  3628800
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCallFunPageEmpty4}
-\begin{paste}{ugIntroCallFunPageEmpty4}{ugIntroCallFunPagePatch4}
-\pastebutton{ugIntroCallFunPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factorial 10}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch1}
-\begin{paste}{ugIntroCollectPageFull1}{ugIntroCollectPageEmpty1}
-\pastebutton{ugIntroCollectPageFull1}{\hidepaste}
-\tab{5}\spadcommand{u := [1,-7,11]\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,- 7,11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty1}
-\begin{paste}{ugIntroCollectPageEmpty1}{ugIntroCollectPagePatch1}
-\pastebutton{ugIntroCollectPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u := [1,-7,11]\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch2}
-\begin{paste}{ugIntroCollectPageFull2}{ugIntroCollectPageEmpty2}
-\pastebutton{ugIntroCollectPageFull2}{\hidepaste}
-\tab{5}\spadcommand{first rest rest u\free{u }}
-\indentrel{3}\begin{verbatim}
-   (2)  11
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty2}
-\begin{paste}{ugIntroCollectPageEmpty2}{ugIntroCollectPagePatch2}
-\pastebutton{ugIntroCollectPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{first rest rest u\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch3}
-\begin{paste}{ugIntroCollectPageFull3}{ugIntroCollectPageEmpty3}
-\pastebutton{ugIntroCollectPageFull3}{\hidepaste}
-\tab{5}\spadcommand{concat!(u,[9,1,3,-4]); u\free{u }\bound{u1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,- 7,11,9,1,3,- 4]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty3}
-\begin{paste}{ugIntroCollectPageEmpty3}{ugIntroCollectPagePatch3}
-\pastebutton{ugIntroCollectPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{concat!(u,[9,1,3,-4]); u\free{u }\bound{u1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch4}
-\begin{paste}{ugIntroCollectPageFull4}{ugIntroCollectPageEmpty4}
-\pastebutton{ugIntroCollectPageFull4}{\hidepaste}
-\tab{5}\spadcommand{lastnode := rest(u,3)\free{u1 }\bound{u2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [9,1,3,- 4]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty4}
-\begin{paste}{ugIntroCollectPageEmpty4}{ugIntroCollectPagePatch4}
-\pastebutton{ugIntroCollectPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{lastnode := rest(u,3)\free{u1 }\bound{u2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch5}
-\begin{paste}{ugIntroCollectPageFull5}{ugIntroCollectPageEmpty5}
-\pastebutton{ugIntroCollectPageFull5}{\hidepaste}
-\tab{5}\spadcommand{setrest!(lastnode,rest(u,2)); u\free{u2 }}
-\indentrel{3}\begin{verbatim}
-               ____
-   (5)  [1,- 7,11,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty5}
-\begin{paste}{ugIntroCollectPageEmpty5}{ugIntroCollectPagePatch5}
-\pastebutton{ugIntroCollectPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{setrest!(lastnode,rest(u,2)); u\free{u2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch6}
-\begin{paste}{ugIntroCollectPageFull6}{ugIntroCollectPageEmpty6}
-\pastebutton{ugIntroCollectPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[factor(i) for i in 2.. by 2]\bound{stream1 }}
-\indentrel{3}\begin{verbatim}
-            2      3      2       4    2  2
-   (6)  [2,2 ,2 3,2 ,2 5,2 3,2 7,2 ,2 3 ,2 5,...]
-                          Type: Stream Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty6}
-\begin{paste}{ugIntroCollectPageEmpty6}{ugIntroCollectPagePatch6}
-\pastebutton{ugIntroCollectPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[factor(i) for i in 2.. by 2]\bound{stream1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch7}
-\begin{paste}{ugIntroCollectPageFull7}{ugIntroCollectPageEmpty7}
-\pastebutton{ugIntroCollectPageFull7}{\hidepaste}
-\tab{5}\spadcommand{\%.36\free{stream1 }}
-\indentrel{3}\begin{verbatim}
-         3 2
-   (7)  2 3
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty7}
-\begin{paste}{ugIntroCollectPageEmpty7}{ugIntroCollectPagePatch7}
-\pastebutton{ugIntroCollectPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{\%.36\free{stream1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch8}
-\begin{paste}{ugIntroCollectPageFull8}{ugIntroCollectPageEmpty8}
-\pastebutton{ugIntroCollectPageFull8}{\hidepaste}
-\tab{5}\spadcommand{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a }}
-\indentrel{3}\begin{verbatim}
-                 3
-   (8)  [1,- 7,3,Ä]
-                 2
-             Type: OneDimensionalArray Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty8}
-\begin{paste}{ugIntroCollectPageEmpty8}{ugIntroCollectPagePatch8}
-\pastebutton{ugIntroCollectPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{a := oneDimensionalArray [1, -7, 3, 3/2]\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch9}
-\begin{paste}{ugIntroCollectPageFull9}{ugIntroCollectPageEmpty9}
-\pastebutton{ugIntroCollectPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a.3 := 11; a\bound{a1 }\free{a }}
-\indentrel{3}\begin{verbatim}
-                  3
-   (9)  [1,- 7,11,Ä]
-                  2
-             Type: OneDimensionalArray Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty9}
-\begin{paste}{ugIntroCollectPageEmpty9}{ugIntroCollectPagePatch9}
-\pastebutton{ugIntroCollectPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a.3 := 11; a\bound{a1 }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch10}
-\begin{paste}{ugIntroCollectPageFull10}{ugIntroCollectPageEmpty10}
-\pastebutton{ugIntroCollectPageFull10}{\hidepaste}
-\tab{5}\spadcommand{concat!(a,oneDimensionalArray [1,-2])\free{a1 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty10}
-\begin{paste}{ugIntroCollectPageEmpty10}{ugIntroCollectPagePatch10}
-\pastebutton{ugIntroCollectPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{concat!(a,oneDimensionalArray [1,-2])\free{a1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch11}
-\begin{paste}{ugIntroCollectPageFull11}{ugIntroCollectPageEmpty11}
-\pastebutton{ugIntroCollectPageFull11}{\hidepaste}
-\tab{5}\spadcommand{bits(32,true)}
-\indentrel{3}\begin{verbatim}
-   (10)  "11111111111111111111111111111111"
-                                             Type: Bits
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty11}
-\begin{paste}{ugIntroCollectPageEmpty11}{ugIntroCollectPagePatch11}
-\pastebutton{ugIntroCollectPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{bits(32,true)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch12}
-\begin{paste}{ugIntroCollectPageFull12}{ugIntroCollectPageEmpty12}
-\pastebutton{ugIntroCollectPageFull12}{\hidepaste}
-\tab{5}\spadcommand{f := flexibleArray [2, 7, -5]\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (11)  [2,7,- 5]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty12}
-\begin{paste}{ugIntroCollectPageEmpty12}{ugIntroCollectPagePatch12}
-\pastebutton{ugIntroCollectPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{f := flexibleArray [2, 7, -5]\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch13}
-\begin{paste}{ugIntroCollectPageFull13}{ugIntroCollectPageEmpty13}
-\pastebutton{ugIntroCollectPageFull13}{\hidepaste}
-\tab{5}\spadcommand{insert!(flexibleArray [11, -3],f,2)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (12)  [2,11,- 3,7,- 5]
-                            Type: FlexibleArray Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty13}
-\begin{paste}{ugIntroCollectPageEmpty13}{ugIntroCollectPagePatch13}
-\pastebutton{ugIntroCollectPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{insert!(flexibleArray [11, -3],f,2)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch14}
-\begin{paste}{ugIntroCollectPageFull14}{ugIntroCollectPageEmpty14}
-\pastebutton{ugIntroCollectPageFull14}{\hidepaste}
-\tab{5}\spadcommand{h := heap [-4,7,11,3,4,-7]\bound{h }}
-\indentrel{3}\begin{verbatim}
-   (13)  [11,4,7,- 4,3,- 7]
-                                     Type: Heap Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty14}
-\begin{paste}{ugIntroCollectPageEmpty14}{ugIntroCollectPagePatch14}
-\pastebutton{ugIntroCollectPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{h := heap [-4,7,11,3,4,-7]\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch15}
-\begin{paste}{ugIntroCollectPageFull15}{ugIntroCollectPageEmpty15}
-\pastebutton{ugIntroCollectPageFull15}{\hidepaste}
-\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\free{h }}
-\indentrel{3}\begin{verbatim}
-   (14)  [11,7,4,3,- 4,- 7]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty15}
-\begin{paste}{ugIntroCollectPageEmpty15}{ugIntroCollectPagePatch15}
-\pastebutton{ugIntroCollectPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{[extract!(h) while not empty?(h)]\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch16}
-\begin{paste}{ugIntroCollectPageFull16}{ugIntroCollectPageEmpty16}
-\pastebutton{ugIntroCollectPageFull16}{\hidepaste}
-\tab{5}\spadcommand{binarySearchTree [5,3,2,9,4,7,11]}
-\indentrel{3}\begin{verbatim}
-   (15)  [[2,3,4],5,[7,9,11]]
-                 Type: BinarySearchTree PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty16}
-\begin{paste}{ugIntroCollectPageEmpty16}{ugIntroCollectPagePatch16}
-\pastebutton{ugIntroCollectPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{binarySearchTree [5,3,2,9,4,7,11]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch17}
-\begin{paste}{ugIntroCollectPageFull17}{ugIntroCollectPageEmpty17}
-\pastebutton{ugIntroCollectPageFull17}{\hidepaste}
-\tab{5}\spadcommand{modTree(8,[2,3,5,7])}
-\indentrel{3}\begin{verbatim}
-   (16)  [0,2,3,1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty17}
-\begin{paste}{ugIntroCollectPageEmpty17}{ugIntroCollectPagePatch17}
-\pastebutton{ugIntroCollectPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{modTree(8,[2,3,5,7])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch18}
-\begin{paste}{ugIntroCollectPageFull18}{ugIntroCollectPageEmpty18}
-\pastebutton{ugIntroCollectPageFull18}{\hidepaste}
-\tab{5}\spadcommand{fs := set[1/3,4/5,-1/3,4/5]\bound{fs }}
-\indentrel{3}\begin{verbatim}
-            1 1 4
-   (17)  {- Ä,Ä,Ä}
-            3 3 5
-                             Type: Set Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty18}
-\begin{paste}{ugIntroCollectPageEmpty18}{ugIntroCollectPagePatch18}
-\pastebutton{ugIntroCollectPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{fs := set[1/3,4/5,-1/3,4/5]\bound{fs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch19}
-\begin{paste}{ugIntroCollectPageFull19}{ugIntroCollectPageEmpty19}
-\pastebutton{ugIntroCollectPageFull19}{\hidepaste}
-\tab{5}\spadcommand{multiset [x rem 5 for x in primes(2,1000)]}
-\indentrel{3}\begin{verbatim}
-   (18)  {0,42: 3,40: 1,38: 4,47: 2}
-                                 Type: Multiset Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty19}
-\begin{paste}{ugIntroCollectPageEmpty19}{ugIntroCollectPagePatch19}
-\pastebutton{ugIntroCollectPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{multiset [x rem 5 for x in primes(2,1000)]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch20}
-\begin{paste}{ugIntroCollectPageFull20}{ugIntroCollectPageEmpty20}
-\pastebutton{ugIntroCollectPageFull20}{\hidepaste}
-\tab{5}\spadcommand{t : Table(Integer,Integer) := empty()\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (19)  table()
-                           Type: Table(Integer,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty20}
-\begin{paste}{ugIntroCollectPageEmpty20}{ugIntroCollectPagePatch20}
-\pastebutton{ugIntroCollectPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{t : Table(Integer,Integer) := empty()\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch21}
-\begin{paste}{ugIntroCollectPageFull21}{ugIntroCollectPageEmpty21}
-\pastebutton{ugIntroCollectPageFull21}{\hidepaste}
-\tab{5}\spadcommand{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty21}
-\begin{paste}{ugIntroCollectPageEmpty21}{ugIntroCollectPagePatch21}
-\pastebutton{ugIntroCollectPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{howMany(k) == (n:=search(k,t); n case "failed" => 1; n+1)\bound{how }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch22}
-\begin{paste}{ugIntroCollectPageFull22}{ugIntroCollectPageEmpty22}
-\pastebutton{ugIntroCollectPageFull22}{\hidepaste}
-\tab{5}\spadcommand{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t }}
-\indentrel{3}\begin{verbatim}
-   (21)  table(2= 47,4= 38,1= 40,3= 42,0= 1)
-                           Type: Table(Integer,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty22}
-\begin{paste}{ugIntroCollectPageEmpty22}{ugIntroCollectPagePatch22}
-\pastebutton{ugIntroCollectPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{for p in primes(2,1000) repeat (m:= p rem 5; t.m:= howMany(m)); t\free{how t }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch23}
-\begin{paste}{ugIntroCollectPageFull23}{ugIntroCollectPageEmpty23}
-\pastebutton{ugIntroCollectPageFull23}{\hidepaste}
-\tab{5}\spadcommand{daniel : Record(age : Integer, salary : Float)\bound{danieldec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty23}
-\begin{paste}{ugIntroCollectPageEmpty23}{ugIntroCollectPagePatch23}
-\pastebutton{ugIntroCollectPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{daniel : Record(age : Integer, salary : Float)\bound{danieldec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch24}
-\begin{paste}{ugIntroCollectPageFull24}{ugIntroCollectPageEmpty24}
-\pastebutton{ugIntroCollectPageFull24}{\hidepaste}
-\tab{5}\spadcommand{daniel := [28, 32005.12]\free{danieldec }\bound{daniel }}
-\indentrel{3}\begin{verbatim}
-   (23)  [age= 28,salary= 32005.12]
-               Type: Record(age: Integer,salary: Float)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty24}
-\begin{paste}{ugIntroCollectPageEmpty24}{ugIntroCollectPagePatch24}
-\pastebutton{ugIntroCollectPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{daniel := [28, 32005.12]\free{danieldec }\bound{daniel }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch25}
-\begin{paste}{ugIntroCollectPageFull25}{ugIntroCollectPageEmpty25}
-\pastebutton{ugIntroCollectPageFull25}{\hidepaste}
-\tab{5}\spadcommand{daniel.salary := 35000; daniel\free{daniel }}
-\indentrel{3}\begin{verbatim}
-   (24)  [age= 28,salary= 35000.0]
-               Type: Record(age: Integer,salary: Float)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty25}
-\begin{paste}{ugIntroCollectPageEmpty25}{ugIntroCollectPagePatch25}
-\pastebutton{ugIntroCollectPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{daniel.salary := 35000; daniel\free{daniel }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch26}
-\begin{paste}{ugIntroCollectPageFull26}{ugIntroCollectPageEmpty26}
-\pastebutton{ugIntroCollectPageFull26}{\hidepaste}
-\tab{5}\spadcommand{dog: Union(licenseNumber: Integer, name: String)\bound{xint }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty26}
-\begin{paste}{ugIntroCollectPageEmpty26}{ugIntroCollectPagePatch26}
-\pastebutton{ugIntroCollectPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{dog: Union(licenseNumber: Integer, name: String)\bound{xint }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPagePatch27}
-\begin{paste}{ugIntroCollectPageFull27}{ugIntroCollectPageEmpty27}
-\pastebutton{ugIntroCollectPageFull27}{\hidepaste}
-\tab{5}\spadcommand{dog := "Whisper"\free{xint }}
-\indentrel{3}\begin{verbatim}
-   (26)  "Whisper"
-                          Type: Union(name: String,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCollectPageEmpty27}
-\begin{paste}{ugIntroCollectPageEmpty27}{ugIntroCollectPagePatch27}
-\pastebutton{ugIntroCollectPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{dog := "Whisper"\free{xint }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch1}
-\begin{paste}{ugIntroNumbersPageFull1}{ugIntroNumbersPageEmpty1}
-\pastebutton{ugIntroNumbersPageFull1}{\hidepaste}
-\tab{5}\spadcommand{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
-\indentrel{3}\begin{verbatim}
-   (1)  25387751112538918594666224484237298
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty1}
-\begin{paste}{ugIntroNumbersPageEmpty1}{ugIntroNumbersPagePatch1}
-\pastebutton{ugIntroNumbersPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{11**13 * 13**11 * 17**7 - 19**5 * 23**3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch2}
-\begin{paste}{ugIntroNumbersPageFull2}{ugIntroNumbersPageEmpty2}
-\pastebutton{ugIntroNumbersPageFull2}{\hidepaste}
-\tab{5}\spadcommand{factor 643238070748569023720594412551704344145570763243\bound{ex1 }}
-\indentrel{3}\begin{verbatim}
-          13  11  7  5  3  2
-   (2)  11  13  17 19 23 29
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty2}
-\begin{paste}{ugIntroNumbersPageEmpty2}{ugIntroNumbersPagePatch2}
-\pastebutton{ugIntroNumbersPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{factor 643238070748569023720594412551704344145570763243\bound{ex1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch3}
-\begin{paste}{ugIntroNumbersPageFull3}{ugIntroNumbersPageEmpty3}
-\pastebutton{ugIntroNumbersPageFull3}{\hidepaste}
-\tab{5}\spadcommand{\% * 12\free{ex1 }}
-\indentrel{3}\begin{verbatim}
-         2    13  11  7  5  3  2
-   (3)  2 3 11  13  17 19 23 29
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty3}
-\begin{paste}{ugIntroNumbersPageEmpty3}{ugIntroNumbersPagePatch3}
-\pastebutton{ugIntroNumbersPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{\% * 12\free{ex1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch4}
-\begin{paste}{ugIntroNumbersPageFull4}{ugIntroNumbersPageEmpty4}
-\pastebutton{ugIntroNumbersPageFull4}{\hidepaste}
-\tab{5}\spadcommand{radix(25937424601,11)}
-\indentrel{3}\begin{verbatim}
-   (4)  10000000000
-                                Type: RadixExpansion 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty4}
-\begin{paste}{ugIntroNumbersPageEmpty4}{ugIntroNumbersPagePatch4}
-\pastebutton{ugIntroNumbersPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{radix(25937424601,11)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch5}
-\begin{paste}{ugIntroNumbersPageFull5}{ugIntroNumbersPageEmpty5}
-\pastebutton{ugIntroNumbersPageFull5}{\hidepaste}
-\tab{5}\spadcommand{roman(1992)}
-\indentrel{3}\begin{verbatim}
-   (5)  MCMXCII
-                                     Type: RomanNumeral
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty5}
-\begin{paste}{ugIntroNumbersPageEmpty5}{ugIntroNumbersPagePatch5}
-\pastebutton{ugIntroNumbersPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{roman(1992)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch6}
-\begin{paste}{ugIntroNumbersPageFull6}{ugIntroNumbersPageEmpty6}
-\pastebutton{ugIntroNumbersPageFull6}{\hidepaste}
-\tab{5}\spadcommand{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r }}
-\indentrel{3}\begin{verbatim}
-        55739
-   (6)  ÄÄÄÄÄ
-         2520
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty6}
-\begin{paste}{ugIntroNumbersPageEmpty6}{ugIntroNumbersPagePatch6}
-\pastebutton{ugIntroNumbersPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{r := 10 + 9/2 + 8/3 + 7/4 + 6/5 + 5/6 + 4/7 + 3/8 + 2/9\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch7}
-\begin{paste}{ugIntroNumbersPageFull7}{ugIntroNumbersPageEmpty7}
-\pastebutton{ugIntroNumbersPageFull7}{\hidepaste}
-\tab{5}\spadcommand{map(factor,r)\free{r }}
-\indentrel{3}\begin{verbatim}
-        139 401
-   (7)  ÄÄÄÄÄÄÄ
-         3 2
-        2 3 5 7
-                        Type: Fraction Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty7}
-\begin{paste}{ugIntroNumbersPageEmpty7}{ugIntroNumbersPagePatch7}
-\pastebutton{ugIntroNumbersPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{map(factor,r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch8}
-\begin{paste}{ugIntroNumbersPageFull8}{ugIntroNumbersPageEmpty8}
-\pastebutton{ugIntroNumbersPageFull8}{\hidepaste}
-\tab{5}\spadcommand{11@SingleInteger}
-\indentrel{3}\begin{verbatim}
-   (8)  11
-                                    Type: SingleInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty8}
-\begin{paste}{ugIntroNumbersPageEmpty8}{ugIntroNumbersPagePatch8}
-\pastebutton{ugIntroNumbersPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{11@SingleInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch9}
-\begin{paste}{ugIntroNumbersPageFull9}{ugIntroNumbersPageEmpty9}
-\pastebutton{ugIntroNumbersPageFull9}{\hidepaste}
-\tab{5}\spadcommand{123.21@DoubleFloat}
-\indentrel{3}\begin{verbatim}
-   (9)  123.21000000000001
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty9}
-\begin{paste}{ugIntroNumbersPageEmpty9}{ugIntroNumbersPagePatch9}
-\pastebutton{ugIntroNumbersPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{123.21@DoubleFloat}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch10}
-\begin{paste}{ugIntroNumbersPageFull10}{ugIntroNumbersPageEmpty10}
-\pastebutton{ugIntroNumbersPageFull10}{\hidepaste}
-\tab{5}\spadcommand{r :: Float\free{r }}
-\indentrel{3}\begin{verbatim}
-   (10)  22.1186507936 50793651
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty10}
-\begin{paste}{ugIntroNumbersPageEmpty10}{ugIntroNumbersPagePatch10}
-\pastebutton{ugIntroNumbersPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{r :: Float\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch11}
-\begin{paste}{ugIntroNumbersPageFull11}{ugIntroNumbersPageEmpty11}
-\pastebutton{ugIntroNumbersPageFull11}{\hidepaste}
-\tab{5}\spadcommand{digits(22)\bound{fewerdigits }}
-\indentrel{3}\begin{verbatim}
-   (11)  20
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty11}
-\begin{paste}{ugIntroNumbersPageEmpty11}{ugIntroNumbersPagePatch11}
-\pastebutton{ugIntroNumbersPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{digits(22)\bound{fewerdigits }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch12}
-\begin{paste}{ugIntroNumbersPageFull12}{ugIntroNumbersPageEmpty12}
-\pastebutton{ugIntroNumbersPageFull12}{\hidepaste}
-\tab{5}\spadcommand{exp(\%pi * sqrt 163.0)\free{fewerdigits }}
-\indentrel{3}\begin{verbatim}
-   (12)  26253741 2640768744.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty12}
-\begin{paste}{ugIntroNumbersPageEmpty12}{ugIntroNumbersPagePatch12}
-\pastebutton{ugIntroNumbersPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{exp(\%pi * sqrt 163.0)\free{fewerdigits }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch13}
-\begin{paste}{ugIntroNumbersPageFull13}{ugIntroNumbersPageEmpty13}
-\pastebutton{ugIntroNumbersPageFull13}{\hidepaste}
-\tab{5}\spadcommand{digits(40); exp(\%pi * sqrt 163.0)\free{moredigits }}
-\indentrel{3}\begin{verbatim}
-   (13)  26253741 2640768743.9999999999 9925007259 76
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty13}
-\begin{paste}{ugIntroNumbersPageEmpty13}{ugIntroNumbersPagePatch13}
-\pastebutton{ugIntroNumbersPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{digits(40); exp(\%pi * sqrt 163.0)\free{moredigits }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch14}
-\begin{paste}{ugIntroNumbersPageFull14}{ugIntroNumbersPageEmpty14}
-\pastebutton{ugIntroNumbersPageFull14}{\hidepaste}
-\tab{5}\spadcommand{(2/3 + \%i)**3\bound{gaussint }}
-\indentrel{3}\begin{verbatim}
-           46   1
-   (14)  - ÄÄ + Ä %i
-           27   3
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty14}
-\begin{paste}{ugIntroNumbersPageEmpty14}{ugIntroNumbersPagePatch14}
-\pastebutton{ugIntroNumbersPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{(2/3 + \%i)**3\bound{gaussint }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch15}
-\begin{paste}{ugIntroNumbersPageFull15}{ugIntroNumbersPageEmpty15}
-\pastebutton{ugIntroNumbersPageFull15}{\hidepaste}
-\tab{5}\spadcommand{conjugate \%\free{gaussint }}
-\indentrel{3}\begin{verbatim}
-           46   1
-   (15)  - ÄÄ - Ä %i
-           27   3
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty15}
-\begin{paste}{ugIntroNumbersPageEmpty15}{ugIntroNumbersPagePatch15}
-\pastebutton{ugIntroNumbersPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{conjugate \%\free{gaussint }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch16}
-\begin{paste}{ugIntroNumbersPageFull16}{ugIntroNumbersPageEmpty16}
-\pastebutton{ugIntroNumbersPageFull16}{\hidepaste}
-\tab{5}\spadcommand{factor(89 - 23 * \%i)}
-\indentrel{3}\begin{verbatim}
-                           2         2
-   (16)  - (1 + %i)(2 + %i) (3 + 2%i)
-                         Type: Factored Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty16}
-\begin{paste}{ugIntroNumbersPageEmpty16}{ugIntroNumbersPagePatch16}
-\pastebutton{ugIntroNumbersPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{factor(89 - 23 * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch17}
-\begin{paste}{ugIntroNumbersPageFull17}{ugIntroNumbersPageEmpty17}
-\pastebutton{ugIntroNumbersPageFull17}{\hidepaste}
-\tab{5}\spadcommand{exp(\%pi/4.0 * \%i)}
-\indentrel{3}\begin{verbatim}
-   (17)
-     0.7071067811 8654752440 0844362104 8490392849
-   + 
-     0.7071067811 8654752440 0844362104 8490392848 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty17}
-\begin{paste}{ugIntroNumbersPageEmpty17}{ugIntroNumbersPagePatch17}
-\pastebutton{ugIntroNumbersPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{exp(\%pi/4.0 * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch18}
-\begin{paste}{ugIntroNumbersPageFull18}{ugIntroNumbersPageEmpty18}
-\pastebutton{ugIntroNumbersPageFull18}{\hidepaste}
-\tab{5}\spadcommand{decimal(1/352)}
-\indentrel{3}\begin{verbatim}
-                __
-   (18)  0.0028409
-                                 Type: DecimalExpansion
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty18}
-\begin{paste}{ugIntroNumbersPageEmpty18}{ugIntroNumbersPagePatch18}
-\pastebutton{ugIntroNumbersPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{decimal(1/352)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch19}
-\begin{paste}{ugIntroNumbersPageFull19}{ugIntroNumbersPageEmpty19}
-\pastebutton{ugIntroNumbersPageFull19}{\hidepaste}
-\tab{5}\spadcommand{continuedFraction(6543/210)}
-\indentrel{3}\begin{verbatim}
-                1 ³     1 ³     1 ³     1 ³
-   (19)  31 + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ + ÚÄÄÄÙ
-              ³ 6     ³ 2     ³ 1     ³ 3
-                        Type: ContinuedFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty19}
-\begin{paste}{ugIntroNumbersPageEmpty19}{ugIntroNumbersPagePatch19}
-\pastebutton{ugIntroNumbersPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{continuedFraction(6543/210)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch20}
-\begin{paste}{ugIntroNumbersPageFull20}{ugIntroNumbersPageEmpty20}
-\pastebutton{ugIntroNumbersPageFull20}{\hidepaste}
-\tab{5}\spadcommand{partialFraction(1,factorial(10))\bound{partfrac }}
-\indentrel{3}\begin{verbatim}
-         159   23   12   1
-   (20)  ÄÄÄ - ÄÄ - ÄÄ + Ä
-           8    4    2   7
-          2    3    5
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty20}
-\begin{paste}{ugIntroNumbersPageEmpty20}{ugIntroNumbersPagePatch20}
-\pastebutton{ugIntroNumbersPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{partialFraction(1,factorial(10))\bound{partfrac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch21}
-\begin{paste}{ugIntroNumbersPageFull21}{ugIntroNumbersPageEmpty21}
-\pastebutton{ugIntroNumbersPageFull21}{\hidepaste}
-\tab{5}\spadcommand{padicFraction(\%)\free{partfrac }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   1    1    1    1    1    1    2    1    2   2    2   1
-   Ä + ÄÄ + ÄÄ + ÄÄ + ÄÄ + ÄÄ - ÄÄ - ÄÄ - ÄÄ - Ä - ÄÄ + Ä
-   2    4    5    6    7    8    2    3    4   5    2   7
-       2    2    2    2    2    3    3    3        5
-                          Type: PartialFraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty21}
-\begin{paste}{ugIntroNumbersPageEmpty21}{ugIntroNumbersPagePatch21}
-\pastebutton{ugIntroNumbersPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{padicFraction(\%)\free{partfrac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch22}
-\begin{paste}{ugIntroNumbersPageFull22}{ugIntroNumbersPageEmpty22}
-\pastebutton{ugIntroNumbersPageFull22}{\hidepaste}
-\tab{5}\spadcommand{radix(4/7, 8)\bound{rad }}
-\indentrel{3}\begin{verbatim}
-           _
-   (22)  0.4
-                                 Type: RadixExpansion 8
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty22}
-\begin{paste}{ugIntroNumbersPageEmpty22}{ugIntroNumbersPagePatch22}
-\pastebutton{ugIntroNumbersPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{radix(4/7, 8)\bound{rad }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch23}
-\begin{paste}{ugIntroNumbersPageFull23}{ugIntroNumbersPageEmpty23}
-\pastebutton{ugIntroNumbersPageFull23}{\hidepaste}
-\tab{5}\spadcommand{\% + 2/3*\%i\free{rad }}
-\indentrel{3}\begin{verbatim}
-         4   2
-   (23)  Ä + Ä %i
-         7   3
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty23}
-\begin{paste}{ugIntroNumbersPageEmpty23}{ugIntroNumbersPagePatch23}
-\pastebutton{ugIntroNumbersPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{\% + 2/3*\%i\free{rad }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch24}
-\begin{paste}{ugIntroNumbersPageFull24}{ugIntroNumbersPageEmpty24}
-\pastebutton{ugIntroNumbersPageFull24}{\hidepaste}
-\tab{5}\spadcommand{(5 + sqrt 63 + sqrt 847)**(1/3)}
-\indentrel{3}\begin{verbatim}
-          ÚÄÄÄÄÄÄÄÄÄÄ¿
-         3³   ÚÄ¿
-   (24)  \³14\³7  + 5
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty24}
-\begin{paste}{ugIntroNumbersPageEmpty24}{ugIntroNumbersPagePatch24}
-\pastebutton{ugIntroNumbersPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{(5 + sqrt 63 + sqrt 847)**(1/3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch25}
-\begin{paste}{ugIntroNumbersPageFull25}{ugIntroNumbersPageEmpty25}
-\pastebutton{ugIntroNumbersPageFull25}{\hidepaste}
-\tab{5}\spadcommand{x : PrimeField 7 := 5\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (25)  5
-                                     Type: PrimeField 7
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty25}
-\begin{paste}{ugIntroNumbersPageEmpty25}{ugIntroNumbersPagePatch25}
-\pastebutton{ugIntroNumbersPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{x : PrimeField 7 := 5\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch26}
-\begin{paste}{ugIntroNumbersPageFull26}{ugIntroNumbersPageEmpty26}
-\pastebutton{ugIntroNumbersPageFull26}{\hidepaste}
-\tab{5}\spadcommand{x**3\free{x }}
-\indentrel{3}\begin{verbatim}
-   (26)  6
-                                     Type: PrimeField 7
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty26}
-\begin{paste}{ugIntroNumbersPageEmpty26}{ugIntroNumbersPagePatch26}
-\pastebutton{ugIntroNumbersPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{x**3\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch27}
-\begin{paste}{ugIntroNumbersPageFull27}{ugIntroNumbersPageEmpty27}
-\pastebutton{ugIntroNumbersPageFull27}{\hidepaste}
-\tab{5}\spadcommand{1/x\free{x }}
-\indentrel{3}\begin{verbatim}
-   (27)  3
-                                     Type: PrimeField 7
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty27}
-\begin{paste}{ugIntroNumbersPageEmpty27}{ugIntroNumbersPagePatch27}
-\pastebutton{ugIntroNumbersPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{1/x\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch28}
-\begin{paste}{ugIntroNumbersPageFull28}{ugIntroNumbersPageEmpty28}
-\pastebutton{ugIntroNumbersPageFull28}{\hidepaste}
-\tab{5}\spadcommand{y : IntegerMod 6 := 5\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (28)  5
-                                     Type: IntegerMod 6
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty28}
-\begin{paste}{ugIntroNumbersPageEmpty28}{ugIntroNumbersPagePatch28}
-\pastebutton{ugIntroNumbersPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{y : IntegerMod 6 := 5\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch29}
-\begin{paste}{ugIntroNumbersPageFull29}{ugIntroNumbersPageEmpty29}
-\pastebutton{ugIntroNumbersPageFull29}{\hidepaste}
-\tab{5}\spadcommand{y**3\free{y }}
-\indentrel{3}\begin{verbatim}
-   (29)  5
-                                     Type: IntegerMod 6
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty29}
-\begin{paste}{ugIntroNumbersPageEmpty29}{ugIntroNumbersPagePatch29}
-\pastebutton{ugIntroNumbersPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{y**3\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch30}
-\begin{paste}{ugIntroNumbersPageFull30}{ugIntroNumbersPageEmpty30}
-\pastebutton{ugIntroNumbersPageFull30}{\hidepaste}
-\tab{5}\spadcommand{1/y\free{y }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty30}
-\begin{paste}{ugIntroNumbersPageEmpty30}{ugIntroNumbersPagePatch30}
-\pastebutton{ugIntroNumbersPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{1/y\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch31}
-\begin{paste}{ugIntroNumbersPageFull31}{ugIntroNumbersPageEmpty31}
-\pastebutton{ugIntroNumbersPageFull31}{\hidepaste}
-\tab{5}\spadcommand{a := rootOf(a**5 + a**3 + a**2 + 3,a)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (30)  a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty31}
-\begin{paste}{ugIntroNumbersPageEmpty31}{ugIntroNumbersPagePatch31}
-\pastebutton{ugIntroNumbersPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{a := rootOf(a**5 + a**3 + a**2 + 3,a)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch32}
-\begin{paste}{ugIntroNumbersPageFull32}{ugIntroNumbersPageEmpty32}
-\pastebutton{ugIntroNumbersPageFull32}{\hidepaste}
-\tab{5}\spadcommand{(a + 1)**10\free{a }}
-\indentrel{3}\begin{verbatim}
-              4       3       2
-   (31)  - 85a  - 264a  - 378a  - 458a - 287
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty32}
-\begin{paste}{ugIntroNumbersPageEmpty32}{ugIntroNumbersPagePatch32}
-\pastebutton{ugIntroNumbersPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{(a + 1)**10\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch33}
-\begin{paste}{ugIntroNumbersPageFull33}{ugIntroNumbersPageEmpty33}
-\pastebutton{ugIntroNumbersPageFull33}{\hidepaste}
-\tab{5}\spadcommand{b := rootOf(b**4 + a,b)\bound{b }\free{a }}
-\indentrel{3}\begin{verbatim}
-   (32)  b
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty33}
-\begin{paste}{ugIntroNumbersPageEmpty33}{ugIntroNumbersPagePatch33}
-\pastebutton{ugIntroNumbersPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{b := rootOf(b**4 + a,b)\bound{b }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch34}
-\begin{paste}{ugIntroNumbersPageFull34}{ugIntroNumbersPageEmpty34}
-\pastebutton{ugIntroNumbersPageFull34}{\hidepaste}
-\tab{5}\spadcommand{2/(b - 1)\free{b }\bound{check }}
-\indentrel{3}\begin{verbatim}
-           2
-   (33)  ÄÄÄÄÄ
-         b - 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty34}
-\begin{paste}{ugIntroNumbersPageEmpty34}{ugIntroNumbersPagePatch34}
-\pastebutton{ugIntroNumbersPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{2/(b - 1)\free{b }\bound{check }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch35}
-\begin{paste}{ugIntroNumbersPageFull35}{ugIntroNumbersPageEmpty35}
-\pastebutton{ugIntroNumbersPageFull35}{\hidepaste}
-\tab{5}\spadcommand{ratDenom(\%)\free{check }\bound{check1 }}
-\indentrel{3}\begin{verbatim}
-   (34)
-       4    3     2          3     4    3     2          2
-     (a  - a  + 2a  - a + 1)b  + (a  - a  + 2a  - a + 1)b
-   + 
-       4    3     2              4    3     2
-     (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty35}
-\begin{paste}{ugIntroNumbersPageEmpty35}{ugIntroNumbersPagePatch35}
-\pastebutton{ugIntroNumbersPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{ratDenom(\%)\free{check }\bound{check1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch36}
-\begin{paste}{ugIntroNumbersPageFull36}{ugIntroNumbersPageEmpty36}
-\pastebutton{ugIntroNumbersPageFull36}{\hidepaste}
-\tab{5}\spadcommand{2/\%+1\free{check1 }\bound{check2 }}
-\indentrel{3}\begin{verbatim}
-   (35)
-         4    3     2          3
-       (a  - a  + 2a  - a + 1)b
-     + 
-         4    3     2          2
-       (a  - a  + 2a  - a + 1)b
-     + 
-         4    3     2              4    3     2
-       (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 3
-  /
-         4    3     2          3
-       (a  - a  + 2a  - a + 1)b
-     + 
-         4    3     2          2
-       (a  - a  + 2a  - a + 1)b
-     + 
-         4    3     2              4    3     2
-       (a  - a  + 2a  - a + 1)b + a  - a  + 2a  - a + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty36}
-\begin{paste}{ugIntroNumbersPageEmpty36}{ugIntroNumbersPagePatch36}
-\pastebutton{ugIntroNumbersPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{2/\%+1\free{check1 }\bound{check2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch37}
-\begin{paste}{ugIntroNumbersPageFull37}{ugIntroNumbersPageEmpty37}
-\pastebutton{ugIntroNumbersPageFull37}{\hidepaste}
-\tab{5}\spadcommand{ratDenom(\%)\free{check2 }}
-\indentrel{3}\begin{verbatim}
-   (36)  b
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty37}
-\begin{paste}{ugIntroNumbersPageEmpty37}{ugIntroNumbersPagePatch37}
-\pastebutton{ugIntroNumbersPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{ratDenom(\%)\free{check2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPagePatch38}
-\begin{paste}{ugIntroNumbersPageFull38}{ugIntroNumbersPageEmpty38}
-\pastebutton{ugIntroNumbersPageFull38}{\hidepaste}
-\tab{5}\spadcommand{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
-\indentrel{3}\begin{verbatim}
-   (37)  - 8i + 16j - 8k
-                               Type: Quaternion Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroNumbersPageEmpty38}
-\begin{paste}{ugIntroNumbersPageEmpty38}{ugIntroNumbersPagePatch38}
-\pastebutton{ugIntroNumbersPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{q:=quatern(1,2,3,4)*quatern(5,6,7,8) - quatern(5,6,7,8)*quatern(1,2,3,4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch1}
-\begin{paste}{ugIntroDiffEqnsPageFull1}{ugIntroDiffEqnsPageEmpty1}
-\pastebutton{ugIntroDiffEqnsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (1)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty1}
-\begin{paste}{ugIntroDiffEqnsPageEmpty1}{ugIntroDiffEqnsPagePatch1}
-\pastebutton{ugIntroDiffEqnsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch2}
-\begin{paste}{ugIntroDiffEqnsPageFull2}{ugIntroDiffEqnsPageEmpty2}
-\pastebutton{ugIntroDiffEqnsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{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\bound{e3 }\free{y }}
-\indentrel{3}\begin{verbatim}
-         3 ,,,       2 ,,         ,               4
-   (2)  x y   (x) + x y  (x) - 2xy (x) + 2y(x)= 2x
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty2}
-\begin{paste}{ugIntroDiffEqnsPageEmpty2}{ugIntroDiffEqnsPagePatch2}
-\pastebutton{ugIntroDiffEqnsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{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\bound{e3 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch3}
-\begin{paste}{ugIntroDiffEqnsPageFull3}{ugIntroDiffEqnsPageEmpty3}
-\pastebutton{ugIntroDiffEqnsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (3)
-                 5      3      2
-                x  - 10x  + 20x  + 4
-   [particular= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-                         15x
-              3     2      3      3     2
-            2x  - 3x  + 1 x  - 1 x  - 3x  - 1
-    basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]]
-                  x          x         x
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty3}
-\begin{paste}{ugIntroDiffEqnsPageEmpty3}{ugIntroDiffEqnsPagePatch3}
-\pastebutton{ugIntroDiffEqnsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch4}
-\begin{paste}{ugIntroDiffEqnsPageFull4}{ugIntroDiffEqnsPageEmpty4}
-\pastebutton{ugIntroDiffEqnsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
-\indentrel{3}\begin{verbatim}
-          2      ,,         ,
-   (4)  (x  + 1)y  (x) + 3xy (x) + y(x)= 0
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty4}
-\begin{paste}{ugIntroDiffEqnsPageEmpty4}{ugIntroDiffEqnsPagePatch4}
-\pastebutton{ugIntroDiffEqnsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch5}
-\begin{paste}{ugIntroDiffEqnsPageFull5}{ugIntroDiffEqnsPageEmpty5}
-\pastebutton{ugIntroDiffEqnsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                                         ÚÄÄÄÄÄÄ¿
-                                         ³ 2
-                              1     log(\³x  + 1  - x)
-   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
-                           ÚÄÄÄÄÄÄ¿       ÚÄÄÄÄÄÄ¿
-                           ³ 2            ³ 2
-                          \³x  + 1       \³x  + 1
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty5}
-\begin{paste}{ugIntroDiffEqnsPageEmpty5}{ugIntroDiffEqnsPagePatch5}
-\pastebutton{ugIntroDiffEqnsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch6}
-\begin{paste}{ugIntroDiffEqnsPageFull6}{ugIntroDiffEqnsPageEmpty6}
-\pastebutton{ugIntroDiffEqnsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq }\free{y }}
-\indentrel{3}\begin{verbatim}
-          3 ,,        2 ,
-   (6)  2x y  (x) + 3x y (x) - 2y(x)
-
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty6}
-\begin{paste}{ugIntroDiffEqnsPageEmpty6}{ugIntroDiffEqnsPagePatch6}
-\pastebutton{ugIntroDiffEqnsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{eq := 2*x**3 * D(y x,x,2) + 3*x**2 * D(y x,x) - 2 * y x\bound{eq }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch7}
-\begin{paste}{ugIntroDiffEqnsPageFull7}{ugIntroDiffEqnsPageEmpty7}
-\pastebutton{ugIntroDiffEqnsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{solve(eq,y,x).basis\free{eq }}
-\indentrel{3}\begin{verbatim}
-               2      2
-           - ÄÄÄÄ   ÄÄÄÄ
-              ÚÄ¿    ÚÄ¿
-             \³x    \³x
-   (7)  [%e      ,%e    ]
-                          Type: List Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty7}
-\begin{paste}{ugIntroDiffEqnsPageEmpty7}{ugIntroDiffEqnsPagePatch7}
-\pastebutton{ugIntroDiffEqnsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{solve(eq,y,x).basis\free{eq }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch8}
-\begin{paste}{ugIntroDiffEqnsPageFull8}{ugIntroDiffEqnsPageEmpty8}
-\pastebutton{ugIntroDiffEqnsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
-\indentrel{3}\begin{verbatim}
-         ,            y(x)
-   (8)  y (x)= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               y(x)log(y(x)) + x
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty8}
-\begin{paste}{ugIntroDiffEqnsPageEmpty8}{ugIntroDiffEqnsPagePatch8}
-\pastebutton{ugIntroDiffEqnsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch9}
-\begin{paste}{ugIntroDiffEqnsPageFull9}{ugIntroDiffEqnsPageEmpty9}
-\pastebutton{ugIntroDiffEqnsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
-\indentrel{3}\begin{verbatim}
-                     2
-        y(x)log(y(x))  - 2x
-   (9)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               2y(x)
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty9}
-\begin{paste}{ugIntroDiffEqnsPageEmpty9}{ugIntroDiffEqnsPagePatch9}
-\pastebutton{ugIntroDiffEqnsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch10}
-\begin{paste}{ugIntroDiffEqnsPageFull10}{ugIntroDiffEqnsPageEmpty10}
-\pastebutton{ugIntroDiffEqnsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{x := operator 'x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (10)  x
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty10}
-\begin{paste}{ugIntroDiffEqnsPageEmpty10}{ugIntroDiffEqnsPagePatch10}
-\pastebutton{ugIntroDiffEqnsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{x := operator 'x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch11}
-\begin{paste}{ugIntroDiffEqnsPageFull11}{ugIntroDiffEqnsPageEmpty11}
-\pastebutton{ugIntroDiffEqnsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
-\indentrel{3}\begin{verbatim}
-          ,         2
-   (11)  x (t)= x(t)  + 1
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty11}
-\begin{paste}{ugIntroDiffEqnsPageEmpty11}{ugIntroDiffEqnsPagePatch11}
-\pastebutton{ugIntroDiffEqnsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch12}
-\begin{paste}{ugIntroDiffEqnsPageFull12}{ugIntroDiffEqnsPageEmpty12}
-\pastebutton{ugIntroDiffEqnsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
-\indentrel{3}\begin{verbatim}
-          ,
-   (12)  y (t)= x(t)y(t)
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty12}
-\begin{paste}{ugIntroDiffEqnsPageEmpty12}{ugIntroDiffEqnsPagePatch12}
-\pastebutton{ugIntroDiffEqnsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPagePatch13}
-\begin{paste}{ugIntroDiffEqnsPageFull13}{ugIntroDiffEqnsPageEmpty13}
-\pastebutton{ugIntroDiffEqnsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }}
-\indentrel{3}\begin{verbatim}
-   (13)
-        1  3    2  5    17  7    62   9      11
-   [t + Ä t  + ÄÄ t  + ÄÄÄ t  + ÄÄÄÄ t  + O(t  ),
-        3      15      315      2835
-
-           1  2    5  4    61  6    277  8    50521   10
-       1 + Ä t  + ÄÄ t  + ÄÄÄ t  + ÄÄÄÄ t  + ÄÄÄÄÄÄÄ t
-           2      24      720      8064      3628800
-     + 
-          11
-       O(t  )
-     ]
-Type: List UnivariateTaylorSeries(Expression Integer,t,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroDiffEqnsPageEmpty13}
-\begin{paste}{ugIntroDiffEqnsPageEmpty13}{ugIntroDiffEqnsPagePatch13}
-\pastebutton{ugIntroDiffEqnsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroGraphicsPagePatch1}
-\begin{paste}{ugIntroGraphicsPageFull1}{ugIntroGraphicsPageEmpty1}
-\pastebutton{ugIntroGraphicsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintrographicspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintrographicspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroGraphicsPageEmpty1}
-\begin{paste}{ugIntroGraphicsPageEmpty1}{ugIntroGraphicsPagePatch1}
-\pastebutton{ugIntroGraphicsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(5*t/8), t=0..16*\%pi, coordinates==polar)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroGraphicsPagePatch2}
-\begin{paste}{ugIntroGraphicsPageFull2}{ugIntroGraphicsPageEmpty2}
-\pastebutton{ugIntroGraphicsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintrographicspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintrographicspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroGraphicsPageEmpty2}
-\begin{paste}{ugIntroGraphicsPageEmpty2}{ugIntroGraphicsPagePatch2}
-\pastebutton{ugIntroGraphicsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw((x,y) +-> real atan complex(x,y), -\%pi..\%pi, -\%pi..\%pi, colorFunction == (x,y) +-> argument atan complex(x,y))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCommentsPagePatch1}
-\begin{paste}{ugIntroCommentsPageFull1}{ugIntroCommentsPageEmpty1}
-\pastebutton{ugIntroCommentsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{2 + 3 -- this is rather simple, no?}
-\indentrel{3}\begin{verbatim}
-   (1)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroCommentsPageEmpty1}
-\begin{paste}{ugIntroCommentsPageEmpty1}{ugIntroCommentsPagePatch1}
-\pastebutton{ugIntroCommentsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{2 + 3 -- this is rather simple, no?}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch1}
-\begin{paste}{ugIntroSolutionPageFull1}{ugIntroSolutionPageEmpty1}
-\pastebutton{ugIntroSolutionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty1}
-\begin{paste}{ugIntroSolutionPageEmpty1}{ugIntroSolutionPagePatch1}
-\pastebutton{ugIntroSolutionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{S(t) == [x**2-2*y**2 - t,x*y-y-5*x + 5]\bound{S1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch2}
-\begin{paste}{ugIntroSolutionPageFull2}{ugIntroSolutionPageEmpty2}
-\pastebutton{ugIntroSolutionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{solve(S(19),1/10**20)\free{S1 }}
-\indentrel{3}\begin{verbatim}
-   (2)
-               2451682632253093442511
-   [[y= 5,x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ],
-                295147905179352825856
-             2451682632253093442511
-    [y= 5,x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
-              295147905179352825856
-   Type: List List Equation Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty2}
-\begin{paste}{ugIntroSolutionPageEmpty2}{ugIntroSolutionPagePatch2}
-\pastebutton{ugIntroSolutionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{solve(S(19),1/10**20)\free{S1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch3}
-\begin{paste}{ugIntroSolutionPageFull3}{ugIntroSolutionPageEmpty3}
-\pastebutton{ugIntroSolutionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{complexSolve(S(19),10.e-20)\free{S1 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [
-     [y= 5.0,
-      x= 8.3066238629 1807485256 1669055295 290320373]
-     ,
-
-     [y= 5.0,
-      x= - 8.3066238629 1807485256 1669055295 290320373]
-     ,
-    [y= - 3.0 %i,x= 1.0], [y= 3.0 %i,x= 1.0]]
-      Type: List List Equation Polynomial Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty3}
-\begin{paste}{ugIntroSolutionPageEmpty3}{ugIntroSolutionPagePatch3}
-\pastebutton{ugIntroSolutionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{complexSolve(S(19),10.e-20)\free{S1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch4}
-\begin{paste}{ugIntroSolutionPageFull4}{ugIntroSolutionPageEmpty4}
-\pastebutton{ugIntroSolutionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{radicalSolve(S(a),[x,y])\free{S1 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-           ÚÄÄÄÄÄÄ¿             ÚÄÄÄÄÄÄ¿
-   [[x= - \³a + 50 ,y= 5], [x= \³a + 50 ,y= 5],
-              ÚÄÄÄÄÄÄÄ¿               ÚÄÄÄÄÄÄÄ¿
-              ³- a + 1                ³- a + 1
-    [x= 1,y=  ³ÄÄÄÄÄÄÄ ], [x= 1,y= -  ³ÄÄÄÄÄÄÄ ]]
-             \³   2                  \³   2
-            Type: List List Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty4}
-\begin{paste}{ugIntroSolutionPageEmpty4}{ugIntroSolutionPagePatch4}
-\pastebutton{ugIntroSolutionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{radicalSolve(S(a),[x,y])\free{S1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch5}
-\begin{paste}{ugIntroSolutionPageFull5}{ugIntroSolutionPageEmpty5}
-\pastebutton{ugIntroSolutionPageFull5}{\hidepaste}
-\tab{5}\spadcommand{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e }}
-\indentrel{3}\begin{verbatim}
-                  2  2           4  2
-   (5)  [z - y + x ,x z - b y + x ,y z - b x - a]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty5}
-\begin{paste}{ugIntroSolutionPageEmpty5}{ugIntroSolutionPagePatch5}
-\pastebutton{ugIntroSolutionPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{eqns := [x**2 - y + z,x**2*z + x**4 - b*y, y**2 *z - a - b*x]\bound{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPagePatch6}
-\begin{paste}{ugIntroSolutionPageFull6}{ugIntroSolutionPageEmpty6}
-\pastebutton{ugIntroSolutionPageFull6}{\hidepaste}
-\tab{5}\spadcommand{solve(eqns,[x,y,z])\free{e }}
-\indentrel{3}\begin{verbatim}
-   (6)
-                       2
-          a           a
-   [[x= - Ä,y= 0,z= - ÄÄ],
-          b            2
-                      b
-
-          3       2    2
-         z  + 2b z  + b z - a
-     [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ, y= z + b,
-                   b
-
-          6       5     2 4      3       3     4         2
-         z  + 4b z  + 6b z  + (4b  - 2a)z  + (b  - 4a b)z
-       + 
-               2     3    2
-         - 2a b z - b  + a
-         =
-         0
-       ]
-     ]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroSolutionPageEmpty6}
-\begin{paste}{ugIntroSolutionPageEmpty6}{ugIntroSolutionPagePatch6}
-\pastebutton{ugIntroSolutionPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{solve(eqns,[x,y,z])\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPagePatch1}
-\begin{paste}{ugIntroPreviousPageFull1}{ugIntroPreviousPageEmpty1}
-\pastebutton{ugIntroPreviousPageFull1}{\hidepaste}
-\tab{5}\spadcommand{10 ** 10\bound{prev }}
-\indentrel{3}\begin{verbatim}
-   (1)  10000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPageEmpty1}
-\begin{paste}{ugIntroPreviousPageEmpty1}{ugIntroPreviousPagePatch1}
-\pastebutton{ugIntroPreviousPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{10 ** 10\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPagePatch2}
-\begin{paste}{ugIntroPreviousPageFull2}{ugIntroPreviousPageEmpty2}
-\pastebutton{ugIntroPreviousPageFull2}{\hidepaste}
-\tab{5}\spadcommand{\% - 1\free{prev }\bound{prev1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  9999999999
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPageEmpty2}
-\begin{paste}{ugIntroPreviousPageEmpty2}{ugIntroPreviousPagePatch2}
-\pastebutton{ugIntroPreviousPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{\% - 1\free{prev }\bound{prev1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPagePatch3}
-\begin{paste}{ugIntroPreviousPageFull3}{ugIntroPreviousPageEmpty3}
-\pastebutton{ugIntroPreviousPageFull3}{\hidepaste}
-\tab{5}\spadcommand{\%\%(-1)\free{prev1 }\bound{prev2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  9999999999
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPageEmpty3}
-\begin{paste}{ugIntroPreviousPageEmpty3}{ugIntroPreviousPagePatch3}
-\pastebutton{ugIntroPreviousPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{\%\%(-1)\free{prev1 }\bound{prev2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPagePatch4}
-\begin{paste}{ugIntroPreviousPageFull4}{ugIntroPreviousPageEmpty4}
-\pastebutton{ugIntroPreviousPageFull4}{\hidepaste}
-\tab{5}\spadcommand{\%\%(1)\free{prev2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  10000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntroPreviousPageEmpty4}
-\begin{paste}{ugIntroPreviousPageEmpty4}{ugIntroPreviousPagePatch4}
-\pastebutton{ugIntroPreviousPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{\%\%(1)\free{prev2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug02.pht b/books/pages/ug02.pht
deleted file mode 100644
index b96c56b..0000000
--- a/books/pages/ug02.pht
+++ /dev/null
@@ -1,2328 +0,0 @@
-\begin{patch}{ugTypesUnionsWSelPagePatch1}
-\begin{paste}{ugTypesUnionsWSelPageFull1}{ugTypesUnionsWSelPageEmpty1}
-\pastebutton{ugTypesUnionsWSelPageFull1}{\hidepaste}
-\tab{5}\spadcommand{u : Union(i : Integer, s : String)\bound{undec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPageEmpty1}
-\begin{paste}{ugTypesUnionsWSelPageEmpty1}{ugTypesUnionsWSelPagePatch1}
-\pastebutton{ugTypesUnionsWSelPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u : Union(i : Integer, s : String)\bound{undec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPagePatch2}
-\begin{paste}{ugTypesUnionsWSelPageFull2}{ugTypesUnionsWSelPageEmpty2}
-\pastebutton{ugTypesUnionsWSelPageFull2}{\hidepaste}
-\tab{5}\spadcommand{u := "good morning"\bound{u }\free{undec }}
-\indentrel{3}\begin{verbatim}
-   (2)  "good morning"
-                             Type: Union(s: String,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPageEmpty2}
-\begin{paste}{ugTypesUnionsWSelPageEmpty2}{ugTypesUnionsWSelPagePatch2}
-\pastebutton{ugTypesUnionsWSelPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{u := "good morning"\bound{u }\free{undec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPagePatch3}
-\begin{paste}{ugTypesUnionsWSelPageFull3}{ugTypesUnionsWSelPageEmpty3}
-\pastebutton{ugTypesUnionsWSelPageFull3}{\hidepaste}
-\tab{5}\spadcommand{u case i\free{u }}
-\indentrel{3}\begin{verbatim}
-   (3)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPageEmpty3}
-\begin{paste}{ugTypesUnionsWSelPageEmpty3}{ugTypesUnionsWSelPagePatch3}
-\pastebutton{ugTypesUnionsWSelPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{u case i\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPagePatch4}
-\begin{paste}{ugTypesUnionsWSelPageFull4}{ugTypesUnionsWSelPageEmpty4}
-\pastebutton{ugTypesUnionsWSelPageFull4}{\hidepaste}
-\tab{5}\spadcommand{u case s\free{u }}
-\indentrel{3}\begin{verbatim}
-   (4)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPageEmpty4}
-\begin{paste}{ugTypesUnionsWSelPageEmpty4}{ugTypesUnionsWSelPagePatch4}
-\pastebutton{ugTypesUnionsWSelPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{u case s\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPagePatch5}
-\begin{paste}{ugTypesUnionsWSelPageFull5}{ugTypesUnionsWSelPageEmpty5}
-\pastebutton{ugTypesUnionsWSelPageFull5}{\hidepaste}
-\tab{5}\spadcommand{u.s\free{u }}
-\indentrel{3}\begin{verbatim}
-   (5)  "good morning"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWSelPageEmpty5}
-\begin{paste}{ugTypesUnionsWSelPageEmpty5}{ugTypesUnionsWSelPagePatch5}
-\pastebutton{ugTypesUnionsWSelPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{u.s\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch1}
-\begin{paste}{ugTypesWritingOnePageFull1}{ugTypesWritingOnePageEmpty1}
-\pastebutton{ugTypesWritingOnePageFull1}{\hidepaste}
-\tab{5}\spadcommand{e : PrimeField(2 + 3)}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty1}
-\begin{paste}{ugTypesWritingOnePageEmpty1}{ugTypesWritingOnePagePatch1}
-\pastebutton{ugTypesWritingOnePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{e : PrimeField(2 + 3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch2}
-\begin{paste}{ugTypesWritingOnePageFull2}{ugTypesWritingOnePageEmpty2}
-\pastebutton{ugTypesWritingOnePageFull2}{\hidepaste}
-\tab{5}\spadcommand{content(2)$Polynomial(Integer)}
-\indentrel{3}\begin{verbatim}
-   (2)  2
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty2}
-\begin{paste}{ugTypesWritingOnePageEmpty2}{ugTypesWritingOnePagePatch2}
-\pastebutton{ugTypesWritingOnePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{content(2)$Polynomial(Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch3}
-\begin{paste}{ugTypesWritingOnePageFull3}{ugTypesWritingOnePageEmpty3}
-\pastebutton{ugTypesWritingOnePageFull3}{\hidepaste}
-\tab{5}\spadcommand{content(2)$(Polynomial Complex Fraction Integer)}
-\indentrel{3}\begin{verbatim}
-   (3)  2
-                         Type: Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty3}
-\begin{paste}{ugTypesWritingOnePageEmpty3}{ugTypesWritingOnePagePatch3}
-\pastebutton{ugTypesWritingOnePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{content(2)$(Polynomial Complex Fraction Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch4}
-\begin{paste}{ugTypesWritingOnePageFull4}{ugTypesWritingOnePageEmpty4}
-\pastebutton{ugTypesWritingOnePageFull4}{\hidepaste}
-\tab{5}\spadcommand{(2/3)@Fraction(Polynomial(Integer))}
-\indentrel{3}\begin{verbatim}
-        2
-   (4)  Ä
-        3
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty4}
-\begin{paste}{ugTypesWritingOnePageEmpty4}{ugTypesWritingOnePagePatch4}
-\pastebutton{ugTypesWritingOnePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(2/3)@Fraction(Polynomial(Integer))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch5}
-\begin{paste}{ugTypesWritingOnePageFull5}{ugTypesWritingOnePageEmpty5}
-\pastebutton{ugTypesWritingOnePageFull5}{\hidepaste}
-\tab{5}\spadcommand{(2/3)@Fraction(Polynomial Integer)}
-\indentrel{3}\begin{verbatim}
-        2
-   (5)  Ä
-        3
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty5}
-\begin{paste}{ugTypesWritingOnePageEmpty5}{ugTypesWritingOnePagePatch5}
-\pastebutton{ugTypesWritingOnePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(2/3)@Fraction(Polynomial Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePagePatch6}
-\begin{paste}{ugTypesWritingOnePageFull6}{ugTypesWritingOnePageEmpty6}
-\pastebutton{ugTypesWritingOnePageFull6}{\hidepaste}
-\tab{5}\spadcommand{(d,f,g) : Complex Polynomial Integer}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingOnePageEmpty6}
-\begin{paste}{ugTypesWritingOnePageEmpty6}{ugTypesWritingOnePagePatch6}
-\pastebutton{ugTypesWritingOnePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{(d,f,g) : Complex Polynomial Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch1}
-\begin{paste}{ugTypesSubdomainsPageFull1}{ugTypesSubdomainsPageEmpty1}
-\pastebutton{ugTypesSubdomainsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{5}
-\indentrel{3}\begin{verbatim}
-   (1)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty1}
-\begin{paste}{ugTypesSubdomainsPageEmpty1}{ugTypesSubdomainsPagePatch1}
-\pastebutton{ugTypesSubdomainsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{5}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch2}
-\begin{paste}{ugTypesSubdomainsPageFull2}{ugTypesSubdomainsPageEmpty2}
-\pastebutton{ugTypesSubdomainsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{0}
-\indentrel{3}\begin{verbatim}
-   (2)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty2}
-\begin{paste}{ugTypesSubdomainsPageEmpty2}{ugTypesSubdomainsPagePatch2}
-\pastebutton{ugTypesSubdomainsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{0}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch3}
-\begin{paste}{ugTypesSubdomainsPageFull3}{ugTypesSubdomainsPageEmpty3}
-\pastebutton{ugTypesSubdomainsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{-5}
-\indentrel{3}\begin{verbatim}
-   (3)  - 5
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty3}
-\begin{paste}{ugTypesSubdomainsPageEmpty3}{ugTypesSubdomainsPagePatch3}
-\pastebutton{ugTypesSubdomainsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{-5}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch4}
-\begin{paste}{ugTypesSubdomainsPageFull4}{ugTypesSubdomainsPageEmpty4}
-\pastebutton{ugTypesSubdomainsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(-2) - (-3)}
-\indentrel{3}\begin{verbatim}
-   (4)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty4}
-\begin{paste}{ugTypesSubdomainsPageEmpty4}{ugTypesSubdomainsPagePatch4}
-\pastebutton{ugTypesSubdomainsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(-2) - (-3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch5}
-\begin{paste}{ugTypesSubdomainsPageFull5}{ugTypesSubdomainsPageEmpty5}
-\pastebutton{ugTypesSubdomainsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{0 :: Integer}
-\indentrel{3}\begin{verbatim}
-   (5)  0
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty5}
-\begin{paste}{ugTypesSubdomainsPageEmpty5}{ugTypesSubdomainsPagePatch5}
-\pastebutton{ugTypesSubdomainsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{0 :: Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch6}
-\begin{paste}{ugTypesSubdomainsPageFull6}{ugTypesSubdomainsPageEmpty6}
-\pastebutton{ugTypesSubdomainsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x : NonNegativeInteger := 5}
-\indentrel{3}\begin{verbatim}
-   (6)  5
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty6}
-\begin{paste}{ugTypesSubdomainsPageEmpty6}{ugTypesSubdomainsPagePatch6}
-\pastebutton{ugTypesSubdomainsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x : NonNegativeInteger := 5}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch7}
-\begin{paste}{ugTypesSubdomainsPageFull7}{ugTypesSubdomainsPageEmpty7}
-\pastebutton{ugTypesSubdomainsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{2 ** 2}
-\indentrel{3}\begin{verbatim}
-   (7)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty7}
-\begin{paste}{ugTypesSubdomainsPageEmpty7}{ugTypesSubdomainsPagePatch7}
-\pastebutton{ugTypesSubdomainsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{2 ** 2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch8}
-\begin{paste}{ugTypesSubdomainsPageFull8}{ugTypesSubdomainsPageEmpty8}
-\pastebutton{ugTypesSubdomainsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{2 ** (-2)}
-\indentrel{3}\begin{verbatim}
-        1
-   (8)  Ä
-        4
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty8}
-\begin{paste}{ugTypesSubdomainsPageEmpty8}{ugTypesSubdomainsPagePatch8}
-\pastebutton{ugTypesSubdomainsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{2 ** (-2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch9}
-\begin{paste}{ugTypesSubdomainsPageFull9}{ugTypesSubdomainsPageEmpty9}
-\pastebutton{ugTypesSubdomainsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{[10**i for i in 2..5]}
-\indentrel{3}\begin{verbatim}
-   (9)  [100,1000,10000,100000]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty9}
-\begin{paste}{ugTypesSubdomainsPageEmpty9}{ugTypesSubdomainsPagePatch9}
-\pastebutton{ugTypesSubdomainsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{[10**i for i in 2..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch10}
-\begin{paste}{ugTypesSubdomainsPageFull10}{ugTypesSubdomainsPageEmpty10}
-\pastebutton{ugTypesSubdomainsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{[10**(i-1) for i in 2..5]}
-\indentrel{3}\begin{verbatim}
-   (10)  [10,100,1000,10000]
-                            Type: List Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty10}
-\begin{paste}{ugTypesSubdomainsPageEmpty10}{ugTypesSubdomainsPagePatch10}
-\pastebutton{ugTypesSubdomainsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{[10**(i-1) for i in 2..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch11}
-\begin{paste}{ugTypesSubdomainsPageFull11}{ugTypesSubdomainsPageEmpty11}
-\pastebutton{ugTypesSubdomainsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[10**((i-1) :: PI) for i in 2..5]}
-\indentrel{3}\begin{verbatim}
-   (11)  [10,100,1000,10000]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty11}
-\begin{paste}{ugTypesSubdomainsPageEmpty11}{ugTypesSubdomainsPagePatch11}
-\pastebutton{ugTypesSubdomainsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[10**((i-1) :: PI) for i in 2..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch12}
-\begin{paste}{ugTypesSubdomainsPageFull12}{ugTypesSubdomainsPageEmpty12}
-\pastebutton{ugTypesSubdomainsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{[10**((i-1) pretend PI) for i in 2..5]}
-\indentrel{3}\begin{verbatim}
-   (12)  [10,100,1000,10000]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty12}
-\begin{paste}{ugTypesSubdomainsPageEmpty12}{ugTypesSubdomainsPagePatch12}
-\pastebutton{ugTypesSubdomainsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{[10**((i-1) pretend PI) for i in 2..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPagePatch13}
-\begin{paste}{ugTypesSubdomainsPageFull13}{ugTypesSubdomainsPageEmpty13}
-\pastebutton{ugTypesSubdomainsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{(2/3) pretend Complex Integer}
-\indentrel{3}\begin{verbatim}
-   (13)  2 + 3%i
-                                  Type: Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesSubdomainsPageEmpty13}
-\begin{paste}{ugTypesSubdomainsPageEmpty13}{ugTypesSubdomainsPagePatch13}
-\pastebutton{ugTypesSubdomainsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{(2/3) pretend Complex Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch1}
-\begin{paste}{ugTypesUnionsWOSelPageFull1}{ugTypesUnionsWOSelPageEmpty1}
-\pastebutton{ugTypesUnionsWOSelPageFull1}{\hidepaste}
-\tab{5}\spadcommand{sayBranch(x : Union(Integer,String,Float)) : Void  ==
-  output
-    x case Integer => "Integer branch"
-    x case String  => "String branch"
-    "Float branch"
-\bound{sayBranch }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty1}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty1}{ugTypesUnionsWOSelPagePatch1}
-\pastebutton{ugTypesUnionsWOSelPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{sayBranch(x : Union(Integer,String,Float)) : Void  ==
-  output
-    x case Integer => "Integer branch"
-    x case String  => "String branch"
-    "Float branch"
-\bound{sayBranch }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch2}
-\begin{paste}{ugTypesUnionsWOSelPageFull2}{ugTypesUnionsWOSelPageEmpty2}
-\pastebutton{ugTypesUnionsWOSelPageFull2}{\hidepaste}
-\tab{5}\spadcommand{sayBranch 1\free{sayBranch }}
-\indentrel{3}\begin{verbatim}
-   Integer branch
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty2}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty2}{ugTypesUnionsWOSelPagePatch2}
-\pastebutton{ugTypesUnionsWOSelPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sayBranch 1\free{sayBranch }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch3}
-\begin{paste}{ugTypesUnionsWOSelPageFull3}{ugTypesUnionsWOSelPageEmpty3}
-\pastebutton{ugTypesUnionsWOSelPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sayBranch "hello"\free{sayBranch }}
-\indentrel{3}\begin{verbatim}
-   String branch
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty3}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty3}{ugTypesUnionsWOSelPagePatch3}
-\pastebutton{ugTypesUnionsWOSelPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sayBranch "hello"\free{sayBranch }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch4}
-\begin{paste}{ugTypesUnionsWOSelPageFull4}{ugTypesUnionsWOSelPageEmpty4}
-\pastebutton{ugTypesUnionsWOSelPageFull4}{\hidepaste}
-\tab{5}\spadcommand{sayBranch 2.718281828\free{sayBranch }}
-\indentrel{3}\begin{verbatim}
-   Float branch
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty4}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty4}{ugTypesUnionsWOSelPagePatch4}
-\pastebutton{ugTypesUnionsWOSelPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sayBranch 2.718281828\free{sayBranch }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch5}
-\begin{paste}{ugTypesUnionsWOSelPageFull5}{ugTypesUnionsWOSelPageEmpty5}
-\pastebutton{ugTypesUnionsWOSelPageFull5}{\hidepaste}
-\tab{5}\spadcommand{78 :: Union(Integer,String)}
-\indentrel{3}\begin{verbatim}
-   (5)  78
-                               Type: Union(Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty5}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty5}{ugTypesUnionsWOSelPagePatch5}
-\pastebutton{ugTypesUnionsWOSelPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{78 :: Union(Integer,String)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch6}
-\begin{paste}{ugTypesUnionsWOSelPageFull6}{ugTypesUnionsWOSelPageEmpty6}
-\pastebutton{ugTypesUnionsWOSelPageFull6}{\hidepaste}
-\tab{5}\spadcommand{s := "string" :: Union(Integer,String)\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (6)  "string"
-                                Type: Union(String,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty6}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty6}{ugTypesUnionsWOSelPagePatch6}
-\pastebutton{ugTypesUnionsWOSelPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{s := "string" :: Union(Integer,String)\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch7}
-\begin{paste}{ugTypesUnionsWOSelPageFull7}{ugTypesUnionsWOSelPageEmpty7}
-\pastebutton{ugTypesUnionsWOSelPageFull7}{\hidepaste}
-\tab{5}\spadcommand{typeOf s}
-\indentrel{3}\begin{verbatim}
-   (7)  Union(Integer,String)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty7}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty7}{ugTypesUnionsWOSelPagePatch7}
-\pastebutton{ugTypesUnionsWOSelPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{typeOf s}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch8}
-\begin{paste}{ugTypesUnionsWOSelPageFull8}{ugTypesUnionsWOSelPageEmpty8}
-\pastebutton{ugTypesUnionsWOSelPageFull8}{\hidepaste}
-\tab{5}\spadcommand{three := exquo(6,2)\bound{three }}
-\indentrel{3}\begin{verbatim}
-   (8)  3
-                               Type: Union(Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty8}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty8}{ugTypesUnionsWOSelPagePatch8}
-\pastebutton{ugTypesUnionsWOSelPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{three := exquo(6,2)\bound{three }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch9}
-\begin{paste}{ugTypesUnionsWOSelPageFull9}{ugTypesUnionsWOSelPageEmpty9}
-\pastebutton{ugTypesUnionsWOSelPageFull9}{\hidepaste}
-\tab{5}\spadcommand{exquo(5,2)}
-\indentrel{3}\begin{verbatim}
-   (9)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty9}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty9}{ugTypesUnionsWOSelPagePatch9}
-\pastebutton{ugTypesUnionsWOSelPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{exquo(5,2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch10}
-\begin{paste}{ugTypesUnionsWOSelPageFull10}{ugTypesUnionsWOSelPageEmpty10}
-\pastebutton{ugTypesUnionsWOSelPageFull10}{\hidepaste}
-\tab{5}\spadcommand{r: FRAC INT := 3\bound{r }\bound{rdec }}
-\indentrel{3}\begin{verbatim}
-   (10)  3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty10}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty10}{ugTypesUnionsWOSelPagePatch10}
-\pastebutton{ugTypesUnionsWOSelPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{r: FRAC INT := 3\bound{r }\bound{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch11}
-\begin{paste}{ugTypesUnionsWOSelPageFull11}{ugTypesUnionsWOSelPageEmpty11}
-\pastebutton{ugTypesUnionsWOSelPageFull11}{\hidepaste}
-\tab{5}\spadcommand{retractIfCan(r)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (11)  3
-                               Type: Union(Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty11}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty11}{ugTypesUnionsWOSelPagePatch11}
-\pastebutton{ugTypesUnionsWOSelPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{retractIfCan(r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch12}
-\begin{paste}{ugTypesUnionsWOSelPageFull12}{ugTypesUnionsWOSelPageEmpty12}
-\pastebutton{ugTypesUnionsWOSelPageFull12}{\hidepaste}
-\tab{5}\spadcommand{r := 3/2\bound{r1 }\free{rdec }}
-\indentrel{3}\begin{verbatim}
-         3
-   (12)  Ä
-         2
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty12}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty12}{ugTypesUnionsWOSelPagePatch12}
-\pastebutton{ugTypesUnionsWOSelPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{r := 3/2\bound{r1 }\free{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPagePatch13}
-\begin{paste}{ugTypesUnionsWOSelPageFull13}{ugTypesUnionsWOSelPageEmpty13}
-\pastebutton{ugTypesUnionsWOSelPageFull13}{\hidepaste}
-\tab{5}\spadcommand{retractIfCan(r)\free{r1 }}
-\indentrel{3}\begin{verbatim}
-   (13)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesUnionsWOSelPageEmpty13}
-\begin{paste}{ugTypesUnionsWOSelPageEmpty13}{ugTypesUnionsWOSelPagePatch13}
-\pastebutton{ugTypesUnionsWOSelPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{retractIfCan(r)\free{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPagePatch1}
-\begin{paste}{ugTypesWritingAbbrPageFull1}{ugTypesWritingAbbrPageEmpty1}
-\pastebutton{ugTypesWritingAbbrPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)abb q Integer}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPageEmpty1}
-\begin{paste}{ugTypesWritingAbbrPageEmpty1}{ugTypesWritingAbbrPagePatch1}
-\pastebutton{ugTypesWritingAbbrPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)abb q Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPagePatch2}
-\begin{paste}{ugTypesWritingAbbrPageFull2}{ugTypesWritingAbbrPageEmpty2}
-\pastebutton{ugTypesWritingAbbrPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)abb q DMP}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPageEmpty2}
-\begin{paste}{ugTypesWritingAbbrPageEmpty2}{ugTypesWritingAbbrPagePatch2}
-\pastebutton{ugTypesWritingAbbrPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)abb q DMP}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPagePatch3}
-\begin{paste}{ugTypesWritingAbbrPageFull3}{ugTypesWritingAbbrPageEmpty3}
-\pastebutton{ugTypesWritingAbbrPageFull3}{\hidepaste}
-\tab{5}\spadcommand{)what packages ode}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingAbbrPageEmpty3}
-\begin{paste}{ugTypesWritingAbbrPageEmpty3}{ugTypesWritingAbbrPagePatch3}
-\pastebutton{ugTypesWritingAbbrPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{)what packages ode}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPagePatch1}
-\begin{paste}{ugTypesBasicPageFull1}{ugTypesBasicPageEmpty1}
-\pastebutton{ugTypesBasicPageFull1}{\hidepaste}
-\tab{5}\spadcommand{-3}
-\indentrel{3}\begin{verbatim}
-   (1)  - 3
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPageEmpty1}
-\begin{paste}{ugTypesBasicPageEmpty1}{ugTypesBasicPagePatch1}
-\pastebutton{ugTypesBasicPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{-3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPagePatch2}
-\begin{paste}{ugTypesBasicPageFull2}{ugTypesBasicPageEmpty2}
-\pastebutton{ugTypesBasicPageFull2}{\hidepaste}
-\tab{5}\spadcommand{-3/1}
-\indentrel{3}\begin{verbatim}
-   (2)  - 3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPageEmpty2}
-\begin{paste}{ugTypesBasicPageEmpty2}{ugTypesBasicPagePatch2}
-\pastebutton{ugTypesBasicPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{-3/1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPagePatch3}
-\begin{paste}{ugTypesBasicPageFull3}{ugTypesBasicPageEmpty3}
-\pastebutton{ugTypesBasicPageFull3}{\hidepaste}
-\tab{5}\spadcommand{x + 3 - x\bound{three }}
-\indentrel{3}\begin{verbatim}
-   (3)  3
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPageEmpty3}
-\begin{paste}{ugTypesBasicPageEmpty3}{ugTypesBasicPagePatch3}
-\pastebutton{ugTypesBasicPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x + 3 - x\bound{three }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPagePatch4}
-\begin{paste}{ugTypesBasicPageFull4}{ugTypesBasicPageEmpty4}
-\pastebutton{ugTypesBasicPageFull4}{\hidepaste}
-\tab{5}\spadcommand{factorial(\%)\free{three }}
-\indentrel{3}\begin{verbatim}
-   (4)  6
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPageEmpty4}
-\begin{paste}{ugTypesBasicPageEmpty4}{ugTypesBasicPagePatch4}
-\pastebutton{ugTypesBasicPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factorial(\%)\free{three }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPagePatch5}
-\begin{paste}{ugTypesBasicPageFull5}{ugTypesBasicPageEmpty5}
-\pastebutton{ugTypesBasicPageFull5}{\hidepaste}
-\tab{5}\spadcommand{3}
-\indentrel{3}\begin{verbatim}
-   (5)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicPageEmpty5}
-\begin{paste}{ugTypesBasicPageEmpty5}{ugTypesBasicPagePatch5}
-\pastebutton{ugTypesBasicPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch1}
-\begin{paste}{ugTypesBasicDomainConsPageFull1}{ugTypesBasicDomainConsPageEmpty1}
-\pastebutton{ugTypesBasicDomainConsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{factorial(7)}
-\indentrel{3}\begin{verbatim}
-   (1)  5040
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty1}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty1}{ugTypesBasicDomainConsPagePatch1}
-\pastebutton{ugTypesBasicDomainConsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{factorial(7)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch2}
-\begin{paste}{ugTypesBasicDomainConsPageFull2}{ugTypesBasicDomainConsPageEmpty2}
-\pastebutton{ugTypesBasicDomainConsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Polynomial(Integer)}
-\indentrel{3}\begin{verbatim}
-   (2)  Polynomial Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty2}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty2}{ugTypesBasicDomainConsPagePatch2}
-\pastebutton{ugTypesBasicDomainConsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Polynomial(Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch3}
-\begin{paste}{ugTypesBasicDomainConsPageFull3}{ugTypesBasicDomainConsPageEmpty3}
-\pastebutton{ugTypesBasicDomainConsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
-\indentrel{3}\begin{verbatim}
-   (3)
-   List List Matrix Polynomial Complex Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty3}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty3}{ugTypesBasicDomainConsPagePatch3}
-\pastebutton{ugTypesBasicDomainConsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{List (List (Matrix (Polynomial (Complex (Fraction (Integer))))))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch4}
-\begin{paste}{ugTypesBasicDomainConsPageFull4}{ugTypesBasicDomainConsPageEmpty4}
-\pastebutton{ugTypesBasicDomainConsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{Polynomial(String)}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty4}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty4}{ugTypesBasicDomainConsPagePatch4}
-\pastebutton{ugTypesBasicDomainConsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{Polynomial(String)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch5}
-\begin{paste}{ugTypesBasicDomainConsPageFull5}{ugTypesBasicDomainConsPageEmpty5}
-\pastebutton{ugTypesBasicDomainConsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{Polynomial(Integer) has Ring}
-\indentrel{3}\begin{verbatim}
-   (4)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty5}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty5}{ugTypesBasicDomainConsPagePatch5}
-\pastebutton{ugTypesBasicDomainConsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{Polynomial(Integer) has Ring}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch6}
-\begin{paste}{ugTypesBasicDomainConsPageFull6}{ugTypesBasicDomainConsPageEmpty6}
-\pastebutton{ugTypesBasicDomainConsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{List(Integer) has Ring}
-\indentrel{3}\begin{verbatim}
-   (5)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty6}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty6}{ugTypesBasicDomainConsPagePatch6}
-\pastebutton{ugTypesBasicDomainConsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{List(Integer) has Ring}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch7}
-\begin{paste}{ugTypesBasicDomainConsPageFull7}{ugTypesBasicDomainConsPageEmpty7}
-\pastebutton{ugTypesBasicDomainConsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{Matrix(Integer) has Ring}
-\indentrel{3}\begin{verbatim}
-   (6)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty7}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty7}{ugTypesBasicDomainConsPagePatch7}
-\pastebutton{ugTypesBasicDomainConsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{Matrix(Integer) has Ring}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch8}
-\begin{paste}{ugTypesBasicDomainConsPageFull8}{ugTypesBasicDomainConsPageEmpty8}
-\pastebutton{ugTypesBasicDomainConsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{Polynomial(Matrix(Integer))}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty8}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty8}{ugTypesBasicDomainConsPagePatch8}
-\pastebutton{ugTypesBasicDomainConsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{Polynomial(Matrix(Integer))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch9}
-\begin{paste}{ugTypesBasicDomainConsPageFull9}{ugTypesBasicDomainConsPageEmpty9}
-\pastebutton{ugTypesBasicDomainConsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{Polynomial(SquareMatrix(7,Complex(Integer)))}
-\indentrel{3}\begin{verbatim}
-   (7)  Polynomial SquareMatrix(7,Complex Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty9}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty9}{ugTypesBasicDomainConsPagePatch9}
-\pastebutton{ugTypesBasicDomainConsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{Polynomial(SquareMatrix(7,Complex(Integer)))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch10}
-\begin{paste}{ugTypesBasicDomainConsPageFull10}{ugTypesBasicDomainConsPageEmpty10}
-\pastebutton{ugTypesBasicDomainConsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{Complex(Integer) has Field}
-\indentrel{3}\begin{verbatim}
-   (8)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty10}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty10}{ugTypesBasicDomainConsPagePatch10}
-\pastebutton{ugTypesBasicDomainConsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{Complex(Integer) has Field}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch11}
-\begin{paste}{ugTypesBasicDomainConsPageFull11}{ugTypesBasicDomainConsPageEmpty11}
-\pastebutton{ugTypesBasicDomainConsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{Fraction(Complex(Integer)) has Field}
-\indentrel{3}\begin{verbatim}
-   (9)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty11}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty11}{ugTypesBasicDomainConsPagePatch11}
-\pastebutton{ugTypesBasicDomainConsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{Fraction(Complex(Integer)) has Field}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPagePatch12}
-\begin{paste}{ugTypesBasicDomainConsPageFull12}{ugTypesBasicDomainConsPageEmpty12}
-\pastebutton{ugTypesBasicDomainConsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{Complex(Fraction(Integer)) has Field}
-\indentrel{3}\begin{verbatim}
-   (10)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesBasicDomainConsPageEmpty12}
-\begin{paste}{ugTypesBasicDomainConsPageEmpty12}{ugTypesBasicDomainConsPagePatch12}
-\pastebutton{ugTypesBasicDomainConsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{Complex(Fraction(Integer)) has Field}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch1}
-\begin{paste}{ugAvailSnoopPageFull1}{ugAvailSnoopPageEmpty1}
-\pastebutton{ugAvailSnoopPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)what operation complex}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty1}
-\begin{paste}{ugAvailSnoopPageEmpty1}{ugAvailSnoopPagePatch1}
-\pastebutton{ugAvailSnoopPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)what operation complex}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch2}
-\begin{paste}{ugAvailSnoopPageFull2}{ugAvailSnoopPageEmpty2}
-\pastebutton{ugAvailSnoopPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)what domain matrix}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty2}
-\begin{paste}{ugAvailSnoopPageEmpty2}{ugAvailSnoopPagePatch2}
-\pastebutton{ugAvailSnoopPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)what domain matrix}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch3}
-\begin{paste}{ugAvailSnoopPageFull3}{ugAvailSnoopPageEmpty3}
-\pastebutton{ugAvailSnoopPageFull3}{\hidepaste}
-\tab{5}\spadcommand{)what package gauss}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty3}
-\begin{paste}{ugAvailSnoopPageEmpty3}{ugAvailSnoopPagePatch3}
-\pastebutton{ugAvailSnoopPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{)what package gauss}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch4}
-\begin{paste}{ugAvailSnoopPageFull4}{ugAvailSnoopPageEmpty4}
-\pastebutton{ugAvailSnoopPageFull4}{\hidepaste}
-\tab{5}\spadcommand{)show Any}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty4}
-\begin{paste}{ugAvailSnoopPageEmpty4}{ugAvailSnoopPagePatch4}
-\pastebutton{ugAvailSnoopPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)show Any}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch5}
-\begin{paste}{ugAvailSnoopPageFull5}{ugAvailSnoopPageEmpty5}
-\pastebutton{ugAvailSnoopPageFull5}{\hidepaste}
-\tab{5}\spadcommand{)display operation complex}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty5}
-\begin{paste}{ugAvailSnoopPageEmpty5}{ugAvailSnoopPagePatch5}
-\pastebutton{ugAvailSnoopPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)display operation complex}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch6}
-\begin{paste}{ugAvailSnoopPageFull6}{ugAvailSnoopPageEmpty6}
-\pastebutton{ugAvailSnoopPageFull6}{\hidepaste}
-\tab{5}\spadcommand{)abbreviation query COMPCAT}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty6}
-\begin{paste}{ugAvailSnoopPageEmpty6}{ugAvailSnoopPagePatch6}
-\pastebutton{ugAvailSnoopPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{)abbreviation query COMPCAT}
-\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPagePatch7}
-\begin{paste}{ugAvailSnoopPageFull7}{ugAvailSnoopPageEmpty7}
-\pastebutton{ugAvailSnoopPageFull7}{\hidepaste}
-\tab{5}\spadcommand{)abbreviation query COMRING}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugAvailSnoopPageEmpty7}
-\begin{paste}{ugAvailSnoopPageEmpty7}{ugAvailSnoopPagePatch7}
-\pastebutton{ugAvailSnoopPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{)abbreviation query COMRING}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePagePatch1}
-\begin{paste}{ugTypesExposePageFull1}{ugTypesExposePageEmpty1}
-\pastebutton{ugTypesExposePageFull1}{\hidepaste}
-\tab{5}\spadcommand{x + x}
-\indentrel{3}\begin{verbatim}
-   (1)  2x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePageEmpty1}
-\begin{paste}{ugTypesExposePageEmpty1}{ugTypesExposePagePatch1}
-\pastebutton{ugTypesExposePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x + x}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePagePatch2}
-\begin{paste}{ugTypesExposePageFull2}{ugTypesExposePageEmpty2}
-\pastebutton{ugTypesExposePageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{setexposeadd }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePageEmpty2}
-\begin{paste}{ugTypesExposePageEmpty2}{ugTypesExposePagePatch2}
-\pastebutton{ugTypesExposePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{setexposeadd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePagePatch3}
-\begin{paste}{ugTypesExposePageFull3}{ugTypesExposePageEmpty3}
-\pastebutton{ugTypesExposePageFull3}{\hidepaste}
-\tab{5}\spadcommand{x + x\free{setexposeadd }}
-\indentrel{3}\begin{verbatim}
-   (2)  x + x
-                                       Type: OutputForm
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePageEmpty3}
-\begin{paste}{ugTypesExposePageEmpty3}{ugTypesExposePagePatch3}
-\pastebutton{ugTypesExposePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x + x\free{setexposeadd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePagePatch4}
-\begin{paste}{ugTypesExposePageFull4}{ugTypesExposePageEmpty4}
-\pastebutton{ugTypesExposePageFull4}{\hidepaste}
-\tab{5}\spadcommand{)set expose drop constructor OutputForm\bound{setexposedrop }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesExposePageEmpty4}
-\begin{paste}{ugTypesExposePageEmpty4}{ugTypesExposePagePatch4}
-\pastebutton{ugTypesExposePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)set expose drop constructor OutputForm\bound{setexposedrop }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch1}
-\begin{paste}{ugTypesPkgCallPageFull1}{ugTypesPkgCallPageEmpty1}
-\pastebutton{ugTypesPkgCallPageFull1}{\hidepaste}
-\tab{5}\spadcommand{2/3}
-\indentrel{3}\begin{verbatim}
-        2
-   (1)  Ä
-        3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty1}
-\begin{paste}{ugTypesPkgCallPageEmpty1}{ugTypesPkgCallPagePatch1}
-\pastebutton{ugTypesPkgCallPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{2/3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch2}
-\begin{paste}{ugTypesPkgCallPageFull2}{ugTypesPkgCallPageEmpty2}
-\pastebutton{ugTypesPkgCallPageFull2}{\hidepaste}
-\tab{5}\spadcommand{(2/3)$Float}
-\indentrel{3}\begin{verbatim}
-   (2)  0.6666666666 6666666667
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty2}
-\begin{paste}{ugTypesPkgCallPageEmpty2}{ugTypesPkgCallPagePatch2}
-\pastebutton{ugTypesPkgCallPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(2/3)$Float}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch3}
-\begin{paste}{ugTypesPkgCallPageFull3}{ugTypesPkgCallPageEmpty3}
-\pastebutton{ugTypesPkgCallPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(2/3)$Fraction(Complex Integer)}
-\indentrel{3}\begin{verbatim}
-        2
-   (3)  Ä
-        3
-                         Type: Fraction Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty3}
-\begin{paste}{ugTypesPkgCallPageEmpty3}{ugTypesPkgCallPagePatch3}
-\pastebutton{ugTypesPkgCallPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(2/3)$Fraction(Complex Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch4}
-\begin{paste}{ugTypesPkgCallPageFull4}{ugTypesPkgCallPageEmpty4}
-\pastebutton{ugTypesPkgCallPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(2/3)@Float}
-\indentrel{3}\begin{verbatim}
-   (4)  0.6666666666 6666666667
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty4}
-\begin{paste}{ugTypesPkgCallPageEmpty4}{ugTypesPkgCallPagePatch4}
-\pastebutton{ugTypesPkgCallPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(2/3)@Float}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch5}
-\begin{paste}{ugTypesPkgCallPageFull5}{ugTypesPkgCallPageEmpty5}
-\pastebutton{ugTypesPkgCallPageFull5}{\hidepaste}
-\tab{5}\spadcommand{(2 + 3)@String}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty5}
-\begin{paste}{ugTypesPkgCallPageEmpty5}{ugTypesPkgCallPagePatch5}
-\pastebutton{ugTypesPkgCallPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(2 + 3)@String}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch6}
-\begin{paste}{ugTypesPkgCallPageFull6}{ugTypesPkgCallPageEmpty6}
-\pastebutton{ugTypesPkgCallPageFull6}{\hidepaste}
-\tab{5}\spadcommand{(2 + 3)$String}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty6}
-\begin{paste}{ugTypesPkgCallPageEmpty6}{ugTypesPkgCallPagePatch6}
-\pastebutton{ugTypesPkgCallPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{(2 + 3)$String}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch7}
-\begin{paste}{ugTypesPkgCallPageFull7}{ugTypesPkgCallPageEmpty7}
-\pastebutton{ugTypesPkgCallPageFull7}{\hidepaste}
-\tab{5}\spadcommand{((x + y * \%i)**2)@(Complex Polynomial Integer)}
-\indentrel{3}\begin{verbatim}
-           2    2
-   (5)  - y  + x  + 2x y %i
-                       Type: Complex Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty7}
-\begin{paste}{ugTypesPkgCallPageEmpty7}{ugTypesPkgCallPagePatch7}
-\pastebutton{ugTypesPkgCallPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{((x + y * \%i)**2)@(Complex Polynomial Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch8}
-\begin{paste}{ugTypesPkgCallPageFull8}{ugTypesPkgCallPageEmpty8}
-\pastebutton{ugTypesPkgCallPageFull8}{\hidepaste}
-\tab{5}\spadcommand{((x + y * \%i)**2)@(Polynomial Complex Integer)}
-\indentrel{3}\begin{verbatim}
-           2              2
-   (6)  - y  + 2%i x y + x
-                       Type: Polynomial Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty8}
-\begin{paste}{ugTypesPkgCallPageEmpty8}{ugTypesPkgCallPagePatch8}
-\pastebutton{ugTypesPkgCallPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{((x + y * \%i)**2)@(Polynomial Complex Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch9}
-\begin{paste}{ugTypesPkgCallPageFull9}{ugTypesPkgCallPageEmpty9}
-\pastebutton{ugTypesPkgCallPageFull9}{\hidepaste}
-\tab{5}\spadcommand{(x + y * \%i)**2\bound{prevC }}
-\indentrel{3}\begin{verbatim}
-           2              2
-   (7)  - y  + 2%i x y + x
-                       Type: Polynomial Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty9}
-\begin{paste}{ugTypesPkgCallPageEmpty9}{ugTypesPkgCallPagePatch9}
-\pastebutton{ugTypesPkgCallPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{(x + y * \%i)**2\bound{prevC }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch10}
-\begin{paste}{ugTypesPkgCallPageFull10}{ugTypesPkgCallPageEmpty10}
-\pastebutton{ugTypesPkgCallPageFull10}{\hidepaste}
-\tab{5}\spadcommand{\% :: Complex ?\free{prevC }}
-\indentrel{3}\begin{verbatim}
-           2    2
-   (8)  - y  + x  + 2x y %i
-                       Type: Complex Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty10}
-\begin{paste}{ugTypesPkgCallPageEmpty10}{ugTypesPkgCallPagePatch10}
-\pastebutton{ugTypesPkgCallPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{\% :: Complex ?\free{prevC }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch11}
-\begin{paste}{ugTypesPkgCallPageFull11}{ugTypesPkgCallPageEmpty11}
-\pastebutton{ugTypesPkgCallPageFull11}{\hidepaste}
-\tab{5}\spadcommand{h := matrix [[8,6],[-4,9]]\bound{h }}
-\indentrel{3}\begin{verbatim}
-        Ú 8   6¿
-   (9)  ³      ³
-        À- 4  9Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty11}
-\begin{paste}{ugTypesPkgCallPageEmpty11}{ugTypesPkgCallPagePatch11}
-\pastebutton{ugTypesPkgCallPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{h := matrix [[8,6],[-4,9]]\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch12}
-\begin{paste}{ugTypesPkgCallPageFull12}{ugTypesPkgCallPageEmpty12}
-\pastebutton{ugTypesPkgCallPageFull12}{\hidepaste}
-\tab{5}\spadcommand{map(inv$Fraction(Integer),h)\free{h }}
-\indentrel{3}\begin{verbatim}
-         Ú 1   1¿
-         ³ Ä   Ä³
-         ³ 8   6³
-   (10)  ³      ³
-         ³  1  1³
-         ³- Ä  Ä³
-         À  4  9Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty12}
-\begin{paste}{ugTypesPkgCallPageEmpty12}{ugTypesPkgCallPagePatch12}
-\pastebutton{ugTypesPkgCallPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{map(inv$Fraction(Integer),h)\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch13}
-\begin{paste}{ugTypesPkgCallPageFull13}{ugTypesPkgCallPageEmpty13}
-\pastebutton{ugTypesPkgCallPageFull13}{\hidepaste}
-\tab{5}\spadcommand{map(inv$FRAC(INT),h)\free{h }\bound{h1 }}
-\indentrel{3}\begin{verbatim}
-         Ú 1   1¿
-         ³ Ä   Ä³
-         ³ 8   6³
-   (11)  ³      ³
-         ³  1  1³
-         ³- Ä  Ä³
-         À  4  9Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty13}
-\begin{paste}{ugTypesPkgCallPageEmpty13}{ugTypesPkgCallPagePatch13}
-\pastebutton{ugTypesPkgCallPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{map(inv$FRAC(INT),h)\free{h }\bound{h1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPagePatch14}
-\begin{paste}{ugTypesPkgCallPageFull14}{ugTypesPkgCallPageEmpty14}
-\pastebutton{ugTypesPkgCallPageFull14}{\hidepaste}
-\tab{5}\spadcommand{map(inv,h)\free{h }}
-\indentrel{3}\begin{verbatim}
-         Ú 1   1¿
-         ³ Ä   Ä³
-         ³ 8   6³
-   (12)  ³      ³
-         ³  1  1³
-         ³- Ä  Ä³
-         À  4  9Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesPkgCallPageEmpty14}
-\begin{paste}{ugTypesPkgCallPageEmpty14}{ugTypesPkgCallPagePatch14}
-\pastebutton{ugTypesPkgCallPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{map(inv,h)\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch1}
-\begin{paste}{ugTypesDeclarePageFull1}{ugTypesDeclarePageEmpty1}
-\pastebutton{ugTypesDeclarePageFull1}{\hidepaste}
-\tab{5}\spadcommand{a : Integer\bound{a }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty1}
-\begin{paste}{ugTypesDeclarePageEmpty1}{ugTypesDeclarePagePatch1}
-\pastebutton{ugTypesDeclarePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a : Integer\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch2}
-\begin{paste}{ugTypesDeclarePageFull2}{ugTypesDeclarePageEmpty2}
-\pastebutton{ugTypesDeclarePageFull2}{\hidepaste}
-\tab{5}\spadcommand{(b,c) : Integer\bound{b c }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty2}
-\begin{paste}{ugTypesDeclarePageEmpty2}{ugTypesDeclarePagePatch2}
-\pastebutton{ugTypesDeclarePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(b,c) : Integer\bound{b c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch3}
-\begin{paste}{ugTypesDeclarePageFull3}{ugTypesDeclarePageEmpty3}
-\pastebutton{ugTypesDeclarePageFull3}{\hidepaste}
-\tab{5}\spadcommand{a := 45\free{a }}
-\indentrel{3}\begin{verbatim}
-   (3)  45
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty3}
-\begin{paste}{ugTypesDeclarePageEmpty3}{ugTypesDeclarePagePatch3}
-\pastebutton{ugTypesDeclarePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a := 45\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch4}
-\begin{paste}{ugTypesDeclarePageFull4}{ugTypesDeclarePageEmpty4}
-\pastebutton{ugTypesDeclarePageFull4}{\hidepaste}
-\tab{5}\spadcommand{b := 4/5\free{b }}
-\indentrel{3}\begin{verbatim}
-   4
-   Ä
-   5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty4}
-\begin{paste}{ugTypesDeclarePageEmpty4}{ugTypesDeclarePagePatch4}
-\pastebutton{ugTypesDeclarePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b := 4/5\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch5}
-\begin{paste}{ugTypesDeclarePageFull5}{ugTypesDeclarePageEmpty5}
-\pastebutton{ugTypesDeclarePageFull5}{\hidepaste}
-\tab{5}\spadcommand{n : Complex ?\bound{n }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty5}
-\begin{paste}{ugTypesDeclarePageEmpty5}{ugTypesDeclarePagePatch5}
-\pastebutton{ugTypesDeclarePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{n : Complex ?\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch6}
-\begin{paste}{ugTypesDeclarePageFull6}{ugTypesDeclarePageEmpty6}
-\pastebutton{ugTypesDeclarePageFull6}{\hidepaste}
-\tab{5}\spadcommand{(p,q,r) : Matrix Polynomial ?\bound{p q r }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty6}
-\begin{paste}{ugTypesDeclarePageEmpty6}{ugTypesDeclarePagePatch6}
-\pastebutton{ugTypesDeclarePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{(p,q,r) : Matrix Polynomial ?\bound{p q r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch7}
-\begin{paste}{ugTypesDeclarePageFull7}{ugTypesDeclarePageEmpty7}
-\pastebutton{ugTypesDeclarePageFull7}{\hidepaste}
-\tab{5}\spadcommand{n := -36 + 9 * \%i\free{n }}
-\indentrel{3}\begin{verbatim}
-   (6)  - 36 + 9%i
-                                  Type: Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty7}
-\begin{paste}{ugTypesDeclarePageEmpty7}{ugTypesDeclarePagePatch7}
-\pastebutton{ugTypesDeclarePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{n := -36 + 9 * \%i\free{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch8}
-\begin{paste}{ugTypesDeclarePageFull8}{ugTypesDeclarePageEmpty8}
-\pastebutton{ugTypesDeclarePageFull8}{\hidepaste}
-\tab{5}\spadcommand{n := complex(4/(x + y),y/x)\free{n }}
-\indentrel{3}\begin{verbatim}
-          4     y
-   (7)  ÄÄÄÄÄ + Ä %i
-        y + x   x
-              Type: Complex Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty8}
-\begin{paste}{ugTypesDeclarePageEmpty8}{ugTypesDeclarePagePatch8}
-\pastebutton{ugTypesDeclarePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{n := complex(4/(x + y),y/x)\free{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch9}
-\begin{paste}{ugTypesDeclarePageFull9}{ugTypesDeclarePageEmpty9}
-\pastebutton{ugTypesDeclarePageFull9}{\hidepaste}
-\tab{5}\spadcommand{p := [[1,2],[3,4],[5,6]]\free{p }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-        ³    ³
-   (8)  ³3  4³
-        ³    ³
-        À5  6Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty9}
-\begin{paste}{ugTypesDeclarePageEmpty9}{ugTypesDeclarePagePatch9}
-\pastebutton{ugTypesDeclarePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p := [[1,2],[3,4],[5,6]]\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch10}
-\begin{paste}{ugTypesDeclarePageFull10}{ugTypesDeclarePageEmpty10}
-\pastebutton{ugTypesDeclarePageFull10}{\hidepaste}
-\tab{5}\spadcommand{q := [[x - 2/3]]\free{q }}
-\indentrel{3}\begin{verbatim}
-        Ú    2¿
-   (9)  ³x - Ä³
-        À    3Ù
-               Type: Matrix Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty10}
-\begin{paste}{ugTypesDeclarePageEmpty10}{ugTypesDeclarePagePatch10}
-\pastebutton{ugTypesDeclarePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{q := [[x - 2/3]]\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch11}
-\begin{paste}{ugTypesDeclarePageFull11}{ugTypesDeclarePageEmpty11}
-\pastebutton{ugTypesDeclarePageFull11}{\hidepaste}
-\tab{5}\spadcommand{r := [[1-\%i*x,7*y+4*\%i]]\free{r }}
-\indentrel{3}\begin{verbatim}
-   (10)  [- %i x + 1  7y + 4%i]
-                Type: Matrix Polynomial Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty11}
-\begin{paste}{ugTypesDeclarePageEmpty11}{ugTypesDeclarePagePatch11}
-\pastebutton{ugTypesDeclarePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{r := [[1-\%i*x,7*y+4*\%i]]\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch12}
-\begin{paste}{ugTypesDeclarePageFull12}{ugTypesDeclarePageEmpty12}
-\pastebutton{ugTypesDeclarePageFull12}{\hidepaste}
-\tab{5}\spadcommand{f : COMPLEX POLY ? := (x + y*\%i)**2}
-\indentrel{3}\begin{verbatim}
-            2    2
-   (11)  - y  + x  + 2x y %i
-                       Type: Complex Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty12}
-\begin{paste}{ugTypesDeclarePageEmpty12}{ugTypesDeclarePagePatch12}
-\pastebutton{ugTypesDeclarePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{f : COMPLEX POLY ? := (x + y*\%i)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePagePatch13}
-\begin{paste}{ugTypesDeclarePageFull13}{ugTypesDeclarePageEmpty13}
-\pastebutton{ugTypesDeclarePageFull13}{\hidepaste}
-\tab{5}\spadcommand{g : POLY COMPLEX ? := (x + y*\%i)**2}
-\indentrel{3}\begin{verbatim}
-            2              2
-   (12)  - y  + 2%i x y + x
-                       Type: Polynomial Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesDeclarePageEmpty13}
-\begin{paste}{ugTypesDeclarePageEmpty13}{ugTypesDeclarePagePatch13}
-\pastebutton{ugTypesDeclarePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{g : POLY COMPLEX ? := (x + y*\%i)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePagePatch1}
-\begin{paste}{ugTypesAnyNonePageFull1}{ugTypesAnyNonePageEmpty1}
-\pastebutton{ugTypesAnyNonePageFull1}{\hidepaste}
-\tab{5}\spadcommand{u: Any\bound{uany }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePageEmpty1}
-\begin{paste}{ugTypesAnyNonePageEmpty1}{ugTypesAnyNonePagePatch1}
-\pastebutton{ugTypesAnyNonePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u: Any\bound{uany }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePagePatch2}
-\begin{paste}{ugTypesAnyNonePageFull2}{ugTypesAnyNonePageEmpty2}
-\pastebutton{ugTypesAnyNonePageFull2}{\hidepaste}
-\tab{5}\spadcommand{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany }\bound{u }}
-\indentrel{3}\begin{verbatim}
-               3  2
-   (2)  [1,7.2,Ä,x ,"wally"]
-               2
-                                         Type: List Any
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePageEmpty2}
-\begin{paste}{ugTypesAnyNonePageEmpty2}{ugTypesAnyNonePagePatch2}
-\pastebutton{ugTypesAnyNonePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{u := [1, 7.2, 3/2, x**2, "wally"]\free{uany }\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePagePatch3}
-\begin{paste}{ugTypesAnyNonePageFull3}{ugTypesAnyNonePageEmpty3}
-\pastebutton{ugTypesAnyNonePageFull3}{\hidepaste}
-\tab{5}\spadcommand{u.1\free{u }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePageEmpty3}
-\begin{paste}{ugTypesAnyNonePageEmpty3}{ugTypesAnyNonePagePatch3}
-\pastebutton{ugTypesAnyNonePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{u.1\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePagePatch4}
-\begin{paste}{ugTypesAnyNonePageFull4}{ugTypesAnyNonePageEmpty4}
-\pastebutton{ugTypesAnyNonePageFull4}{\hidepaste}
-\tab{5}\spadcommand{u.3\free{u }}
-\indentrel{3}\begin{verbatim}
-        3
-   (4)  Ä
-        2
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePageEmpty4}
-\begin{paste}{ugTypesAnyNonePageEmpty4}{ugTypesAnyNonePagePatch4}
-\pastebutton{ugTypesAnyNonePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{u.3\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePagePatch5}
-\begin{paste}{ugTypesAnyNonePageFull5}{ugTypesAnyNonePageEmpty5}
-\pastebutton{ugTypesAnyNonePageFull5}{\hidepaste}
-\tab{5}\spadcommand{v : Matrix(Any)}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesAnyNonePageEmpty5}
-\begin{paste}{ugTypesAnyNonePageEmpty5}{ugTypesAnyNonePagePatch5}
-\pastebutton{ugTypesAnyNonePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{v : Matrix(Any)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch1}
-\begin{paste}{ugTypesRecordsPageFull1}{ugTypesRecordsPageEmpty1}
-\pastebutton{ugTypesRecordsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{u := divide(5,2)\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (1)  [quotient= 2,remainder= 1]
-     Type: Record(quotient: Integer,remainder: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty1}
-\begin{paste}{ugTypesRecordsPageEmpty1}{ugTypesRecordsPagePatch1}
-\pastebutton{ugTypesRecordsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u := divide(5,2)\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch2}
-\begin{paste}{ugTypesRecordsPageFull2}{ugTypesRecordsPageEmpty2}
-\pastebutton{ugTypesRecordsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{u.quotient\free{u }}
-\indentrel{3}\begin{verbatim}
-   (2)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty2}
-\begin{paste}{ugTypesRecordsPageEmpty2}{ugTypesRecordsPagePatch2}
-\pastebutton{ugTypesRecordsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{u.quotient\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch3}
-\begin{paste}{ugTypesRecordsPageFull3}{ugTypesRecordsPageEmpty3}
-\pastebutton{ugTypesRecordsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{u.remainder\free{u }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty3}
-\begin{paste}{ugTypesRecordsPageEmpty3}{ugTypesRecordsPagePatch3}
-\pastebutton{ugTypesRecordsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{u.remainder\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch4}
-\begin{paste}{ugTypesRecordsPageFull4}{ugTypesRecordsPageEmpty4}
-\pastebutton{ugTypesRecordsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{u.quotient := 8978\free{u }\bound{u1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  8978
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty4}
-\begin{paste}{ugTypesRecordsPageEmpty4}{ugTypesRecordsPagePatch4}
-\pastebutton{ugTypesRecordsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{u.quotient := 8978\free{u }\bound{u1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch5}
-\begin{paste}{ugTypesRecordsPageFull5}{ugTypesRecordsPageEmpty5}
-\pastebutton{ugTypesRecordsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{u\free{u }\free{u1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [quotient= 8978,remainder= 1]
-     Type: Record(quotient: Integer,remainder: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty5}
-\begin{paste}{ugTypesRecordsPageEmpty5}{ugTypesRecordsPagePatch5}
-\pastebutton{ugTypesRecordsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{u\free{u }\free{u1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch6}
-\begin{paste}{ugTypesRecordsPageFull6}{ugTypesRecordsPageEmpty6}
-\pastebutton{ugTypesRecordsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{s := 'quotient\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (6)  quotient
-                                Type: Variable quotient
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty6}
-\begin{paste}{ugTypesRecordsPageEmpty6}{ugTypesRecordsPagePatch6}
-\pastebutton{ugTypesRecordsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{s := 'quotient\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch7}
-\begin{paste}{ugTypesRecordsPageFull7}{ugTypesRecordsPageEmpty7}
-\pastebutton{ugTypesRecordsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{divide(5,2).s\free{s }}
-\indentrel{3}\begin{verbatim}
-   (7)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty7}
-\begin{paste}{ugTypesRecordsPageEmpty7}{ugTypesRecordsPagePatch7}
-\pastebutton{ugTypesRecordsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{divide(5,2).s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch8}
-\begin{paste}{ugTypesRecordsPageFull8}{ugTypesRecordsPageEmpty8}
-\pastebutton{ugTypesRecordsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{bd : Record(name : String, birthdayMonth : Integer)\bound{bddec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty8}
-\begin{paste}{ugTypesRecordsPageEmpty8}{ugTypesRecordsPagePatch8}
-\pastebutton{ugTypesRecordsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{bd : Record(name : String, birthdayMonth : Integer)\bound{bddec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch9}
-\begin{paste}{ugTypesRecordsPageFull9}{ugTypesRecordsPageEmpty9}
-\pastebutton{ugTypesRecordsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{bd := ["Judith", 3]\free{bddec }\bound{bd }}
-\indentrel{3}\begin{verbatim}
-   (9)  [name= "Judith",birthdayMonth= 3]
-      Type: Record(name: String,birthdayMonth: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty9}
-\begin{paste}{ugTypesRecordsPageEmpty9}{ugTypesRecordsPagePatch9}
-\pastebutton{ugTypesRecordsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{bd := ["Judith", 3]\free{bddec }\bound{bd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch10}
-\begin{paste}{ugTypesRecordsPageFull10}{ugTypesRecordsPageEmpty10}
-\pastebutton{ugTypesRecordsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{bd.name := "Katie"\free{bd }}
-\indentrel{3}\begin{verbatim}
-   (10)  "Katie"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty10}
-\begin{paste}{ugTypesRecordsPageEmpty10}{ugTypesRecordsPagePatch10}
-\pastebutton{ugTypesRecordsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{bd.name := "Katie"\free{bd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch11}
-\begin{paste}{ugTypesRecordsPageFull11}{ugTypesRecordsPageEmpty11}
-\pastebutton{ugTypesRecordsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{r : Record(a : Record(b: Integer, c: Integer), b: Integer)\bound{rdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty11}
-\begin{paste}{ugTypesRecordsPageEmpty11}{ugTypesRecordsPagePatch11}
-\pastebutton{ugTypesRecordsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{r : Record(a : Record(b: Integer, c: Integer), b: Integer)\bound{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch12}
-\begin{paste}{ugTypesRecordsPageFull12}{ugTypesRecordsPageEmpty12}
-\pastebutton{ugTypesRecordsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{r := [[1,2],3]\bound{r }\free{rdec }}
-\indentrel{3}\begin{verbatim}
-   (12)  [a= [b= 1,c= 2],b= 3]
-Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty12}
-\begin{paste}{ugTypesRecordsPageEmpty12}{ugTypesRecordsPagePatch12}
-\pastebutton{ugTypesRecordsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{r := [[1,2],3]\bound{r }\free{rdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch13}
-\begin{paste}{ugTypesRecordsPageFull13}{ugTypesRecordsPageEmpty13}
-\pastebutton{ugTypesRecordsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{r.a.b\free{r }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty13}
-\begin{paste}{ugTypesRecordsPageEmpty13}{ugTypesRecordsPagePatch13}
-\pastebutton{ugTypesRecordsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{r.a.b\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch14}
-\begin{paste}{ugTypesRecordsPageFull14}{ugTypesRecordsPageEmpty14}
-\pastebutton{ugTypesRecordsPageFull14}{\hidepaste}
-\tab{5}\spadcommand{r.b\free{r }}
-\indentrel{3}\begin{verbatim}
-   (14)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty14}
-\begin{paste}{ugTypesRecordsPageEmpty14}{ugTypesRecordsPagePatch14}
-\pastebutton{ugTypesRecordsPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{r.b\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch15}
-\begin{paste}{ugTypesRecordsPageFull15}{ugTypesRecordsPageEmpty15}
-\pastebutton{ugTypesRecordsPageFull15}{\hidepaste}
-\tab{5}\spadcommand{r(a)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (15)  [b= 1,c= 2]
-                    Type: Record(b: Integer,c: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty15}
-\begin{paste}{ugTypesRecordsPageEmpty15}{ugTypesRecordsPagePatch15}
-\pastebutton{ugTypesRecordsPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{r(a)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch16}
-\begin{paste}{ugTypesRecordsPageFull16}{ugTypesRecordsPageEmpty16}
-\pastebutton{ugTypesRecordsPageFull16}{\hidepaste}
-\tab{5}\spadcommand{r b\free{r }}
-\indentrel{3}\begin{verbatim}
-   (16)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty16}
-\begin{paste}{ugTypesRecordsPageEmpty16}{ugTypesRecordsPagePatch16}
-\pastebutton{ugTypesRecordsPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{r b\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch17}
-\begin{paste}{ugTypesRecordsPageFull17}{ugTypesRecordsPageEmpty17}
-\pastebutton{ugTypesRecordsPageFull17}{\hidepaste}
-\tab{5}\spadcommand{r(b) := 10\free{r }\bound{r1 }}
-\indentrel{3}\begin{verbatim}
-   (17)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty17}
-\begin{paste}{ugTypesRecordsPageEmpty17}{ugTypesRecordsPagePatch17}
-\pastebutton{ugTypesRecordsPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{r(b) := 10\free{r }\bound{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPagePatch18}
-\begin{paste}{ugTypesRecordsPageFull18}{ugTypesRecordsPageEmpty18}
-\pastebutton{ugTypesRecordsPageFull18}{\hidepaste}
-\tab{5}\spadcommand{r\free{r1 }}
-\indentrel{3}\begin{verbatim}
-   (18)  [a= [b= 1,c= 2],b= 10]
-Type: Record(a: Record(b: Integer,c: Integer),b: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesRecordsPageEmpty18}
-\begin{paste}{ugTypesRecordsPageEmpty18}{ugTypesRecordsPagePatch18}
-\pastebutton{ugTypesRecordsPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{r\free{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePagePatch1}
-\begin{paste}{ugTypesResolvePageFull1}{ugTypesResolvePageEmpty1}
-\pastebutton{ugTypesResolvePageFull1}{\hidepaste}
-\tab{5}\spadcommand{x}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-                                       Type: Variable x
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePageEmpty1}
-\begin{paste}{ugTypesResolvePageEmpty1}{ugTypesResolvePagePatch1}
-\pastebutton{ugTypesResolvePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePagePatch2}
-\begin{paste}{ugTypesResolvePageFull2}{ugTypesResolvePageEmpty2}
-\pastebutton{ugTypesResolvePageFull2}{\hidepaste}
-\tab{5}\spadcommand{1}
-\indentrel{3}\begin{verbatim}
-   (2)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePageEmpty2}
-\begin{paste}{ugTypesResolvePageEmpty2}{ugTypesResolvePagePatch2}
-\pastebutton{ugTypesResolvePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePagePatch3}
-\begin{paste}{ugTypesResolvePageFull3}{ugTypesResolvePageEmpty3}
-\pastebutton{ugTypesResolvePageFull3}{\hidepaste}
-\tab{5}\spadcommand{x + 1}
-\indentrel{3}\begin{verbatim}
-   (3)  x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePageEmpty3}
-\begin{paste}{ugTypesResolvePageEmpty3}{ugTypesResolvePagePatch3}
-\pastebutton{ugTypesResolvePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{x + 1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePagePatch4}
-\begin{paste}{ugTypesResolvePageFull4}{ugTypesResolvePageEmpty4}
-\pastebutton{ugTypesResolvePageFull4}{\hidepaste}
-\tab{5}\spadcommand{["string",3.14159]}
-\indentrel{3}\begin{verbatim}
-   (4)  ["string",3.14159]
-                                         Type: List Any
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePageEmpty4}
-\begin{paste}{ugTypesResolvePageEmpty4}{ugTypesResolvePagePatch4}
-\pastebutton{ugTypesResolvePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{["string",3.14159]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePagePatch5}
-\begin{paste}{ugTypesResolvePageFull5}{ugTypesResolvePageEmpty5}
-\pastebutton{ugTypesResolvePageFull5}{\hidepaste}
-\tab{5}\spadcommand{"string" + 3.14159}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesResolvePageEmpty5}
-\begin{paste}{ugTypesResolvePageEmpty5}{ugTypesResolvePagePatch5}
-\pastebutton{ugTypesResolvePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{"string" + 3.14159}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch1}
-\begin{paste}{ugTypesConvertPageFull1}{ugTypesConvertPageEmpty1}
-\pastebutton{ugTypesConvertPageFull1}{\hidepaste}
-\tab{5}\spadcommand{3}
-\indentrel{3}\begin{verbatim}
-   (1)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty1}
-\begin{paste}{ugTypesConvertPageEmpty1}{ugTypesConvertPagePatch1}
-\pastebutton{ugTypesConvertPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{3}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch2}
-\begin{paste}{ugTypesConvertPageFull2}{ugTypesConvertPageEmpty2}
-\pastebutton{ugTypesConvertPageFull2}{\hidepaste}
-\tab{5}\spadcommand{3 :: Fraction Integer}
-\indentrel{3}\begin{verbatim}
-   (2)  3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty2}
-\begin{paste}{ugTypesConvertPageEmpty2}{ugTypesConvertPagePatch2}
-\pastebutton{ugTypesConvertPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{3 :: Fraction Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch3}
-\begin{paste}{ugTypesConvertPageFull3}{ugTypesConvertPageEmpty3}
-\pastebutton{ugTypesConvertPageFull3}{\hidepaste}
-\tab{5}\spadcommand{m : SquareMatrix(2,POLY COMPLEX FRAC INT)\bound{mdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty3}
-\begin{paste}{ugTypesConvertPageEmpty3}{ugTypesConvertPagePatch3}
-\pastebutton{ugTypesConvertPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{m : SquareMatrix(2,POLY COMPLEX FRAC INT)\bound{mdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch4}
-\begin{paste}{ugTypesConvertPageFull4}{ugTypesConvertPageEmpty4}
-\pastebutton{ugTypesConvertPageFull4}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]]\bound{m }\free{mdec }}
-\indentrel{3}\begin{verbatim}
-        Ú     3         2    1 ¿
-        ³ x - Ä %i     y z + Ä ³
-        ³     4              2 ³
-   (4)  ³                      ³
-        ³3     4           9   ³
-        ³Ä %i y  - x  12 - Ä %i³
-        À7                 5   Ù
-Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty4}
-\begin{paste}{ugTypesConvertPageEmpty4}{ugTypesConvertPagePatch4}
-\pastebutton{ugTypesConvertPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[x-3/4*\%i,z*y**2+1/2],[3/7*\%i*y**4 - x,12-\%i*9/5]]\bound{m }\free{mdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch5}
-\begin{paste}{ugTypesConvertPageFull5}{ugTypesConvertPageEmpty5}
-\pastebutton{ugTypesConvertPageFull5}{\hidepaste}
-\tab{5}\spadcommand{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)\free{m }\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú     3%i     2    1 ¿
-        ³ x - ÄÄÄ    y z + Ä ³
-        ³      4           2 ³
-   (5)  ³                    ³
-        ³3%i  4      60 - 9%i³
-        ³ÄÄÄ y  - x  ÄÄÄÄÄÄÄÄ³
-        À 7              5   Ù
-Type: SquareMatrix(2,Polynomial Fraction Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty5}
-\begin{paste}{ugTypesConvertPageEmpty5}{ugTypesConvertPagePatch5}
-\pastebutton{ugTypesConvertPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{m1 := m :: SquareMatrix(2,POLY FRAC COMPLEX INT)\free{m }\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch6}
-\begin{paste}{ugTypesConvertPageFull6}{ugTypesConvertPageEmpty6}
-\pastebutton{ugTypesConvertPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)\free{m1 }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú               2     ¿
-        ³ 4x - 3%i    2y z + 1³
-        ³ ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
-        ³     4           2   ³
-   (6)  ³                     ³
-        ³     4               ³
-        ³3%i y  - 7x  60 - 9%i³
-        ³ÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
-        À     7           5   Ù
-Type: SquareMatrix(2,Fraction Polynomial Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty6}
-\begin{paste}{ugTypesConvertPageEmpty6}{ugTypesConvertPagePatch6}
-\pastebutton{ugTypesConvertPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m2 := m1 :: SquareMatrix(2,FRAC POLY COMPLEX INT)\free{m1 }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch7}
-\begin{paste}{ugTypesConvertPageFull7}{ugTypesConvertPageEmpty7}
-\pastebutton{ugTypesConvertPageFull7}{\hidepaste}
-\tab{5}\spadcommand{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m2 }\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú                2     ¿
-        ³  4x - 3%i    2y z + 1³
-        ³  ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
-        ³      4           2   ³
-   (7)  ³                      ³
-        ³         4            ³
-        ³- 7x + 3y %i  60 - 9%i³
-        ³ÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
-        À      7           5   Ù
-Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty7}
-\begin{paste}{ugTypesConvertPageEmpty7}{ugTypesConvertPagePatch7}
-\pastebutton{ugTypesConvertPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m3 := m2 :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m2 }\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch8}
-\begin{paste}{ugTypesConvertPageFull8}{ugTypesConvertPageEmpty8}
-\pastebutton{ugTypesConvertPageFull8}{\hidepaste}
-\tab{5}\spadcommand{m :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-        Ú                2     ¿
-        ³  4x - 3%i    2y z + 1³
-        ³  ÄÄÄÄÄÄÄÄ    ÄÄÄÄÄÄÄÄ³
-        ³      4           2   ³
-   (8)  ³                      ³
-        ³         4            ³
-        ³- 7x + 3y %i  60 - 9%i³
-        ³ÄÄÄÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ³
-        À      7           5   Ù
-Type: SquareMatrix(2,Fraction Complex Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty8}
-\begin{paste}{ugTypesConvertPageEmpty8}{ugTypesConvertPagePatch8}
-\pastebutton{ugTypesConvertPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{m :: SquareMatrix(2,FRAC COMPLEX POLY INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch9}
-\begin{paste}{ugTypesConvertPageFull9}{ugTypesConvertPageEmpty9}
-\pastebutton{ugTypesConvertPageFull9}{\hidepaste}
-\tab{5}\spadcommand{m\free{m }}
-\indentrel{3}\begin{verbatim}
-        Ú     3         2    1 ¿
-        ³ x - Ä %i     y z + Ä ³
-        ³     4              2 ³
-   (9)  ³                      ³
-        ³3     4           9   ³
-        ³Ä %i y  - x  12 - Ä %i³
-        À7                 5   Ù
-Type: SquareMatrix(2,Polynomial Complex Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty9}
-\begin{paste}{ugTypesConvertPageEmpty9}{ugTypesConvertPagePatch9}
-\pastebutton{ugTypesConvertPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{m\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch10}
-\begin{paste}{ugTypesConvertPageFull10}{ugTypesConvertPageEmpty10}
-\pastebutton{ugTypesConvertPageFull10}{\hidepaste}
-\tab{5}\spadcommand{m :: POLY SquareMatrix(2,COMPLEX FRAC INT)\free{m }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                 Ú 0    0¿
-     Ú0  1¿ 2    ³       ³ 4   Ú 1   0¿
-     ³    ³y z + ³3      ³y  + ³      ³x
-     À0  0Ù      ³Ä %i  0³     À- 1  0Ù
-                 À7      Ù
-   + 
-     Ú  3         1    ¿
-     ³- Ä %i      Ä    ³
-     ³  4         2    ³
-     ³                 ³
-     ³             9   ³
-     ³  0     12 - Ä %i³
-     À             5   Ù
-Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty10}
-\begin{paste}{ugTypesConvertPageEmpty10}{ugTypesConvertPagePatch10}
-\pastebutton{ugTypesConvertPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m :: POLY SquareMatrix(2,COMPLEX FRAC INT)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch11}
-\begin{paste}{ugTypesConvertPageFull11}{ugTypesConvertPageEmpty11}
-\pastebutton{ugTypesConvertPageFull11}{\hidepaste}
-\tab{5}\spadcommand{m :: POLY ?\free{m }}
-\indentrel{3}\begin{verbatim}
-   (11)
-                 Ú 0    0¿
-     Ú0  1¿ 2    ³       ³ 4   Ú 1   0¿
-     ³    ³y z + ³3      ³y  + ³      ³x
-     À0  0Ù      ³Ä %i  0³     À- 1  0Ù
-                 À7      Ù
-   + 
-     Ú  3         1    ¿
-     ³- Ä %i      Ä    ³
-     ³  4         2    ³
-     ³                 ³
-     ³             9   ³
-     ³  0     12 - Ä %i³
-     À             5   Ù
-Type: Polynomial SquareMatrix(2,Complex Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty11}
-\begin{paste}{ugTypesConvertPageEmpty11}{ugTypesConvertPagePatch11}
-\pastebutton{ugTypesConvertPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{m :: POLY ?\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPagePatch12}
-\begin{paste}{ugTypesConvertPageFull12}{ugTypesConvertPageEmpty12}
-\pastebutton{ugTypesConvertPageFull12}{\hidepaste}
-\tab{5}\spadcommand{m :: POLY SquareMatrix(2,FRAC ?)\free{m }}
-\indentrel{3}\begin{verbatim}
-   (12)
-                                        Ú  3%i     1    ¿
-               Ú 0   0¿                 ³- ÄÄÄ     Ä    ³
-   Ú0  1¿ 2    ³      ³ 4   Ú 1   0¿    ³   4      2    ³
-   ³    ³y z + ³3%i   ³y  + ³      ³x + ³               ³
-   À0  0Ù      ³ÄÄÄ  0³     À- 1  0Ù    ³       60 - 9%i³
-               À 7    Ù                 ³  0    ÄÄÄÄÄÄÄÄ³
-                                        À           5   Ù
-Type: Polynomial SquareMatrix(2,Fraction Complex Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesConvertPageEmpty12}
-\begin{paste}{ugTypesConvertPageEmpty12}{ugTypesConvertPagePatch12}
-\pastebutton{ugTypesConvertPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{m :: POLY SquareMatrix(2,FRAC ?)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPagePatch1}
-\begin{paste}{ugTypesWritingPageFull1}{ugTypesWritingPageEmpty1}
-\pastebutton{ugTypesWritingPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a : PositiveInteger}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPageEmpty1}
-\begin{paste}{ugTypesWritingPageEmpty1}{ugTypesWritingPagePatch1}
-\pastebutton{ugTypesWritingPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a : PositiveInteger}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPagePatch2}
-\begin{paste}{ugTypesWritingPageFull2}{ugTypesWritingPageEmpty2}
-\pastebutton{ugTypesWritingPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f : Integer -> String}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPageEmpty2}
-\begin{paste}{ugTypesWritingPageEmpty2}{ugTypesWritingPagePatch2}
-\pastebutton{ugTypesWritingPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f : Integer -> String}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPagePatch3}
-\begin{paste}{ugTypesWritingPageFull3}{ugTypesWritingPageEmpty3}
-\pastebutton{ugTypesWritingPageFull3}{\hidepaste}
-\tab{5}\spadcommand{factor(2 :: Complex(Integer))}
-\indentrel{3}\begin{verbatim}
-                     2
-   (3)  - %i (1 + %i)
-                         Type: Factored Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPageEmpty3}
-\begin{paste}{ugTypesWritingPageEmpty3}{ugTypesWritingPagePatch3}
-\pastebutton{ugTypesWritingPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{factor(2 :: Complex(Integer))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPagePatch4}
-\begin{paste}{ugTypesWritingPageFull4}{ugTypesWritingPageEmpty4}
-\pastebutton{ugTypesWritingPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(2 = 3)$Integer}
-\indentrel{3}\begin{verbatim}
-   (4)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPageEmpty4}
-\begin{paste}{ugTypesWritingPageEmpty4}{ugTypesWritingPagePatch4}
-\pastebutton{ugTypesWritingPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(2 = 3)$Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPagePatch5}
-\begin{paste}{ugTypesWritingPageFull5}{ugTypesWritingPageEmpty5}
-\pastebutton{ugTypesWritingPageFull5}{\hidepaste}
-\tab{5}\spadcommand{(2 = 3)@Boolean}
-\indentrel{3}\begin{verbatim}
-   (5)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugTypesWritingPageEmpty5}
-\begin{paste}{ugTypesWritingPageEmpty5}{ugTypesWritingPagePatch5}
-\pastebutton{ugTypesWritingPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(2 = 3)@Boolean}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug03.pht b/books/pages/ug03.pht
deleted file mode 100644
index 5c0fdc7..0000000
--- a/books/pages/ug03.pht
+++ /dev/null
@@ -1,34 +0,0 @@
-\begin{patch}{ugHyperExamplePagePatch1}
-\begin{paste}{ugHyperExamplePageFull1}{ugHyperExamplePageEmpty1}
-\pastebutton{ugHyperExamplePageFull1}{\hidepaste}
-\tab{5}\spadcommand{a:= x**2 + 1\bound{a }}
-\indentrel{3}\begin{verbatim}
-         2
-   (1)  x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugHyperExamplePageEmpty1}
-\begin{paste}{ugHyperExamplePageEmpty1}{ugHyperExamplePagePatch1}
-\pastebutton{ugHyperExamplePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a:= x**2 + 1\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugHyperExamplePagePatch2}
-\begin{paste}{ugHyperExamplePageFull2}{ugHyperExamplePageEmpty2}
-\pastebutton{ugHyperExamplePageFull2}{\hidepaste}
-\tab{5}\spadcommand{(a - 2)**2\free{a }}
-\indentrel{3}\begin{verbatim}
-         4     2
-   (2)  x  - 2x  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugHyperExamplePageEmpty2}
-\begin{paste}{ugHyperExamplePageEmpty2}{ugHyperExamplePagePatch2}
-\pastebutton{ugHyperExamplePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(a - 2)**2\free{a }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug04.pht b/books/pages/ug04.pht
deleted file mode 100644
index 992f12e..0000000
--- a/books/pages/ug04.pht
+++ /dev/null
@@ -1,493 +0,0 @@
-\begin{patch}{ugInOutTeXPagePatch1}
-\begin{paste}{ugInOutTeXPageFull1}{ugInOutTeXPageEmpty1}
-\pastebutton{ugInOutTeXPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set output tex on\bound{texon }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutTeXPageEmpty1}
-\begin{paste}{ugInOutTeXPageEmpty1}{ugInOutTeXPagePatch1}
-\pastebutton{ugInOutTeXPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set output tex on\bound{texon }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPagePatch1}
-\begin{paste}{ugInOutOutPageFull1}{ugInOutOutPageEmpty1}
-\pastebutton{ugInOutOutPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set output fortran linalg}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPageEmpty1}
-\begin{paste}{ugInOutOutPageEmpty1}{ugInOutOutPagePatch1}
-\pastebutton{ugInOutOutPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set output fortran linalg}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPagePatch2}
-\begin{paste}{ugInOutOutPageFull2}{ugInOutOutPageEmpty2}
-\pastebutton{ugInOutOutPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set output fortran on}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPageEmpty2}
-\begin{paste}{ugInOutOutPageEmpty2}{ugInOutOutPagePatch2}
-\pastebutton{ugInOutOutPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set output fortran on}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPagePatch3}
-\begin{paste}{ugInOutOutPageFull3}{ugInOutOutPageEmpty3}
-\pastebutton{ugInOutOutPageFull3}{\hidepaste}
-\tab{5}\spadcommand{)set output fortran console}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPageEmpty3}
-\begin{paste}{ugInOutOutPageEmpty3}{ugInOutOutPagePatch3}
-\pastebutton{ugInOutOutPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{)set output fortran console}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPagePatch4}
-\begin{paste}{ugInOutOutPageFull4}{ugInOutOutPageEmpty4}
-\pastebutton{ugInOutOutPageFull4}{\hidepaste}
-\tab{5}\spadcommand{)set output fortran off}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPageEmpty4}
-\begin{paste}{ugInOutOutPageEmpty4}{ugInOutOutPagePatch4}
-\pastebutton{ugInOutOutPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)set output fortran off}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPagePatch5}
-\begin{paste}{ugInOutOutPageFull5}{ugInOutOutPageEmpty5}
-\pastebutton{ugInOutOutPageFull5}{\hidepaste}
-\tab{5}\spadcommand{)system rm linalg.sfort}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutOutPageEmpty5}
-\begin{paste}{ugInOutOutPageEmpty5}{ugInOutOutPagePatch5}
-\pastebutton{ugInOutOutPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)system rm linalg.sfort}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutScriptPagePatch1}
-\begin{paste}{ugInOutScriptPageFull1}{ugInOutScriptPageEmpty1}
-\pastebutton{ugInOutScriptPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set output script on}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutScriptPageEmpty1}
-\begin{paste}{ugInOutScriptPageEmpty1}{ugInOutScriptPagePatch1}
-\pastebutton{ugInOutScriptPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set output script on}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutScriptPagePatch2}
-\begin{paste}{ugInOutScriptPageFull2}{ugInOutScriptPageEmpty2}
-\pastebutton{ugInOutScriptPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set output script off}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutScriptPageEmpty2}
-\begin{paste}{ugInOutScriptPageEmpty2}{ugInOutScriptPagePatch2}
-\pastebutton{ugInOutScriptPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set output script off}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPagePatch1}
-\begin{paste}{ugInOutAlgebraPageFull1}{ugInOutAlgebraPageEmpty1}
-\pastebutton{ugInOutAlgebraPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set output algebra on\bound{algon }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPageEmpty1}
-\begin{paste}{ugInOutAlgebraPageEmpty1}{ugInOutAlgebraPagePatch1}
-\pastebutton{ugInOutAlgebraPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set output algebra on\bound{algon }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPagePatch2}
-\begin{paste}{ugInOutAlgebraPageFull2}{ugInOutAlgebraPageEmpty2}
-\pastebutton{ugInOutAlgebraPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set output tex off\bound{texoff }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPageEmpty2}
-\begin{paste}{ugInOutAlgebraPageEmpty2}{ugInOutAlgebraPagePatch2}
-\pastebutton{ugInOutAlgebraPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set output tex off\bound{texoff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPagePatch3}
-\begin{paste}{ugInOutAlgebraPageFull3}{ugInOutAlgebraPageEmpty3}
-\pastebutton{ugInOutAlgebraPageFull3}{\hidepaste}
-\tab{5}\spadcommand{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]\free{algon texoff }}
-\indentrel{3}\begin{verbatim}
-        Ú     3           3     2¿
-        ³3%i y  + x  3%i y  + 2x ³
-   (1)  ³                        ³
-        ³     4           4     2³
-        À4%i y  + x  4%i y  + 2x Ù
-                Type: Matrix Polynomial Complex Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPageEmpty3}
-\begin{paste}{ugInOutAlgebraPageEmpty3}{ugInOutAlgebraPagePatch3}
-\pastebutton{ugInOutAlgebraPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{matrix [[i*x**i + j*\%i*y**j for i in 1..2] for j in 3..4]\free{algon texoff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPagePatch4}
-\begin{paste}{ugInOutAlgebraPageFull4}{ugInOutAlgebraPageEmpty4}
-\pastebutton{ugInOutAlgebraPageFull4}{\hidepaste}
-\tab{5}\spadcommand{)set output algebra off}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPageEmpty4}
-\begin{paste}{ugInOutAlgebraPageEmpty4}{ugInOutAlgebraPagePatch4}
-\pastebutton{ugInOutAlgebraPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)set output algebra off}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPagePatch5}
-\begin{paste}{ugInOutAlgebraPageFull5}{ugInOutAlgebraPageEmpty5}
-\pastebutton{ugInOutAlgebraPageFull5}{\hidepaste}
-\tab{5}\spadcommand{)set output tex on}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutAlgebraPageEmpty5}
-\begin{paste}{ugInOutAlgebraPageEmpty5}{ugInOutAlgebraPagePatch5}
-\pastebutton{ugInOutAlgebraPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)set output tex on}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch1}
-\begin{paste}{ugInOutFortranPageFull1}{ugInOutFortranPageEmpty1}
-\pastebutton{ugInOutFortranPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set output fortran on\bound{forton }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty1}
-\begin{paste}{ugInOutFortranPageEmpty1}{ugInOutFortranPagePatch1}
-\pastebutton{ugInOutFortranPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set output fortran on\bound{forton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch2}
-\begin{paste}{ugInOutFortranPageFull2}{ugInOutFortranPageEmpty2}
-\pastebutton{ugInOutFortranPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set fortran optlevel 0\bound{opt0 }\free{forton }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty2}
-\begin{paste}{ugInOutFortranPageEmpty2}{ugInOutFortranPagePatch2}
-\pastebutton{ugInOutFortranPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set fortran optlevel 0\bound{opt0 }\free{forton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch3}
-\begin{paste}{ugInOutFortranPageFull3}{ugInOutFortranPageEmpty3}
-\pastebutton{ugInOutFortranPageFull3}{\hidepaste}
-\tab{5}\spadcommand{)set fortran fortlength 60}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty3}
-\begin{paste}{ugInOutFortranPageEmpty3}{ugInOutFortranPagePatch3}
-\pastebutton{ugInOutFortranPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{)set fortran fortlength 60}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch4}
-\begin{paste}{ugInOutFortranPageFull4}{ugInOutFortranPageEmpty4}
-\pastebutton{ugInOutFortranPageFull4}{\hidepaste}
-\tab{5}\spadcommand{(x+y)**3\free{opt0 }}
-\indentrel{3}\begin{verbatim}
-         3       2     2     3
-   (1)  y  + 3x y  + 3x y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty4}
-\begin{paste}{ugInOutFortranPageEmpty4}{ugInOutFortranPagePatch4}
-\pastebutton{ugInOutFortranPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{(x+y)**3\free{opt0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch5}
-\begin{paste}{ugInOutFortranPageFull5}{ugInOutFortranPageEmpty5}
-\pastebutton{ugInOutFortranPageFull5}{\hidepaste}
-\tab{5}\spadcommand{(x+y+z)**3\free{opt0 }}
-\indentrel{3}\begin{verbatim}
-   (2)
-      3             2      2            2      3       2
-     z  + (3y + 3x)z  + (3y  + 6x y + 3x )z + y  + 3x y
-   + 
-       2     3
-     3x y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty5}
-\begin{paste}{ugInOutFortranPageEmpty5}{ugInOutFortranPagePatch5}
-\pastebutton{ugInOutFortranPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(x+y+z)**3\free{opt0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch6}
-\begin{paste}{ugInOutFortranPageFull6}{ugInOutFortranPageEmpty6}
-\pastebutton{ugInOutFortranPageFull6}{\hidepaste}
-\tab{5}\spadcommand{sin(x)\free{opt1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  sin(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty6}
-\begin{paste}{ugInOutFortranPageEmpty6}{ugInOutFortranPagePatch6}
-\pastebutton{ugInOutFortranPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{sin(x)\free{opt1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch7}
-\begin{paste}{ugInOutFortranPageFull7}{ugInOutFortranPageEmpty7}
-\pastebutton{ugInOutFortranPageFull7}{\hidepaste}
-\tab{5}\spadcommand{)set fortran optlevel 1\bound{opt1 }\free{forton }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty7}
-\begin{paste}{ugInOutFortranPageEmpty7}{ugInOutFortranPagePatch7}
-\pastebutton{ugInOutFortranPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{)set fortran optlevel 1\bound{opt1 }\free{forton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch8}
-\begin{paste}{ugInOutFortranPageFull8}{ugInOutFortranPageEmpty8}
-\pastebutton{ugInOutFortranPageFull8}{\hidepaste}
-\tab{5}\spadcommand{(x+y+z)**3\free{opt1 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-      3             2      2            2      3       2
-     z  + (3y + 3x)z  + (3y  + 6x y + 3x )z + y  + 3x y
-   + 
-       2     3
-     3x y + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty8}
-\begin{paste}{ugInOutFortranPageEmpty8}{ugInOutFortranPagePatch8}
-\pastebutton{ugInOutFortranPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{(x+y+z)**3\free{opt1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch9}
-\begin{paste}{ugInOutFortranPageFull9}{ugInOutFortranPageEmpty9}
-\pastebutton{ugInOutFortranPageFull9}{\hidepaste}
-\tab{5}\spadcommand{)set fortran precision double\free{opt1 }\bound{double1 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty9}
-\begin{paste}{ugInOutFortranPageEmpty9}{ugInOutFortranPagePatch9}
-\pastebutton{ugInOutFortranPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{)set fortran precision double\free{opt1 }\bound{double1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch10}
-\begin{paste}{ugInOutFortranPageFull10}{ugInOutFortranPageEmpty10}
-\pastebutton{ugInOutFortranPageFull10}{\hidepaste}
-\tab{5}\spadcommand{2.3 + 5.6*\%i\free{double1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  2.3 + 5.6 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty10}
-\begin{paste}{ugInOutFortranPageEmpty10}{ugInOutFortranPagePatch10}
-\pastebutton{ugInOutFortranPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{2.3 + 5.6*\%i\free{double1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch11}
-\begin{paste}{ugInOutFortranPageFull11}{ugInOutFortranPageEmpty11}
-\pastebutton{ugInOutFortranPageFull11}{\hidepaste}
-\tab{5}\spadcommand{sin \%e\free{double1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  sin(%e)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty11}
-\begin{paste}{ugInOutFortranPageEmpty11}{ugInOutFortranPagePatch11}
-\pastebutton{ugInOutFortranPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{sin \%e\free{double1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch12}
-\begin{paste}{ugInOutFortranPageFull12}{ugInOutFortranPageEmpty12}
-\pastebutton{ugInOutFortranPageFull12}{\hidepaste}
-\tab{5}\spadcommand{)set fortran precision single\free{opt1 }\bound{single1 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty12}
-\begin{paste}{ugInOutFortranPageEmpty12}{ugInOutFortranPagePatch12}
-\pastebutton{ugInOutFortranPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{)set fortran precision single\free{opt1 }\bound{single1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch13}
-\begin{paste}{ugInOutFortranPageFull13}{ugInOutFortranPageEmpty13}
-\pastebutton{ugInOutFortranPageFull13}{\hidepaste}
-\tab{5}\spadcommand{2.3 + 5.6*\%i\free{single1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  2.3 + 5.6 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty13}
-\begin{paste}{ugInOutFortranPageEmpty13}{ugInOutFortranPagePatch13}
-\pastebutton{ugInOutFortranPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{2.3 + 5.6*\%i\free{single1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch14}
-\begin{paste}{ugInOutFortranPageFull14}{ugInOutFortranPageEmpty14}
-\pastebutton{ugInOutFortranPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sin \%e\free{single1 }}
-\indentrel{3}\begin{verbatim}
-   (8)  sin(%e)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty14}
-\begin{paste}{ugInOutFortranPageEmpty14}{ugInOutFortranPagePatch14}
-\pastebutton{ugInOutFortranPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sin \%e\free{single1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch15}
-\begin{paste}{ugInOutFortranPageFull15}{ugInOutFortranPageEmpty15}
-\pastebutton{ugInOutFortranPageFull15}{\hidepaste}
-\tab{5}\spadcommand{[x+1,y+1,z+1]\free{opt1 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [x + 1,y + 1,z + 1]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty15}
-\begin{paste}{ugInOutFortranPageEmpty15}{ugInOutFortranPagePatch15}
-\pastebutton{ugInOutFortranPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{[x+1,y+1,z+1]\free{opt1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch16}
-\begin{paste}{ugInOutFortranPageFull16}{ugInOutFortranPageEmpty16}
-\pastebutton{ugInOutFortranPageFull16}{\hidepaste}
-\tab{5}\spadcommand{set[2,3,4,3,5]\free{opt1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  {2,3,4,5}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty16}
-\begin{paste}{ugInOutFortranPageEmpty16}{ugInOutFortranPagePatch16}
-\pastebutton{ugInOutFortranPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{set[2,3,4,3,5]\free{opt1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch17}
-\begin{paste}{ugInOutFortranPageFull17}{ugInOutFortranPageEmpty17}
-\pastebutton{ugInOutFortranPageFull17}{\hidepaste}
-\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{opt1 }}
-\indentrel{3}\begin{verbatim}
-         Ú2.3   9.7  ¿
-   (11)  ³           ³
-         À0.0  18.778Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty17}
-\begin{paste}{ugInOutFortranPageEmpty17}{ugInOutFortranPagePatch17}
-\pastebutton{ugInOutFortranPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{opt1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch18}
-\begin{paste}{ugInOutFortranPageFull18}{ugInOutFortranPageEmpty18}
-\pastebutton{ugInOutFortranPageFull18}{\hidepaste}
-\tab{5}\spadcommand{)set fortran startindex 1\free{opt1 }\bound{start1 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty18}
-\begin{paste}{ugInOutFortranPageEmpty18}{ugInOutFortranPagePatch18}
-\pastebutton{ugInOutFortranPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{)set fortran startindex 1\free{opt1 }\bound{start1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPagePatch19}
-\begin{paste}{ugInOutFortranPageFull19}{ugInOutFortranPageEmpty19}
-\pastebutton{ugInOutFortranPageFull19}{\hidepaste}
-\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{start1 }}
-\indentrel{3}\begin{verbatim}
-         Ú2.3   9.7  ¿
-   (12)  ³           ³
-         À0.0  18.778Ù
-                                     Type: Matrix Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugInOutFortranPageEmpty19}
-\begin{paste}{ugInOutFortranPageEmpty19}{ugInOutFortranPagePatch19}
-\pastebutton{ugInOutFortranPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{matrix [[2.3,9.7],[0.0,18.778]]\free{start1 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug05.pht b/books/pages/ug05.pht
deleted file mode 100644
index 7869593..0000000
--- a/books/pages/ug05.pht
+++ /dev/null
@@ -1,2002 +0,0 @@
-\begin{patch}{ugLangLoopsWhilePagePatch1}
-\begin{paste}{ugLangLoopsWhilePageFull1}{ugLangLoopsWhilePageEmpty1}
-\pastebutton{ugLangLoopsWhilePageFull1}{\hidepaste}
-\tab{5}\spadcommand{i := 1\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (1)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty1}
-\begin{paste}{ugLangLoopsWhilePageEmpty1}{ugLangLoopsWhilePagePatch1}
-\pastebutton{ugLangLoopsWhilePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{i := 1\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch2}
-\begin{paste}{ugLangLoopsWhilePageFull2}{ugLangLoopsWhilePageEmpty2}
-\pastebutton{ugLangLoopsWhilePageFull2}{\hidepaste}
-\tab{5}\spadcommand{while i < 1 repeat
-  output "hello"
-  i := i + 1
-\free{i }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty2}
-\begin{paste}{ugLangLoopsWhilePageEmpty2}{ugLangLoopsWhilePagePatch2}
-\pastebutton{ugLangLoopsWhilePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{while i < 1 repeat
-  output "hello"
-  i := i + 1
-\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch3}
-\begin{paste}{ugLangLoopsWhilePageFull3}{ugLangLoopsWhilePageEmpty3}
-\pastebutton{ugLangLoopsWhilePageFull3}{\hidepaste}
-\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty3}
-\begin{paste}{ugLangLoopsWhilePageEmpty3}{ugLangLoopsWhilePagePatch3}
-\pastebutton{ugLangLoopsWhilePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch4}
-\begin{paste}{ugLangLoopsWhilePageFull4}{ugLangLoopsWhilePageEmpty4}
-\pastebutton{ugLangLoopsWhilePageFull4}{\hidepaste}
-\tab{5}\spadcommand{while x < 4 and y < 10 repeat
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\free{x y }}
-\indentrel{3}\begin{verbatim}
-   [1,1]
-   [2,3]
-   [3,5]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty4}
-\begin{paste}{ugLangLoopsWhilePageEmpty4}{ugLangLoopsWhilePagePatch4}
-\pastebutton{ugLangLoopsWhilePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{while x < 4 and y < 10 repeat
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch5}
-\begin{paste}{ugLangLoopsWhilePageFull5}{ugLangLoopsWhilePageEmpty5}
-\pastebutton{ugLangLoopsWhilePageFull5}{\hidepaste}
-\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x1 }\bound{y1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty5}
-\begin{paste}{ugLangLoopsWhilePageEmpty5}{ugLangLoopsWhilePagePatch5}
-\pastebutton{ugLangLoopsWhilePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{(x, y) := (1, 1)\bound{x1 }\bound{y1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch6}
-\begin{paste}{ugLangLoopsWhilePageFull6}{ugLangLoopsWhilePageEmpty6}
-\pastebutton{ugLangLoopsWhilePageFull6}{\hidepaste}
-\tab{5}\spadcommand{while x < 4 while y < 10 repeat
-  if x + y > 7 then break
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\free{x1 y1 }}
-\indentrel{3}\begin{verbatim}
-   [1,1]
-   [2,3]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty6}
-\begin{paste}{ugLangLoopsWhilePageEmpty6}{ugLangLoopsWhilePagePatch6}
-\pastebutton{ugLangLoopsWhilePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{while x < 4 while y < 10 repeat
-  if x + y > 7 then break
-  output [x,y]
-  x := x + 1
-  y := y + 2
-\free{x1 y1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch7}
-\begin{paste}{ugLangLoopsWhilePageFull7}{ugLangLoopsWhilePageEmpty7}
-\pastebutton{ugLangLoopsWhilePageFull7}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú21   37   53   14 ¿
-        ³                  ³
-        ³8   - 24  22  - 16³
-   (7)  ³                  ³
-        ³2    10   15   14 ³
-        ³                  ³
-        À26   33   55  - 13Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty7}
-\begin{paste}{ugLangLoopsWhilePageEmpty7}{ugLangLoopsWhilePagePatch7}
-\pastebutton{ugLangLoopsWhilePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch8}
-\begin{paste}{ugLangLoopsWhilePageFull8}{ugLangLoopsWhilePageEmpty8}
-\pastebutton{ugLangLoopsWhilePageFull8}{\hidepaste}
-\tab{5}\spadcommand{r := 1\bound{r }}
-\indentrel{3}\begin{verbatim}
-   (8)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty8}
-\begin{paste}{ugLangLoopsWhilePageEmpty8}{ugLangLoopsWhilePagePatch8}
-\pastebutton{ugLangLoopsWhilePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{r := 1\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch9}
-\begin{paste}{ugLangLoopsWhilePageFull9}{ugLangLoopsWhilePageEmpty9}
-\pastebutton{ugLangLoopsWhilePageFull9}{\hidepaste}
-\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
-\indentrel{3}\begin{verbatim}
-   (9)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty9}
-\begin{paste}{ugLangLoopsWhilePageEmpty9}{ugLangLoopsWhilePagePatch9}
-\pastebutton{ugLangLoopsWhilePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePagePatch10}
-\begin{paste}{ugLangLoopsWhilePageFull10}{ugLangLoopsWhilePageEmpty10}
-\pastebutton{ugLangLoopsWhilePageFull10}{\hidepaste}
-\tab{5}\spadcommand{while r <= lastrow repeat
-  c := 1  -- index of first column
-  while c <= lastcol repeat
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\free{m2 r lastrow lastcol }}
-\indentrel{3}\begin{verbatim}
-   [2,2,- 24]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsWhilePageEmpty10}
-\begin{paste}{ugLangLoopsWhilePageEmpty10}{ugLangLoopsWhilePagePatch10}
-\pastebutton{ugLangLoopsWhilePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{while r <= lastrow repeat
-  c := 1  -- index of first column
-  while c <= lastcol repeat
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\free{m2 r lastrow lastcol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNPagePatch1}
-\begin{paste}{ugLangLoopsForInNPageFull1}{ugLangLoopsForInNPageEmpty1}
-\pastebutton{ugLangLoopsForInNPageFull1}{\hidepaste}
-\tab{5}\spadcommand{for i in 15.. while not prime?(i) repeat output(i)}
-\indentrel{3}\begin{verbatim}
-   15
-   16
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNPageEmpty1}
-\begin{paste}{ugLangLoopsForInNPageEmpty1}{ugLangLoopsForInNPagePatch1}
-\pastebutton{ugLangLoopsForInNPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{for i in 15.. while not prime?(i) repeat output(i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch1}
-\begin{paste}{ugLangLoopsForInNMPageFull1}{ugLangLoopsForInNMPageEmpty1}
-\pastebutton{ugLangLoopsForInNMPageFull1}{\hidepaste}
-\tab{5}\spadcommand{for i in 10..12 repeat output(i**3)}
-\indentrel{3}\begin{verbatim}
-   1000
-   1331
-   1728
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty1}
-\begin{paste}{ugLangLoopsForInNMPageEmpty1}{ugLangLoopsForInNMPagePatch1}
-\pastebutton{ugLangLoopsForInNMPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{for i in 10..12 repeat output(i**3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch2}
-\begin{paste}{ugLangLoopsForInNMPageFull2}{ugLangLoopsForInNMPageEmpty2}
-\pastebutton{ugLangLoopsForInNMPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a := [1,2,3]\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty2}
-\begin{paste}{ugLangLoopsForInNMPageEmpty2}{ugLangLoopsForInNMPagePatch2}
-\pastebutton{ugLangLoopsForInNMPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a := [1,2,3]\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch3}
-\begin{paste}{ugLangLoopsForInNMPageFull3}{ugLangLoopsForInNMPageEmpty3}
-\pastebutton{ugLangLoopsForInNMPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..\#a repeat output(a.i)\free{a }}
-\indentrel{3}\begin{verbatim}
-   1
-   2
-   3
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty3}
-\begin{paste}{ugLangLoopsForInNMPageEmpty3}{ugLangLoopsForInNMPagePatch3}
-\pastebutton{ugLangLoopsForInNMPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for i in 1..\#a repeat output(a.i)\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch4}
-\begin{paste}{ugLangLoopsForInNMPageFull4}{ugLangLoopsForInNMPageEmpty4}
-\pastebutton{ugLangLoopsForInNMPageFull4}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[1,2],[4,3],[9,0]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2¿
-        ³    ³
-   (4)  ³4  3³
-        ³    ³
-        À9  0Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty4}
-\begin{paste}{ugLangLoopsForInNMPageEmpty4}{ugLangLoopsForInNMPagePatch4}
-\pastebutton{ugLangLoopsForInNMPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[1,2],[4,3],[9,0]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch5}
-\begin{paste}{ugLangLoopsForInNMPageFull5}{ugLangLoopsForInNMPageEmpty5}
-\pastebutton{ugLangLoopsForInNMPageFull5}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..nrows(m) repeat output row(m,i)\free{m }}
-\indentrel{3}\begin{verbatim}
-   [1,2]
-   [4,3]
-   [9,0]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty5}
-\begin{paste}{ugLangLoopsForInNMPageEmpty5}{ugLangLoopsForInNMPagePatch5}
-\pastebutton{ugLangLoopsForInNMPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{for i in 1..nrows(m) repeat output row(m,i)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPagePatch6}
-\begin{paste}{ugLangLoopsForInNMPageFull6}{ugLangLoopsForInNMPageEmpty6}
-\pastebutton{ugLangLoopsForInNMPageFull6}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..5 repeat
-  if odd?(i) then iterate
-  output(i)
-}
-\indentrel{3}\begin{verbatim}
-   2
-   4
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMPageEmpty6}
-\begin{paste}{ugLangLoopsForInNMPageEmpty6}{ugLangLoopsForInNMPagePatch6}
-\pastebutton{ugLangLoopsForInNMPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{for i in 1..5 repeat
-  if odd?(i) then iterate
-  output(i)
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPagePatch1}
-\begin{paste}{ugLangLoopsReturnPageFull1}{ugLangLoopsReturnPageEmpty1}
-\pastebutton{ugLangLoopsReturnPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPageEmpty1}
-\begin{paste}{ugLangLoopsReturnPageEmpty1}{ugLangLoopsReturnPagePatch1}
-\pastebutton{ugLangLoopsReturnPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPagePatch2}
-\begin{paste}{ugLangLoopsReturnPageFull2}{ugLangLoopsReturnPageEmpty2}
-\pastebutton{ugLangLoopsReturnPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f()\free{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPageEmpty2}
-\begin{paste}{ugLangLoopsReturnPageEmpty2}{ugLangLoopsReturnPagePatch2}
-\pastebutton{ugLangLoopsReturnPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f()\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPagePatch3}
-\begin{paste}{ugLangLoopsReturnPageFull3}{ugLangLoopsReturnPageEmpty3}
-\pastebutton{ugLangLoopsReturnPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-  0
-\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPageEmpty3}
-\begin{paste}{ugLangLoopsReturnPageEmpty3}{ugLangLoopsReturnPagePatch3}
-\pastebutton{ugLangLoopsReturnPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then return i
-    i := i + 1
-  0
-\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPagePatch4}
-\begin{paste}{ugLangLoopsReturnPageFull4}{ugLangLoopsReturnPageEmpty4}
-\pastebutton{ugLangLoopsReturnPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f()\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  7
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsReturnPageEmpty4}
-\begin{paste}{ugLangLoopsReturnPageEmpty4}{ugLangLoopsReturnPagePatch4}
-\pastebutton{ugLangLoopsReturnPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f()\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPagePatch1}
-\begin{paste}{ugLangLoopsForInXLPageFull1}{ugLangLoopsForInXLPageEmpty1}
-\pastebutton{ugLangLoopsForInXLPageFull1}{\hidepaste}
-\tab{5}\spadcommand{l := [0,-5,3]\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (1)  [0,- 5,3]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPageEmpty1}
-\begin{paste}{ugLangLoopsForInXLPageEmpty1}{ugLangLoopsForInXLPagePatch1}
-\pastebutton{ugLangLoopsForInXLPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{l := [0,-5,3]\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPagePatch2}
-\begin{paste}{ugLangLoopsForInXLPageFull2}{ugLangLoopsForInXLPageEmpty2}
-\pastebutton{ugLangLoopsForInXLPageFull2}{\hidepaste}
-\tab{5}\spadcommand{for x in l repeat output(x)\free{l }}
-\indentrel{3}\begin{verbatim}
-   0
-   - 5
-   3
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPageEmpty2}
-\begin{paste}{ugLangLoopsForInXLPageEmpty2}{ugLangLoopsForInXLPagePatch2}
-\pastebutton{ugLangLoopsForInXLPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{for x in l repeat output(x)\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPagePatch3}
-\begin{paste}{ugLangLoopsForInXLPageFull3}{ugLangLoopsForInXLPageEmpty3}
-\pastebutton{ugLangLoopsForInXLPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for f in factors(factor(2400000)) repeat output(f)}
-\indentrel{3}\begin{verbatim}
-   [factor= 2,exponent= 8]
-   [factor= 3,exponent= 1]
-   [factor= 5,exponent= 5]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInXLPageEmpty3}
-\begin{paste}{ugLangLoopsForInXLPageEmpty3}{ugLangLoopsForInXLPagePatch3}
-\pastebutton{ugLangLoopsForInXLPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for f in factors(factor(2400000)) repeat output(f)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangIfPagePatch1}
-\begin{paste}{ugLangIfPageFull1}{ugLangIfPageEmpty1}
-\pastebutton{ugLangIfPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x + 1 = y}
-\indentrel{3}\begin{verbatim}
-   (1)  x + 1= y
-                      Type: Equation Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangIfPageEmpty1}
-\begin{paste}{ugLangIfPageEmpty1}{ugLangIfPagePatch1}
-\pastebutton{ugLangIfPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x + 1 = y}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMSPagePatch1}
-\begin{paste}{ugLangLoopsForInNMSPageFull1}{ugLangLoopsForInNMSPageEmpty1}
-\pastebutton{ugLangLoopsForInNMSPageFull1}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..5 by 2 repeat output(i)}
-\indentrel{3}\begin{verbatim}
-   1
-   3
-   5
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMSPageEmpty1}
-\begin{paste}{ugLangLoopsForInNMSPageEmpty1}{ugLangLoopsForInNMSPagePatch1}
-\pastebutton{ugLangLoopsForInNMSPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{for i in 1..5 by 2 repeat output(i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMSPagePatch2}
-\begin{paste}{ugLangLoopsForInNMSPageFull2}{ugLangLoopsForInNMSPageEmpty2}
-\pastebutton{ugLangLoopsForInNMSPageFull2}{\hidepaste}
-\tab{5}\spadcommand{for i in 5..1 by -2 repeat output(i)}
-\indentrel{3}\begin{verbatim}
-   5
-   3
-   1
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInNMSPageEmpty2}
-\begin{paste}{ugLangLoopsForInNMSPageEmpty2}{ugLangLoopsForInNMSPagePatch2}
-\pastebutton{ugLangLoopsForInNMSPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{for i in 5..1 by -2 repeat output(i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsIteratePagePatch1}
-\begin{paste}{ugLangLoopsIteratePageFull1}{ugLangLoopsIteratePageEmpty1}
-\pastebutton{ugLangLoopsIteratePageFull1}{\hidepaste}
-\tab{5}\spadcommand{i := 0\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsIteratePageEmpty1}
-\begin{paste}{ugLangLoopsIteratePageEmpty1}{ugLangLoopsIteratePagePatch1}
-\pastebutton{ugLangLoopsIteratePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{i := 0\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsIteratePagePatch2}
-\begin{paste}{ugLangLoopsIteratePageFull2}{ugLangLoopsIteratePageEmpty2}
-\pastebutton{ugLangLoopsIteratePageFull2}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  if i > 5 then break
-  if odd?(i) then iterate
-  output(i)
-\free{i }}
-\indentrel{3}\begin{verbatim}
-   2
-   4
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsIteratePageEmpty2}
-\begin{paste}{ugLangLoopsIteratePageEmpty2}{ugLangLoopsIteratePagePatch2}
-\pastebutton{ugLangLoopsIteratePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  if i > 5 then break
-  if odd?(i) then iterate
-  output(i)
-\free{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch1}
-\begin{paste}{ugLangItsPageFull1}{ugLangItsPageEmpty1}
-\pastebutton{ugLangItsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{list := [i for i in 1..10]\bound{list }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,2,3,4,5,6,7,8,9,10]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty1}
-\begin{paste}{ugLangItsPageEmpty1}{ugLangItsPagePatch1}
-\pastebutton{ugLangItsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{list := [i for i in 1..10]\bound{list }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch2}
-\begin{paste}{ugLangItsPageFull2}{ugLangItsPageEmpty2}
-\pastebutton{ugLangItsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{stream := [i for i in 1..]\bound{stream }}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3,4,5,6,7,8,9,10,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty2}
-\begin{paste}{ugLangItsPageEmpty2}{ugLangItsPagePatch2}
-\pastebutton{ugLangItsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{stream := [i for i in 1..]\bound{stream }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch3}
-\begin{paste}{ugLangItsPageFull3}{ugLangItsPageEmpty3}
-\pastebutton{ugLangItsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1..10 | prime? i]}
-\indentrel{3}\begin{verbatim}
-   (3)  [2,3,5,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty3}
-\begin{paste}{ugLangItsPageEmpty3}{ugLangItsPagePatch3}
-\pastebutton{ugLangItsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1..10 | prime? i]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch4}
-\begin{paste}{ugLangItsPageFull4}{ugLangItsPageEmpty4}
-\pastebutton{ugLangItsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1.. | prime? i]}
-\indentrel{3}\begin{verbatim}
-   (4)  [2,3,5,7,11,13,17,19,23,29,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty4}
-\begin{paste}{ugLangItsPageEmpty4}{ugLangItsPagePatch4}
-\pastebutton{ugLangItsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1.. | prime? i]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch5}
-\begin{paste}{ugLangItsPageFull5}{ugLangItsPageEmpty5}
-\pastebutton{ugLangItsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1..10 while i*i < 700]}
-\indentrel{3}\begin{verbatim}
-   (5)  [1,2,3,4,5,6,7,8,9,10]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty5}
-\begin{paste}{ugLangItsPageEmpty5}{ugLangItsPagePatch5}
-\pastebutton{ugLangItsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1..10 while i*i < 700]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch6}
-\begin{paste}{ugLangItsPageFull6}{ugLangItsPageEmpty6}
-\pastebutton{ugLangItsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[i for i in 1.. while i*i < 700]}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,2,3,4,5,6,7,8,9,10,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty6}
-\begin{paste}{ugLangItsPageEmpty6}{ugLangItsPagePatch6}
-\pastebutton{ugLangItsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[i for i in 1.. while i*i < 700]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch7}
-\begin{paste}{ugLangItsPageFull7}{ugLangItsPageEmpty7}
-\pastebutton{ugLangItsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{matrix [[x**i+j for i in 1..3] for j in 10..12]}
-\indentrel{3}\begin{verbatim}
-        Ú         2        3     ¿
-        ³x + 10  x  + 10  x  + 10³
-        ³                        ³
-   (7)  ³         2        3     ³
-        ³x + 11  x  + 11  x  + 11³
-        ³                        ³
-        ³         2        3     ³
-        Àx + 12  x  + 12  x  + 12Ù
-                        Type: Matrix Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty7}
-\begin{paste}{ugLangItsPageEmpty7}{ugLangItsPagePatch7}
-\pastebutton{ugLangItsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{matrix [[x**i+j for i in 1..3] for j in 10..12]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch8}
-\begin{paste}{ugLangItsPageFull8}{ugLangItsPageEmpty8}
-\pastebutton{ugLangItsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{[[i/j for i in j+1..] for j in 1..]}
-\indentrel{3}\begin{verbatim}
-   (8)
-   [[2,3,4,5,6,7,8,9,10,11,...],
-     3   5   7   9   11
-    [Ä,2,Ä,3,Ä,4,Ä,5,ÄÄ,6,...],
-     2   2   2   2    2
-     4 5   7 8   10 11   13
-    [Ä,Ä,2,Ä,Ä,3,ÄÄ,ÄÄ,4,ÄÄ,...],
-     3 3   3 3    3  3    3
-     5 3 7   9 5 11   13 7
-    [Ä,Ä,Ä,2,Ä,Ä,ÄÄ,3,ÄÄ,Ä,...],
-     4 2 4   4 2  4    4 2
-     6 7 8 9   11 12 13 14
-    [Ä,Ä,Ä,Ä,2,ÄÄ,ÄÄ,ÄÄ,ÄÄ,3,...],
-     5 5 5 5    5  5  5  5
-     7 4 3 5 11   13 7 5 8
-    [Ä,Ä,Ä,Ä,ÄÄ,2,ÄÄ,Ä,Ä,Ä,...],
-     6 3 2 3  6    6 3 2 3
-     8 9 10 11 12 13   15 16 17
-    [Ä,Ä,ÄÄ,ÄÄ,ÄÄ,ÄÄ,2,ÄÄ,ÄÄ,ÄÄ,...],
-     7 7  7  7  7  7    7  7  7
-     9 5 11 3 13 7 15   17 9
-    [Ä,Ä,ÄÄ,Ä,ÄÄ,Ä,ÄÄ,2,ÄÄ,Ä,...],
-     8 4  8 2  8 4  8    8 4
-     10 11 4 13 14 5 16 17   19
-    [ÄÄ,ÄÄ,Ä,ÄÄ,ÄÄ,Ä,ÄÄ,ÄÄ,2,ÄÄ,...],
-      9  9 3  9  9 3  9  9    9
-     11 6 13 7 3 8 17 9 19
-    [ÄÄ,Ä,ÄÄ,Ä,Ä,Ä,ÄÄ,Ä,ÄÄ,2,...], ...]
-     10 5 10 5 2 5 10 5 10
-                   Type: Stream Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty8}
-\begin{paste}{ugLangItsPageEmpty8}{ugLangItsPagePatch8}
-\pastebutton{ugLangItsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{[[i/j for i in j+1..] for j in 1..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch9}
-\begin{paste}{ugLangItsPageFull9}{ugLangItsPageEmpty9}
-\pastebutton{ugLangItsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{[i/j for i in 3.. by 10 for j in 2..]}
-\indentrel{3}\begin{verbatim}
-         3 13 23 33 43 53 63 73 83 93
-   (9)  [Ä,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,ÄÄ,...]
-         2  3  4  5  6  7  8  9 10 11
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty9}
-\begin{paste}{ugLangItsPageEmpty9}{ugLangItsPagePatch9}
-\pastebutton{ugLangItsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{[i/j for i in 3.. by 10 for j in 2..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch10}
-\begin{paste}{ugLangItsPageFull10}{ugLangItsPageEmpty10}
-\pastebutton{ugLangItsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{[i**j for i in 1..7 for j in 2.. ]}
-\indentrel{3}\begin{verbatim}
-   (10)  [1,8,81,1024,15625,279936,5764801]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty10}
-\begin{paste}{ugLangItsPageEmpty10}{ugLangItsPagePatch10}
-\pastebutton{ugLangItsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{[i**j for i in 1..7 for j in 2.. ]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPagePatch11}
-\begin{paste}{ugLangItsPageFull11}{ugLangItsPageEmpty11}
-\pastebutton{ugLangItsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
-\indentrel{3}\begin{verbatim}
-   (11)
-   [[[11,17],[13,17]], [[11,19],[13,19]],
-    [[11,21],[13,21]], [[11,22],[13,22]]]
-                   Type: List List List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangItsPageEmpty11}
-\begin{paste}{ugLangItsPageEmpty11}{ugLangItsPagePatch11}
-\pastebutton{ugLangItsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[[[i,j] for i in 10..15 | prime? i] for j in 17..22 | j = squareFreePart j]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch1}
-\begin{paste}{ugLangStreamsPrimesPageFull1}{ugLangStreamsPrimesPageEmpty1}
-\pastebutton{ugLangStreamsPrimesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{primes : Stream Integer := [i for i in 2.. | prime? i]}
-\indentrel{3}\begin{verbatim}
-   (1)  [2,3,5,7,11,13,17,19,23,29,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty1}
-\begin{paste}{ugLangStreamsPrimesPageEmpty1}{ugLangStreamsPrimesPagePatch1}
-\pastebutton{ugLangStreamsPrimesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{primes : Stream Integer := [i for i in 2.. | prime? i]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch2}
-\begin{paste}{ugLangStreamsPrimesPageFull2}{ugLangStreamsPrimesPageEmpty2}
-\pastebutton{ugLangStreamsPrimesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{primes := generate(nextPrime,2)}
-\indentrel{3}\begin{verbatim}
-   (2)  [2,3,5,7,11,13,17,19,23,29,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty2}
-\begin{paste}{ugLangStreamsPrimesPageEmpty2}{ugLangStreamsPrimesPagePatch2}
-\pastebutton{ugLangStreamsPrimesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{primes := generate(nextPrime,2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch3}
-\begin{paste}{ugLangStreamsPrimesPageFull3}{ugLangStreamsPrimesPageEmpty3}
-\pastebutton{ugLangStreamsPrimesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{smallPrimes := [p for p in primes | p > 1000]\bound{smallPrimes }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty3}
-\begin{paste}{ugLangStreamsPrimesPageEmpty3}{ugLangStreamsPrimesPagePatch3}
-\pastebutton{ugLangStreamsPrimesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{smallPrimes := [p for p in primes | p > 1000]\bound{smallPrimes }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch4}
-\begin{paste}{ugLangStreamsPrimesPageFull4}{ugLangStreamsPrimesPageEmpty4}
-\pastebutton{ugLangStreamsPrimesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{[p for p in smallPrimes for i in 1..11]\free{smallPrimes }}
-\indentrel{3}\begin{verbatim}
-   (4)
-   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty4}
-\begin{paste}{ugLangStreamsPrimesPageEmpty4}{ugLangStreamsPrimesPagePatch4}
-\pastebutton{ugLangStreamsPrimesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{[p for p in smallPrimes for i in 1..11]\free{smallPrimes }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch5}
-\begin{paste}{ugLangStreamsPrimesPageFull5}{ugLangStreamsPrimesPageEmpty5}
-\pastebutton{ugLangStreamsPrimesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{[p for p in smallPrimes while p < 1200]\free{smallPrimes }}
-\indentrel{3}\begin{verbatim}
-   (5)
-   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty5}
-\begin{paste}{ugLangStreamsPrimesPageEmpty5}{ugLangStreamsPrimesPagePatch5}
-\pastebutton{ugLangStreamsPrimesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{[p for p in smallPrimes while p < 1200]\free{smallPrimes }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch6}
-\begin{paste}{ugLangStreamsPrimesPageFull6}{ugLangStreamsPrimesPageEmpty6}
-\pastebutton{ugLangStreamsPrimesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{complete \%}
-\indentrel{3}\begin{verbatim}
-   (6)
-   [1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty6}
-\begin{paste}{ugLangStreamsPrimesPageEmpty6}{ugLangStreamsPrimesPagePatch6}
-\pastebutton{ugLangStreamsPrimesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{complete \%}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch7}
-\begin{paste}{ugLangStreamsPrimesPageFull7}{ugLangStreamsPrimesPageEmpty7}
-\pastebutton{ugLangStreamsPrimesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [[3,5], [5,7], [11,13], [17,19], [29,31], [41,43],
-    [59,61], [71,73], [101,103], [107,109], ...]
-                              Type: Stream List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty7}
-\begin{paste}{ugLangStreamsPrimesPageEmpty7}{ugLangStreamsPrimesPagePatch7}
-\pastebutton{ugLangStreamsPrimesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{twinPrimes := [[p,p+2] for p in primes | prime?(p + 2)]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch8}
-\begin{paste}{ugLangStreamsPrimesPageFull8}{ugLangStreamsPrimesPageEmpty8}
-\pastebutton{ugLangStreamsPrimesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
-\indentrel{3}\begin{verbatim}
-   (8)  [3,5,11,17,29,41,59,71,101,107,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty8}
-\begin{paste}{ugLangStreamsPrimesPageEmpty8}{ugLangStreamsPrimesPagePatch8}
-\pastebutton{ugLangStreamsPrimesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{firstOfTwins:= [p for p in primes for q in rest primes | q=p+2]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch9}
-\begin{paste}{ugLangStreamsPrimesPageFull9}{ugLangStreamsPrimesPageEmpty9}
-\pastebutton{ugLangStreamsPrimesPageFull9}{\hidepaste}
-\tab{5}\spadcommand{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
-\indentrel{3}\begin{verbatim}
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty9}
-\begin{paste}{ugLangStreamsPrimesPageEmpty9}{ugLangStreamsPrimesPagePatch9}
-\pastebutton{ugLangStreamsPrimesPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{firstTriplets := [p for p in firstOfTwins for q in rest firstOfTwins | q = p+2];}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch10}
-\begin{paste}{ugLangStreamsPrimesPageFull10}{ugLangStreamsPrimesPageEmpty10}
-\pastebutton{ugLangStreamsPrimesPageFull10}{\hidepaste}
-\tab{5}\spadcommand{firstTriplets.1}
-\indentrel{3}\begin{verbatim}
-   (10)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty10}
-\begin{paste}{ugLangStreamsPrimesPageEmpty10}{ugLangStreamsPrimesPagePatch10}
-\pastebutton{ugLangStreamsPrimesPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{firstTriplets.1}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPagePatch11}
-\begin{paste}{ugLangStreamsPrimesPageFull11}{ugLangStreamsPrimesPageEmpty11}
-\pastebutton{ugLangStreamsPrimesPageFull11}{\hidepaste}
-\tab{5}\spadcommand{primes.2045}
-\indentrel{3}\begin{verbatim}
-   (11)  17837
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangStreamsPrimesPageEmpty11}
-\begin{paste}{ugLangStreamsPrimesPageEmpty11}{ugLangStreamsPrimesPagePatch11}
-\pastebutton{ugLangStreamsPrimesPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{primes.2045}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInPredPagePatch1}
-\begin{paste}{ugLangLoopsForInPredPageFull1}{ugLangLoopsForInPredPageEmpty1}
-\pastebutton{ugLangLoopsForInPredPageFull1}{\hidepaste}
-\tab{5}\spadcommand{for n in 0..4 | odd? n repeat output n}
-\indentrel{3}\begin{verbatim}
-   1
-   3
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInPredPageEmpty1}
-\begin{paste}{ugLangLoopsForInPredPageEmpty1}{ugLangLoopsForInPredPagePatch1}
-\pastebutton{ugLangLoopsForInPredPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{for n in 0..4 | odd? n repeat output n}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInPredPagePatch2}
-\begin{paste}{ugLangLoopsForInPredPageFull2}{ugLangLoopsForInPredPageEmpty2}
-\pastebutton{ugLangLoopsForInPredPageFull2}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..50 repeat
-  for j in 1..50 | factorial(i+j) < 25 repeat
-    output [i,j]
-}
-\indentrel{3}\begin{verbatim}
-   [1,1]
-   [1,2]
-   [1,3]
-   [2,1]
-   [2,2]
-   [3,1]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsForInPredPageEmpty2}
-\begin{paste}{ugLangLoopsForInPredPageEmpty2}{ugLangLoopsForInPredPagePatch2}
-\pastebutton{ugLangLoopsForInPredPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{for i in 1..50 repeat
-  for j in 1..50 | factorial(i+j) < 25 repeat
-    output [i,j]
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch1}
-\begin{paste}{ugLangLoopsBreakMorePageFull1}{ugLangLoopsBreakMorePageEmpty1}
-\pastebutton{ugLangLoopsBreakMorePageFull1}{\hidepaste}
-\tab{5}\spadcommand{i := 0\bound{i }}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty1}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty1}{ugLangLoopsBreakMorePagePatch1}
-\pastebutton{ugLangLoopsBreakMorePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{i := 0\bound{i }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch2}
-\begin{paste}{ugLangLoopsBreakMorePageFull2}{ugLangLoopsBreakMorePageEmpty2}
-\pastebutton{ugLangLoopsBreakMorePageFull2}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  if i**2 > 100 then break
-\free{i }\bound{i1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty2}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty2}{ugLangLoopsBreakMorePagePatch2}
-\pastebutton{ugLangLoopsBreakMorePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  if i**2 > 100 then break
-\free{i }\bound{i1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch3}
-\begin{paste}{ugLangLoopsBreakMorePageFull3}{ugLangLoopsBreakMorePageEmpty3}
-\pastebutton{ugLangLoopsBreakMorePageFull3}{\hidepaste}
-\tab{5}\spadcommand{i\free{i1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  11
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty3}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty3}{ugLangLoopsBreakMorePagePatch3}
-\pastebutton{ugLangLoopsBreakMorePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i\free{i1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch4}
-\begin{paste}{ugLangLoopsBreakMorePageFull4}{ugLangLoopsBreakMorePageEmpty4}
-\pastebutton{ugLangLoopsBreakMorePageFull4}{\hidepaste}
-\tab{5}\spadcommand{i := 0\bound{i2 }}
-\indentrel{3}\begin{verbatim}
-   (4)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty4}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty4}{ugLangLoopsBreakMorePagePatch4}
-\pastebutton{ugLangLoopsBreakMorePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{i := 0\bound{i2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch5}
-\begin{paste}{ugLangLoopsBreakMorePageFull5}{ugLangLoopsBreakMorePageEmpty5}
-\pastebutton{ugLangLoopsBreakMorePageFull5}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  i**2 > 100 => break
-\free{i2 }\bound{i3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty5}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty5}{ugLangLoopsBreakMorePagePatch5}
-\pastebutton{ugLangLoopsBreakMorePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{repeat
-  i := i + 1
-  i**2 > 100 => break
-\free{i2 }\bound{i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch6}
-\begin{paste}{ugLangLoopsBreakMorePageFull6}{ugLangLoopsBreakMorePageEmpty6}
-\pastebutton{ugLangLoopsBreakMorePageFull6}{\hidepaste}
-\tab{5}\spadcommand{i\free{i3 }}
-\indentrel{3}\begin{verbatim}
-   (6)  11
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty6}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty6}{ugLangLoopsBreakMorePagePatch6}
-\pastebutton{ugLangLoopsBreakMorePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{i\free{i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch7}
-\begin{paste}{ugLangLoopsBreakMorePageFull7}{ugLangLoopsBreakMorePageEmpty7}
-\pastebutton{ugLangLoopsBreakMorePageFull7}{\hidepaste}
-\tab{5}\spadcommand{(n, i, f) := (100, 1, 1)\bound{n }\bound{i4 }\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (7)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty7}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty7}{ugLangLoopsBreakMorePagePatch7}
-\pastebutton{ugLangLoopsBreakMorePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{(n, i, f) := (100, 1, 1)\bound{n }\bound{i4 }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch8}
-\begin{paste}{ugLangLoopsBreakMorePageFull8}{ugLangLoopsBreakMorePageEmpty8}
-\pastebutton{ugLangLoopsBreakMorePageFull8}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  if i > n then break
-  f := f * i
-  i := i + 1
-\bound{f1 }\bound{i5 }\free{f i4 n }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty8}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty8}{ugLangLoopsBreakMorePagePatch8}
-\pastebutton{ugLangLoopsBreakMorePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{repeat
-  if i > n then break
-  f := f * i
-  i := i + 1
-\bound{f1 }\bound{i5 }\free{f i4 n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch9}
-\begin{paste}{ugLangLoopsBreakMorePageFull9}{ugLangLoopsBreakMorePageEmpty9}
-\pastebutton{ugLangLoopsBreakMorePageFull9}{\hidepaste}
-\tab{5}\spadcommand{f\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-  933262154439441526816992388562667004907159682643816214_
-   68592963895217599993229915608941463976156518286253697_
-   920827223758251185210916864000000000000000000000000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty9}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty9}{ugLangLoopsBreakMorePagePatch9}
-\pastebutton{ugLangLoopsBreakMorePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch10}
-\begin{paste}{ugLangLoopsBreakMorePageFull10}{ugLangLoopsBreakMorePageEmpty10}
-\pastebutton{ugLangLoopsBreakMorePageFull10}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-         Ú21   37   53   14 ¿
-         ³                  ³
-         ³8   - 24  22  - 16³
-   (10)  ³                  ³
-         ³2    10   15   14 ³
-         ³                  ³
-         À26   33   55  - 13Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty10}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty10}{ugLangLoopsBreakMorePagePatch10}
-\pastebutton{ugLangLoopsBreakMorePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[21,37,53,14], [8,-24,22,-16], [2,10,15,14], [26,33,55,-13]]\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch11}
-\begin{paste}{ugLangLoopsBreakMorePageFull11}{ugLangLoopsBreakMorePageEmpty11}
-\pastebutton{ugLangLoopsBreakMorePageFull11}{\hidepaste}
-\tab{5}\spadcommand{(r, c) := (1, 1)\bound{r }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (11)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty11}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty11}{ugLangLoopsBreakMorePagePatch11}
-\pastebutton{ugLangLoopsBreakMorePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{(r, c) := (1, 1)\bound{r }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch12}
-\begin{paste}{ugLangLoopsBreakMorePageFull12}{ugLangLoopsBreakMorePageEmpty12}
-\pastebutton{ugLangLoopsBreakMorePageFull12}{\hidepaste}
-\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
-\indentrel{3}\begin{verbatim}
-   (12)  4
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty12}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty12}{ugLangLoopsBreakMorePagePatch12}
-\pastebutton{ugLangLoopsBreakMorePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{(lastrow, lastcol) := (nrows(m), ncols(m))\bound{lastrow }\bound{lastcol }\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePagePatch13}
-\begin{paste}{ugLangLoopsBreakMorePageFull13}{ugLangLoopsBreakMorePageEmpty13}
-\pastebutton{ugLangLoopsBreakMorePageFull13}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  if r > lastrow then break
-  c := 1
-  repeat
-    if c > lastcol then break
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\free{m2 r c lastrow lastcol }}
-\indentrel{3}\begin{verbatim}
-   [2,2,- 24]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakMorePageEmpty13}
-\begin{paste}{ugLangLoopsBreakMorePageEmpty13}{ugLangLoopsBreakMorePagePatch13}
-\pastebutton{ugLangLoopsBreakMorePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{repeat
-  if r > lastrow then break
-  c := 1
-  repeat
-    if c > lastcol then break
-    if elt(m,r,c) < 0 then
-      output [r, c, elt(m,r,c)]
-      r := lastrow
-      break     -- don't look any further
-    c := c + 1
-  r := r + 1
-\free{m2 r c lastrow lastcol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch1}
-\begin{paste}{ugLangBlocksPageFull1}{ugLangBlocksPageEmpty1}
-\pastebutton{ugLangBlocksPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a :=
-  i := gcd(234,672)
-  i := 3*i**5 - i + 1
-  1 / i
-}
-\indentrel{3}\begin{verbatim}
-          1
-   (1)  ÄÄÄÄÄ
-        23323
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty1}
-\begin{paste}{ugLangBlocksPageEmpty1}{ugLangBlocksPagePatch1}
-\pastebutton{ugLangBlocksPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a :=
-  i := gcd(234,672)
-  i := 3*i**5 - i + 1
-  1 / i
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch2}
-\begin{paste}{ugLangBlocksPageFull2}{ugLangBlocksPageEmpty2}
-\pastebutton{ugLangBlocksPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
-\indentrel{3}\begin{verbatim}
-          1
-   (2)  ÄÄÄÄÄ
-        23323
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty2}
-\begin{paste}{ugLangBlocksPageEmpty2}{ugLangBlocksPagePatch2}
-\pastebutton{ugLangBlocksPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a := (i := gcd(234,672); i := 3*i**5 - i + 1; 1 / i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch3}
-\begin{paste}{ugLangBlocksPageFull3}{ugLangBlocksPageEmpty3}
-\pastebutton{ugLangBlocksPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(a := 1; b := 2; c := 3; [a,b,c])\bound{a b c }}
-\indentrel{3}\begin{verbatim}
-   (3)  [1,2,3]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty3}
-\begin{paste}{ugLangBlocksPageEmpty3}{ugLangBlocksPagePatch3}
-\pastebutton{ugLangBlocksPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(a := 1; b := 2; c := 3; [a,b,c])\bound{a b c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch4}
-\begin{paste}{ugLangBlocksPageFull4}{ugLangBlocksPageEmpty4}
-\pastebutton{ugLangBlocksPageFull4}{\hidepaste}
-\tab{5}\spadcommand{d :=
-   c := a**2 + b**2
-   sqrt(c * 1.3)
-\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (4)  2.5495097567 96392415
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty4}
-\begin{paste}{ugLangBlocksPageEmpty4}{ugLangBlocksPagePatch4}
-\pastebutton{ugLangBlocksPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{d :=
-   c := a**2 + b**2
-   sqrt(c * 1.3)
-\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch5}
-\begin{paste}{ugLangBlocksPageFull5}{ugLangBlocksPageEmpty5}
-\pastebutton{ugLangBlocksPageFull5}{\hidepaste}
-\tab{5}\spadcommand{h := 2.1 +
-   1.0
-   3.5
-\bound{h }}
-\indentrel{3}\begin{verbatim}
-   (5)  5.6
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty5}
-\begin{paste}{ugLangBlocksPageEmpty5}{ugLangBlocksPagePatch5}
-\pastebutton{ugLangBlocksPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{h := 2.1 +
-   1.0
-   3.5
-\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch6}
-\begin{paste}{ugLangBlocksPageFull6}{ugLangBlocksPageEmpty6}
-\pastebutton{ugLangBlocksPageFull6}{\hidepaste}
-\tab{5}\spadcommand{eval(x**2 - x*y**2,
-     z := \%pi/2.0 - exp(4.1)
-     x = z
-   )
-}
-\indentrel{3}\begin{verbatim}
-   (6)
-                           2
-   58.7694912705 67072878 y  + 3453.8531042012 59382
-                                 Type: Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty6}
-\begin{paste}{ugLangBlocksPageEmpty6}{ugLangBlocksPagePatch6}
-\pastebutton{ugLangBlocksPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{eval(x**2 - x*y**2,
-     z := \%pi/2.0 - exp(4.1)
-     x = z
-   )
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch7}
-\begin{paste}{ugLangBlocksPageFull7}{ugLangBlocksPageEmpty7}
-\pastebutton{ugLangBlocksPageFull7}{\hidepaste}
-\tab{5}\spadcommand{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))\free{h }}
-\indentrel{3}\begin{verbatim}
-   (7)  1.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty7}
-\begin{paste}{ugLangBlocksPageEmpty7}{ugLangBlocksPagePatch7}
-\pastebutton{ugLangBlocksPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{if h > 3.1 then 1.0 else (z := cos(h); max(z,0.5))\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch8}
-\begin{paste}{ugLangBlocksPageFull8}{ugLangBlocksPageEmpty8}
-\pastebutton{ugLangBlocksPageFull8}{\hidepaste}
-\tab{5}\spadcommand{if h > 3.1 then
-    1.0
-  else
-    z := cos(h)
-    max(z,0.5)
-\free{h }}
-\indentrel{3}\begin{verbatim}
-   (8)  1.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty8}
-\begin{paste}{ugLangBlocksPageEmpty8}{ugLangBlocksPagePatch8}
-\pastebutton{ugLangBlocksPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{if h > 3.1 then
-    1.0
-  else
-    z := cos(h)
-    max(z,0.5)
-\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch9}
-\begin{paste}{ugLangBlocksPageFull9}{ugLangBlocksPageEmpty9}
-\pastebutton{ugLangBlocksPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
-\indentrel{3}\begin{verbatim}
-   (9)  482630400
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty9}
-\begin{paste}{ugLangBlocksPageEmpty9}{ugLangBlocksPagePatch9}
-\pastebutton{ugLangBlocksPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a := (b := factorial(12); c := (d := eulerPhi(22); factorial(d));b+c)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch10}
-\begin{paste}{ugLangBlocksPageFull10}{ugLangBlocksPageEmpty10}
-\pastebutton{ugLangBlocksPageFull10}{\hidepaste}
-\tab{5}\spadcommand{a :=
-  b := factorial(12)
-  c :=
-    d := eulerPhi(22)
-    factorial(d)
-  b+c
-}
-\indentrel{3}\begin{verbatim}
-   (10)  482630400
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty10}
-\begin{paste}{ugLangBlocksPageEmpty10}{ugLangBlocksPagePatch10}
-\pastebutton{ugLangBlocksPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{a :=
-  b := factorial(12)
-  c :=
-    d := eulerPhi(22)
-    factorial(d)
-  b+c
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPagePatch11}
-\begin{paste}{ugLangBlocksPageFull11}{ugLangBlocksPageEmpty11}
-\pastebutton{ugLangBlocksPageFull11}{\hidepaste}
-\tab{5}\spadcommand{a :=
-  c := factorial 10
-  d := fibonacci 10
-  c + d = 3628855 => c
-  d
-}
-\indentrel{3}\begin{verbatim}
-   (11)  3628800
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangBlocksPageEmpty11}
-\begin{paste}{ugLangBlocksPageEmpty11}{ugLangBlocksPagePatch11}
-\pastebutton{ugLangBlocksPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{a :=
-  c := factorial 10
-  d := fibonacci 10
-  c + d = 3628855 => c
-  d
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch1}
-\begin{paste}{ugLangAssignPageFull1}{ugLangAssignPageEmpty1}
-\pastebutton{ugLangAssignPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a := 1\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (1)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty1}
-\begin{paste}{ugLangAssignPageEmpty1}{ugLangAssignPagePatch1}
-\pastebutton{ugLangAssignPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a := 1\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch2}
-\begin{paste}{ugLangAssignPageFull2}{ugLangAssignPageEmpty2}
-\pastebutton{ugLangAssignPageFull2}{\hidepaste}
-\tab{5}\spadcommand{b := a\free{a }\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (2)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty2}
-\begin{paste}{ugLangAssignPageEmpty2}{ugLangAssignPagePatch2}
-\pastebutton{ugLangAssignPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{b := a\free{a }\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch3}
-\begin{paste}{ugLangAssignPageFull3}{ugLangAssignPageEmpty3}
-\pastebutton{ugLangAssignPageFull3}{\hidepaste}
-\tab{5}\spadcommand{a := 2\bound{a2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty3}
-\begin{paste}{ugLangAssignPageEmpty3}{ugLangAssignPagePatch3}
-\pastebutton{ugLangAssignPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{a := 2\bound{a2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch4}
-\begin{paste}{ugLangAssignPageFull4}{ugLangAssignPageEmpty4}
-\pastebutton{ugLangAssignPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b\free{b }}
-\indentrel{3}\begin{verbatim}
-   (4)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty4}
-\begin{paste}{ugLangAssignPageEmpty4}{ugLangAssignPagePatch4}
-\pastebutton{ugLangAssignPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch5}
-\begin{paste}{ugLangAssignPageFull5}{ugLangAssignPageEmpty5}
-\pastebutton{ugLangAssignPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a == 1\bound{ad }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty5}
-\begin{paste}{ugLangAssignPageEmpty5}{ugLangAssignPagePatch5}
-\pastebutton{ugLangAssignPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a == 1\bound{ad }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch6}
-\begin{paste}{ugLangAssignPageFull6}{ugLangAssignPageEmpty6}
-\pastebutton{ugLangAssignPageFull6}{\hidepaste}
-\tab{5}\spadcommand{b == a\free{ad }\bound{bd }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty6}
-\begin{paste}{ugLangAssignPageEmpty6}{ugLangAssignPagePatch6}
-\pastebutton{ugLangAssignPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{b == a\free{ad }\bound{bd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch7}
-\begin{paste}{ugLangAssignPageFull7}{ugLangAssignPageEmpty7}
-\pastebutton{ugLangAssignPageFull7}{\hidepaste}
-\tab{5}\spadcommand{a\free{ad }}
-\indentrel{3}\begin{verbatim}
-   (7)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty7}
-\begin{paste}{ugLangAssignPageEmpty7}{ugLangAssignPagePatch7}
-\pastebutton{ugLangAssignPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{a\free{ad }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch8}
-\begin{paste}{ugLangAssignPageFull8}{ugLangAssignPageEmpty8}
-\pastebutton{ugLangAssignPageFull8}{\hidepaste}
-\tab{5}\spadcommand{b\free{bd }}
-\indentrel{3}\begin{verbatim}
-   (8)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty8}
-\begin{paste}{ugLangAssignPageEmpty8}{ugLangAssignPagePatch8}
-\pastebutton{ugLangAssignPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{b\free{bd }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch9}
-\begin{paste}{ugLangAssignPageFull9}{ugLangAssignPageEmpty9}
-\pastebutton{ugLangAssignPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a == 2\bound{ad2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty9}
-\begin{paste}{ugLangAssignPageEmpty9}{ugLangAssignPagePatch9}
-\pastebutton{ugLangAssignPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a == 2\bound{ad2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch10}
-\begin{paste}{ugLangAssignPageFull10}{ugLangAssignPageEmpty10}
-\pastebutton{ugLangAssignPageFull10}{\hidepaste}
-\tab{5}\spadcommand{a\free{ad2 }}
-\indentrel{3}\begin{verbatim}
-   (10)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty10}
-\begin{paste}{ugLangAssignPageEmpty10}{ugLangAssignPagePatch10}
-\pastebutton{ugLangAssignPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{a\free{ad2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch11}
-\begin{paste}{ugLangAssignPageFull11}{ugLangAssignPageEmpty11}
-\pastebutton{ugLangAssignPageFull11}{\hidepaste}
-\tab{5}\spadcommand{b\free{bd ad2 }}
-\indentrel{3}\begin{verbatim}
-   (11)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty11}
-\begin{paste}{ugLangAssignPageEmpty11}{ugLangAssignPagePatch11}
-\pastebutton{ugLangAssignPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{b\free{bd ad2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch12}
-\begin{paste}{ugLangAssignPageFull12}{ugLangAssignPageEmpty12}
-\pastebutton{ugLangAssignPageFull12}{\hidepaste}
-\tab{5}\spadcommand{(x,y) := (1,2)\bound{x }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (12)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty12}
-\begin{paste}{ugLangAssignPageEmpty12}{ugLangAssignPagePatch12}
-\pastebutton{ugLangAssignPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{(x,y) := (1,2)\bound{x }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch13}
-\begin{paste}{ugLangAssignPageFull13}{ugLangAssignPageEmpty13}
-\pastebutton{ugLangAssignPageFull13}{\hidepaste}
-\tab{5}\spadcommand{(x,y) := (y,x)\free{x y }\bound{swap }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty13}
-\begin{paste}{ugLangAssignPageEmpty13}{ugLangAssignPagePatch13}
-\pastebutton{ugLangAssignPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{(x,y) := (y,x)\free{x y }\bound{swap }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch14}
-\begin{paste}{ugLangAssignPageFull14}{ugLangAssignPageEmpty14}
-\pastebutton{ugLangAssignPageFull14}{\hidepaste}
-\tab{5}\spadcommand{x\free{swap }}
-\indentrel{3}\begin{verbatim}
-   (14)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty14}
-\begin{paste}{ugLangAssignPageEmpty14}{ugLangAssignPagePatch14}
-\pastebutton{ugLangAssignPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{x\free{swap }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPagePatch15}
-\begin{paste}{ugLangAssignPageFull15}{ugLangAssignPageEmpty15}
-\pastebutton{ugLangAssignPageFull15}{\hidepaste}
-\tab{5}\spadcommand{y\free{swap }}
-\indentrel{3}\begin{verbatim}
-   (15)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangAssignPageEmpty15}
-\begin{paste}{ugLangAssignPageEmpty15}{ugLangAssignPagePatch15}
-\pastebutton{ugLangAssignPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{y\free{swap }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch1}
-\begin{paste}{ugLangLoopsParPageFull1}{ugLangLoopsParPageEmpty1}
-\pastebutton{ugLangLoopsParPageFull1}{\hidepaste}
-\tab{5}\spadcommand{l := [1,3,5,7]\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,3,5,7]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty1}
-\begin{paste}{ugLangLoopsParPageEmpty1}{ugLangLoopsParPagePatch1}
-\pastebutton{ugLangLoopsParPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{l := [1,3,5,7]\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch2}
-\begin{paste}{ugLangLoopsParPageFull2}{ugLangLoopsParPageEmpty2}
-\pastebutton{ugLangLoopsParPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := [100,200]\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (2)  [100,200]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty2}
-\begin{paste}{ugLangLoopsParPageEmpty2}{ugLangLoopsParPagePatch2}
-\pastebutton{ugLangLoopsParPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := [100,200]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch3}
-\begin{paste}{ugLangLoopsParPageFull3}{ugLangLoopsParPageEmpty3}
-\pastebutton{ugLangLoopsParPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sum := 0\bound{sum }}
-\indentrel{3}\begin{verbatim}
-   (3)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty3}
-\begin{paste}{ugLangLoopsParPageEmpty3}{ugLangLoopsParPagePatch3}
-\pastebutton{ugLangLoopsParPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sum := 0\bound{sum }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch4}
-\begin{paste}{ugLangLoopsParPageFull4}{ugLangLoopsParPageEmpty4}
-\pastebutton{ugLangLoopsParPageFull4}{\hidepaste}
-\tab{5}\spadcommand{for x in l for y in m repeat
-    sum := sum + x*y
-\bound{doit }\free{sum l m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty4}
-\begin{paste}{ugLangLoopsParPageEmpty4}{ugLangLoopsParPagePatch4}
-\pastebutton{ugLangLoopsParPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{for x in l for y in m repeat
-    sum := sum + x*y
-\bound{doit }\free{sum l m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch5}
-\begin{paste}{ugLangLoopsParPageFull5}{ugLangLoopsParPageEmpty5}
-\pastebutton{ugLangLoopsParPageFull5}{\hidepaste}
-\tab{5}\spadcommand{sum\free{doit }}
-\indentrel{3}\begin{verbatim}
-   (5)  700
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty5}
-\begin{paste}{ugLangLoopsParPageEmpty5}{ugLangLoopsParPagePatch5}
-\pastebutton{ugLangLoopsParPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sum\free{doit }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch6}
-\begin{paste}{ugLangLoopsParPageFull6}{ugLangLoopsParPageEmpty6}
-\pastebutton{ugLangLoopsParPageFull6}{\hidepaste}
-\tab{5}\spadcommand{l := [2,3,5,7,11,13,17,19,23,29,31,37]\bound{l1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [2,3,5,7,11,13,17,19,23,29,31,37]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty6}
-\begin{paste}{ugLangLoopsParPageEmpty6}{ugLangLoopsParPagePatch6}
-\pastebutton{ugLangLoopsParPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{l := [2,3,5,7,11,13,17,19,23,29,31,37]\bound{l1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch7}
-\begin{paste}{ugLangLoopsParPageFull7}{ugLangLoopsParPageEmpty7}
-\pastebutton{ugLangLoopsParPageFull7}{\hidepaste}
-\tab{5}\spadcommand{sum := 0\bound{sum1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty7}
-\begin{paste}{ugLangLoopsParPageEmpty7}{ugLangLoopsParPagePatch7}
-\pastebutton{ugLangLoopsParPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{sum := 0\bound{sum1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch8}
-\begin{paste}{ugLangLoopsParPageFull8}{ugLangLoopsParPageEmpty8}
-\pastebutton{ugLangLoopsParPageFull8}{\hidepaste}
-\tab{5}\spadcommand{for i in 0.. for x in l repeat sum := i * x\bound{doit1 }\free{sum1 l1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty8}
-\begin{paste}{ugLangLoopsParPageEmpty8}{ugLangLoopsParPagePatch8}
-\pastebutton{ugLangLoopsParPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{for i in 0.. for x in l repeat sum := i * x\bound{doit1 }\free{sum1 l1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch9}
-\begin{paste}{ugLangLoopsParPageFull9}{ugLangLoopsParPageEmpty9}
-\pastebutton{ugLangLoopsParPageFull9}{\hidepaste}
-\tab{5}\spadcommand{sum\free{doit1 }}
-\indentrel{3}\begin{verbatim}
-   (9)  407
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty9}
-\begin{paste}{ugLangLoopsParPageEmpty9}{ugLangLoopsParPagePatch9}
-\pastebutton{ugLangLoopsParPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{sum\free{doit1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPagePatch10}
-\begin{paste}{ugLangLoopsParPageFull10}{ugLangLoopsParPageEmpty10}
-\pastebutton{ugLangLoopsParPageFull10}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..10
-    for j in 151..160 | odd? j
-      while i + j < 160 repeat
-        output [i,j]
-}
-\indentrel{3}\begin{verbatim}
-   [1,151]
-   [3,153]
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsParPageEmpty10}
-\begin{paste}{ugLangLoopsParPageEmpty10}{ugLangLoopsParPagePatch10}
-\pastebutton{ugLangLoopsParPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{for i in 1..10
-    for j in 151..160 | odd? j
-      while i + j < 160 repeat
-        output [i,j]
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPagePatch1}
-\begin{paste}{ugLangLoopsBreakPageFull1}{ugLangLoopsBreakPageEmpty1}
-\pastebutton{ugLangLoopsBreakPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then break
-    i := i + 1
-  i
-\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPageEmpty1}
-\begin{paste}{ugLangLoopsBreakPageEmpty1}{ugLangLoopsBreakPagePatch1}
-\pastebutton{ugLangLoopsBreakPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f() ==
-  i := 1
-  repeat
-    if factorial(i) > 1000 then break
-    i := i + 1
-  i
-\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPagePatch2}
-\begin{paste}{ugLangLoopsBreakPageFull2}{ugLangLoopsBreakPageEmpty2}
-\pastebutton{ugLangLoopsBreakPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f()\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  7
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPageEmpty2}
-\begin{paste}{ugLangLoopsBreakPageEmpty2}{ugLangLoopsBreakPagePatch2}
-\pastebutton{ugLangLoopsBreakPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f()\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPagePatch3}
-\begin{paste}{ugLangLoopsBreakPageFull3}{ugLangLoopsBreakPageEmpty3}
-\pastebutton{ugLangLoopsBreakPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(i,j) := (1, 1)\bound{i }\bound{j }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPageEmpty3}
-\begin{paste}{ugLangLoopsBreakPageEmpty3}{ugLangLoopsBreakPagePatch3}
-\pastebutton{ugLangLoopsBreakPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(i,j) := (1, 1)\bound{i }\bound{j }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPagePatch4}
-\begin{paste}{ugLangLoopsBreakPageFull4}{ugLangLoopsBreakPageEmpty4}
-\pastebutton{ugLangLoopsBreakPageFull4}{\hidepaste}
-\tab{5}\spadcommand{repeat
-  repeat
-    if (i + j) > 10 then break
-    j := j + 1
-  if (i + j) > 10 then break
-  i := i + 1
-\free{i j }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugLangLoopsBreakPageEmpty4}
-\begin{paste}{ugLangLoopsBreakPageEmpty4}{ugLangLoopsBreakPagePatch4}
-\pastebutton{ugLangLoopsBreakPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{repeat
-  repeat
-    if (i + j) > 10 then break
-    j := j + 1
-  if (i + j) > 10 then break
-  i := i + 1
-\free{i j }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug06.pht b/books/pages/ug06.pht
deleted file mode 100644
index aa3e0a7..0000000
--- a/books/pages/ug06.pht
+++ /dev/null
@@ -1,4063 +0,0 @@
-\begin{patch}{ugUserAnonDeclarePagePatch1}
-\begin{paste}{ugUserAnonDeclarePageFull1}{ugUserAnonDeclarePageEmpty1}
-\pastebutton{ugUserAnonDeclarePageFull1}{\hidepaste}
-\tab{5}\spadcommand{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-\indentrel{3}\begin{verbatim}
-   (1)  theMap(NIL)
-          Type: ((Integer,Integer) -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty1}
-\begin{paste}{ugUserAnonDeclarePageEmpty1}{ugUserAnonDeclarePagePatch1}
-\pastebutton{ugUserAnonDeclarePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch2}
-\begin{paste}{ugUserAnonDeclarePageFull2}{ugUserAnonDeclarePageEmpty2}
-\pastebutton{ugUserAnonDeclarePageFull2}{\hidepaste}
-\tab{5}\spadcommand{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
-\indentrel{3}\begin{verbatim}
-   (2)  theMap(NIL)
-          Type: ((Integer,Integer) -> Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty2}
-\begin{paste}{ugUserAnonDeclarePageEmpty2}{ugUserAnonDeclarePagePatch2}
-\pastebutton{ugUserAnonDeclarePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(x: INT,y: INT) +-> (x + 2*y)/(y - 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch3}
-\begin{paste}{ugUserAnonDeclarePageFull3}{ugUserAnonDeclarePageEmpty3}
-\pastebutton{ugUserAnonDeclarePageFull3}{\hidepaste}
-\tab{5}\spadcommand{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty3}
-\begin{paste}{ugUserAnonDeclarePageEmpty3}{ugUserAnonDeclarePagePatch3}
-\pastebutton{ugUserAnonDeclarePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{h(x: INT,y: INT): FRAC INT == (x + 2*y)/(y - 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch4}
-\begin{paste}{ugUserAnonDeclarePageFull4}{ugUserAnonDeclarePageEmpty4}
-\pastebutton{ugUserAnonDeclarePageFull4}{\hidepaste}
-\tab{5}\spadcommand{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty4}
-\begin{paste}{ugUserAnonDeclarePageEmpty4}{ugUserAnonDeclarePagePatch4}
-\pastebutton{ugUserAnonDeclarePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{h == (x: INT,y: INT): FRAC INT +-> (x + 2*y)/(y - 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch5}
-\begin{paste}{ugUserAnonDeclarePageFull5}{ugUserAnonDeclarePageEmpty5}
-\pastebutton{ugUserAnonDeclarePageFull5}{\hidepaste}
-\tab{5}\spadcommand{addx x == ((y: Integer): Integer +-> x + y)\bound{addx }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty5}
-\begin{paste}{ugUserAnonDeclarePageEmpty5}{ugUserAnonDeclarePagePatch5}
-\pastebutton{ugUserAnonDeclarePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{addx x == ((y: Integer): Integer +-> x + y)\bound{addx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch6}
-\begin{paste}{ugUserAnonDeclarePageFull6}{ugUserAnonDeclarePageEmpty6}
-\pastebutton{ugUserAnonDeclarePageFull6}{\hidepaste}
-\tab{5}\spadcommand{g := addx 10\free{addx }\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (6)  theMap(LAMBDA_f647nv_704,826)
-                             Type: (Integer -> Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty6}
-\begin{paste}{ugUserAnonDeclarePageEmpty6}{ugUserAnonDeclarePagePatch6}
-\pastebutton{ugUserAnonDeclarePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{g := addx 10\free{addx }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch7}
-\begin{paste}{ugUserAnonDeclarePageFull7}{ugUserAnonDeclarePageEmpty7}
-\pastebutton{ugUserAnonDeclarePageFull7}{\hidepaste}
-\tab{5}\spadcommand{g 3\free{g }}
-\indentrel{3}\begin{verbatim}
-   (7)  13
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty7}
-\begin{paste}{ugUserAnonDeclarePageEmpty7}{ugUserAnonDeclarePagePatch7}
-\pastebutton{ugUserAnonDeclarePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g 3\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePagePatch8}
-\begin{paste}{ugUserAnonDeclarePageFull8}{ugUserAnonDeclarePageEmpty8}
-\pastebutton{ugUserAnonDeclarePageFull8}{\hidepaste}
-\tab{5}\spadcommand{g(-4)\free{g }}
-\indentrel{3}\begin{verbatim}
-   (8)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonDeclarePageEmpty8}
-\begin{paste}{ugUserAnonDeclarePageEmpty8}{ugUserAnonDeclarePagePatch8}
-\pastebutton{ugUserAnonDeclarePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g(-4)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch1}
-\begin{paste}{ugUserPiecePickingPageFull1}{ugUserPiecePickingPageEmpty1}
-\pastebutton{ugUserPiecePickingPageFull1}{\hidepaste}
-\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty1}
-\begin{paste}{ugUserPiecePickingPageEmpty1}{ugUserPiecePickingPagePatch1}
-\pastebutton{ugUserPiecePickingPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch2}
-\begin{paste}{ugUserPiecePickingPageFull2}{ugUserPiecePickingPageEmpty2}
-\pastebutton{ugUserPiecePickingPageFull2}{\hidepaste}
-\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty2}
-\begin{paste}{ugUserPiecePickingPageEmpty2}{ugUserPiecePickingPagePatch2}
-\pastebutton{ugUserPiecePickingPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch3}
-\begin{paste}{ugUserPiecePickingPageFull3}{ugUserPiecePickingPageEmpty3}
-\pastebutton{ugUserPiecePickingPageFull3}{\hidepaste}
-\tab{5}\spadcommand{minusEleven(n) ==
-  n >= 0 => n - 11
-  minusEleven (5 + minusEleven(n + 7))
-\bound{rf1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty3}
-\begin{paste}{ugUserPiecePickingPageEmpty3}{ugUserPiecePickingPagePatch3}
-\pastebutton{ugUserPiecePickingPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{minusEleven(n) ==
-  n >= 0 => n - 11
-  minusEleven (5 + minusEleven(n + 7))
-\bound{rf1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch4}
-\begin{paste}{ugUserPiecePickingPageFull4}{ugUserPiecePickingPageEmpty4}
-\pastebutton{ugUserPiecePickingPageFull4}{\hidepaste}
-\tab{5}\spadcommand{s(0) == 1\bound{rf2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty4}
-\begin{paste}{ugUserPiecePickingPageEmpty4}{ugUserPiecePickingPagePatch4}
-\pastebutton{ugUserPiecePickingPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{s(0) == 1\bound{rf2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch5}
-\begin{paste}{ugUserPiecePickingPageFull5}{ugUserPiecePickingPageEmpty5}
-\pastebutton{ugUserPiecePickingPageFull5}{\hidepaste}
-\tab{5}\spadcommand{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3 }\free{rf2 rf1 ff1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty5}
-\begin{paste}{ugUserPiecePickingPageEmpty5}{ugUserPiecePickingPagePatch5}
-\pastebutton{ugUserPiecePickingPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{s(n) == (eleven(n) + minusEleven(n))/n\bound{rf3 }\free{rf2 rf1 ff1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch6}
-\begin{paste}{ugUserPiecePickingPageFull6}{ugUserPiecePickingPageEmpty6}
-\pastebutton{ugUserPiecePickingPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[s(n) for n in 0..]\free{rf3 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,1,1,1,1,1,1,1,1,1,...]
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty6}
-\begin{paste}{ugUserPiecePickingPageEmpty6}{ugUserPiecePickingPagePatch6}
-\pastebutton{ugUserPiecePickingPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[s(n) for n in 0..]\free{rf3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch7}
-\begin{paste}{ugUserPiecePickingPageFull7}{ugUserPiecePickingPageEmpty7}
-\pastebutton{ugUserPiecePickingPageFull7}{\hidepaste}
-\tab{5}\spadcommand{t(1) == s(0)\bound{t1 }\free{rf4 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty7}
-\begin{paste}{ugUserPiecePickingPageEmpty7}{ugUserPiecePickingPagePatch7}
-\pastebutton{ugUserPiecePickingPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{t(1) == s(0)\bound{t1 }\free{rf4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch8}
-\begin{paste}{ugUserPiecePickingPageFull8}{ugUserPiecePickingPageEmpty8}
-\pastebutton{ugUserPiecePickingPageFull8}{\hidepaste}
-\tab{5}\spadcommand{t(n | even?(n)) == s(n quo 2)\free{t1 }\bound{t2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty8}
-\begin{paste}{ugUserPiecePickingPageEmpty8}{ugUserPiecePickingPagePatch8}
-\pastebutton{ugUserPiecePickingPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{t(n | even?(n)) == s(n quo 2)\free{t1 }\bound{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch9}
-\begin{paste}{ugUserPiecePickingPageFull9}{ugUserPiecePickingPageEmpty9}
-\pastebutton{ugUserPiecePickingPageFull9}{\hidepaste}
-\tab{5}\spadcommand{t(p) == s(- p quo 2)\free{t2 }\bound{t3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty9}
-\begin{paste}{ugUserPiecePickingPageEmpty9}{ugUserPiecePickingPagePatch9}
-\pastebutton{ugUserPiecePickingPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{t(p) == s(- p quo 2)\free{t2 }\bound{t3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch10}
-\begin{paste}{ugUserPiecePickingPageFull10}{ugUserPiecePickingPageEmpty10}
-\pastebutton{ugUserPiecePickingPageFull10}{\hidepaste}
-\tab{5}\spadcommand{)display value t\free{t2 }}
-\indentrel{3}\begin{verbatim}
-   Definition:
-     t 1 == s(0)
-     t (p | even?(p)) == s(p quo 2)
-     t p == s(- p quo 2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty10}
-\begin{paste}{ugUserPiecePickingPageEmpty10}{ugUserPiecePickingPagePatch10}
-\pastebutton{ugUserPiecePickingPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{)display value t\free{t2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch11}
-\begin{paste}{ugUserPiecePickingPageFull11}{ugUserPiecePickingPageEmpty11}
-\pastebutton{ugUserPiecePickingPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[t(i) for i in 1..]\free{t3 }\bound{t4 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [1,1,1,1,1,1,1,1,1,1,...]
-                          Type: Stream Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty11}
-\begin{paste}{ugUserPiecePickingPageEmpty11}{ugUserPiecePickingPagePatch11}
-\pastebutton{ugUserPiecePickingPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[t(i) for i in 1..]\free{t3 }\bound{t4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPagePatch12}
-\begin{paste}{ugUserPiecePickingPageFull12}{ugUserPiecePickingPageEmpty12}
-\pastebutton{ugUserPiecePickingPageFull12}{\hidepaste}
-\tab{5}\spadcommand{t(100)\free{t4 }}
-\indentrel{3}\begin{verbatim}
-   (11)  1
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePickingPageEmpty12}
-\begin{paste}{ugUserPiecePickingPageEmpty12}{ugUserPiecePickingPagePatch12}
-\pastebutton{ugUserPiecePickingPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{t(100)\free{t4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch1}
-\begin{paste}{ugUserPalPageFull1}{ugUserPalPageEmpty1}
-\pastebutton{ugUserPalPageFull1}{\hidepaste}
-\tab{5}\spadcommand{pal? s == palAux?(s,1,\#s)\bound{pal }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty1}
-\begin{paste}{ugUserPalPageEmpty1}{ugUserPalPagePatch1}
-\pastebutton{ugUserPalPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{pal? s == palAux?(s,1,\#s)\bound{pal }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch2}
-\begin{paste}{ugUserPalPageFull2}{ugUserPalPageEmpty2}
-\pastebutton{ugUserPalPageFull2}{\hidepaste}
-\tab{5}\spadcommand{palAux?(s,i,j) ==
-  j > i =>
-    (s.i = s.j) and palAux?(s,i+1,i-1)
-  true
-\bound{palAux }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty2}
-\begin{paste}{ugUserPalPageEmpty2}{ugUserPalPagePatch2}
-\pastebutton{ugUserPalPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{palAux?(s,i,j) ==
-  j > i =>
-    (s.i = s.j) and palAux?(s,i+1,i-1)
-  true
-\bound{palAux }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch3}
-\begin{paste}{ugUserPalPageFull3}{ugUserPalPageEmpty3}
-\pastebutton{ugUserPalPageFull3}{\hidepaste}
-\tab{5}\spadcommand{pal? "Oxford"\free{pal palAux }}
-\indentrel{3}\begin{verbatim}
-   (3)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty3}
-\begin{paste}{ugUserPalPageEmpty3}{ugUserPalPagePatch3}
-\pastebutton{ugUserPalPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{pal? "Oxford"\free{pal palAux }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch4}
-\begin{paste}{ugUserPalPageFull4}{ugUserPalPageEmpty4}
-\pastebutton{ugUserPalPageFull4}{\hidepaste}
-\tab{5}\spadcommand{pal? [4,a,x-1,0,x-1,a,4]\free{pal palAux }}
-\indentrel{3}\begin{verbatim}
-   (4)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty4}
-\begin{paste}{ugUserPalPageEmpty4}{ugUserPalPagePatch4}
-\pastebutton{ugUserPalPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{pal? [4,a,x-1,0,x-1,a,4]\free{pal palAux }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch5}
-\begin{paste}{ugUserPalPageFull5}{ugUserPalPageEmpty5}
-\pastebutton{ugUserPalPageFull5}{\hidepaste}
-\tab{5}\spadcommand{pal? [1,6,15,20,15,6,1]\free{pal palAux }}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty5}
-\begin{paste}{ugUserPalPageEmpty5}{ugUserPalPagePatch5}
-\pastebutton{ugUserPalPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{pal? [1,6,15,20,15,6,1]\free{pal palAux }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch6}
-\begin{paste}{ugUserPalPageFull6}{ugUserPalPageEmpty6}
-\pastebutton{ugUserPalPageFull6}{\hidepaste}
-\tab{5}\spadcommand{pal?(1441::String)\free{pal palAux }}
-\indentrel{3}\begin{verbatim}
-   (6)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty6}
-\begin{paste}{ugUserPalPageEmpty6}{ugUserPalPagePatch6}
-\pastebutton{ugUserPalPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{pal?(1441::String)\free{pal palAux }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch7}
-\begin{paste}{ugUserPalPageFull7}{ugUserPalPageEmpty7}
-\pastebutton{ugUserPalPageFull7}{\hidepaste}
-\tab{5}\spadcommand{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux }\bound{pal5 }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   [11, 111, 1111, 11111, 111111, 1111111, 11111111,
-    111111111, 1111111111, 11111111111, ...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty7}
-\begin{paste}{ugUserPalPageEmpty7}{ugUserPalPagePatch7}
-\pastebutton{ugUserPalPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{ones := [reduce(+,[10**j for j in 0..i]) for i in 1..]\free{pal palAux }\bound{pal5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch8}
-\begin{paste}{ugUserPalPageFull8}{ugUserPalPageEmpty8}
-\pastebutton{ugUserPalPageFull8}{\hidepaste}
-\tab{5}\spadcommand{squares := [x**2 for x in ones]\free{pal5 }\bound{pal6 }}
-\indentrel{3}\begin{verbatim}
-   (8)
-   [121, 12321, 1234321, 123454321, 12345654321,
-    1234567654321, 123456787654321, 12345678987654321,
-    1234567900987654321, 123456790120987654321, ...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty8}
-\begin{paste}{ugUserPalPageEmpty8}{ugUserPalPagePatch8}
-\pastebutton{ugUserPalPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{squares := [x**2 for x in ones]\free{pal5 }\bound{pal6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPagePatch9}
-\begin{paste}{ugUserPalPageFull9}{ugUserPalPageEmpty9}
-\pastebutton{ugUserPalPageFull9}{\hidepaste}
-\tab{5}\spadcommand{[pal?(x::String) for x in squares]\free{pal6 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [true,true,true,true,true,true,true,true,true,true,...]
-                                   Type: Stream Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPalPageEmpty9}
-\begin{paste}{ugUserPalPageEmpty9}{ugUserPalPagePatch9}
-\pastebutton{ugUserPalPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{[pal?(x::String) for x in squares]\free{pal6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch1}
-\begin{paste}{ugUserOnePageFull1}{ugUserOnePageEmpty1}
-\pastebutton{ugUserOnePageFull1}{\hidepaste}
-\tab{5}\spadcommand{fac n == if n < 3 then n else n * fac(n-1)\bound{fac }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty1}
-\begin{paste}{ugUserOnePageEmpty1}{ugUserOnePagePatch1}
-\pastebutton{ugUserOnePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{fac n == if n < 3 then n else n * fac(n-1)\bound{fac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch2}
-\begin{paste}{ugUserOnePageFull2}{ugUserOnePageEmpty2}
-\pastebutton{ugUserOnePageFull2}{\hidepaste}
-\tab{5}\spadcommand{fac 10\free{fac }}
-\indentrel{3}\begin{verbatim}
-   (2)  3628800
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty2}
-\begin{paste}{ugUserOnePageEmpty2}{ugUserOnePagePatch2}
-\pastebutton{ugUserOnePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fac 10\free{fac }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch3}
-\begin{paste}{ugUserOnePageFull3}{ugUserOnePageEmpty3}
-\pastebutton{ugUserOnePageFull3}{\hidepaste}
-\tab{5}\spadcommand{s n == reduce(+,[1/i for i in 1..n])\bound{s }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty3}
-\begin{paste}{ugUserOnePageEmpty3}{ugUserOnePagePatch3}
-\pastebutton{ugUserOnePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{s n == reduce(+,[1/i for i in 1..n])\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch4}
-\begin{paste}{ugUserOnePageFull4}{ugUserOnePageEmpty4}
-\pastebutton{ugUserOnePageFull4}{\hidepaste}
-\tab{5}\spadcommand{s 50\free{s }}
-\indentrel{3}\begin{verbatim}
-        13943237577224054960759
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-         3099044504245996706400
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty4}
-\begin{paste}{ugUserOnePageEmpty4}{ugUserOnePagePatch4}
-\pastebutton{ugUserOnePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{s 50\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch5}
-\begin{paste}{ugUserOnePageFull5}{ugUserOnePageEmpty5}
-\pastebutton{ugUserOnePageFull5}{\hidepaste}
-\tab{5}\spadcommand{mersenne i == 2**i - 1\bound{mersenne }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty5}
-\begin{paste}{ugUserOnePageEmpty5}{ugUserOnePagePatch5}
-\pastebutton{ugUserOnePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{mersenne i == 2**i - 1\bound{mersenne }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch6}
-\begin{paste}{ugUserOnePageFull6}{ugUserOnePageEmpty6}
-\pastebutton{ugUserOnePageFull6}{\hidepaste}
-\tab{5}\spadcommand{mersenne\free{mersenne }}
-\indentrel{3}\begin{verbatim}
-                       i
-   (6)  mersenne i == 2  - 1
-                          Type: FunctionCalled mersenne
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty6}
-\begin{paste}{ugUserOnePageEmpty6}{ugUserOnePagePatch6}
-\pastebutton{ugUserOnePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{mersenne\free{mersenne }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch7}
-\begin{paste}{ugUserOnePageFull7}{ugUserOnePageEmpty7}
-\pastebutton{ugUserOnePageFull7}{\hidepaste}
-\tab{5}\spadcommand{[mersenne i for i in 1..]\free{mersenne }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1,3,7,15,31,63,127,255,511,1023,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty7}
-\begin{paste}{ugUserOnePageEmpty7}{ugUserOnePagePatch7}
-\pastebutton{ugUserOnePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{[mersenne i for i in 1..]\free{mersenne }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch8}
-\begin{paste}{ugUserOnePageFull8}{ugUserOnePageEmpty8}
-\pastebutton{ugUserOnePageFull8}{\hidepaste}
-\tab{5}\spadcommand{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]\bound{mersenneIndex }\free{mersenne }}
-\indentrel{3}\begin{verbatim}
-   (8)  [2,3,5,7,13,17,19,31,61,89,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty8}
-\begin{paste}{ugUserOnePageEmpty8}{ugUserOnePagePatch8}
-\pastebutton{ugUserOnePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{mersenneIndex := [n for n in 1.. | prime?(mersenne(n))]\bound{mersenneIndex }\free{mersenne }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch9}
-\begin{paste}{ugUserOnePageFull9}{ugUserOnePageEmpty9}
-\pastebutton{ugUserOnePageFull9}{\hidepaste}
-\tab{5}\spadcommand{mersennePrime n == mersenne mersenneIndex(n)\free{mersenne mersenneIndex }\bound{mersennePrime }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty9}
-\begin{paste}{ugUserOnePageEmpty9}{ugUserOnePagePatch9}
-\pastebutton{ugUserOnePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{mersennePrime n == mersenne mersenneIndex(n)\free{mersenne mersenneIndex }\bound{mersennePrime }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePagePatch10}
-\begin{paste}{ugUserOnePageFull10}{ugUserOnePageEmpty10}
-\pastebutton{ugUserOnePageFull10}{\hidepaste}
-\tab{5}\spadcommand{mersennePrime 5\free{mersennePrime }}
-\indentrel{3}\begin{verbatim}
-   (10)  8191
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserOnePageEmpty10}
-\begin{paste}{ugUserOnePageEmpty10}{ugUserOnePagePatch10}
-\pastebutton{ugUserOnePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{mersennePrime 5\free{mersennePrime }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch1}
-\begin{paste}{ugUserUsePageFull1}{ugUserUsePageEmpty1}
-\pastebutton{ugUserUsePageFull1}{\hidepaste}
-\tab{5}\spadcommand{sin x == 1.0\bound{sin }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty1}
-\begin{paste}{ugUserUsePageEmpty1}{ugUserUsePagePatch1}
-\pastebutton{ugUserUsePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{sin x == 1.0\bound{sin }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch2}
-\begin{paste}{ugUserUsePageFull2}{ugUserUsePageEmpty2}
-\pastebutton{ugUserUsePageFull2}{\hidepaste}
-\tab{5}\spadcommand{sin 4.3\free{sin }}
-\indentrel{3}\begin{verbatim}
-   (2)  1.0
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty2}
-\begin{paste}{ugUserUsePageEmpty2}{ugUserUsePagePatch2}
-\pastebutton{ugUserUsePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sin 4.3\free{sin }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch3}
-\begin{paste}{ugUserUsePageFull3}{ugUserUsePageEmpty3}
-\pastebutton{ugUserUsePageFull3}{\hidepaste}
-\tab{5}\spadcommand{sin(4.3)$Float}
-\indentrel{3}\begin{verbatim}
-   (3)  - 0.9161659367 4945498404
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty3}
-\begin{paste}{ugUserUsePageEmpty3}{ugUserUsePagePatch3}
-\pastebutton{ugUserUsePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sin(4.3)$Float}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch4}
-\begin{paste}{ugUserUsePageFull4}{ugUserUsePageEmpty4}
-\pastebutton{ugUserUsePageFull4}{\hidepaste}
-\tab{5}\spadcommand{sin(34.6)$Float}
-\indentrel{3}\begin{verbatim}
-   (4)  - 0.0424680347 1695010154 3
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty4}
-\begin{paste}{ugUserUsePageEmpty4}{ugUserUsePagePatch4}
-\pastebutton{ugUserUsePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sin(34.6)$Float}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch5}
-\begin{paste}{ugUserUsePageFull5}{ugUserUsePageEmpty5}
-\pastebutton{ugUserUsePageFull5}{\hidepaste}
-\tab{5}\spadcommand{sin x == sin x\bound{sin1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty5}
-\begin{paste}{ugUserUsePageEmpty5}{ugUserUsePagePatch5}
-\pastebutton{ugUserUsePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sin x == sin x\bound{sin1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch6}
-\begin{paste}{ugUserUsePageFull6}{ugUserUsePageEmpty6}
-\pastebutton{ugUserUsePageFull6}{\hidepaste}
-\tab{5}\spadcommand{sin 4.3\free{sin1 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty6}
-\begin{paste}{ugUserUsePageEmpty6}{ugUserUsePagePatch6}
-\pastebutton{ugUserUsePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{sin 4.3\free{sin1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch7}
-\begin{paste}{ugUserUsePageFull7}{ugUserUsePageEmpty7}
-\pastebutton{ugUserUsePageFull7}{\hidepaste}
-\tab{5}\spadcommand{sin x == sin(x)$Float\bound{sin2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty7}
-\begin{paste}{ugUserUsePageEmpty7}{ugUserUsePagePatch7}
-\pastebutton{ugUserUsePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{sin x == sin(x)$Float\bound{sin2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePagePatch8}
-\begin{paste}{ugUserUsePageFull8}{ugUserUsePageEmpty8}
-\pastebutton{ugUserUsePageFull8}{\hidepaste}
-\tab{5}\spadcommand{sin 4.3\free{sin2 }}
-\indentrel{3}\begin{verbatim}
-   (7)  - 0.9161659367 4945498404
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserUsePageEmpty8}
-\begin{paste}{ugUserUsePageEmpty8}{ugUserUsePagePatch8}
-\pastebutton{ugUserUsePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{sin 4.3\free{sin2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch1}
-\begin{paste}{ugUserMakePageFull1}{ugUserMakePageEmpty1}
-\pastebutton{ugUserMakePageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := -x + y**2 - z**3\bound{p }}
-\indentrel{3}\begin{verbatim}
-           3    2
-   (1)  - z  + y  - x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty1}
-\begin{paste}{ugUserMakePageEmpty1}{ugUserMakePagePatch1}
-\pastebutton{ugUserMakePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := -x + y**2 - z**3\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch2}
-\begin{paste}{ugUserMakePageFull2}{ugUserMakePageEmpty2}
-\pastebutton{ugUserMakePageFull2}{\hidepaste}
-\tab{5}\spadcommand{function(p,'f0)\free{p }\bound{f0 }}
-\indentrel{3}\begin{verbatim}
-   (2)  f0
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty2}
-\begin{paste}{ugUserMakePageEmpty2}{ugUserMakePagePatch2}
-\pastebutton{ugUserMakePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{function(p,'f0)\free{p }\bound{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch3}
-\begin{paste}{ugUserMakePageFull3}{ugUserMakePageEmpty3}
-\pastebutton{ugUserMakePageFull3}{\hidepaste}
-\tab{5}\spadcommand{f0\free{f0 }}
-\indentrel{3}\begin{verbatim}
-                    3    2
-   (3)  f0 () == - z  + y  - x
-                                Type: FunctionCalled f0
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty3}
-\begin{paste}{ugUserMakePageEmpty3}{ugUserMakePagePatch3}
-\pastebutton{ugUserMakePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f0\free{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch4}
-\begin{paste}{ugUserMakePageFull4}{ugUserMakePageEmpty4}
-\pastebutton{ugUserMakePageFull4}{\hidepaste}
-\tab{5}\spadcommand{f0()\free{f0 }}
-\indentrel{3}\begin{verbatim}
-           3    2
-   (4)  - z  + y  - x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty4}
-\begin{paste}{ugUserMakePageEmpty4}{ugUserMakePagePatch4}
-\pastebutton{ugUserMakePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f0()\free{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch5}
-\begin{paste}{ugUserMakePageFull5}{ugUserMakePageEmpty5}
-\pastebutton{ugUserMakePageFull5}{\hidepaste}
-\tab{5}\spadcommand{function(p,'f1,'x)\free{p }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  f1
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty5}
-\begin{paste}{ugUserMakePageEmpty5}{ugUserMakePagePatch5}
-\pastebutton{ugUserMakePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{function(p,'f1,'x)\free{p }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch6}
-\begin{paste}{ugUserMakePageFull6}{ugUserMakePageEmpty6}
-\pastebutton{ugUserMakePageFull6}{\hidepaste}
-\tab{5}\spadcommand{f1\free{f1 }}
-\indentrel{3}\begin{verbatim}
-                   3    2
-   (6)  f1 x == - z  + y  - x
-                                Type: FunctionCalled f1
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty6}
-\begin{paste}{ugUserMakePageEmpty6}{ugUserMakePagePatch6}
-\pastebutton{ugUserMakePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{f1\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch7}
-\begin{paste}{ugUserMakePageFull7}{ugUserMakePageEmpty7}
-\pastebutton{ugUserMakePageFull7}{\hidepaste}
-\tab{5}\spadcommand{f1(3)\free{f1 }}
-\indentrel{3}\begin{verbatim}
-           3    2
-   (7)  - z  + y  - 3
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty7}
-\begin{paste}{ugUserMakePageEmpty7}{ugUserMakePagePatch7}
-\pastebutton{ugUserMakePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{f1(3)\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch8}
-\begin{paste}{ugUserMakePageFull8}{ugUserMakePageEmpty8}
-\pastebutton{ugUserMakePageFull8}{\hidepaste}
-\tab{5}\spadcommand{function(p,'f2,'x,'y)\free{p }\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-   (8)  f2
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty8}
-\begin{paste}{ugUserMakePageEmpty8}{ugUserMakePagePatch8}
-\pastebutton{ugUserMakePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{function(p,'f2,'x,'y)\free{p }\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch9}
-\begin{paste}{ugUserMakePageFull9}{ugUserMakePageEmpty9}
-\pastebutton{ugUserMakePageFull9}{\hidepaste}
-\tab{5}\spadcommand{f2\free{f2 }}
-\indentrel{3}\begin{verbatim}
-                       3    2
-   (9)  f2 (x,y) == - z  + y  - x
-                                Type: FunctionCalled f2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty9}
-\begin{paste}{ugUserMakePageEmpty9}{ugUserMakePagePatch9}
-\pastebutton{ugUserMakePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f2\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch10}
-\begin{paste}{ugUserMakePageFull10}{ugUserMakePageEmpty10}
-\pastebutton{ugUserMakePageFull10}{\hidepaste}
-\tab{5}\spadcommand{f2(3,0)\free{f2 }}
-\indentrel{3}\begin{verbatim}
-            3
-   (10)  - z  - 3
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty10}
-\begin{paste}{ugUserMakePageEmpty10}{ugUserMakePagePatch10}
-\pastebutton{ugUserMakePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{f2(3,0)\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch11}
-\begin{paste}{ugUserMakePageFull11}{ugUserMakePageEmpty11}
-\pastebutton{ugUserMakePageFull11}{\hidepaste}
-\tab{5}\spadcommand{function(p,'f3,['x,'y,'z])\free{p }\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-   (11)  f3
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty11}
-\begin{paste}{ugUserMakePageEmpty11}{ugUserMakePagePatch11}
-\pastebutton{ugUserMakePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{function(p,'f3,['x,'y,'z])\free{p }\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch12}
-\begin{paste}{ugUserMakePageFull12}{ugUserMakePageEmpty12}
-\pastebutton{ugUserMakePageFull12}{\hidepaste}
-\tab{5}\spadcommand{f3\free{f3 }}
-\indentrel{3}\begin{verbatim}
-                          3    2
-   (12)  f3 (x,y,z) == - z  + y  - x
-                                Type: FunctionCalled f3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty12}
-\begin{paste}{ugUserMakePageEmpty12}{ugUserMakePagePatch12}
-\pastebutton{ugUserMakePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{f3\free{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch13}
-\begin{paste}{ugUserMakePageFull13}{ugUserMakePageEmpty13}
-\pastebutton{ugUserMakePageFull13}{\hidepaste}
-\tab{5}\spadcommand{f3(3,0,-6)\free{f3 }}
-\indentrel{3}\begin{verbatim}
-   (13)  213
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty13}
-\begin{paste}{ugUserMakePageEmpty13}{ugUserMakePagePatch13}
-\pastebutton{ugUserMakePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{f3(3,0,-6)\free{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch14}
-\begin{paste}{ugUserMakePageFull14}{ugUserMakePageEmpty14}
-\pastebutton{ugUserMakePageFull14}{\hidepaste}
-\tab{5}\spadcommand{g: (Integer, Integer) -> Float\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty14}
-\begin{paste}{ugUserMakePageEmpty14}{ugUserMakePagePatch14}
-\pastebutton{ugUserMakePageEmpty14}{\showpaste}
-\tab{5}\spadcommand{g: (Integer, Integer) -> Float\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch15}
-\begin{paste}{ugUserMakePageFull15}{ugUserMakePageEmpty15}
-\pastebutton{ugUserMakePageFull15}{\hidepaste}
-\tab{5}\spadcommand{D(sin(x-y)/cos(x+y),x)\bound{prev }}
-\indentrel{3}\begin{verbatim}
-         - sin(y - x)sin(y + x) + cos(y - x)cos(y + x)
-   (15)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                                    2
-                          cos(y + x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty15}
-\begin{paste}{ugUserMakePageEmpty15}{ugUserMakePagePatch15}
-\pastebutton{ugUserMakePageEmpty15}{\showpaste}
-\tab{5}\spadcommand{D(sin(x-y)/cos(x+y),x)\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch16}
-\begin{paste}{ugUserMakePageFull16}{ugUserMakePageEmpty16}
-\pastebutton{ugUserMakePageFull16}{\hidepaste}
-\tab{5}\spadcommand{function(\%,'g,'x,'y)\free{g }\free{prev }}
-\indentrel{3}\begin{verbatim}
-   (16)  g
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty16}
-\begin{paste}{ugUserMakePageEmpty16}{ugUserMakePagePatch16}
-\pastebutton{ugUserMakePageEmpty16}{\showpaste}
-\tab{5}\spadcommand{function(\%,'g,'x,'y)\free{g }\free{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePagePatch17}
-\begin{paste}{ugUserMakePageFull17}{ugUserMakePageEmpty17}
-\pastebutton{ugUserMakePageFull17}{\hidepaste}
-\tab{5}\spadcommand{g\free{g }}
-\indentrel{3}\begin{verbatim}
-   (17)
-   g (x,y) ==
-     - sin(y - x)sin(y + x) + cos(y - x)cos(y + x)
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                                2
-                      cos(y + x)
-                                 Type: FunctionCalled g
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMakePageEmpty17}
-\begin{paste}{ugUserMakePageEmpty17}{ugUserMakePagePatch17}
-\pastebutton{ugUserMakePageEmpty17}{\showpaste}
-\tab{5}\spadcommand{g\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch1}
-\begin{paste}{ugUserCachePageFull1}{ugUserCachePageEmpty1}
-\pastebutton{ugUserCachePageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set functions cache 3 f g\bound{cache }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty1}
-\begin{paste}{ugUserCachePageEmpty1}{ugUserCachePagePatch1}
-\pastebutton{ugUserCachePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set functions cache 3 f g\bound{cache }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch2}
-\begin{paste}{ugUserCachePageFull2}{ugUserCachePageEmpty2}
-\pastebutton{ugUserCachePageFull2}{\hidepaste}
-\tab{5}\spadcommand{f x == factorial(2**x)\bound{fdef }\free{cache }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty2}
-\begin{paste}{ugUserCachePageEmpty2}{ugUserCachePagePatch2}
-\pastebutton{ugUserCachePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f x == factorial(2**x)\bound{fdef }\free{cache }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch3}
-\begin{paste}{ugUserCachePageFull3}{ugUserCachePageEmpty3}
-\pastebutton{ugUserCachePageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(4)\free{}\free{cache }}
-\indentrel{3}\begin{verbatim}
-   (2)  20922789888000
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty3}
-\begin{paste}{ugUserCachePageEmpty3}{ugUserCachePagePatch3}
-\pastebutton{ugUserCachePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(4)\free{}\free{cache }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch4}
-\begin{paste}{ugUserCachePageFull4}{ugUserCachePageEmpty4}
-\pastebutton{ugUserCachePageFull4}{\hidepaste}
-\tab{5}\spadcommand{)set functions cache all}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty4}
-\begin{paste}{ugUserCachePageEmpty4}{ugUserCachePagePatch4}
-\pastebutton{ugUserCachePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)set functions cache all}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch5}
-\begin{paste}{ugUserCachePageFull5}{ugUserCachePageEmpty5}
-\pastebutton{ugUserCachePageFull5}{\hidepaste}
-\tab{5}\spadcommand{)set functions cache 0}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty5}
-\begin{paste}{ugUserCachePageEmpty5}{ugUserCachePagePatch5}
-\pastebutton{ugUserCachePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)set functions cache 0}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePagePatch6}
-\begin{paste}{ugUserCachePageFull6}{ugUserCachePageEmpty6}
-\pastebutton{ugUserCachePageFull6}{\hidepaste}
-\tab{5}\spadcommand{)set functions cache 0 f g}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCachePageEmpty6}
-\begin{paste}{ugUserCachePageEmpty6}{ugUserCachePagePatch6}
-\pastebutton{ugUserCachePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{)set functions cache 0 f g}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPagePatch1}
-\begin{paste}{ugUserDelayPageFull1}{ugUserDelayPageEmpty1}
-\pastebutton{ugUserDelayPageFull1}{\hidepaste}
-\tab{5}\spadcommand{sin24() == sin(24.0)\bound{sin24 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPageEmpty1}
-\begin{paste}{ugUserDelayPageEmpty1}{ugUserDelayPagePatch1}
-\pastebutton{ugUserDelayPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{sin24() == sin(24.0)\bound{sin24 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPagePatch2}
-\begin{paste}{ugUserDelayPageFull2}{ugUserDelayPageEmpty2}
-\pastebutton{ugUserDelayPageFull2}{\hidepaste}
-\tab{5}\spadcommand{sin24()\free{sin24 }}
-\indentrel{3}\begin{verbatim}
-   (2)  - 0.9055783620 0662384514
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPageEmpty2}
-\begin{paste}{ugUserDelayPageEmpty2}{ugUserDelayPagePatch2}
-\pastebutton{ugUserDelayPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sin24()\free{sin24 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPagePatch3}
-\begin{paste}{ugUserDelayPageFull3}{ugUserDelayPageEmpty3}
-\pastebutton{ugUserDelayPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sin24\free{sin24 }}
-\indentrel{3}\begin{verbatim}
-   (3)  sin24 () == sin(24.0)
-                             Type: FunctionCalled sin24
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPageEmpty3}
-\begin{paste}{ugUserDelayPageEmpty3}{ugUserDelayPagePatch3}
-\pastebutton{ugUserDelayPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sin24\free{sin24 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPagePatch4}
-\begin{paste}{ugUserDelayPageFull4}{ugUserDelayPageEmpty4}
-\pastebutton{ugUserDelayPageFull4}{\hidepaste}
-\tab{5}\spadcommand{cos24 == cos(24.0)\bound{cos24 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPageEmpty4}
-\begin{paste}{ugUserDelayPageEmpty4}{ugUserDelayPagePatch4}
-\pastebutton{ugUserDelayPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{cos24 == cos(24.0)\bound{cos24 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPagePatch5}
-\begin{paste}{ugUserDelayPageFull5}{ugUserDelayPageEmpty5}
-\pastebutton{ugUserDelayPageFull5}{\hidepaste}
-\tab{5}\spadcommand{cos24\free{cos24 }}
-\indentrel{3}\begin{verbatim}
-   (5)  0.4241790073 3699697594
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDelayPageEmpty5}
-\begin{paste}{ugUserDelayPageEmpty5}{ugUserDelayPagePatch5}
-\pastebutton{ugUserDelayPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{cos24\free{cos24 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch1}
-\begin{paste}{ugUserRecurPageFull1}{ugUserRecurPageEmpty1}
-\pastebutton{ugUserRecurPageFull1}{\hidepaste}
-\tab{5}\spadcommand{[fibonacci(i) for i in 0..]}
-\indentrel{3}\begin{verbatim}
-   (1)  [0,1,1,2,3,5,8,13,21,34,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty1}
-\begin{paste}{ugUserRecurPageEmpty1}{ugUserRecurPagePatch1}
-\pastebutton{ugUserRecurPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{[fibonacci(i) for i in 0..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch2}
-\begin{paste}{ugUserRecurPageFull2}{ugUserRecurPageEmpty2}
-\pastebutton{ugUserRecurPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fib(1) == 1\bound{fib0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty2}
-\begin{paste}{ugUserRecurPageEmpty2}{ugUserRecurPagePatch2}
-\pastebutton{ugUserRecurPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fib(1) == 1\bound{fib0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch3}
-\begin{paste}{ugUserRecurPageFull3}{ugUserRecurPageEmpty3}
-\pastebutton{ugUserRecurPageFull3}{\hidepaste}
-\tab{5}\spadcommand{fib(2) == 1\bound{fib1 }\free{fib0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty3}
-\begin{paste}{ugUserRecurPageEmpty3}{ugUserRecurPagePatch3}
-\pastebutton{ugUserRecurPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{fib(2) == 1\bound{fib1 }\free{fib0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch4}
-\begin{paste}{ugUserRecurPageFull4}{ugUserRecurPageEmpty4}
-\pastebutton{ugUserRecurPageFull4}{\hidepaste}
-\tab{5}\spadcommand{fib(n) == fib(n-1) + fib(n-2)\bound{fibn }\free{fib1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty4}
-\begin{paste}{ugUserRecurPageEmpty4}{ugUserRecurPagePatch4}
-\pastebutton{ugUserRecurPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{fib(n) == fib(n-1) + fib(n-2)\bound{fibn }\free{fib1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch5}
-\begin{paste}{ugUserRecurPageFull5}{ugUserRecurPageEmpty5}
-\pastebutton{ugUserRecurPageFull5}{\hidepaste}
-\tab{5}\spadcommand{fib(500)\free{fibn }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  139423224561697880139724382870407283950070256587697307_
-   264108962948325571622863290691557658876222521294125
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty5}
-\begin{paste}{ugUserRecurPageEmpty5}{ugUserRecurPagePatch5}
-\pastebutton{ugUserRecurPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{fib(500)\free{fibn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch6}
-\begin{paste}{ugUserRecurPageFull6}{ugUserRecurPageEmpty6}
-\pastebutton{ugUserRecurPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p(0) == 1\bound{p0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty6}
-\begin{paste}{ugUserRecurPageEmpty6}{ugUserRecurPagePatch6}
-\pastebutton{ugUserRecurPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p(0) == 1\bound{p0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch7}
-\begin{paste}{ugUserRecurPageFull7}{ugUserRecurPageEmpty7}
-\pastebutton{ugUserRecurPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p(1) == x\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty7}
-\begin{paste}{ugUserRecurPageEmpty7}{ugUserRecurPagePatch7}
-\pastebutton{ugUserRecurPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p(1) == x\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch8}
-\begin{paste}{ugUserRecurPageFull8}{ugUserRecurPageEmpty8}
-\pastebutton{ugUserRecurPageFull8}{\hidepaste}
-\tab{5}\spadcommand{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn }\free{p1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty8}
-\begin{paste}{ugUserRecurPageEmpty8}{ugUserRecurPagePatch8}
-\pastebutton{ugUserRecurPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p(n) == ((2*n-1)*x*p(n-1) - (n-1)*p(n-2))/n\bound{pn }\free{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPagePatch9}
-\begin{paste}{ugUserRecurPageFull9}{ugUserRecurPageEmpty9}
-\pastebutton{ugUserRecurPageFull9}{\hidepaste}
-\tab{5}\spadcommand{p(6)\free{pn }}
-\indentrel{3}\begin{verbatim}
-        231  6   315  4   105  2    5
-   (9)  ÄÄÄ x  - ÄÄÄ x  + ÄÄÄ x  - ÄÄ
-         16       16       16      16
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRecurPageEmpty9}
-\begin{paste}{ugUserRecurPageEmpty9}{ugUserRecurPagePatch9}
-\pastebutton{ugUserRecurPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p(6)\free{pn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch1}
-\begin{paste}{ugUserRulesPageFull1}{ugUserRulesPageEmpty1}
-\pastebutton{ugUserRulesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{logrule := rule log(x) + log(y) == log(x * y)\bound{logrule }}
-\indentrel{3}\begin{verbatim}
-   (1)  log(y) + log(x) + %B == log(x y) + %B
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty1}
-\begin{paste}{ugUserRulesPageEmpty1}{ugUserRulesPagePatch1}
-\pastebutton{ugUserRulesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{logrule := rule log(x) + log(y) == log(x * y)\bound{logrule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch2}
-\begin{paste}{ugUserRulesPageFull2}{ugUserRulesPageEmpty2}
-\pastebutton{ugUserRulesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := log sin x + log x\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (2)  log(sin(x)) + log(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty2}
-\begin{paste}{ugUserRulesPageEmpty2}{ugUserRulesPagePatch2}
-\pastebutton{ugUserRulesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := log sin x + log x\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch3}
-\begin{paste}{ugUserRulesPageFull3}{ugUserRulesPageEmpty3}
-\pastebutton{ugUserRulesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{logrule f\free{f }\free{logrule }}
-\indentrel{3}\begin{verbatim}
-   (3)  log(x sin(x))
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty3}
-\begin{paste}{ugUserRulesPageEmpty3}{ugUserRulesPagePatch3}
-\pastebutton{ugUserRulesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{logrule f\free{f }\free{logrule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch4}
-\begin{paste}{ugUserRulesPageFull4}{ugUserRulesPageEmpty4}
-\pastebutton{ugUserRulesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{logrules := rule
-  log(x) + log(y) == log(x * y)
-  y * log x       == log(x ** y)
-\bound{logrules }}
-\indentrel{3}\begin{verbatim}
-   (4)
-   {log(y) + log(x) + %C == log(x y) + %C,
-                     y
-    y log(x) == log(x )}
-      Type: Ruleset(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty4}
-\begin{paste}{ugUserRulesPageEmpty4}{ugUserRulesPagePatch4}
-\pastebutton{ugUserRulesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{logrules := rule
-  log(x) + log(y) == log(x * y)
-  y * log x       == log(x ** y)
-\bound{logrules }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch5}
-\begin{paste}{ugUserRulesPageFull5}{ugUserRulesPageEmpty5}
-\pastebutton{ugUserRulesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f := a * log(sin x) - 2 * log x\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (5)  a log(sin(x)) - 2log(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty5}
-\begin{paste}{ugUserRulesPageEmpty5}{ugUserRulesPagePatch5}
-\pastebutton{ugUserRulesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f := a * log(sin x) - 2 * log x\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch6}
-\begin{paste}{ugUserRulesPageFull6}{ugUserRulesPageEmpty6}
-\pastebutton{ugUserRulesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{logrules f\free{f1 }\free{logrules }}
-\indentrel{3}\begin{verbatim}
-                  a
-            sin(x)
-   (6)  log(ÄÄÄÄÄÄÄ)
-                2
-               x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty6}
-\begin{paste}{ugUserRulesPageEmpty6}{ugUserRulesPagePatch6}
-\pastebutton{ugUserRulesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{logrules f\free{f1 }\free{logrules }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch7}
-\begin{paste}{ugUserRulesPageFull7}{ugUserRulesPageEmpty7}
-\pastebutton{ugUserRulesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{logrules2 := rule
-  log(x) + log(y)          == log(x * y)
-  (y | integer? y) * log x == log(x ** y)
-\bound{logrules2 }}
-\indentrel{3}\begin{verbatim}
-   (7)
-   {log(y) + log(x) + %E == log(x y) + %E,
-                     y
-    y log(x) == log(x )}
-      Type: Ruleset(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty7}
-\begin{paste}{ugUserRulesPageEmpty7}{ugUserRulesPagePatch7}
-\pastebutton{ugUserRulesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{logrules2 := rule
-  log(x) + log(y)          == log(x * y)
-  (y | integer? y) * log x == log(x ** y)
-\bound{logrules2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch8}
-\begin{paste}{ugUserRulesPageFull8}{ugUserRulesPageEmpty8}
-\pastebutton{ugUserRulesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{f\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (8)  a log(sin(x)) - 2log(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty8}
-\begin{paste}{ugUserRulesPageEmpty8}{ugUserRulesPagePatch8}
-\pastebutton{ugUserRulesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{f\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch9}
-\begin{paste}{ugUserRulesPageFull9}{ugUserRulesPageEmpty9}
-\pastebutton{ugUserRulesPageFull9}{\hidepaste}
-\tab{5}\spadcommand{logrules2 f\free{f1 }\free{logrules2 }}
-\indentrel{3}\begin{verbatim}
-                             1
-   (9)  a log(sin(x)) + log(ÄÄ)
-                             2
-                            x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty9}
-\begin{paste}{ugUserRulesPageEmpty9}{ugUserRulesPagePatch9}
-\pastebutton{ugUserRulesPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{logrules2 f\free{f1 }\free{logrules2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch10}
-\begin{paste}{ugUserRulesPageFull10}{ugUserRulesPageEmpty10}
-\pastebutton{ugUserRulesPageFull10}{\hidepaste}
-\tab{5}\spadcommand{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)\bound{evenRule }}
-\indentrel{3}\begin{verbatim}
-                                   n
-                                   Ä
-               n             2     2
-   (10)  cos(x)  == (- sin(x)  + 1)
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty10}
-\begin{paste}{ugUserRulesPageEmpty10}{ugUserRulesPagePatch10}
-\pastebutton{ugUserRulesPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{evenRule := rule cos(x)**(n | integer? n and even? integer n)==(1-sin(x)**2)**(n/2)\bound{evenRule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch11}
-\begin{paste}{ugUserRulesPageFull11}{ugUserRulesPageEmpty11}
-\pastebutton{ugUserRulesPageFull11}{\hidepaste}
-\tab{5}\spadcommand{evenRule( cos(x)**2 )\free{evenRule }}
-\indentrel{3}\begin{verbatim}
-                 2
-   (11)  - sin(x)  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty11}
-\begin{paste}{ugUserRulesPageEmpty11}{ugUserRulesPagePatch11}
-\pastebutton{ugUserRulesPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{evenRule( cos(x)**2 )\free{evenRule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch12}
-\begin{paste}{ugUserRulesPageFull12}{ugUserRulesPageEmpty12}
-\pastebutton{ugUserRulesPageFull12}{\hidepaste}
-\tab{5}\spadcommand{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
-\bound{sinCosProducts }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty12}
-\begin{paste}{ugUserRulesPageEmpty12}{ugUserRulesPagePatch12}
-\pastebutton{ugUserRulesPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{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
-\bound{sinCosProducts }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch13}
-\begin{paste}{ugUserRulesPageFull13}{ugUserRulesPageEmpty13}
-\pastebutton{ugUserRulesPageFull13}{\hidepaste}
-\tab{5}\spadcommand{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)\bound{g }}
-\indentrel{3}\begin{verbatim}
-   (13)  sin(a)sin(b) + cos(2a)sin(2a) + cos(a)cos(b)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty13}
-\begin{paste}{ugUserRulesPageEmpty13}{ugUserRulesPagePatch13}
-\pastebutton{ugUserRulesPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{g := sin(a)*sin(b) + cos(b)*cos(a) + sin(2*a)*cos(2*a)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch14}
-\begin{paste}{ugUserRulesPageFull14}{ugUserRulesPageEmpty14}
-\pastebutton{ugUserRulesPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sinCosProducts g\free{sinCosProducts g }}
-\indentrel{3}\begin{verbatim}
-         sin(4a) + 2cos(b - a)
-   (14)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty14}
-\begin{paste}{ugUserRulesPageEmpty14}{ugUserRulesPagePatch14}
-\pastebutton{ugUserRulesPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sinCosProducts g\free{sinCosProducts g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch15}
-\begin{paste}{ugUserRulesPageFull15}{ugUserRulesPageEmpty15}
-\pastebutton{ugUserRulesPageFull15}{\hidepaste}
-\tab{5}\spadcommand{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule }}
-\indentrel{3}\begin{verbatim}
-           b + a      a  b
-   (15)  %e      == %e %e
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty15}
-\begin{paste}{ugUserRulesPageEmpty15}{ugUserRulesPagePatch15}
-\pastebutton{ugUserRulesPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{exprule := rule exp(a + b) == exp(a) * exp(b)\bound{exprule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch16}
-\begin{paste}{ugUserRulesPageFull16}{ugUserRulesPageEmpty16}
-\pastebutton{ugUserRulesPageFull16}{\hidepaste}
-\tab{5}\spadcommand{exprule exp x\free{exprule }}
-\indentrel{3}\begin{verbatim}
-           x
-   (16)  %e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty16}
-\begin{paste}{ugUserRulesPageEmpty16}{ugUserRulesPagePatch16}
-\pastebutton{ugUserRulesPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{exprule exp x\free{exprule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch17}
-\begin{paste}{ugUserRulesPageFull17}{ugUserRulesPageEmpty17}
-\pastebutton{ugUserRulesPageFull17}{\hidepaste}
-\tab{5}\spadcommand{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x\bound{eirule }}
-\indentrel{3}\begin{verbatim}
-            x   %N
-          Ú¿  %e   + y                   y
-   (17)   ³   ÄÄÄÄÄÄÄÄ d%N  == 'integral(Ä,x) + 'Ei(x)
-         ÀÙ      %N                      x
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty17}
-\begin{paste}{ugUserRulesPageEmpty17}{ugUserRulesPagePatch17}
-\pastebutton{ugUserRulesPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{eirule := rule integral((?y + exp x)/x,x) == integral(y/x,x) + Ei x\bound{eirule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch18}
-\begin{paste}{ugUserRulesPageFull18}{ugUserRulesPageEmpty18}
-\pastebutton{ugUserRulesPageFull18}{\hidepaste}
-\tab{5}\spadcommand{eirule integral(exp u/u, u)\free{eirule }}
-\indentrel{3}\begin{verbatim}
-   (18)  Ei(u)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty18}
-\begin{paste}{ugUserRulesPageEmpty18}{ugUserRulesPagePatch18}
-\pastebutton{ugUserRulesPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{eirule integral(exp u/u, u)\free{eirule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch19}
-\begin{paste}{ugUserRulesPageFull19}{ugUserRulesPageEmpty19}
-\pastebutton{ugUserRulesPageFull19}{\hidepaste}
-\tab{5}\spadcommand{eirule integral(sin u + exp u/u, u)\free{eirule }}
-\indentrel{3}\begin{verbatim}
-            u
-          Ú¿
-   (19)   ³   sin(%N)d%N  + Ei(u)
-         ÀÙ
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty19}
-\begin{paste}{ugUserRulesPageEmpty19}{ugUserRulesPagePatch19}
-\pastebutton{ugUserRulesPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{eirule integral(sin u + exp u/u, u)\free{eirule }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch20}
-\begin{paste}{ugUserRulesPageFull20}{ugUserRulesPageEmpty20}
-\pastebutton{ugUserRulesPageFull20}{\hidepaste}
-\tab{5}\spadcommand{u := operator 'u\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (20)  u
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty20}
-\begin{paste}{ugUserRulesPageEmpty20}{ugUserRulesPagePatch20}
-\pastebutton{ugUserRulesPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{u := operator 'u\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch21}
-\begin{paste}{ugUserRulesPageFull21}{ugUserRulesPageEmpty21}
-\pastebutton{ugUserRulesPageFull21}{\hidepaste}
-\tab{5}\spadcommand{v := operator 'v\bound{v }}
-\indentrel{3}\begin{verbatim}
-   (21)  v
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty21}
-\begin{paste}{ugUserRulesPageEmpty21}{ugUserRulesPagePatch21}
-\pastebutton{ugUserRulesPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{v := operator 'v\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch22}
-\begin{paste}{ugUserRulesPageFull22}{ugUserRulesPageEmpty22}
-\pastebutton{ugUserRulesPageFull22}{\hidepaste}
-\tab{5}\spadcommand{myRule := rule u(x + y) == u x + v y\free{u v }\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (22)  u(y + x) == 'v(y) + 'u(x)
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty22}
-\begin{paste}{ugUserRulesPageEmpty22}{ugUserRulesPagePatch22}
-\pastebutton{ugUserRulesPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{myRule := rule u(x + y) == u x + v y\free{u v }\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch23}
-\begin{paste}{ugUserRulesPageFull23}{ugUserRulesPageEmpty23}
-\pastebutton{ugUserRulesPageFull23}{\hidepaste}
-\tab{5}\spadcommand{myRule u(a + b + c + d)\free{m }}
-\indentrel{3}\begin{verbatim}
-   (23)  v(d + c + b) + u(a)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty23}
-\begin{paste}{ugUserRulesPageEmpty23}{ugUserRulesPagePatch23}
-\pastebutton{ugUserRulesPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{myRule u(a + b + c + d)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch24}
-\begin{paste}{ugUserRulesPageFull24}{ugUserRulesPageEmpty24}
-\pastebutton{ugUserRulesPageFull24}{\hidepaste}
-\tab{5}\spadcommand{myOtherRule := rule u(:x + y) == u x + v y\free{u v }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-   (24)  u(y + x) == 'v(y) + 'u(x)
-  Type: RewriteRule(Integer,Integer,Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty24}
-\begin{paste}{ugUserRulesPageEmpty24}{ugUserRulesPagePatch24}
-\pastebutton{ugUserRulesPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{myOtherRule := rule u(:x + y) == u x + v y\free{u v }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPagePatch25}
-\begin{paste}{ugUserRulesPageFull25}{ugUserRulesPageEmpty25}
-\pastebutton{ugUserRulesPageFull25}{\hidepaste}
-\tab{5}\spadcommand{myOtherRule u(a + b + c + d)\free{m2 }}
-\indentrel{3}\begin{verbatim}
-   (25)  v(c) + v(b) + v(a) + u(d)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserRulesPageEmpty25}
-\begin{paste}{ugUserRulesPageEmpty25}{ugUserRulesPagePatch25}
-\pastebutton{ugUserRulesPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{myOtherRule u(a + b + c + d)\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPagePatch1}
-\begin{paste}{ugUserIntroPageFull1}{ugUserIntroPageEmpty1}
-\pastebutton{ugUserIntroPageFull1}{\hidepaste}
-\tab{5}\spadcommand{factor(12)}
-\indentrel{3}\begin{verbatim}
-         2
-   (1)  2 3
-                                 Type: Factored Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPageEmpty1}
-\begin{paste}{ugUserIntroPageEmpty1}{ugUserIntroPagePatch1}
-\pastebutton{ugUserIntroPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{factor(12)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPagePatch2}
-\begin{paste}{ugUserIntroPageFull2}{ugUserIntroPageEmpty2}
-\pastebutton{ugUserIntroPageFull2}{\hidepaste}
-\tab{5}\spadcommand{3 + 4}
-\indentrel{3}\begin{verbatim}
-   (2)  7
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPageEmpty2}
-\begin{paste}{ugUserIntroPageEmpty2}{ugUserIntroPagePatch2}
-\pastebutton{ugUserIntroPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{3 + 4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPagePatch3}
-\begin{paste}{ugUserIntroPageFull3}{ugUserIntroPageEmpty3}
-\pastebutton{ugUserIntroPageFull3}{\hidepaste}
-\tab{5}\spadcommand{1 + 2 + 7}
-\indentrel{3}\begin{verbatim}
-   (3)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserIntroPageEmpty3}
-\begin{paste}{ugUserIntroPageEmpty3}{ugUserIntroPagePatch3}
-\pastebutton{ugUserIntroPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{1 + 2 + 7}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFunMacPagePatch1}
-\begin{paste}{ugUserFunMacPageFull1}{ugUserFunMacPageEmpty1}
-\pastebutton{ugUserFunMacPageFull1}{\hidepaste}
-\tab{5}\spadcommand{abs(-8)}
-\indentrel{3}\begin{verbatim}
-   (1)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFunMacPageEmpty1}
-\begin{paste}{ugUserFunMacPageEmpty1}{ugUserFunMacPagePatch1}
-\pastebutton{ugUserFunMacPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{abs(-8)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFunMacPagePatch2}
-\begin{paste}{ugUserFunMacPageFull2}{ugUserFunMacPageEmpty2}
-\pastebutton{ugUserFunMacPageFull2}{\hidepaste}
-\tab{5}\spadcommand{(x +-> if x < 0 then -x else x)(-8)}
-\indentrel{3}\begin{verbatim}
-   (2)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFunMacPageEmpty2}
-\begin{paste}{ugUserFunMacPageEmpty2}{ugUserFunMacPagePatch2}
-\pastebutton{ugUserFunMacPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(x +-> if x < 0 then -x else x)(-8)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch1}
-\begin{paste}{ugUserBlocksPageFull1}{ugUserBlocksPageEmpty1}
-\pastebutton{ugUserBlocksPageFull1}{\hidepaste}
-\tab{5}\spadcommand{swap(m,i,j) ==
-  temp := m.i
-  m.i := m.j
-  m.j := temp
-\bound{swap }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty1}
-\begin{paste}{ugUserBlocksPageEmpty1}{ugUserBlocksPagePatch1}
-\pastebutton{ugUserBlocksPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{swap(m,i,j) ==
-  temp := m.i
-  m.i := m.j
-  m.j := temp
-\bound{swap }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch2}
-\begin{paste}{ugUserBlocksPageFull2}{ugUserBlocksPageEmpty2}
-\pastebutton{ugUserBlocksPageFull2}{\hidepaste}
-\tab{5}\spadcommand{k := [1,2,3,4,5]\bound{k }}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3,4,5]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty2}
-\begin{paste}{ugUserBlocksPageEmpty2}{ugUserBlocksPagePatch2}
-\pastebutton{ugUserBlocksPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{k := [1,2,3,4,5]\bound{k }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch3}
-\begin{paste}{ugUserBlocksPageFull3}{ugUserBlocksPageEmpty3}
-\pastebutton{ugUserBlocksPageFull3}{\hidepaste}
-\tab{5}\spadcommand{swap(k,2,4)\free{l swap }\bound{swapk }}
-\indentrel{3}\begin{verbatim}
-   (3)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty3}
-\begin{paste}{ugUserBlocksPageEmpty3}{ugUserBlocksPagePatch3}
-\pastebutton{ugUserBlocksPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{swap(k,2,4)\free{l swap }\bound{swapk }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch4}
-\begin{paste}{ugUserBlocksPageFull4}{ugUserBlocksPageEmpty4}
-\pastebutton{ugUserBlocksPageFull4}{\hidepaste}
-\tab{5}\spadcommand{k\free{swapk }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1,4,3,2,5]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty4}
-\begin{paste}{ugUserBlocksPageEmpty4}{ugUserBlocksPagePatch4}
-\pastebutton{ugUserBlocksPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{k\free{swapk }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch5}
-\begin{paste}{ugUserBlocksPageFull5}{ugUserBlocksPageEmpty5}
-\pastebutton{ugUserBlocksPageFull5}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort(m) ==
-  n := \#m
-  for i in 1..(n-1) repeat
-    for j in n..(i+1) by -1 repeat
-      if m.j < m.(j-1) then swap(m,j,j-1)
-  m
-\bound{bubbleSort }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty5}
-\begin{paste}{ugUserBlocksPageEmpty5}{ugUserBlocksPagePatch5}
-\pastebutton{ugUserBlocksPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{bubbleSort(m) ==
-  n := \#m
-  for i in 1..(n-1) repeat
-    for j in n..(i+1) by -1 repeat
-      if m.j < m.(j-1) then swap(m,j,j-1)
-  m
-\bound{bubbleSort }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch6}
-\begin{paste}{ugUserBlocksPageFull6}{ugUserBlocksPageEmpty6}
-\pastebutton{ugUserBlocksPageFull6}{\hidepaste}
-\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (6)  [8,4,- 3,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty6}
-\begin{paste}{ugUserBlocksPageEmpty6}{ugUserBlocksPagePatch6}
-\pastebutton{ugUserBlocksPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch7}
-\begin{paste}{ugUserBlocksPageFull7}{ugUserBlocksPageEmpty7}
-\pastebutton{ugUserBlocksPageFull7}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort(m)\free{m swap bubbleSort }\bound{sortm }}
-\indentrel{3}\begin{verbatim}
-   (7)  [- 3,4,8,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty7}
-\begin{paste}{ugUserBlocksPageEmpty7}{ugUserBlocksPagePatch7}
-\pastebutton{ugUserBlocksPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{bubbleSort(m)\free{m swap bubbleSort }\bound{sortm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch8}
-\begin{paste}{ugUserBlocksPageFull8}{ugUserBlocksPageEmpty8}
-\pastebutton{ugUserBlocksPageFull8}{\hidepaste}
-\tab{5}\spadcommand{m\free{sortm }}
-\indentrel{3}\begin{verbatim}
-   (8)  [- 3,4,8,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty8}
-\begin{paste}{ugUserBlocksPageEmpty8}{ugUserBlocksPagePatch8}
-\pastebutton{ugUserBlocksPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{m\free{sortm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch9}
-\begin{paste}{ugUserBlocksPageFull9}{ugUserBlocksPageEmpty9}
-\pastebutton{ugUserBlocksPageFull9}{\hidepaste}
-\tab{5}\spadcommand{insertionSort(m) ==
-  for i in 2..\#m repeat
-    j := i
-    while j > 1 and m.j < m.(j-1) repeat
-      swap(m,j,j-1)
-      j := j - 1
-  m
-\bound{insertionSort }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty9}
-\begin{paste}{ugUserBlocksPageEmpty9}{ugUserBlocksPagePatch9}
-\pastebutton{ugUserBlocksPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{insertionSort(m) ==
-  for i in 2..\#m repeat
-    j := i
-    while j > 1 and m.j < m.(j-1) repeat
-      swap(m,j,j-1)
-      j := j - 1
-  m
-\bound{insertionSort }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch10}
-\begin{paste}{ugUserBlocksPageFull10}{ugUserBlocksPageEmpty10}
-\pastebutton{ugUserBlocksPageFull10}{\hidepaste}
-\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [8,4,- 3,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty10}
-\begin{paste}{ugUserBlocksPageEmpty10}{ugUserBlocksPagePatch10}
-\pastebutton{ugUserBlocksPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m := [8,4,-3,9]\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch11}
-\begin{paste}{ugUserBlocksPageFull11}{ugUserBlocksPageEmpty11}
-\pastebutton{ugUserBlocksPageFull11}{\hidepaste}
-\tab{5}\spadcommand{insertionSort(m)\free{m1 swap insertionSort }\bound{sortm1 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [- 3,4,8,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty11}
-\begin{paste}{ugUserBlocksPageEmpty11}{ugUserBlocksPagePatch11}
-\pastebutton{ugUserBlocksPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{insertionSort(m)\free{m1 swap insertionSort }\bound{sortm1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch12}
-\begin{paste}{ugUserBlocksPageFull12}{ugUserBlocksPageEmpty12}
-\pastebutton{ugUserBlocksPageFull12}{\hidepaste}
-\tab{5}\spadcommand{m\free{sortm1 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [- 3,4,8,9]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty12}
-\begin{paste}{ugUserBlocksPageEmpty12}{ugUserBlocksPagePatch12}
-\pastebutton{ugUserBlocksPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{m\free{sortm1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch13}
-\begin{paste}{ugUserBlocksPageFull13}{ugUserBlocksPageEmpty13}
-\pastebutton{ugUserBlocksPageFull13}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort2(m: List Integer): List Integer ==
-  null m => m
-  l := m
-  while not null (r := l.rest) repeat
-     r := bubbleSort2 r
-     x := l.first
-     if x < r.first then
-       l.first := r.first
-       r.first := x
-     l.rest := r
-     l := l.rest
-  m
-\bound{bubbleSort2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty13}
-\begin{paste}{ugUserBlocksPageEmpty13}{ugUserBlocksPagePatch13}
-\pastebutton{ugUserBlocksPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{bubbleSort2(m: List Integer): List Integer ==
-  null m => m
-  l := m
-  while not null (r := l.rest) repeat
-     r := bubbleSort2 r
-     x := l.first
-     if x < r.first then
-       l.first := r.first
-       r.first := x
-     l.rest := r
-     l := l.rest
-  m
-\bound{bubbleSort2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPagePatch14}
-\begin{paste}{ugUserBlocksPageFull14}{ugUserBlocksPageEmpty14}
-\pastebutton{ugUserBlocksPageFull14}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort2 [3,7,2]\free{bubbleSort2 }}
-\indentrel{3}\begin{verbatim}
-   (14)  [7,3,2]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserBlocksPageEmpty14}
-\begin{paste}{ugUserBlocksPageEmpty14}{ugUserBlocksPagePatch14}
-\pastebutton{ugUserBlocksPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{bubbleSort2 [3,7,2]\free{bubbleSort2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch1}
-\begin{paste}{ugUserMacrosPageFull1}{ugUserMacrosPageEmpty1}
-\pastebutton{ugUserMacrosPageFull1}{\hidepaste}
-\tab{5}\spadcommand{macro df == D\bound{df }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty1}
-\begin{paste}{ugUserMacrosPageEmpty1}{ugUserMacrosPagePatch1}
-\pastebutton{ugUserMacrosPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{macro df == D\bound{df }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch2}
-\begin{paste}{ugUserMacrosPageFull2}{ugUserMacrosPageEmpty2}
-\pastebutton{ugUserMacrosPageFull2}{\hidepaste}
-\tab{5}\spadcommand{df(x**2 + x + 1,x)\free{df }}
-\indentrel{3}\begin{verbatim}
-   (2)  2x + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty2}
-\begin{paste}{ugUserMacrosPageEmpty2}{ugUserMacrosPagePatch2}
-\pastebutton{ugUserMacrosPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{df(x**2 + x + 1,x)\free{df }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch3}
-\begin{paste}{ugUserMacrosPageFull3}{ugUserMacrosPageEmpty3}
-\pastebutton{ugUserMacrosPageFull3}{\hidepaste}
-\tab{5}\spadcommand{macro ff(x) == x**2 + 1\bound{ff }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty3}
-\begin{paste}{ugUserMacrosPageEmpty3}{ugUserMacrosPagePatch3}
-\pastebutton{ugUserMacrosPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{macro ff(x) == x**2 + 1\bound{ff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch4}
-\begin{paste}{ugUserMacrosPageFull4}{ugUserMacrosPageEmpty4}
-\pastebutton{ugUserMacrosPageFull4}{\hidepaste}
-\tab{5}\spadcommand{ff z\free{ff }}
-\indentrel{3}\begin{verbatim}
-         2
-   (4)  z  + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty4}
-\begin{paste}{ugUserMacrosPageEmpty4}{ugUserMacrosPagePatch4}
-\pastebutton{ugUserMacrosPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{ff z\free{ff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch5}
-\begin{paste}{ugUserMacrosPageFull5}{ugUserMacrosPageEmpty5}
-\pastebutton{ugUserMacrosPageFull5}{\hidepaste}
-\tab{5}\spadcommand{macro gg(x) == ff(2*x - 2/3)\bound{gg }\free{ff }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty5}
-\begin{paste}{ugUserMacrosPageEmpty5}{ugUserMacrosPagePatch5}
-\pastebutton{ugUserMacrosPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{macro gg(x) == ff(2*x - 2/3)\bound{gg }\free{ff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch6}
-\begin{paste}{ugUserMacrosPageFull6}{ugUserMacrosPageEmpty6}
-\pastebutton{ugUserMacrosPageFull6}{\hidepaste}
-\tab{5}\spadcommand{gg(1/w)\free{gg }}
-\indentrel{3}\begin{verbatim}
-           2
-        13w  - 24w + 36
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                2
-              9w
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty6}
-\begin{paste}{ugUserMacrosPageEmpty6}{ugUserMacrosPagePatch6}
-\pastebutton{ugUserMacrosPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{gg(1/w)\free{gg }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch7}
-\begin{paste}{ugUserMacrosPageFull7}{ugUserMacrosPageEmpty7}
-\pastebutton{ugUserMacrosPageFull7}{\hidepaste}
-\tab{5}\spadcommand{macro ff(x) == gg(-x)\free{gg }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty7}
-\begin{paste}{ugUserMacrosPageEmpty7}{ugUserMacrosPagePatch7}
-\pastebutton{ugUserMacrosPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{macro ff(x) == gg(-x)\free{gg }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch8}
-\begin{paste}{ugUserMacrosPageFull8}{ugUserMacrosPageEmpty8}
-\pastebutton{ugUserMacrosPageFull8}{\hidepaste}
-\tab{5}\spadcommand{macro next == (past := present; present := future; future := past + present)\bound{next }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty8}
-\begin{paste}{ugUserMacrosPageEmpty8}{ugUserMacrosPagePatch8}
-\pastebutton{ugUserMacrosPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{macro next == (past := present; present := future; future := past + present)\bound{next }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch9}
-\begin{paste}{ugUserMacrosPageFull9}{ugUserMacrosPageEmpty9}
-\pastebutton{ugUserMacrosPageFull9}{\hidepaste}
-\tab{5}\spadcommand{present : Integer := 0\bound{present }}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty9}
-\begin{paste}{ugUserMacrosPageEmpty9}{ugUserMacrosPagePatch9}
-\pastebutton{ugUserMacrosPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{present : Integer := 0\bound{present }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch10}
-\begin{paste}{ugUserMacrosPageFull10}{ugUserMacrosPageEmpty10}
-\pastebutton{ugUserMacrosPageFull10}{\hidepaste}
-\tab{5}\spadcommand{future : Integer := 1\bound{future }}
-\indentrel{3}\begin{verbatim}
-   (10)  1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty10}
-\begin{paste}{ugUserMacrosPageEmpty10}{ugUserMacrosPagePatch10}
-\pastebutton{ugUserMacrosPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{future : Integer := 1\bound{future }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch11}
-\begin{paste}{ugUserMacrosPageFull11}{ugUserMacrosPageEmpty11}
-\pastebutton{ugUserMacrosPageFull11}{\hidepaste}
-\tab{5}\spadcommand{next\free{future }\free{present }}
-\indentrel{3}\begin{verbatim}
-   (11)  1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty11}
-\begin{paste}{ugUserMacrosPageEmpty11}{ugUserMacrosPagePatch11}
-\pastebutton{ugUserMacrosPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{next\free{future }\free{present }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch12}
-\begin{paste}{ugUserMacrosPageFull12}{ugUserMacrosPageEmpty12}
-\pastebutton{ugUserMacrosPageFull12}{\hidepaste}
-\tab{5}\spadcommand{next\free{future }\free{present }}
-\indentrel{3}\begin{verbatim}
-   (12)  2
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty12}
-\begin{paste}{ugUserMacrosPageEmpty12}{ugUserMacrosPagePatch12}
-\pastebutton{ugUserMacrosPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{next\free{future }\free{present }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch13}
-\begin{paste}{ugUserMacrosPageFull13}{ugUserMacrosPageEmpty13}
-\pastebutton{ugUserMacrosPageFull13}{\hidepaste}
-\tab{5}\spadcommand{[next for i in 1..]\free{future }\free{present }}
-\indentrel{3}\begin{verbatim}
-   (13)  [3,5,8,13,21,34,55,89,144,233,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty13}
-\begin{paste}{ugUserMacrosPageEmpty13}{ugUserMacrosPagePatch13}
-\pastebutton{ugUserMacrosPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{[next for i in 1..]\free{future }\free{present }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch14}
-\begin{paste}{ugUserMacrosPageFull14}{ugUserMacrosPageEmpty14}
-\pastebutton{ugUserMacrosPageFull14}{\hidepaste}
-\tab{5}\spadcommand{macro fibStream ==
-  present : Integer := 1
-  future : Integer := 1
-  [next for i in 1..] where
-    macro next ==
-      past := present
-      present := future
-      future := past + present
-\bound{fibstr }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty14}
-\begin{paste}{ugUserMacrosPageEmpty14}{ugUserMacrosPagePatch14}
-\pastebutton{ugUserMacrosPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{macro fibStream ==
-  present : Integer := 1
-  future : Integer := 1
-  [next for i in 1..] where
-    macro next ==
-      past := present
-      present := future
-      future := past + present
-\bound{fibstr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch15}
-\begin{paste}{ugUserMacrosPageFull15}{ugUserMacrosPageEmpty15}
-\pastebutton{ugUserMacrosPageFull15}{\hidepaste}
-\tab{5}\spadcommand{concat([0,1],fibStream)\free{fibstr }}
-\indentrel{3}\begin{verbatim}
-   (15)  [0,1,2,3,5,8,13,21,34,55,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty15}
-\begin{paste}{ugUserMacrosPageEmpty15}{ugUserMacrosPagePatch15}
-\pastebutton{ugUserMacrosPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{concat([0,1],fibStream)\free{fibstr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPagePatch16}
-\begin{paste}{ugUserMacrosPageFull16}{ugUserMacrosPageEmpty16}
-\pastebutton{ugUserMacrosPageFull16}{\hidepaste}
-\tab{5}\spadcommand{[fibonacci i for i in 1..]}
-\indentrel{3}\begin{verbatim}
-   (16)  [1,1,2,3,5,8,13,21,34,55,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserMacrosPageEmpty16}
-\begin{paste}{ugUserMacrosPageEmpty16}{ugUserMacrosPagePatch16}
-\pastebutton{ugUserMacrosPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[fibonacci i for i in 1..]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePagePatch1}
-\begin{paste}{ugUserDeclarePageFull1}{ugUserDeclarePageEmpty1}
-\pastebutton{ugUserDeclarePageFull1}{\hidepaste}
-\tab{5}\spadcommand{g: (Integer,Float,Integer) -> String}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePageEmpty1}
-\begin{paste}{ugUserDeclarePageEmpty1}{ugUserDeclarePagePatch1}
-\pastebutton{ugUserDeclarePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{g: (Integer,Float,Integer) -> String}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePagePatch2}
-\begin{paste}{ugUserDeclarePageFull2}{ugUserDeclarePageEmpty2}
-\pastebutton{ugUserDeclarePageFull2}{\hidepaste}
-\tab{5}\spadcommand{g: (INT,FLOAT,INT) -> STRING}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePageEmpty2}
-\begin{paste}{ugUserDeclarePageEmpty2}{ugUserDeclarePagePatch2}
-\pastebutton{ugUserDeclarePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{g: (INT,FLOAT,INT) -> STRING}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePagePatch3}
-\begin{paste}{ugUserDeclarePageFull3}{ugUserDeclarePageEmpty3}
-\pastebutton{ugUserDeclarePageFull3}{\hidepaste}
-\tab{5}\spadcommand{h: () -> POLY INT}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePageEmpty3}
-\begin{paste}{ugUserDeclarePageEmpty3}{ugUserDeclarePagePatch3}
-\pastebutton{ugUserDeclarePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{h: () -> POLY INT}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePagePatch4}
-\begin{paste}{ugUserDeclarePageFull4}{ugUserDeclarePageEmpty4}
-\pastebutton{ugUserDeclarePageFull4}{\hidepaste}
-\tab{5}\spadcommand{h: () -> Polynomial INT}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePageEmpty4}
-\begin{paste}{ugUserDeclarePageEmpty4}{ugUserDeclarePagePatch4}
-\pastebutton{ugUserDeclarePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{h: () -> Polynomial INT}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePagePatch5}
-\begin{paste}{ugUserDeclarePageFull5}{ugUserDeclarePageEmpty5}
-\pastebutton{ugUserDeclarePageFull5}{\hidepaste}
-\tab{5}\spadcommand{h: () -> POLY Integer}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDeclarePageEmpty5}
-\begin{paste}{ugUserDeclarePageEmpty5}{ugUserDeclarePagePatch5}
-\pastebutton{ugUserDeclarePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{h: () -> POLY Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPagePatch1}
-\begin{paste}{ugUserCompIntPageFull1}{ugUserCompIntPageEmpty1}
-\pastebutton{ugUserCompIntPageFull1}{\hidepaste}
-\tab{5}\spadcommand{varPolys(vars) ==
-  for var in vars repeat
-    output(1 :: UnivariatePolynomial(var,Integer))
-\bound{varPolys }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPageEmpty1}
-\begin{paste}{ugUserCompIntPageEmpty1}{ugUserCompIntPagePatch1}
-\pastebutton{ugUserCompIntPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{varPolys(vars) ==
-  for var in vars repeat
-    output(1 :: UnivariatePolynomial(var,Integer))
-\bound{varPolys }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPagePatch2}
-\begin{paste}{ugUserCompIntPageFull2}{ugUserCompIntPageEmpty2}
-\pastebutton{ugUserCompIntPageFull2}{\hidepaste}
-\tab{5}\spadcommand{varPolys ['x,'y,'z]\free{varPolys }}
-\indentrel{3}\begin{verbatim}
-   1
-   1
-   1
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPageEmpty2}
-\begin{paste}{ugUserCompIntPageEmpty2}{ugUserCompIntPagePatch2}
-\pastebutton{ugUserCompIntPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{varPolys ['x,'y,'z]\free{varPolys }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPagePatch3}
-\begin{paste}{ugUserCompIntPageFull3}{ugUserCompIntPageEmpty3}
-\pastebutton{ugUserCompIntPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for var in ['x,'y,'z] repeat
-  output(1 :: UnivariatePolynomial(var,Integer))
-}
-\indentrel{3}\begin{verbatim}
-   1
-   1
-   1
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserCompIntPageEmpty3}
-\begin{paste}{ugUserCompIntPageEmpty3}{ugUserCompIntPagePatch3}
-\pastebutton{ugUserCompIntPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for var in ['x,'y,'z] repeat
-  output(1 :: UnivariatePolynomial(var,Integer))
-}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch1}
-\begin{paste}{ugUserDecUndecPageFull1}{ugUserDecUndecPageEmpty1}
-\pastebutton{ugUserDecUndecPageFull1}{\hidepaste}
-\tab{5}\spadcommand{f(x: Integer): Integer == x + 1\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty1}
-\begin{paste}{ugUserDecUndecPageEmpty1}{ugUserDecUndecPagePatch1}
-\pastebutton{ugUserDecUndecPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f(x: Integer): Integer == x + 1\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch2}
-\begin{paste}{ugUserDecUndecPageFull2}{ugUserDecUndecPageEmpty2}
-\pastebutton{ugUserDecUndecPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f 9\free{f }}
-\indentrel{3}\begin{verbatim}
-   (2)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty2}
-\begin{paste}{ugUserDecUndecPageEmpty2}{ugUserDecUndecPagePatch2}
-\pastebutton{ugUserDecUndecPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f 9\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch3}
-\begin{paste}{ugUserDecUndecPageFull3}{ugUserDecUndecPageEmpty3}
-\pastebutton{ugUserDecUndecPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(-2.0)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  - 1
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty3}
-\begin{paste}{ugUserDecUndecPageEmpty3}{ugUserDecUndecPagePatch3}
-\pastebutton{ugUserDecUndecPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(-2.0)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch4}
-\begin{paste}{ugUserDecUndecPageFull4}{ugUserDecUndecPageEmpty4}
-\pastebutton{ugUserDecUndecPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f(2/3)\free{f }}
-\indentrel{3}\begin{verbatim}
-   2
-   Ä
-   3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty4}
-\begin{paste}{ugUserDecUndecPageEmpty4}{ugUserDecUndecPagePatch4}
-\pastebutton{ugUserDecUndecPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f(2/3)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch5}
-\begin{paste}{ugUserDecUndecPageFull5}{ugUserDecUndecPageEmpty5}
-\pastebutton{ugUserDecUndecPageFull5}{\hidepaste}
-\tab{5}\spadcommand{g x == x + 1\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty5}
-\begin{paste}{ugUserDecUndecPageEmpty5}{ugUserDecUndecPagePatch5}
-\pastebutton{ugUserDecUndecPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{g x == x + 1\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch6}
-\begin{paste}{ugUserDecUndecPageFull6}{ugUserDecUndecPageEmpty6}
-\pastebutton{ugUserDecUndecPageFull6}{\hidepaste}
-\tab{5}\spadcommand{g 9\free{g }}
-\indentrel{3}\begin{verbatim}
-   (5)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty6}
-\begin{paste}{ugUserDecUndecPageEmpty6}{ugUserDecUndecPagePatch6}
-\pastebutton{ugUserDecUndecPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{g 9\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch7}
-\begin{paste}{ugUserDecUndecPageFull7}{ugUserDecUndecPageEmpty7}
-\pastebutton{ugUserDecUndecPageFull7}{\hidepaste}
-\tab{5}\spadcommand{g(2/3)\free{g }}
-\indentrel{3}\begin{verbatim}
-        5
-   (6)  Ä
-        3
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty7}
-\begin{paste}{ugUserDecUndecPageEmpty7}{ugUserDecUndecPagePatch7}
-\pastebutton{ugUserDecUndecPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{g(2/3)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPagePatch8}
-\begin{paste}{ugUserDecUndecPageFull8}{ugUserDecUndecPageEmpty8}
-\pastebutton{ugUserDecUndecPageFull8}{\hidepaste}
-\tab{5}\spadcommand{g("axiom")\free{g }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDecUndecPageEmpty8}
-\begin{paste}{ugUserDecUndecPageEmpty8}{ugUserDecUndecPagePatch8}
-\pastebutton{ugUserDecUndecPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g("axiom")\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch1}
-\begin{paste}{ugUserDatabasePageFull1}{ugUserDatabasePageEmpty1}
-\pastebutton{ugUserDatabasePageFull1}{\hidepaste}
-\tab{5}\spadcommand{children("albert") == ["albertJr","richard","diane"]\bound{d1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty1}
-\begin{paste}{ugUserDatabasePageEmpty1}{ugUserDatabasePagePatch1}
-\pastebutton{ugUserDatabasePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{children("albert") == ["albertJr","richard","diane"]\bound{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch2}
-\begin{paste}{ugUserDatabasePageFull2}{ugUserDatabasePageEmpty2}
-\pastebutton{ugUserDatabasePageFull2}{\hidepaste}
-\tab{5}\spadcommand{children("richard") == ["douglas","daniel","susan"]\free{d1 }\bound{d2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty2}
-\begin{paste}{ugUserDatabasePageEmpty2}{ugUserDatabasePagePatch2}
-\pastebutton{ugUserDatabasePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{children("richard") == ["douglas","daniel","susan"]\free{d1 }\bound{d2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch3}
-\begin{paste}{ugUserDatabasePageFull3}{ugUserDatabasePageEmpty3}
-\pastebutton{ugUserDatabasePageFull3}{\hidepaste}
-\tab{5}\spadcommand{children("douglas") == ["dougie","valerie"]\free{d2 }\bound{d3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty3}
-\begin{paste}{ugUserDatabasePageEmpty3}{ugUserDatabasePagePatch3}
-\pastebutton{ugUserDatabasePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{children("douglas") == ["dougie","valerie"]\free{d2 }\bound{d3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch4}
-\begin{paste}{ugUserDatabasePageFull4}{ugUserDatabasePageEmpty4}
-\pastebutton{ugUserDatabasePageFull4}{\hidepaste}
-\tab{5}\spadcommand{children(x) == []\free{d3 }\bound{d4 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty4}
-\begin{paste}{ugUserDatabasePageEmpty4}{ugUserDatabasePagePatch4}
-\pastebutton{ugUserDatabasePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{children(x) == []\free{d3 }\bound{d4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch5}
-\begin{paste}{ugUserDatabasePageFull5}{ugUserDatabasePageEmpty5}
-\pastebutton{ugUserDatabasePageFull5}{\hidepaste}
-\tab{5}\spadcommand{childOf(x,y) == member?(x,children(y))\bound{d9 }\free{d10 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty5}
-\begin{paste}{ugUserDatabasePageEmpty5}{ugUserDatabasePagePatch5}
-\pastebutton{ugUserDatabasePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{childOf(x,y) == member?(x,children(y))\bound{d9 }\free{d10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch6}
-\begin{paste}{ugUserDatabasePageFull6}{ugUserDatabasePageEmpty6}
-\pastebutton{ugUserDatabasePageFull6}{\hidepaste}
-\tab{5}\spadcommand{parentOf(x) ==
-  for y in people repeat
-    (if childOf(x,y) then return y)
-  "unknown"
-\bound{d8a }\free{d9 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty6}
-\begin{paste}{ugUserDatabasePageEmpty6}{ugUserDatabasePagePatch6}
-\pastebutton{ugUserDatabasePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{parentOf(x) ==
-  for y in people repeat
-    (if childOf(x,y) then return y)
-  "unknown"
-\bound{d8a }\free{d9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch7}
-\begin{paste}{ugUserDatabasePageFull7}{ugUserDatabasePageEmpty7}
-\pastebutton{ugUserDatabasePageFull7}{\hidepaste}
-\tab{5}\spadcommand{grandParentOf(x) == parentOf parentOf x\bound{d8 }\free{d8a }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty7}
-\begin{paste}{ugUserDatabasePageEmpty7}{ugUserDatabasePagePatch7}
-\pastebutton{ugUserDatabasePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{grandParentOf(x) == parentOf parentOf x\bound{d8 }\free{d8a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch8}
-\begin{paste}{ugUserDatabasePageFull8}{ugUserDatabasePageEmpty8}
-\pastebutton{ugUserDatabasePageFull8}{\hidepaste}
-\tab{5}\spadcommand{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7 }\bound{d8 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty8}
-\begin{paste}{ugUserDatabasePageEmpty8}{ugUserDatabasePagePatch8}
-\pastebutton{ugUserDatabasePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{grandchildren(x) == [y for y in people | grandParentOf(y) = x]\free{d7 }\bound{d8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch9}
-\begin{paste}{ugUserDatabasePageFull9}{ugUserDatabasePageEmpty9}
-\pastebutton{ugUserDatabasePageFull9}{\hidepaste}
-\tab{5}\spadcommand{greatGrandParents == [x for x in people |
-  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
-\free{d6 }\bound{d7 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty9}
-\begin{paste}{ugUserDatabasePageEmpty9}{ugUserDatabasePagePatch9}
-\pastebutton{ugUserDatabasePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{greatGrandParents == [x for x in people |
-  reduce(_or,[not empty? children(y) for y in grandchildren(x)],false)]
-\free{d6 }\bound{d7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch10}
-\begin{paste}{ugUserDatabasePageFull10}{ugUserDatabasePageEmpty10}
-\pastebutton{ugUserDatabasePageFull10}{\hidepaste}
-\tab{5}\spadcommand{descendants(x) ==
-  kids := children(x)
-  null kids => [x]
-  concat(x,reduce(concat,[descendants(y)
-    for y in kids],[]))
-\free{d5 }\bound{d6 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty10}
-\begin{paste}{ugUserDatabasePageEmpty10}{ugUserDatabasePagePatch10}
-\pastebutton{ugUserDatabasePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{descendants(x) ==
-  kids := children(x)
-  null kids => [x]
-  concat(x,reduce(concat,[descendants(y)
-    for y in kids],[]))
-\free{d5 }\bound{d6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch11}
-\begin{paste}{ugUserDatabasePageFull11}{ugUserDatabasePageEmpty11}
-\pastebutton{ugUserDatabasePageFull11}{\hidepaste}
-\tab{5}\spadcommand{people == descendants "albert"\free{d4 }\bound{d5 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty11}
-\begin{paste}{ugUserDatabasePageEmpty11}{ugUserDatabasePagePatch11}
-\pastebutton{ugUserDatabasePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{people == descendants "albert"\free{d4 }\bound{d5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch12}
-\begin{paste}{ugUserDatabasePageFull12}{ugUserDatabasePageEmpty12}
-\pastebutton{ugUserDatabasePageFull12}{\hidepaste}
-\tab{5}\spadcommand{grandchildren "richard"\bound{d10 }\free{d11 }}
-\indentrel{3}\begin{verbatim}
-   (12)  ["dougie","valerie"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty12}
-\begin{paste}{ugUserDatabasePageEmpty12}{ugUserDatabasePagePatch12}
-\pastebutton{ugUserDatabasePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{grandchildren "richard"\bound{d10 }\free{d11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePagePatch13}
-\begin{paste}{ugUserDatabasePageFull13}{ugUserDatabasePageEmpty13}
-\pastebutton{ugUserDatabasePageFull13}{\hidepaste}
-\tab{5}\spadcommand{greatGrandParents\bound{d11 }\free{d12 }}
-\indentrel{3}\begin{verbatim}
-   (13)  ["albert"]
-                                      Type: List String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserDatabasePageEmpty13}
-\begin{paste}{ugUserDatabasePageEmpty13}{ugUserDatabasePagePatch13}
-\pastebutton{ugUserDatabasePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{greatGrandParents\bound{d11 }\free{d12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch1}
-\begin{paste}{ugUserTrianglePageFull1}{ugUserTrianglePageEmpty1}
-\pastebutton{ugUserTrianglePageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{expose }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty1}
-\begin{paste}{ugUserTrianglePageEmpty1}{ugUserTrianglePagePatch1}
-\pastebutton{ugUserTrianglePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set expose add constructor OutputForm\bound{expose }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch2}
-\begin{paste}{ugUserTrianglePageFull2}{ugUserTrianglePageEmpty2}
-\pastebutton{ugUserTrianglePageFull2}{\hidepaste}
-\tab{5}\spadcommand{pascal(1,i) == 1\bound{pas1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty2}
-\begin{paste}{ugUserTrianglePageEmpty2}{ugUserTrianglePagePatch2}
-\pastebutton{ugUserTrianglePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{pascal(1,i) == 1\bound{pas1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch3}
-\begin{paste}{ugUserTrianglePageFull3}{ugUserTrianglePageEmpty3}
-\pastebutton{ugUserTrianglePageFull3}{\hidepaste}
-\tab{5}\spadcommand{pascal(n,n) == 1\bound{pas2 }\free{pas1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty3}
-\begin{paste}{ugUserTrianglePageEmpty3}{ugUserTrianglePagePatch3}
-\pastebutton{ugUserTrianglePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{pascal(n,n) == 1\bound{pas2 }\free{pas1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch4}
-\begin{paste}{ugUserTrianglePageFull4}{ugUserTrianglePageEmpty4}
-\pastebutton{ugUserTrianglePageFull4}{\hidepaste}
-\tab{5}\spadcommand{pascal(i,j | 1 < i and i < j) ==
-   pascal(i-1,j-1)+pascal(i,j-1)
-\bound{pas3 }\free{pas1 pas2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty4}
-\begin{paste}{ugUserTrianglePageEmpty4}{ugUserTrianglePagePatch4}
-\pastebutton{ugUserTrianglePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{pascal(i,j | 1 < i and i < j) ==
-   pascal(i-1,j-1)+pascal(i,j-1)
-\bound{pas3 }\free{pas1 pas2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch5}
-\begin{paste}{ugUserTrianglePageFull5}{ugUserTrianglePageEmpty5}
-\pastebutton{ugUserTrianglePageFull5}{\hidepaste}
-\tab{5}\spadcommand{pascalRow(n) == [pascal(i,n) for i in 1..n]\bound{pascalRow }\free{pas3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty5}
-\begin{paste}{ugUserTrianglePageEmpty5}{ugUserTrianglePagePatch5}
-\pastebutton{ugUserTrianglePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{pascalRow(n) == [pascal(i,n) for i in 1..n]\bound{pascalRow }\free{pas3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch6}
-\begin{paste}{ugUserTrianglePageFull6}{ugUserTrianglePageEmpty6}
-\pastebutton{ugUserTrianglePageFull6}{\hidepaste}
-\tab{5}\spadcommand{displayRow(n) == output center blankSeparate pascalRow(n)\free{pascalRow }\bound{displayRow }\free{expose }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty6}
-\begin{paste}{ugUserTrianglePageEmpty6}{ugUserTrianglePagePatch6}
-\pastebutton{ugUserTrianglePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{displayRow(n) == output center blankSeparate pascalRow(n)\free{pascalRow }\bound{displayRow }\free{expose }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch7}
-\begin{paste}{ugUserTrianglePageFull7}{ugUserTrianglePageEmpty7}
-\pastebutton{ugUserTrianglePageFull7}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{displayRow }}
-\indentrel{3}\begin{verbatim}
-                                   1
-                                  1 1
-                                 1 2 1
-                                1 3 3 1
-                               1 4 6 4 1
-                             1 5 10 10 5 1
-                            1 6 15 20 15 6 1
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty7}
-\begin{paste}{ugUserTrianglePageEmpty7}{ugUserTrianglePagePatch7}
-\pastebutton{ugUserTrianglePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{displayRow }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch8}
-\begin{paste}{ugUserTrianglePageFull8}{ugUserTrianglePageEmpty8}
-\pastebutton{ugUserTrianglePageFull8}{\hidepaste}
-\tab{5}\spadcommand{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]\bound{pascalRow2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty8}
-\begin{paste}{ugUserTrianglePageEmpty8}{ugUserTrianglePagePatch8}
-\pastebutton{ugUserTrianglePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{pascalRow(n) == [right(pascal(i,n),4) for i in 1..n]\bound{pascalRow2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch9}
-\begin{paste}{ugUserTrianglePageFull9}{ugUserTrianglePageEmpty9}
-\pastebutton{ugUserTrianglePageFull9}{\hidepaste}
-\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{pascalRow2 }\free{displayRow }}
-\indentrel{3}\begin{verbatim}
-                                     1
-                                  1    1
-                                1    2    1
-                             1    3    3    1
-                           1    4    6    4    1
-                        1    5   10   10    5    1
-                      1    6   15   20   15    6    1
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty9}
-\begin{paste}{ugUserTrianglePageEmpty9}{ugUserTrianglePagePatch9}
-\pastebutton{ugUserTrianglePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{for i in 1..7 repeat displayRow i\free{pascalRow2 }\free{displayRow }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePagePatch10}
-\begin{paste}{ugUserTrianglePageFull10}{ugUserTrianglePageEmpty10}
-\pastebutton{ugUserTrianglePageFull10}{\hidepaste}
-\tab{5}\spadcommand{)set expose drop constructor OutputForm}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserTrianglePageEmpty10}
-\begin{paste}{ugUserTrianglePageEmpty10}{ugUserTrianglePagePatch10}
-\pastebutton{ugUserTrianglePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{)set expose drop constructor OutputForm}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch1}
-\begin{paste}{ugUserFreeLocalPageFull1}{ugUserFreeLocalPageEmpty1}
-\pastebutton{ugUserFreeLocalPageFull1}{\hidepaste}
-\tab{5}\spadcommand{counter := 0\bound{counter }}
-\indentrel{3}\begin{verbatim}
-   (1)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty1}
-\begin{paste}{ugUserFreeLocalPageEmpty1}{ugUserFreeLocalPagePatch1}
-\pastebutton{ugUserFreeLocalPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{counter := 0\bound{counter }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch2}
-\begin{paste}{ugUserFreeLocalPageFull2}{ugUserFreeLocalPageEmpty2}
-\pastebutton{ugUserFreeLocalPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f() ==
-  free counter
-  counter := counter + 1
-\free{counter }\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty2}
-\begin{paste}{ugUserFreeLocalPageEmpty2}{ugUserFreeLocalPagePatch2}
-\pastebutton{ugUserFreeLocalPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f() ==
-  free counter
-  counter := counter + 1
-\free{counter }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch3}
-\begin{paste}{ugUserFreeLocalPageFull3}{ugUserFreeLocalPageEmpty3}
-\pastebutton{ugUserFreeLocalPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f()\free{f }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty3}
-\begin{paste}{ugUserFreeLocalPageEmpty3}{ugUserFreeLocalPagePatch3}
-\pastebutton{ugUserFreeLocalPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f()\free{f }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch4}
-\begin{paste}{ugUserFreeLocalPageFull4}{ugUserFreeLocalPageEmpty4}
-\pastebutton{ugUserFreeLocalPageFull4}{\hidepaste}
-\tab{5}\spadcommand{counter\free{f1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  1
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty4}
-\begin{paste}{ugUserFreeLocalPageEmpty4}{ugUserFreeLocalPagePatch4}
-\pastebutton{ugUserFreeLocalPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{counter\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch5}
-\begin{paste}{ugUserFreeLocalPageFull5}{ugUserFreeLocalPageEmpty5}
-\pastebutton{ugUserFreeLocalPageFull5}{\hidepaste}
-\tab{5}\spadcommand{g() ==
-  local counter
-  counter := 7
-\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty5}
-\begin{paste}{ugUserFreeLocalPageEmpty5}{ugUserFreeLocalPagePatch5}
-\pastebutton{ugUserFreeLocalPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{g() ==
-  local counter
-  counter := 7
-\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch6}
-\begin{paste}{ugUserFreeLocalPageFull6}{ugUserFreeLocalPageEmpty6}
-\pastebutton{ugUserFreeLocalPageFull6}{\hidepaste}
-\tab{5}\spadcommand{g()\free{g }}
-\indentrel{3}\begin{verbatim}
-   (6)  7
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty6}
-\begin{paste}{ugUserFreeLocalPageEmpty6}{ugUserFreeLocalPagePatch6}
-\pastebutton{ugUserFreeLocalPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{g()\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch7}
-\begin{paste}{ugUserFreeLocalPageFull7}{ugUserFreeLocalPageEmpty7}
-\pastebutton{ugUserFreeLocalPageFull7}{\hidepaste}
-\tab{5}\spadcommand{counter\free{g f1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  1
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty7}
-\begin{paste}{ugUserFreeLocalPageEmpty7}{ugUserFreeLocalPagePatch7}
-\pastebutton{ugUserFreeLocalPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{counter\free{g f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch8}
-\begin{paste}{ugUserFreeLocalPageFull8}{ugUserFreeLocalPageEmpty8}
-\pastebutton{ugUserFreeLocalPageFull8}{\hidepaste}
-\tab{5}\spadcommand{a := b := 1\bound{ab1 }}
-\indentrel{3}\begin{verbatim}
-   (8)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty8}
-\begin{paste}{ugUserFreeLocalPageEmpty8}{ugUserFreeLocalPagePatch8}
-\pastebutton{ugUserFreeLocalPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{a := b := 1\bound{ab1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch9}
-\begin{paste}{ugUserFreeLocalPageFull9}{ugUserFreeLocalPageEmpty9}
-\pastebutton{ugUserFreeLocalPageFull9}{\hidepaste}
-\tab{5}\spadcommand{h() ==
-  b := a + 1
-  a := b + a
-\bound{hh }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty9}
-\begin{paste}{ugUserFreeLocalPageEmpty9}{ugUserFreeLocalPagePatch9}
-\pastebutton{ugUserFreeLocalPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{h() ==
-  b := a + 1
-  a := b + a
-\bound{hh }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch10}
-\begin{paste}{ugUserFreeLocalPageFull10}{ugUserFreeLocalPageEmpty10}
-\pastebutton{ugUserFreeLocalPageFull10}{\hidepaste}
-\tab{5}\spadcommand{h()\free{ab1 hh }\bound{hhh }}
-\indentrel{3}\begin{verbatim}
-   (10)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty10}
-\begin{paste}{ugUserFreeLocalPageEmpty10}{ugUserFreeLocalPagePatch10}
-\pastebutton{ugUserFreeLocalPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{h()\free{ab1 hh }\bound{hhh }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch11}
-\begin{paste}{ugUserFreeLocalPageFull11}{ugUserFreeLocalPageEmpty11}
-\pastebutton{ugUserFreeLocalPageFull11}{\hidepaste}
-\tab{5}\spadcommand{[a, b]\free{hhh }}
-\indentrel{3}\begin{verbatim}
-   (11)  [3,1]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty11}
-\begin{paste}{ugUserFreeLocalPageEmpty11}{ugUserFreeLocalPagePatch11}
-\pastebutton{ugUserFreeLocalPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{[a, b]\free{hhh }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch12}
-\begin{paste}{ugUserFreeLocalPageFull12}{ugUserFreeLocalPageEmpty12}
-\pastebutton{ugUserFreeLocalPageFull12}{\hidepaste}
-\tab{5}\spadcommand{)set fun cache all p\bound{pcache }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty12}
-\begin{paste}{ugUserFreeLocalPageEmpty12}{ugUserFreeLocalPagePatch12}
-\pastebutton{ugUserFreeLocalPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{)set fun cache all p\bound{pcache }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch13}
-\begin{paste}{ugUserFreeLocalPageFull13}{ugUserFreeLocalPageEmpty13}
-\pastebutton{ugUserFreeLocalPageFull13}{\hidepaste}
-\tab{5}\spadcommand{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )\free{pcache }\bound{pdef }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty13}
-\begin{paste}{ugUserFreeLocalPageEmpty13}{ugUserFreeLocalPagePatch13}
-\pastebutton{ugUserFreeLocalPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{p(i,x) == ( free N; reduce( + , [ (x-i)**n for n in 1..N ] ) )\free{pcache }\bound{pdef }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch14}
-\begin{paste}{ugUserFreeLocalPageFull14}{ugUserFreeLocalPageEmpty14}
-\pastebutton{ugUserFreeLocalPageFull14}{\hidepaste}
-\tab{5}\spadcommand{N := 1\bound{Nass }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty14}
-\begin{paste}{ugUserFreeLocalPageEmpty14}{ugUserFreeLocalPagePatch14}
-\pastebutton{ugUserFreeLocalPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{N := 1\bound{Nass }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch15}
-\begin{paste}{ugUserFreeLocalPageFull15}{ugUserFreeLocalPageEmpty15}
-\pastebutton{ugUserFreeLocalPageFull15}{\hidepaste}
-\tab{5}\spadcommand{p(0, x)\free{pdef Nass }\bound{pfirst }}
-\indentrel{3}\begin{verbatim}
-   (14)  x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty15}
-\begin{paste}{ugUserFreeLocalPageEmpty15}{ugUserFreeLocalPagePatch15}
-\pastebutton{ugUserFreeLocalPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{p(0, x)\free{pdef Nass }\bound{pfirst }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch16}
-\begin{paste}{ugUserFreeLocalPageFull16}{ugUserFreeLocalPageEmpty16}
-\pastebutton{ugUserFreeLocalPageFull16}{\hidepaste}
-\tab{5}\spadcommand{N := 2\bound{Nass2 }}
-\indentrel{3}\begin{verbatim}
-   (15)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty16}
-\begin{paste}{ugUserFreeLocalPageEmpty16}{ugUserFreeLocalPagePatch16}
-\pastebutton{ugUserFreeLocalPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{N := 2\bound{Nass2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch17}
-\begin{paste}{ugUserFreeLocalPageFull17}{ugUserFreeLocalPageEmpty17}
-\pastebutton{ugUserFreeLocalPageFull17}{\hidepaste}
-\tab{5}\spadcommand{p(0, x)\free{pfirst Nass2 }}
-\indentrel{3}\begin{verbatim}
-   (16)  x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty17}
-\begin{paste}{ugUserFreeLocalPageEmpty17}{ugUserFreeLocalPagePatch17}
-\pastebutton{ugUserFreeLocalPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{p(0, x)\free{pfirst Nass2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch18}
-\begin{paste}{ugUserFreeLocalPageFull18}{ugUserFreeLocalPageEmpty18}
-\pastebutton{ugUserFreeLocalPageFull18}{\hidepaste}
-\tab{5}\spadcommand{)set fun cache 0 p}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty18}
-\begin{paste}{ugUserFreeLocalPageEmpty18}{ugUserFreeLocalPagePatch18}
-\pastebutton{ugUserFreeLocalPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{)set fun cache 0 p}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch19}
-\begin{paste}{ugUserFreeLocalPageFull19}{ugUserFreeLocalPageEmpty19}
-\pastebutton{ugUserFreeLocalPageFull19}{\hidepaste}
-\tab{5}\spadcommand{r : Record(i : Integer) := [1]\free{r }}
-\indentrel{3}\begin{verbatim}
-   (17)  [i= 1]
-                               Type: Record(i: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty19}
-\begin{paste}{ugUserFreeLocalPageEmpty19}{ugUserFreeLocalPagePatch19}
-\pastebutton{ugUserFreeLocalPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{r : Record(i : Integer) := [1]\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch20}
-\begin{paste}{ugUserFreeLocalPageFull20}{ugUserFreeLocalPageEmpty20}
-\pastebutton{ugUserFreeLocalPageFull20}{\hidepaste}
-\tab{5}\spadcommand{resetRecord rr ==
-  rr.i := 2
-  rr := [10]
-\bound{resetRecord }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty20}
-\begin{paste}{ugUserFreeLocalPageEmpty20}{ugUserFreeLocalPagePatch20}
-\pastebutton{ugUserFreeLocalPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{resetRecord rr ==
-  rr.i := 2
-  rr := [10]
-\bound{resetRecord }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch21}
-\begin{paste}{ugUserFreeLocalPageFull21}{ugUserFreeLocalPageEmpty21}
-\pastebutton{ugUserFreeLocalPageFull21}{\hidepaste}
-\tab{5}\spadcommand{resetRecord r\free{r resetRecord }\bound{rr }}
-\indentrel{3}\begin{verbatim}
-   (19)  [i= 10]
-                               Type: Record(i: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty21}
-\begin{paste}{ugUserFreeLocalPageEmpty21}{ugUserFreeLocalPagePatch21}
-\pastebutton{ugUserFreeLocalPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{resetRecord r\free{r resetRecord }\bound{rr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch22}
-\begin{paste}{ugUserFreeLocalPageFull22}{ugUserFreeLocalPageEmpty22}
-\pastebutton{ugUserFreeLocalPageFull22}{\hidepaste}
-\tab{5}\spadcommand{r\free{rr }}
-\indentrel{3}\begin{verbatim}
-   (20)  [i= 2]
-                               Type: Record(i: Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty22}
-\begin{paste}{ugUserFreeLocalPageEmpty22}{ugUserFreeLocalPagePatch22}
-\pastebutton{ugUserFreeLocalPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{r\free{rr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch23}
-\begin{paste}{ugUserFreeLocalPageFull23}{ugUserFreeLocalPageEmpty23}
-\pastebutton{ugUserFreeLocalPageFull23}{\hidepaste}
-\tab{5}\spadcommand{past := present := 1\bound{f0 }}
-\indentrel{3}\begin{verbatim}
-   (21)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty23}
-\begin{paste}{ugUserFreeLocalPageEmpty23}{ugUserFreeLocalPagePatch23}
-\pastebutton{ugUserFreeLocalPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{past := present := 1\bound{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch24}
-\begin{paste}{ugUserFreeLocalPageFull24}{ugUserFreeLocalPageEmpty24}
-\pastebutton{ugUserFreeLocalPageFull24}{\hidepaste}
-\tab{5}\spadcommand{index := 2\bound{f1 }\free{f0 }}
-\indentrel{3}\begin{verbatim}
-   (22)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty24}
-\begin{paste}{ugUserFreeLocalPageEmpty24}{ugUserFreeLocalPagePatch24}
-\pastebutton{ugUserFreeLocalPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{index := 2\bound{f1 }\free{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch25}
-\begin{paste}{ugUserFreeLocalPageFull25}{ugUserFreeLocalPageEmpty25}
-\pastebutton{ugUserFreeLocalPageFull25}{\hidepaste}
-\tab{5}\spadcommand{fib(n) ==
-  free past, present, index
-  n < 3 => 1
-  n = index - 1 => past
-  if n < index-1 then
-    (past,present) := (1,1)
-    index := 2
-  while (index < n) repeat
-    (past,present) := (present, past+present)
-    index := index + 1
-  present
-\bound{f3 }\free{f2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty25}
-\begin{paste}{ugUserFreeLocalPageEmpty25}{ugUserFreeLocalPagePatch25}
-\pastebutton{ugUserFreeLocalPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{fib(n) ==
-  free past, present, index
-  n < 3 => 1
-  n = index - 1 => past
-  if n < index-1 then
-    (past,present) := (1,1)
-    index := 2
-  while (index < n) repeat
-    (past,present) := (present, past+present)
-    index := index + 1
-  present
-\bound{f3 }\free{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch26}
-\begin{paste}{ugUserFreeLocalPageFull26}{ugUserFreeLocalPageEmpty26}
-\pastebutton{ugUserFreeLocalPageFull26}{\hidepaste}
-\tab{5}\spadcommand{fibs := [fib(n) for n in 1..]\bound{fibs }\free{f3 }}
-\indentrel{3}\begin{verbatim}
-   (24)  [1,1,2,3,5,8,13,21,34,55,...]
-                           Type: Stream PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty26}
-\begin{paste}{ugUserFreeLocalPageEmpty26}{ugUserFreeLocalPagePatch26}
-\pastebutton{ugUserFreeLocalPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{fibs := [fib(n) for n in 1..]\bound{fibs }\free{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPagePatch27}
-\begin{paste}{ugUserFreeLocalPageFull27}{ugUserFreeLocalPageEmpty27}
-\pastebutton{ugUserFreeLocalPageFull27}{\hidepaste}
-\tab{5}\spadcommand{fibs 1000\free{fibs }}
-\indentrel{3}\begin{verbatim}
-   (25)
-  434665576869374564356885276750406258025646605173717804_
-   02481729089536555417949051890403879840079255169295922_
-   59308032263477520968962323987332247116164299644090653_
-   3187938298969649928516003704476137795166849228875
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserFreeLocalPageEmpty27}
-\begin{paste}{ugUserFreeLocalPageEmpty27}{ugUserFreeLocalPagePatch27}
-\pastebutton{ugUserFreeLocalPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{fibs 1000\free{fibs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch1}
-\begin{paste}{ugUserPiecePredPageFull1}{ugUserPiecePredPageEmpty1}
-\pastebutton{ugUserPiecePredPageFull1}{\hidepaste}
-\tab{5}\spadcommand{opposite 'right == 'left}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty1}
-\begin{paste}{ugUserPiecePredPageEmpty1}{ugUserPiecePredPagePatch1}
-\pastebutton{ugUserPiecePredPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{opposite 'right == 'left}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch2}
-\begin{paste}{ugUserPiecePredPageFull2}{ugUserPiecePredPageEmpty2}
-\pastebutton{ugUserPiecePredPageFull2}{\hidepaste}
-\tab{5}\spadcommand{opposite (x | x = 'left) == 'right}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty2}
-\begin{paste}{ugUserPiecePredPageEmpty2}{ugUserPiecePredPagePatch2}
-\pastebutton{ugUserPiecePredPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{opposite (x | x = 'left) == 'right}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch3}
-\begin{paste}{ugUserPiecePredPageFull3}{ugUserPiecePredPageEmpty3}
-\pastebutton{ugUserPiecePredPageFull3}{\hidepaste}
-\tab{5}\spadcommand{for x in ['right,'left,'inbetween] repeat output opposite x}
-\indentrel{3}\begin{verbatim}
-   left
-   right
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty3}
-\begin{paste}{ugUserPiecePredPageEmpty3}{ugUserPiecePredPagePatch3}
-\pastebutton{ugUserPiecePredPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{for x in ['right,'left,'inbetween] repeat output opposite x}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch4}
-\begin{paste}{ugUserPiecePredPageFull4}{ugUserPiecePredPageEmpty4}
-\pastebutton{ugUserPiecePredPageFull4}{\hidepaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty4}
-\begin{paste}{ugUserPiecePredPageEmpty4}{ugUserPiecePredPagePatch4}
-\pastebutton{ugUserPiecePredPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0,y | y < x) == true}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch5}
-\begin{paste}{ugUserPiecePredPageFull5}{ugUserPiecePredPageEmpty5}
-\pastebutton{ugUserPiecePredPageFull5}{\hidepaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty5}
-\begin{paste}{ugUserPiecePredPageEmpty5}{ugUserPiecePredPagePatch5}
-\pastebutton{ugUserPiecePredPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x | x > 0 and y < x,y) == true}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch6}
-\begin{paste}{ugUserPiecePredPageFull6}{ugUserPiecePredPageEmpty6}
-\pastebutton{ugUserPiecePredPageFull6}{\hidepaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true\bound{ifq1a }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty6}
-\begin{paste}{ugUserPiecePredPageEmpty6}{ugUserPiecePredPagePatch6}
-\pastebutton{ugUserPiecePredPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x,y | x > 0 and y < x) == true\bound{ifq1a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch7}
-\begin{paste}{ugUserPiecePredPageFull7}{ugUserPiecePredPageEmpty7}
-\pastebutton{ugUserPiecePredPageFull7}{\hidepaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x,y) == false\bound{ifq1b }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty7}
-\begin{paste}{ugUserPiecePredPageEmpty7}{ugUserPiecePredPagePatch7}
-\pastebutton{ugUserPiecePredPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{inFirstHalfQuadrant(x,y) == false\bound{ifq1b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPagePatch8}
-\begin{paste}{ugUserPiecePredPageFull8}{ugUserPiecePredPageEmpty8}
-\pastebutton{ugUserPiecePredPageFull8}{\hidepaste}
-\tab{5}\spadcommand{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b }}
-\indentrel{3}\begin{verbatim}
-   (7)  [false,false,false,true,true]
-                                     Type: List Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPiecePredPageEmpty8}
-\begin{paste}{ugUserPiecePredPageEmpty8}{ugUserPiecePredPagePatch8}
-\pastebutton{ugUserPiecePredPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{[inFirstHalfQuadrant(i,3) for i in 1..5]\bound{ifq1b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch1}
-\begin{paste}{ugUserAnonExampPageFull1}{ugUserAnonExampPageEmpty1}
-\pastebutton{ugUserAnonExampPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x +-> if x < 0 then -x else x\bound{anon0 }}
-\indentrel{3}\begin{verbatim}
-   (1)
-     x
-   +-> 
-     if x < 0
-       then - x
-       else x
-                                Type: AnonymousFunction
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty1}
-\begin{paste}{ugUserAnonExampPageEmpty1}{ugUserAnonExampPagePatch1}
-\pastebutton{ugUserAnonExampPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x +-> if x < 0 then -x else x\bound{anon0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch2}
-\begin{paste}{ugUserAnonExampPageFull2}{ugUserAnonExampPageEmpty2}
-\pastebutton{ugUserAnonExampPageFull2}{\hidepaste}
-\tab{5}\spadcommand{abs1 := \%\free{anon0 }\bound{abs1 }}
-\indentrel{3}\begin{verbatim}
-   (2)
-     x
-   +-> 
-     if x < 0
-       then - x
-       else x
-                                Type: AnonymousFunction
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty2}
-\begin{paste}{ugUserAnonExampPageEmpty2}{ugUserAnonExampPagePatch2}
-\pastebutton{ugUserAnonExampPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{abs1 := \%\free{anon0 }\bound{abs1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch3}
-\begin{paste}{ugUserAnonExampPageFull3}{ugUserAnonExampPageEmpty3}
-\pastebutton{ugUserAnonExampPageFull3}{\hidepaste}
-\tab{5}\spadcommand{(x,y) +-> abs1(x) > abs1(y)\bound{anon1 }\free{abs1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  (x,y) +-> abs1(y) < abs1(x)
-                                Type: AnonymousFunction
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty3}
-\begin{paste}{ugUserAnonExampPageEmpty3}{ugUserAnonExampPagePatch3}
-\pastebutton{ugUserAnonExampPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{(x,y) +-> abs1(x) > abs1(y)\bound{anon1 }\free{abs1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch4}
-\begin{paste}{ugUserAnonExampPageFull4}{ugUserAnonExampPageEmpty4}
-\pastebutton{ugUserAnonExampPageFull4}{\hidepaste}
-\tab{5}\spadcommand{sort(\%,[3,9,-4,10,-3,-1,-9,5])\free{anon1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [10,- 9,9,5,- 4,- 3,3,- 1]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty4}
-\begin{paste}{ugUserAnonExampPageEmpty4}{ugUserAnonExampPagePatch4}
-\pastebutton{ugUserAnonExampPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sort(\%,[3,9,-4,10,-3,-1,-9,5])\free{anon1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch5}
-\begin{paste}{ugUserAnonExampPageFull5}{ugUserAnonExampPageEmpty5}
-\pastebutton{ugUserAnonExampPageFull5}{\hidepaste}
-\tab{5}\spadcommand{ev := ( (i,j) +-> if even?(i+j) then 1 else -1)\bound{ev }}
-\indentrel{3}\begin{verbatim}
-   (5)
-     (i,j)
-   +-> 
-     if even?(i + j)
-       then 1
-       else - 1
-                                Type: AnonymousFunction
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty5}
-\begin{paste}{ugUserAnonExampPageEmpty5}{ugUserAnonExampPagePatch5}
-\pastebutton{ugUserAnonExampPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{ev := ( (i,j) +-> if even?(i+j) then 1 else -1)\bound{ev }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch6}
-\begin{paste}{ugUserAnonExampPageFull6}{ugUserAnonExampPageEmpty6}
-\pastebutton{ugUserAnonExampPageFull6}{\hidepaste}
-\tab{5}\spadcommand{matrix([[ev(row,col) for row in 1..4] for col in 1..4])\free{ev }}
-\indentrel{3}\begin{verbatim}
-        Ú 1   - 1   1   - 1¿
-        ³                  ³
-        ³- 1   1   - 1   1 ³
-   (6)  ³                  ³
-        ³ 1   - 1   1   - 1³
-        ³                  ³
-        À- 1   1   - 1   1 Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty6}
-\begin{paste}{ugUserAnonExampPageEmpty6}{ugUserAnonExampPagePatch6}
-\pastebutton{ugUserAnonExampPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{matrix([[ev(row,col) for row in 1..4] for col in 1..4])\free{ev }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch7}
-\begin{paste}{ugUserAnonExampPageFull7}{ugUserAnonExampPageEmpty7}
-\pastebutton{ugUserAnonExampPageFull7}{\hidepaste}
-\tab{5}\spadcommand{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
-\indentrel{3}\begin{verbatim}
-   (7)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty7}
-\begin{paste}{ugUserAnonExampPageEmpty7}{ugUserAnonExampPagePatch7}
-\pastebutton{ugUserAnonExampPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{( p +-> not one?(gcd(p,D(p,x))) )(x**2+4*x+4)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch8}
-\begin{paste}{ugUserAnonExampPageFull8}{ugUserAnonExampPageEmpty8}
-\pastebutton{ugUserAnonExampPageFull8}{\hidepaste}
-\tab{5}\spadcommand{g(x,y,z) == cos(x + sin(y + tan(z)))}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty8}
-\begin{paste}{ugUserAnonExampPageEmpty8}{ugUserAnonExampPagePatch8}
-\pastebutton{ugUserAnonExampPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g(x,y,z) == cos(x + sin(y + tan(z)))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPagePatch9}
-\begin{paste}{ugUserAnonExampPageFull9}{ugUserAnonExampPageEmpty9}
-\pastebutton{ugUserAnonExampPageFull9}{\hidepaste}
-\tab{5}\spadcommand{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserAnonExampPageEmpty9}
-\begin{paste}{ugUserAnonExampPageEmpty9}{ugUserAnonExampPagePatch9}
-\pastebutton{ugUserAnonExampPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{g == (x,y,z) +-> cos(x + sin(y + tan(z)))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch1}
-\begin{paste}{ugUserPieceBasicPageFull1}{ugUserPieceBasicPageEmpty1}
-\pastebutton{ugUserPieceBasicPageFull1}{\hidepaste}
-\tab{5}\spadcommand{fact(0) == 1\bound{fact0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty1}
-\begin{paste}{ugUserPieceBasicPageEmpty1}{ugUserPieceBasicPagePatch1}
-\pastebutton{ugUserPieceBasicPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{fact(0) == 1\bound{fact0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch2}
-\begin{paste}{ugUserPieceBasicPageFull2}{ugUserPieceBasicPageEmpty2}
-\pastebutton{ugUserPieceBasicPageFull2}{\hidepaste}
-\tab{5}\spadcommand{fact(n | n > 0) == n * fact(n - 1)\free{fact0 }\bound{factn }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty2}
-\begin{paste}{ugUserPieceBasicPageEmpty2}{ugUserPieceBasicPagePatch2}
-\pastebutton{ugUserPieceBasicPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{fact(n | n > 0) == n * fact(n - 1)\free{fact0 }\bound{factn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch3}
-\begin{paste}{ugUserPieceBasicPageFull3}{ugUserPieceBasicPageEmpty3}
-\pastebutton{ugUserPieceBasicPageFull3}{\hidepaste}
-\tab{5}\spadcommand{fact(3)\free{factn }}
-\indentrel{3}\begin{verbatim}
-   (3)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty3}
-\begin{paste}{ugUserPieceBasicPageEmpty3}{ugUserPieceBasicPagePatch3}
-\pastebutton{ugUserPieceBasicPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{fact(3)\free{factn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch4}
-\begin{paste}{ugUserPieceBasicPageFull4}{ugUserPieceBasicPageEmpty4}
-\pastebutton{ugUserPieceBasicPageFull4}{\hidepaste}
-\tab{5}\spadcommand{fact(-3)\free{factn }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty4}
-\begin{paste}{ugUserPieceBasicPageEmpty4}{ugUserPieceBasicPagePatch4}
-\pastebutton{ugUserPieceBasicPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{fact(-3)\free{factn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch5}
-\begin{paste}{ugUserPieceBasicPageFull5}{ugUserPieceBasicPageEmpty5}
-\pastebutton{ugUserPieceBasicPageFull5}{\hidepaste}
-\tab{5}\spadcommand{facto(0) == 1\bound{facto0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty5}
-\begin{paste}{ugUserPieceBasicPageEmpty5}{ugUserPieceBasicPagePatch5}
-\pastebutton{ugUserPieceBasicPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{facto(0) == 1\bound{facto0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch6}
-\begin{paste}{ugUserPieceBasicPageFull6}{ugUserPieceBasicPageEmpty6}
-\pastebutton{ugUserPieceBasicPageFull6}{\hidepaste}
-\tab{5}\spadcommand{facto(n | n < 0) == error "arguments to facto must be non-negative"\free{facto0 }\bound{factop }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty6}
-\begin{paste}{ugUserPieceBasicPageEmpty6}{ugUserPieceBasicPagePatch6}
-\pastebutton{ugUserPieceBasicPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{facto(n | n < 0) == error "arguments to facto must be non-negative"\free{facto0 }\bound{factop }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch7}
-\begin{paste}{ugUserPieceBasicPageFull7}{ugUserPieceBasicPageEmpty7}
-\pastebutton{ugUserPieceBasicPageFull7}{\hidepaste}
-\tab{5}\spadcommand{facto(n) == n * facto(n - 1)\free{factop }\bound{facton }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty7}
-\begin{paste}{ugUserPieceBasicPageEmpty7}{ugUserPieceBasicPagePatch7}
-\pastebutton{ugUserPieceBasicPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{facto(n) == n * facto(n - 1)\free{factop }\bound{facton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch8}
-\begin{paste}{ugUserPieceBasicPageFull8}{ugUserPieceBasicPageEmpty8}
-\pastebutton{ugUserPieceBasicPageFull8}{\hidepaste}
-\tab{5}\spadcommand{facto(3)\free{facton }}
-\indentrel{3}\begin{verbatim}
-   (7)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty8}
-\begin{paste}{ugUserPieceBasicPageEmpty8}{ugUserPieceBasicPagePatch8}
-\pastebutton{ugUserPieceBasicPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{facto(3)\free{facton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch9}
-\begin{paste}{ugUserPieceBasicPageFull9}{ugUserPieceBasicPageEmpty9}
-\pastebutton{ugUserPieceBasicPageFull9}{\hidepaste}
-\tab{5}\spadcommand{facto(-7)\free{facton }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty9}
-\begin{paste}{ugUserPieceBasicPageEmpty9}{ugUserPieceBasicPagePatch9}
-\pastebutton{ugUserPieceBasicPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{facto(-7)\free{facton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch10}
-\begin{paste}{ugUserPieceBasicPageFull10}{ugUserPieceBasicPageEmpty10}
-\pastebutton{ugUserPieceBasicPageFull10}{\hidepaste}
-\tab{5}\spadcommand{)display value facto\free{facton }}
-\indentrel{3}\begin{verbatim}
-   Definition:
-     facto 0 == 1
-     facto (n | n < 0) ==
-       error(arguments to facto must be non-negative)
-     facto n == n facto(n - 1)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty10}
-\begin{paste}{ugUserPieceBasicPageEmpty10}{ugUserPieceBasicPagePatch10}
-\pastebutton{ugUserPieceBasicPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{)display value facto\free{facton }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch11}
-\begin{paste}{ugUserPieceBasicPageFull11}{ugUserPieceBasicPageEmpty11}
-\pastebutton{ugUserPieceBasicPageFull11}{\hidepaste}
-\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty11}
-\begin{paste}{ugUserPieceBasicPageEmpty11}{ugUserPieceBasicPagePatch11}
-\pastebutton{ugUserPieceBasicPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{eleven(n | n < 1) == n + 11\bound{ff0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch12}
-\begin{paste}{ugUserPieceBasicPageFull12}{ugUserPieceBasicPageEmpty12}
-\pastebutton{ugUserPieceBasicPageFull12}{\hidepaste}
-\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty12}
-\begin{paste}{ugUserPieceBasicPageEmpty12}{ugUserPieceBasicPagePatch12}
-\pastebutton{ugUserPieceBasicPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{eleven(m) == eleven(eleven(m - 12))\bound{ff1 }\free{ff0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch13}
-\begin{paste}{ugUserPieceBasicPageFull13}{ugUserPieceBasicPageEmpty13}
-\pastebutton{ugUserPieceBasicPageFull13}{\hidepaste}
-\tab{5}\spadcommand{elevens := [eleven(i) for i in 0..]\bound{ff2 }\free{ff1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [11,11,11,11,11,11,11,11,11,11,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty13}
-\begin{paste}{ugUserPieceBasicPageEmpty13}{ugUserPieceBasicPagePatch13}
-\pastebutton{ugUserPieceBasicPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{elevens := [eleven(i) for i in 0..]\bound{ff2 }\free{ff1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch14}
-\begin{paste}{ugUserPieceBasicPageFull14}{ugUserPieceBasicPageEmpty14}
-\pastebutton{ugUserPieceBasicPageFull14}{\hidepaste}
-\tab{5}\spadcommand{elevens 200\free{ff2 }}
-\indentrel{3}\begin{verbatim}
-   (11)  11
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty14}
-\begin{paste}{ugUserPieceBasicPageEmpty14}{ugUserPieceBasicPagePatch14}
-\pastebutton{ugUserPieceBasicPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{elevens 200\free{ff2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPagePatch15}
-\begin{paste}{ugUserPieceBasicPageFull15}{ugUserPieceBasicPageEmpty15}
-\pastebutton{ugUserPieceBasicPageFull15}{\hidepaste}
-\tab{5}\spadcommand{)display value eleven\free{ff2 }}
-\indentrel{3}\begin{verbatim}
-   Definition:
-     eleven (m | m < 1) == m + 11
-     eleven m == eleven(eleven(m - 12))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugUserPieceBasicPageEmpty15}
-\begin{paste}{ugUserPieceBasicPageEmpty15}{ugUserPieceBasicPagePatch15}
-\pastebutton{ugUserPieceBasicPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{)display value eleven\free{ff2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug07.pht b/books/pages/ug07.pht
deleted file mode 100644
index 3504be7..0000000
--- a/books/pages/ug07.pht
+++ /dev/null
@@ -1,2386 +0,0 @@
-\begin{patch}{ugGraphTwoDbuildPagePatch1}
-\begin{paste}{ugGraphTwoDbuildPageFull1}{ugGraphTwoDbuildPageEmpty1}
-\pastebutton{ugGraphTwoDbuildPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p1 := point [1,1]$(Point DFLOAT)\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  [1.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty1}
-\begin{paste}{ugGraphTwoDbuildPageEmpty1}{ugGraphTwoDbuildPagePatch1}
-\pastebutton{ugGraphTwoDbuildPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p1 := point [1,1]$(Point DFLOAT)\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch2}
-\begin{paste}{ugGraphTwoDbuildPageFull2}{ugGraphTwoDbuildPageEmpty2}
-\pastebutton{ugGraphTwoDbuildPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p2 := point [0,1]$(Point DFLOAT)\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty2}
-\begin{paste}{ugGraphTwoDbuildPageEmpty2}{ugGraphTwoDbuildPagePatch2}
-\pastebutton{ugGraphTwoDbuildPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p2 := point [0,1]$(Point DFLOAT)\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch3}
-\begin{paste}{ugGraphTwoDbuildPageFull3}{ugGraphTwoDbuildPageEmpty3}
-\pastebutton{ugGraphTwoDbuildPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p3 := point [0,0]$(Point DFLOAT)\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [0.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty3}
-\begin{paste}{ugGraphTwoDbuildPageEmpty3}{ugGraphTwoDbuildPagePatch3}
-\pastebutton{ugGraphTwoDbuildPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p3 := point [0,0]$(Point DFLOAT)\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch4}
-\begin{paste}{ugGraphTwoDbuildPageFull4}{ugGraphTwoDbuildPageEmpty4}
-\pastebutton{ugGraphTwoDbuildPageFull4}{\hidepaste}
-\tab{5}\spadcommand{p4 := point [1,0]$(Point DFLOAT)\bound{p4 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty4}
-\begin{paste}{ugGraphTwoDbuildPageEmpty4}{ugGraphTwoDbuildPagePatch4}
-\pastebutton{ugGraphTwoDbuildPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p4 := point [1,0]$(Point DFLOAT)\bound{p4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch5}
-\begin{paste}{ugGraphTwoDbuildPageFull5}{ugGraphTwoDbuildPageEmpty5}
-\pastebutton{ugGraphTwoDbuildPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p5 := point [1,.5]$(Point DFLOAT)\bound{p5 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [1.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty5}
-\begin{paste}{ugGraphTwoDbuildPageEmpty5}{ugGraphTwoDbuildPagePatch5}
-\pastebutton{ugGraphTwoDbuildPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p5 := point [1,.5]$(Point DFLOAT)\bound{p5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch6}
-\begin{paste}{ugGraphTwoDbuildPageFull6}{ugGraphTwoDbuildPageEmpty6}
-\pastebutton{ugGraphTwoDbuildPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p6 := point [.5,0]$(Point DFLOAT)\bound{p6 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [0.5,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty6}
-\begin{paste}{ugGraphTwoDbuildPageEmpty6}{ugGraphTwoDbuildPagePatch6}
-\pastebutton{ugGraphTwoDbuildPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p6 := point [.5,0]$(Point DFLOAT)\bound{p6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch7}
-\begin{paste}{ugGraphTwoDbuildPageFull7}{ugGraphTwoDbuildPageEmpty7}
-\pastebutton{ugGraphTwoDbuildPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p7 := point [0,0.5]$(Point DFLOAT)\bound{p7 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [0.0,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty7}
-\begin{paste}{ugGraphTwoDbuildPageEmpty7}{ugGraphTwoDbuildPagePatch7}
-\pastebutton{ugGraphTwoDbuildPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p7 := point [0,0.5]$(Point DFLOAT)\bound{p7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch8}
-\begin{paste}{ugGraphTwoDbuildPageFull8}{ugGraphTwoDbuildPageEmpty8}
-\pastebutton{ugGraphTwoDbuildPageFull8}{\hidepaste}
-\tab{5}\spadcommand{p8 := point [.5,1]$(Point DFLOAT)\bound{p8 }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0.5,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty8}
-\begin{paste}{ugGraphTwoDbuildPageEmpty8}{ugGraphTwoDbuildPagePatch8}
-\pastebutton{ugGraphTwoDbuildPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{p8 := point [.5,1]$(Point DFLOAT)\bound{p8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch9}
-\begin{paste}{ugGraphTwoDbuildPageFull9}{ugGraphTwoDbuildPageEmpty9}
-\pastebutton{ugGraphTwoDbuildPageFull9}{\hidepaste}
-\tab{5}\spadcommand{p9 := point [.25,.25]$(Point DFLOAT)\bound{p9 }}
-\indentrel{3}\begin{verbatim}
-   (9)  [0.25,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty9}
-\begin{paste}{ugGraphTwoDbuildPageEmpty9}{ugGraphTwoDbuildPagePatch9}
-\pastebutton{ugGraphTwoDbuildPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{p9 := point [.25,.25]$(Point DFLOAT)\bound{p9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch10}
-\begin{paste}{ugGraphTwoDbuildPageFull10}{ugGraphTwoDbuildPageEmpty10}
-\pastebutton{ugGraphTwoDbuildPageFull10}{\hidepaste}
-\tab{5}\spadcommand{p10 := point [.25,.75]$(Point DFLOAT)\bound{p10 }}
-\indentrel{3}\begin{verbatim}
-   (10)  [0.25,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty10}
-\begin{paste}{ugGraphTwoDbuildPageEmpty10}{ugGraphTwoDbuildPagePatch10}
-\pastebutton{ugGraphTwoDbuildPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{p10 := point [.25,.75]$(Point DFLOAT)\bound{p10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch11}
-\begin{paste}{ugGraphTwoDbuildPageFull11}{ugGraphTwoDbuildPageEmpty11}
-\pastebutton{ugGraphTwoDbuildPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p11 := point [.75,.75]$(Point DFLOAT)\bound{p11 }}
-\indentrel{3}\begin{verbatim}
-   (11)  [0.75,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty11}
-\begin{paste}{ugGraphTwoDbuildPageEmpty11}{ugGraphTwoDbuildPagePatch11}
-\pastebutton{ugGraphTwoDbuildPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p11 := point [.75,.75]$(Point DFLOAT)\bound{p11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch12}
-\begin{paste}{ugGraphTwoDbuildPageFull12}{ugGraphTwoDbuildPageEmpty12}
-\pastebutton{ugGraphTwoDbuildPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p12 := point [.75,.25]$(Point DFLOAT)\bound{p12 }}
-\indentrel{3}\begin{verbatim}
-   (12)  [0.75,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty12}
-\begin{paste}{ugGraphTwoDbuildPageEmpty12}{ugGraphTwoDbuildPagePatch12}
-\pastebutton{ugGraphTwoDbuildPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p12 := point [.75,.25]$(Point DFLOAT)\bound{p12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch13}
-\begin{paste}{ugGraphTwoDbuildPageFull13}{ugGraphTwoDbuildPageEmpty13}
-\pastebutton{ugGraphTwoDbuildPageFull13}{\hidepaste}
-\tab{5}\spadcommand{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]]\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }\bound{llp }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   [[[1.0,1.0],[0.0,1.0]], [[0.0,1.0],[0.0,0.0]],
-    [[0.0,0.0],[1.0,0.0]], [[1.0,0.0],[1.0,1.0]],
-    [[1.0,0.5],[0.5,0.0]], [[0.5,0.0],[0.0,0.5]],
-    [[0.0,0.5],[0.5,1.0]], [[0.5,1.0],[1.0,0.5]],
-    [[0.25,0.25],[0.25,0.75]], [[0.25,0.75],[0.75,0.75]],
-    [[0.75,0.75],[0.75,0.25]], [[0.75,0.25],[0.25,0.25]]]
-                      Type: List List Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty13}
-\begin{paste}{ugGraphTwoDbuildPageEmpty13}{ugGraphTwoDbuildPagePatch13}
-\pastebutton{ugGraphTwoDbuildPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{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]]\free{p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 }\bound{llp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch14}
-\begin{paste}{ugGraphTwoDbuildPageFull14}{ugGraphTwoDbuildPageEmpty14}
-\pastebutton{ugGraphTwoDbuildPageFull14}{\hidepaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\indentrel{3}\begin{verbatim}
-   (14)  6
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty14}
-\begin{paste}{ugGraphTwoDbuildPageEmpty14}{ugGraphTwoDbuildPagePatch14}
-\pastebutton{ugGraphTwoDbuildPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{size1 := 6::PositiveInteger\bound{size1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch15}
-\begin{paste}{ugGraphTwoDbuildPageFull15}{ugGraphTwoDbuildPageEmpty15}
-\pastebutton{ugGraphTwoDbuildPageFull15}{\hidepaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\indentrel{3}\begin{verbatim}
-   (15)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty15}
-\begin{paste}{ugGraphTwoDbuildPageEmpty15}{ugGraphTwoDbuildPagePatch15}
-\pastebutton{ugGraphTwoDbuildPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{size2 := 8::PositiveInteger\bound{size2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch16}
-\begin{paste}{ugGraphTwoDbuildPageFull16}{ugGraphTwoDbuildPageEmpty16}
-\pastebutton{ugGraphTwoDbuildPageFull16}{\hidepaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\indentrel{3}\begin{verbatim}
-   (16)  10
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty16}
-\begin{paste}{ugGraphTwoDbuildPageEmpty16}{ugGraphTwoDbuildPagePatch16}
-\pastebutton{ugGraphTwoDbuildPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{size3 := 10::PositiveInteger\bound{size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch17}
-\begin{paste}{ugGraphTwoDbuildPageFull17}{ugGraphTwoDbuildPageEmpty17}
-\pastebutton{ugGraphTwoDbuildPageFull17}{\hidepaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\indentrel{3}\begin{verbatim}
-   (17)  [6,6,6,6,8,8,8,8,10,10,10,10]
-                             Type: List PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty17}
-\begin{paste}{ugGraphTwoDbuildPageEmpty17}{ugGraphTwoDbuildPagePatch17}
-\pastebutton{ugGraphTwoDbuildPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{lsize := [size1, size1, size1, size1, size2, size2, size2, size2, size3, size3, size3, size3]\bound{lsize }\free{size1 size2 size3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch18}
-\begin{paste}{ugGraphTwoDbuildPageFull18}{ugGraphTwoDbuildPageEmpty18}
-\pastebutton{ugGraphTwoDbuildPageFull18}{\hidepaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\indentrel{3}\begin{verbatim}
-   (18)  [Hue: 1  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty18}
-\begin{paste}{ugGraphTwoDbuildPageEmpty18}{ugGraphTwoDbuildPagePatch18}
-\pastebutton{ugGraphTwoDbuildPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{pc1 := pastel red()\bound{pc1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch19}
-\begin{paste}{ugGraphTwoDbuildPageFull19}{ugGraphTwoDbuildPageEmpty19}
-\pastebutton{ugGraphTwoDbuildPageFull19}{\hidepaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\indentrel{3}\begin{verbatim}
-   (19)  [Hue: 14  Weight: 1.0] from the Dim palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty19}
-\begin{paste}{ugGraphTwoDbuildPageEmpty19}{ugGraphTwoDbuildPagePatch19}
-\pastebutton{ugGraphTwoDbuildPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{pc2 := dim green()\bound{pc2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch20}
-\begin{paste}{ugGraphTwoDbuildPageFull20}{ugGraphTwoDbuildPageEmpty20}
-\pastebutton{ugGraphTwoDbuildPageFull20}{\hidepaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\indentrel{3}\begin{verbatim}
-   (20)  [Hue: 11  Weight: 1.0] from the Pastel palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty20}
-\begin{paste}{ugGraphTwoDbuildPageEmpty20}{ugGraphTwoDbuildPagePatch20}
-\pastebutton{ugGraphTwoDbuildPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{pc3 := pastel yellow()\bound{pc3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch21}
-\begin{paste}{ugGraphTwoDbuildPageFull21}{ugGraphTwoDbuildPageEmpty21}
-\pastebutton{ugGraphTwoDbuildPageFull21}{\hidepaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\free{pc1 pc2 pc3 }\bound{lpc }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   [[Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Pastel palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty21}
-\begin{paste}{ugGraphTwoDbuildPageEmpty21}{ugGraphTwoDbuildPagePatch21}
-\pastebutton{ugGraphTwoDbuildPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{lpc := [pc1, pc1, pc1, pc1, pc2, pc2, pc2, pc2, pc3, pc3, pc3, pc3]\free{pc1 pc2 pc3 }\bound{lpc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch22}
-\begin{paste}{ugGraphTwoDbuildPageFull22}{ugGraphTwoDbuildPageEmpty22}
-\pastebutton{ugGraphTwoDbuildPageFull22}{\hidepaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [[Hue: 22  Weight: 1.0] from the Pastel palette,
-    [Hue: 11  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 1  Weight: 1.0] from the Bright palette,
-    [Hue: 14  Weight: 1.0] from the Light palette,
-    [Hue: 11  Weight: 1.0] from the Dim palette,
-    [Hue: 22  Weight: 1.0] from the Bright palette,
-    [Hue: 1  Weight: 1.0] from the Dark palette,
-    [Hue: 1  Weight: 1.0] from the Pastel palette,
-    [Hue: 22  Weight: 1.0] from the Light palette,
-    [Hue: 14  Weight: 1.0] from the Dim palette,
-    [Hue: 11  Weight: 1.0] from the Light palette]
-                                     Type: List Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty22}
-\begin{paste}{ugGraphTwoDbuildPageEmpty22}{ugGraphTwoDbuildPagePatch22}
-\pastebutton{ugGraphTwoDbuildPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{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()]\bound{lc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch23}
-\begin{paste}{ugGraphTwoDbuildPageFull23}{ugGraphTwoDbuildPageEmpty23}
-\pastebutton{ugGraphTwoDbuildPageFull23}{\hidepaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\indentrel{3}\begin{verbatim}
-   (23)  Graph with 12 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty23}
-\begin{paste}{ugGraphTwoDbuildPageEmpty23}{ugGraphTwoDbuildPagePatch23}
-\pastebutton{ugGraphTwoDbuildPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{g := makeGraphImage(llp,lpc,lc,lsize)$GRIMAGE\bound{g }\free{llp lpc lc lsize }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch24}
-\begin{paste}{ugGraphTwoDbuildPageFull24}{ugGraphTwoDbuildPageEmpty24}
-\pastebutton{ugGraphTwoDbuildPageFull24}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage24.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage24}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty24}
-\begin{paste}{ugGraphTwoDbuildPageEmpty24}{ugGraphTwoDbuildPagePatch24}
-\pastebutton{ugGraphTwoDbuildPageEmpty24}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(g,[title("Lines")])$VIEW2D\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch25}
-\begin{paste}{ugGraphTwoDbuildPageFull25}{ugGraphTwoDbuildPageEmpty25}
-\pastebutton{ugGraphTwoDbuildPageFull25}{\hidepaste}
-\tab{5}\spadcommand{)clear all\bound{clearAll }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty25}
-\begin{paste}{ugGraphTwoDbuildPageEmpty25}{ugGraphTwoDbuildPagePatch25}
-\pastebutton{ugGraphTwoDbuildPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{)clear all\bound{clearAll }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch26}
-\begin{paste}{ugGraphTwoDbuildPageFull26}{ugGraphTwoDbuildPageEmpty26}
-\pastebutton{ugGraphTwoDbuildPageFull26}{\hidepaste}
-\tab{5}\spadcommand{g := graphImage()$GRIMAGE\bound{Sg }\free{clearAll }}
-\indentrel{3}\begin{verbatim}
-   (1)  Graph with 0 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty26}
-\begin{paste}{ugGraphTwoDbuildPageEmpty26}{ugGraphTwoDbuildPagePatch26}
-\pastebutton{ugGraphTwoDbuildPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{g := graphImage()$GRIMAGE\bound{Sg }\free{clearAll }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch27}
-\begin{paste}{ugGraphTwoDbuildPageFull27}{ugGraphTwoDbuildPageEmpty27}
-\pastebutton{ugGraphTwoDbuildPageFull27}{\hidepaste}
-\tab{5}\spadcommand{p1 := point [0,0]$(Point DFLOAT)\bound{Sp1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [0.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty27}
-\begin{paste}{ugGraphTwoDbuildPageEmpty27}{ugGraphTwoDbuildPagePatch27}
-\pastebutton{ugGraphTwoDbuildPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{p1 := point [0,0]$(Point DFLOAT)\bound{Sp1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch28}
-\begin{paste}{ugGraphTwoDbuildPageFull28}{ugGraphTwoDbuildPageEmpty28}
-\pastebutton{ugGraphTwoDbuildPageFull28}{\hidepaste}
-\tab{5}\spadcommand{p2 := point [.25,.25]$(Point DFLOAT)\bound{Sp2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [0.25,0.25]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty28}
-\begin{paste}{ugGraphTwoDbuildPageEmpty28}{ugGraphTwoDbuildPagePatch28}
-\pastebutton{ugGraphTwoDbuildPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{p2 := point [.25,.25]$(Point DFLOAT)\bound{Sp2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch29}
-\begin{paste}{ugGraphTwoDbuildPageFull29}{ugGraphTwoDbuildPageEmpty29}
-\pastebutton{ugGraphTwoDbuildPageFull29}{\hidepaste}
-\tab{5}\spadcommand{p3 := point [.5,.5]$(Point DFLOAT)\bound{Sp3 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [0.5,0.5]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty29}
-\begin{paste}{ugGraphTwoDbuildPageEmpty29}{ugGraphTwoDbuildPagePatch29}
-\pastebutton{ugGraphTwoDbuildPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{p3 := point [.5,.5]$(Point DFLOAT)\bound{Sp3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch30}
-\begin{paste}{ugGraphTwoDbuildPageFull30}{ugGraphTwoDbuildPageEmpty30}
-\pastebutton{ugGraphTwoDbuildPageFull30}{\hidepaste}
-\tab{5}\spadcommand{p4 := point [.75,.75]$(Point DFLOAT)\bound{Sp4 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [0.75,0.75]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty30}
-\begin{paste}{ugGraphTwoDbuildPageEmpty30}{ugGraphTwoDbuildPagePatch30}
-\pastebutton{ugGraphTwoDbuildPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{p4 := point [.75,.75]$(Point DFLOAT)\bound{Sp4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch31}
-\begin{paste}{ugGraphTwoDbuildPageFull31}{ugGraphTwoDbuildPageEmpty31}
-\pastebutton{ugGraphTwoDbuildPageFull31}{\hidepaste}
-\tab{5}\spadcommand{p5 := point [1,1]$(Point DFLOAT)\bound{Sp5 }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty31}
-\begin{paste}{ugGraphTwoDbuildPageEmpty31}{ugGraphTwoDbuildPagePatch31}
-\pastebutton{ugGraphTwoDbuildPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{p5 := point [1,1]$(Point DFLOAT)\bound{Sp5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch32}
-\begin{paste}{ugGraphTwoDbuildPageFull32}{ugGraphTwoDbuildPageEmpty32}
-\pastebutton{ugGraphTwoDbuildPageFull32}{\hidepaste}
-\tab{5}\spadcommand{component(g,p1)$GRIMAGE\free{Sg Sp1 }\bound{gp1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty32}
-\begin{paste}{ugGraphTwoDbuildPageEmpty32}{ugGraphTwoDbuildPagePatch32}
-\pastebutton{ugGraphTwoDbuildPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{component(g,p1)$GRIMAGE\free{Sg Sp1 }\bound{gp1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch33}
-\begin{paste}{ugGraphTwoDbuildPageFull33}{ugGraphTwoDbuildPageEmpty33}
-\pastebutton{ugGraphTwoDbuildPageFull33}{\hidepaste}
-\tab{5}\spadcommand{component(g,p2)$GRIMAGE\free{Sg Sp2 }\bound{gp2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty33}
-\begin{paste}{ugGraphTwoDbuildPageEmpty33}{ugGraphTwoDbuildPagePatch33}
-\pastebutton{ugGraphTwoDbuildPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{component(g,p2)$GRIMAGE\free{Sg Sp2 }\bound{gp2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch34}
-\begin{paste}{ugGraphTwoDbuildPageFull34}{ugGraphTwoDbuildPageEmpty34}
-\pastebutton{ugGraphTwoDbuildPageFull34}{\hidepaste}
-\tab{5}\spadcommand{appendPoint(g,p3)$GRIMAGE\free{gp1 gp2 Sp3 }\bound{gp3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty34}
-\begin{paste}{ugGraphTwoDbuildPageEmpty34}{ugGraphTwoDbuildPagePatch34}
-\pastebutton{ugGraphTwoDbuildPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{appendPoint(g,p3)$GRIMAGE\free{gp1 gp2 Sp3 }\bound{gp3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch35}
-\begin{paste}{ugGraphTwoDbuildPageFull35}{ugGraphTwoDbuildPageEmpty35}
-\pastebutton{ugGraphTwoDbuildPageFull35}{\hidepaste}
-\tab{5}\spadcommand{appendPoint(g,p4)$GRIMAGE\free{gp3 Sp4 }\bound{gp4 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty35}
-\begin{paste}{ugGraphTwoDbuildPageEmpty35}{ugGraphTwoDbuildPagePatch35}
-\pastebutton{ugGraphTwoDbuildPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{appendPoint(g,p4)$GRIMAGE\free{gp3 Sp4 }\bound{gp4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch36}
-\begin{paste}{ugGraphTwoDbuildPageFull36}{ugGraphTwoDbuildPageEmpty36}
-\pastebutton{ugGraphTwoDbuildPageFull36}{\hidepaste}
-\tab{5}\spadcommand{appendPoint(g,p5)$GRIMAGE\free{gp4 Sp5 }\bound{gp5 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty36}
-\begin{paste}{ugGraphTwoDbuildPageEmpty36}{ugGraphTwoDbuildPagePatch36}
-\pastebutton{ugGraphTwoDbuildPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{appendPoint(g,p5)$GRIMAGE\free{gp4 Sp5 }\bound{gp5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch37}
-\begin{paste}{ugGraphTwoDbuildPageFull37}{ugGraphTwoDbuildPageEmpty37}
-\pastebutton{ugGraphTwoDbuildPageFull37}{\hidepaste}
-\tab{5}\spadcommand{g1 := makeGraphImage(g)$GRIMAGE\bound{Sg1 }\free{gp5 }}
-\indentrel{3}\begin{verbatim}
-   (12)  Graph with 2 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty37}
-\begin{paste}{ugGraphTwoDbuildPageEmpty37}{ugGraphTwoDbuildPagePatch37}
-\pastebutton{ugGraphTwoDbuildPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{g1 := makeGraphImage(g)$GRIMAGE\bound{Sg1 }\free{gp5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch38}
-\begin{paste}{ugGraphTwoDbuildPageFull38}{ugGraphTwoDbuildPageEmpty38}
-\pastebutton{ugGraphTwoDbuildPageFull38}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(g1,[title("Graph Points")])$VIEW2D\free{Sg1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage38.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage38}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty38}
-\begin{paste}{ugGraphTwoDbuildPageEmpty38}{ugGraphTwoDbuildPagePatch38}
-\pastebutton{ugGraphTwoDbuildPageEmpty38}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(g1,[title("Graph Points")])$VIEW2D\free{Sg1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch39}
-\begin{paste}{ugGraphTwoDbuildPageFull39}{ugGraphTwoDbuildPageEmpty39}
-\pastebutton{ugGraphTwoDbuildPageFull39}{\hidepaste}
-\tab{5}\spadcommand{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])$GRIMAGE\free{Sp1 Sp2 Sp3 Sp4 Sp5 }\bound{Sg2 }}
-\indentrel{3}\begin{verbatim}
-   (14)  Graph with 5 point lists
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty39}
-\begin{paste}{ugGraphTwoDbuildPageEmpty39}{ugGraphTwoDbuildPagePatch39}
-\pastebutton{ugGraphTwoDbuildPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{g2 := coerce([[p1],[p2],[p3],[p4],[p5]])$GRIMAGE\free{Sp1 Sp2 Sp3 Sp4 Sp5 }\bound{Sg2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch40}
-\begin{paste}{ugGraphTwoDbuildPageFull40}{ugGraphTwoDbuildPageEmpty40}
-\pastebutton{ugGraphTwoDbuildPageFull40}{\hidepaste}
-\tab{5}\spadcommand{v := viewport2D()$VIEW2D\bound{Sv }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   Closed or Undefined TwoDimensionalViewport: "AXIOM2D"
-                           Type: TwoDimensionalViewport
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty40}
-\begin{paste}{ugGraphTwoDbuildPageEmpty40}{ugGraphTwoDbuildPagePatch40}
-\pastebutton{ugGraphTwoDbuildPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{v := viewport2D()$VIEW2D\bound{Sv }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch41}
-\begin{paste}{ugGraphTwoDbuildPageFull41}{ugGraphTwoDbuildPageEmpty41}
-\pastebutton{ugGraphTwoDbuildPageFull41}{\hidepaste}
-\tab{5}\spadcommand{options(v,[title("Just Points")])$VIEW2D\free{Sv }\bound{Svo }}
-\indentrel{3}\begin{verbatim}
-   (16)
-   Closed or Undefined TwoDimensionalViewport: "AXIOM2D"
-                           Type: TwoDimensionalViewport
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty41}
-\begin{paste}{ugGraphTwoDbuildPageEmpty41}{ugGraphTwoDbuildPagePatch41}
-\pastebutton{ugGraphTwoDbuildPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{options(v,[title("Just Points")])$VIEW2D\free{Sv }\bound{Svo }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch42}
-\begin{paste}{ugGraphTwoDbuildPageFull42}{ugGraphTwoDbuildPageEmpty42}
-\pastebutton{ugGraphTwoDbuildPageFull42}{\hidepaste}
-\tab{5}\spadcommand{putGraph(v,g2,1)$VIEW2D\free{Sg2 Svo }\bound{Svog2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty42}
-\begin{paste}{ugGraphTwoDbuildPageEmpty42}{ugGraphTwoDbuildPagePatch42}
-\pastebutton{ugGraphTwoDbuildPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{putGraph(v,g2,1)$VIEW2D\free{Sg2 Svo }\bound{Svog2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPagePatch43}
-\begin{paste}{ugGraphTwoDbuildPageFull43}{ugGraphTwoDbuildPageEmpty43}
-\pastebutton{ugGraphTwoDbuildPageFull43}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(v)$VIEW2D\free{Svog2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodbuildpage43.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodbuildpage43}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDbuildPageEmpty43}
-\begin{paste}{ugGraphTwoDbuildPageEmpty43}{ugGraphTwoDbuildPagePatch43}
-\pastebutton{ugGraphTwoDbuildPageEmpty43}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(v)$VIEW2D\free{Svog2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPagePatch1}
-\begin{paste}{ugGraphThreeDParmPageFull1}{ugGraphThreeDParmPageEmpty1}
-\pastebutton{ugGraphThreeDParmPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparmpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparmpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPageEmpty1}
-\begin{paste}{ugGraphThreeDParmPageEmpty1}{ugGraphThreeDParmPagePatch1}
-\pastebutton{ugGraphThreeDParmPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(5*cos(t), 5*sin(t),t), t=-12..12)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPagePatch2}
-\begin{paste}{ugGraphThreeDParmPageFull2}{ugGraphThreeDParmPageEmpty2}
-\pastebutton{ugGraphThreeDParmPageFull2}{\hidepaste}
-\tab{5}\spadcommand{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5)\bound{i1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPageEmpty2}
-\begin{paste}{ugGraphThreeDParmPageEmpty2}{ugGraphThreeDParmPagePatch2}
-\pastebutton{ugGraphThreeDParmPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{i1(t:DFLOAT):DFLOAT == sin(t)*cos(3*t/5)\bound{i1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPagePatch3}
-\begin{paste}{ugGraphThreeDParmPageFull3}{ugGraphThreeDParmPageEmpty3}
-\pastebutton{ugGraphThreeDParmPageFull3}{\hidepaste}
-\tab{5}\spadcommand{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5)\bound{i2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPageEmpty3}
-\begin{paste}{ugGraphThreeDParmPageEmpty3}{ugGraphThreeDParmPagePatch3}
-\pastebutton{ugGraphThreeDParmPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{i2(t:DFLOAT):DFLOAT == cos(t)*cos(3*t/5)\bound{i2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPagePatch4}
-\begin{paste}{ugGraphThreeDParmPageFull4}{ugGraphThreeDParmPageEmpty4}
-\pastebutton{ugGraphThreeDParmPageFull4}{\hidepaste}
-\tab{5}\spadcommand{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5)\bound{i3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPageEmpty4}
-\begin{paste}{ugGraphThreeDParmPageEmpty4}{ugGraphThreeDParmPagePatch4}
-\pastebutton{ugGraphThreeDParmPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{i3(t:DFLOAT):DFLOAT == cos(t)*sin(3*t/5)\bound{i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPagePatch5}
-\begin{paste}{ugGraphThreeDParmPageFull5}{ugGraphThreeDParmPageEmpty5}
-\pastebutton{ugGraphThreeDParmPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparmpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparmpage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParmPageEmpty5}
-\begin{paste}{ugGraphThreeDParmPageEmpty5}{ugGraphThreeDParmPagePatch5}
-\pastebutton{ugGraphThreeDParmPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(i1,i2,i3),0..15*\%pi)\free{i1 i2 i3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPagePatch1}
-\begin{paste}{ugGraphMakeObjectPageFull1}{ugGraphMakeObjectPageEmpty1}
-\pastebutton{ugGraphMakeObjectPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPageEmpty1}
-\begin{paste}{ugGraphMakeObjectPageEmpty1}{ugGraphMakeObjectPagePatch1}
-\pastebutton{ugGraphMakeObjectPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPagePatch2}
-\begin{paste}{ugGraphMakeObjectPageFull2}{ugGraphMakeObjectPageEmpty2}
-\pastebutton{ugGraphMakeObjectPageFull2}{\hidepaste}
-\tab{5}\spadcommand{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph }\free{m }}
-\indentrel{3}\begin{verbatim}
-   (2)  3-Space with 1 component
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPageEmpty2}
-\begin{paste}{ugGraphMakeObjectPageEmpty2}{ugGraphMakeObjectPagePatch2}
-\pastebutton{ugGraphMakeObjectPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sph := makeObject(m, 0..\%pi, 0..2*\%pi, coordinates==spherical)\bound{sph }\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPagePatch3}
-\begin{paste}{ugGraphMakeObjectPageFull3}{ugGraphMakeObjectPageEmpty3}
-\pastebutton{ugGraphMakeObjectPageFull3}{\hidepaste}
-\tab{5}\spadcommand{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25)\free{sph }\bound{v1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  3-Space with 2 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPageEmpty3}
-\begin{paste}{ugGraphMakeObjectPageEmpty3}{ugGraphMakeObjectPagePatch3}
-\pastebutton{ugGraphMakeObjectPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{makeObject(curve(1.5*sin(t), 1.5*cos(t), 0), t=0..2*\%pi, space == sph, tubeRadius == .25)\free{sph }\bound{v1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPagePatch4}
-\begin{paste}{ugGraphMakeObjectPageFull4}{ugGraphMakeObjectPageEmpty4}
-\pastebutton{ugGraphMakeObjectPageFull4}{\hidepaste}
-\tab{5}\spadgraph{makeViewport3D(sph,"Multiple Objects")\free{v1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphmakeobjectpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphmakeobjectpage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphMakeObjectPageEmpty4}
-\begin{paste}{ugGraphMakeObjectPageEmpty4}{ugGraphMakeObjectPagePatch4}
-\pastebutton{ugGraphMakeObjectPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{makeViewport3D(sph,"Multiple Objects")\free{v1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPagePatch1}
-\begin{paste}{ugGraphThreeDPlotPageFull1}{ugGraphThreeDPlotPageEmpty1}
-\pastebutton{ugGraphThreeDPlotPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedplotpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedplotpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPageEmpty1}
-\begin{paste}{ugGraphThreeDPlotPageEmpty1}{ugGraphThreeDPlotPagePatch1}
-\pastebutton{ugGraphThreeDPlotPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPagePatch2}
-\begin{paste}{ugGraphThreeDPlotPageFull2}{ugGraphThreeDPlotPageEmpty2}
-\pastebutton{ugGraphThreeDPlotPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f(x,y) == sin(x)*cos(y)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPageEmpty2}
-\begin{paste}{ugGraphThreeDPlotPageEmpty2}{ugGraphThreeDPlotPagePatch2}
-\pastebutton{ugGraphThreeDPlotPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f(x,y) == sin(x)*cos(y)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPagePatch3}
-\begin{paste}{ugGraphThreeDPlotPageFull3}{ugGraphThreeDPlotPageEmpty3}
-\pastebutton{ugGraphThreeDPlotPageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedplotpage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedplotpage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDPlotPageEmpty3}
-\begin{paste}{ugGraphThreeDPlotPageEmpty3}{ugGraphThreeDPlotPagePatch3}
-\pastebutton{ugGraphThreeDPlotPageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(f,-\%pi..\%pi,-\%pi..\%pi)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPagePatch1}
-\begin{paste}{ugGraphTwoDappendPageFull1}{ugGraphTwoDappendPageEmpty1}
-\pastebutton{ugGraphTwoDappendPageFull1}{\hidepaste}
-\tab{5}\spadcommand{v1 := draw(sin(x),x=0..2*\%pi)\bound{v1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  TwoDimensionalViewport: "sin x"
-                           Type: TwoDimensionalViewport
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPageEmpty1}
-\begin{paste}{ugGraphTwoDappendPageEmpty1}{ugGraphTwoDappendPagePatch1}
-\pastebutton{ugGraphTwoDappendPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{v1 := draw(sin(x),x=0..2*\%pi)\bound{v1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPagePatch2}
-\begin{paste}{ugGraphTwoDappendPageFull2}{ugGraphTwoDappendPageEmpty2}
-\pastebutton{ugGraphTwoDappendPageFull2}{\hidepaste}
-\tab{5}\spadcommand{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red())\bound{v2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  TwoDimensionalViewport: "cos x"
-                           Type: TwoDimensionalViewport
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPageEmpty2}
-\begin{paste}{ugGraphTwoDappendPageEmpty2}{ugGraphTwoDappendPagePatch2}
-\pastebutton{ugGraphTwoDappendPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{v2 := draw(cos(x),x=0..2*\%pi, curveColor==light red())\bound{v2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPagePatch3}
-\begin{paste}{ugGraphTwoDappendPageFull3}{ugGraphTwoDappendPageEmpty3}
-\pastebutton{ugGraphTwoDappendPageFull3}{\hidepaste}
-\tab{5}\spadcommand{g1 := getGraph(v1,1)\bound{g1 }\free{v1 }}
-\indentrel{3}\begin{verbatim}
-   (3)  Graph with 1 point list
-                                       Type: GraphImage
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPageEmpty3}
-\begin{paste}{ugGraphTwoDappendPageEmpty3}{ugGraphTwoDappendPagePatch3}
-\pastebutton{ugGraphTwoDappendPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{g1 := getGraph(v1,1)\bound{g1 }\free{v1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPagePatch4}
-\begin{paste}{ugGraphTwoDappendPageFull4}{ugGraphTwoDappendPageEmpty4}
-\pastebutton{ugGraphTwoDappendPageFull4}{\hidepaste}
-\tab{5}\spadcommand{putGraph(v2,g1,2)\bound{v22 }\free{g1 v2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPageEmpty4}
-\begin{paste}{ugGraphTwoDappendPageEmpty4}{ugGraphTwoDappendPagePatch4}
-\pastebutton{ugGraphTwoDappendPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{putGraph(v2,g1,2)\bound{v22 }\free{g1 v2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPagePatch5}
-\begin{paste}{ugGraphTwoDappendPageFull5}{ugGraphTwoDappendPageEmpty5}
-\pastebutton{ugGraphTwoDappendPageFull5}{\hidepaste}
-\tab{5}\spadgraph{makeViewport2D(v2)\free{v22 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodappendpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodappendpage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDappendPageEmpty5}
-\begin{paste}{ugGraphTwoDappendPageEmpty5}{ugGraphTwoDappendPagePatch5}
-\pastebutton{ugGraphTwoDappendPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{makeViewport2D(v2)\free{v22 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch1}
-\begin{paste}{ugGraphThreeDBuildPageFull1}{ugGraphThreeDBuildPageEmpty1}
-\pastebutton{ugGraphThreeDBuildPageFull1}{\hidepaste}
-\tab{5}\spadcommand{space := create3Space()$(ThreeSpace DFLOAT)\bound{space }}
-\indentrel{3}\begin{verbatim}
-   (1)  3-Space with 0 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty1}
-\begin{paste}{ugGraphThreeDBuildPageEmpty1}{ugGraphThreeDBuildPagePatch1}
-\pastebutton{ugGraphThreeDBuildPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{space := create3Space()$(ThreeSpace DFLOAT)\bound{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch2}
-\begin{paste}{ugGraphThreeDBuildPageFull2}{ugGraphThreeDBuildPageEmpty2}
-\pastebutton{ugGraphThreeDBuildPageFull2}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve1 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (2)  3-Space with 1 component
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty2}
-\begin{paste}{ugGraphThreeDBuildPageEmpty2}{ugGraphThreeDBuildPagePatch2}
-\pastebutton{ugGraphThreeDBuildPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve1 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch3}
-\begin{paste}{ugGraphThreeDBuildPageFull3}{ugGraphThreeDBuildPageEmpty3}
-\pastebutton{ugGraphThreeDBuildPageFull3}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve2 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (3)  3-Space with 2 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty3}
-\begin{paste}{ugGraphThreeDBuildPageEmpty3}{ugGraphThreeDBuildPagePatch3}
-\pastebutton{ugGraphThreeDBuildPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve2 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch4}
-\begin{paste}{ugGraphThreeDBuildPageFull4}{ugGraphThreeDBuildPageEmpty4}
-\pastebutton{ugGraphThreeDBuildPageFull4}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve3 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (4)  3-Space with 3 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty4}
-\begin{paste}{ugGraphThreeDBuildPageEmpty4}{ugGraphThreeDBuildPagePatch4}
-\pastebutton{ugGraphThreeDBuildPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve3 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch5}
-\begin{paste}{ugGraphThreeDBuildPageFull5}{ugGraphThreeDBuildPageEmpty5}
-\pastebutton{ugGraphThreeDBuildPageFull5}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve4 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (5)  3-Space with 4 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty5}
-\begin{paste}{ugGraphThreeDBuildPageEmpty5}{ugGraphThreeDBuildPagePatch5}
-\pastebutton{ugGraphThreeDBuildPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve4 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch6}
-\begin{paste}{ugGraphThreeDBuildPageFull6}{ugGraphThreeDBuildPageEmpty6}
-\pastebutton{ugGraphThreeDBuildPageFull6}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve5 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (6)  3-Space with 5 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty6}
-\begin{paste}{ugGraphThreeDBuildPageEmpty6}{ugGraphThreeDBuildPagePatch6}
-\pastebutton{ugGraphThreeDBuildPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve5 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch7}
-\begin{paste}{ugGraphThreeDBuildPageFull7}{ugGraphThreeDBuildPageEmpty7}
-\pastebutton{ugGraphThreeDBuildPageFull7}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve6 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (7)  3-Space with 6 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty7}
-\begin{paste}{ugGraphThreeDBuildPageEmpty7}{ugGraphThreeDBuildPagePatch7}
-\pastebutton{ugGraphThreeDBuildPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve6 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch8}
-\begin{paste}{ugGraphThreeDBuildPageFull8}{ugGraphThreeDBuildPageEmpty8}
-\pastebutton{ugGraphThreeDBuildPageFull8}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve7 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (8)  3-Space with 7 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty8}
-\begin{paste}{ugGraphThreeDBuildPageEmpty8}{ugGraphThreeDBuildPagePatch8}
-\pastebutton{ugGraphThreeDBuildPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve7 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch9}
-\begin{paste}{ugGraphThreeDBuildPageFull9}{ugGraphThreeDBuildPageEmpty9}
-\pastebutton{ugGraphThreeDBuildPageFull9}{\hidepaste}
-\tab{5}\spadcommand{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]])\bound{curve8 }\free{space }}
-\indentrel{3}\begin{verbatim}
-   (9)  3-Space with 8 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty9}
-\begin{paste}{ugGraphThreeDBuildPageEmpty9}{ugGraphThreeDBuildPagePatch9}
-\pastebutton{ugGraphThreeDBuildPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{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]])\bound{curve8 }\free{space }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch10}
-\begin{paste}{ugGraphThreeDBuildPageFull10}{ugGraphThreeDBuildPageEmpty10}
-\pastebutton{ugGraphThreeDBuildPageFull10}{\hidepaste}
-\tab{5}\spadgraph{makeViewport3D(space, title == "Letters")\free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedbuildpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedbuildpage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty10}
-\begin{paste}{ugGraphThreeDBuildPageEmpty10}{ugGraphThreeDBuildPagePatch10}
-\pastebutton{ugGraphThreeDBuildPageEmpty10}{\showpaste}
-\tab{5}\spadgraph{makeViewport3D(space, title == "Letters")\free{space curve1 curve2 curve3 curve4 curve5 curve6 curve7 curve8 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch11}
-\begin{paste}{ugGraphThreeDBuildPageFull11}{ugGraphThreeDBuildPageEmpty11}
-\pastebutton{ugGraphThreeDBuildPageFull11}{\hidepaste}
-\tab{5}\spadcommand{spaceC := create3Space()$(ThreeSpace DFLOAT)\bound{spaceC }}
-\indentrel{3}\begin{verbatim}
-   (11)  3-Space with 0 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty11}
-\begin{paste}{ugGraphThreeDBuildPageEmpty11}{ugGraphThreeDBuildPagePatch11}
-\pastebutton{ugGraphThreeDBuildPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{spaceC := create3Space()$(ThreeSpace DFLOAT)\bound{spaceC }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch12}
-\begin{paste}{ugGraphThreeDBuildPageFull12}{ugGraphThreeDBuildPageEmpty12}
-\pastebutton{ugGraphThreeDBuildPageFull12}{\hidepaste}
-\tab{5}\spadcommand{x: DFLOAT := 1\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (12)  1.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty12}
-\begin{paste}{ugGraphThreeDBuildPageEmpty12}{ugGraphThreeDBuildPagePatch12}
-\pastebutton{ugGraphThreeDBuildPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{x: DFLOAT := 1\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch13}
-\begin{paste}{ugGraphThreeDBuildPageFull13}{ugGraphThreeDBuildPageEmpty13}
-\pastebutton{ugGraphThreeDBuildPageFull13}{\hidepaste}
-\tab{5}\spadcommand{y: DFLOAT := -1\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (13)  - 1.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty13}
-\begin{paste}{ugGraphThreeDBuildPageEmpty13}{ugGraphThreeDBuildPagePatch13}
-\pastebutton{ugGraphThreeDBuildPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{y: DFLOAT := -1\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch14}
-\begin{paste}{ugGraphThreeDBuildPageFull14}{ugGraphThreeDBuildPageEmpty14}
-\pastebutton{ugGraphThreeDBuildPageFull14}{\hidepaste}
-\tab{5}\spadcommand{a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)\bound{a }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (14)  [1.0,1.0,- 1.0,1.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty14}
-\begin{paste}{ugGraphThreeDBuildPageEmpty14}{ugGraphThreeDBuildPagePatch14}
-\pastebutton{ugGraphThreeDBuildPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{a := point [x,x,y,1::DFLOAT]$(Point DFLOAT)\bound{a }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch15}
-\begin{paste}{ugGraphThreeDBuildPageFull15}{ugGraphThreeDBuildPageEmpty15}
-\pastebutton{ugGraphThreeDBuildPageFull15}{\hidepaste}
-\tab{5}\spadcommand{b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)\bound{b }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (15)  [- 1.0,1.0,- 1.0,4.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty15}
-\begin{paste}{ugGraphThreeDBuildPageEmpty15}{ugGraphThreeDBuildPagePatch15}
-\pastebutton{ugGraphThreeDBuildPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{b := point [y,x,y,4::DFLOAT]$(Point DFLOAT)\bound{b }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch16}
-\begin{paste}{ugGraphThreeDBuildPageFull16}{ugGraphThreeDBuildPageEmpty16}
-\pastebutton{ugGraphThreeDBuildPageFull16}{\hidepaste}
-\tab{5}\spadcommand{c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)\bound{c }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (16)  [- 1.0,1.0,1.0,8.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty16}
-\begin{paste}{ugGraphThreeDBuildPageEmpty16}{ugGraphThreeDBuildPagePatch16}
-\pastebutton{ugGraphThreeDBuildPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{c := point [y,x,x,8::DFLOAT]$(Point DFLOAT)\bound{c }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch17}
-\begin{paste}{ugGraphThreeDBuildPageFull17}{ugGraphThreeDBuildPageEmpty17}
-\pastebutton{ugGraphThreeDBuildPageFull17}{\hidepaste}
-\tab{5}\spadcommand{d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)\bound{d }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (17)  [1.0,1.0,1.0,12.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty17}
-\begin{paste}{ugGraphThreeDBuildPageEmpty17}{ugGraphThreeDBuildPagePatch17}
-\pastebutton{ugGraphThreeDBuildPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{d := point [x,x,x,12::DFLOAT]$(Point DFLOAT)\bound{d }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch18}
-\begin{paste}{ugGraphThreeDBuildPageFull18}{ugGraphThreeDBuildPageEmpty18}
-\pastebutton{ugGraphThreeDBuildPageFull18}{\hidepaste}
-\tab{5}\spadcommand{e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)\bound{e }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (18)  [1.0,- 1.0,- 1.0,16.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty18}
-\begin{paste}{ugGraphThreeDBuildPageEmpty18}{ugGraphThreeDBuildPagePatch18}
-\pastebutton{ugGraphThreeDBuildPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{e := point [x,y,y,16::DFLOAT]$(Point DFLOAT)\bound{e }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch19}
-\begin{paste}{ugGraphThreeDBuildPageFull19}{ugGraphThreeDBuildPageEmpty19}
-\pastebutton{ugGraphThreeDBuildPageFull19}{\hidepaste}
-\tab{5}\spadcommand{f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)\bound{f }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (19)  [- 1.0,- 1.0,- 1.0,20.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty19}
-\begin{paste}{ugGraphThreeDBuildPageEmpty19}{ugGraphThreeDBuildPagePatch19}
-\pastebutton{ugGraphThreeDBuildPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{f := point [y,y,y,20::DFLOAT]$(Point DFLOAT)\bound{f }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch20}
-\begin{paste}{ugGraphThreeDBuildPageFull20}{ugGraphThreeDBuildPageEmpty20}
-\pastebutton{ugGraphThreeDBuildPageFull20}{\hidepaste}
-\tab{5}\spadcommand{g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)\bound{g }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (20)  [- 1.0,- 1.0,1.0,24.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty20}
-\begin{paste}{ugGraphThreeDBuildPageEmpty20}{ugGraphThreeDBuildPagePatch20}
-\pastebutton{ugGraphThreeDBuildPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{g := point [y,y,x,24::DFLOAT]$(Point DFLOAT)\bound{g }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch21}
-\begin{paste}{ugGraphThreeDBuildPageFull21}{ugGraphThreeDBuildPageEmpty21}
-\pastebutton{ugGraphThreeDBuildPageFull21}{\hidepaste}
-\tab{5}\spadcommand{h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)\bound{h }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (21)  [1.0,- 1.0,1.0,27.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty21}
-\begin{paste}{ugGraphThreeDBuildPageEmpty21}{ugGraphThreeDBuildPagePatch21}
-\pastebutton{ugGraphThreeDBuildPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{h := point [x,y,x,27::DFLOAT]$(Point DFLOAT)\bound{h }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch22}
-\begin{paste}{ugGraphThreeDBuildPageFull22}{ugGraphThreeDBuildPageEmpty22}
-\pastebutton{ugGraphThreeDBuildPageFull22}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[d,c,g,h])\free{d c g h spaceC }\bound{pol1 }}
-\indentrel{3}\begin{verbatim}
-   (22)  3-Space with 1 component
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty22}
-\begin{paste}{ugGraphThreeDBuildPageEmpty22}{ugGraphThreeDBuildPagePatch22}
-\pastebutton{ugGraphThreeDBuildPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[d,c,g,h])\free{d c g h spaceC }\bound{pol1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch23}
-\begin{paste}{ugGraphThreeDBuildPageFull23}{ugGraphThreeDBuildPageEmpty23}
-\pastebutton{ugGraphThreeDBuildPageFull23}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[d,h,e,a])\free{d h e a spaceC }\bound{pol2 }}
-\indentrel{3}\begin{verbatim}
-   (23)  3-Space with 2 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty23}
-\begin{paste}{ugGraphThreeDBuildPageEmpty23}{ugGraphThreeDBuildPagePatch23}
-\pastebutton{ugGraphThreeDBuildPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[d,h,e,a])\free{d h e a spaceC }\bound{pol2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch24}
-\begin{paste}{ugGraphThreeDBuildPageFull24}{ugGraphThreeDBuildPageEmpty24}
-\pastebutton{ugGraphThreeDBuildPageFull24}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[c,d,a,b])\free{c d a b spaceC }\bound{pol3 }}
-\indentrel{3}\begin{verbatim}
-   (24)  3-Space with 3 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty24}
-\begin{paste}{ugGraphThreeDBuildPageEmpty24}{ugGraphThreeDBuildPagePatch24}
-\pastebutton{ugGraphThreeDBuildPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[c,d,a,b])\free{c d a b spaceC }\bound{pol3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch25}
-\begin{paste}{ugGraphThreeDBuildPageFull25}{ugGraphThreeDBuildPageEmpty25}
-\pastebutton{ugGraphThreeDBuildPageFull25}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[g,c,b,f])\free{g c b f spaceC }\bound{pol4 }}
-\indentrel{3}\begin{verbatim}
-   (25)  3-Space with 4 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty25}
-\begin{paste}{ugGraphThreeDBuildPageEmpty25}{ugGraphThreeDBuildPagePatch25}
-\pastebutton{ugGraphThreeDBuildPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[g,c,b,f])\free{g c b f spaceC }\bound{pol4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch26}
-\begin{paste}{ugGraphThreeDBuildPageFull26}{ugGraphThreeDBuildPageEmpty26}
-\pastebutton{ugGraphThreeDBuildPageFull26}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[h,g,f,e])\free{h g f e spaceC }\bound{pol5 }}
-\indentrel{3}\begin{verbatim}
-   (26)  3-Space with 5 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty26}
-\begin{paste}{ugGraphThreeDBuildPageEmpty26}{ugGraphThreeDBuildPagePatch26}
-\pastebutton{ugGraphThreeDBuildPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[h,g,f,e])\free{h g f e spaceC }\bound{pol5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch27}
-\begin{paste}{ugGraphThreeDBuildPageFull27}{ugGraphThreeDBuildPageEmpty27}
-\pastebutton{ugGraphThreeDBuildPageFull27}{\hidepaste}
-\tab{5}\spadcommand{polygon(spaceC,[e,f,b,a])\free{e f b a spaceC }\bound{pol6 }}
-\indentrel{3}\begin{verbatim}
-   (27)  3-Space with 6 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty27}
-\begin{paste}{ugGraphThreeDBuildPageEmpty27}{ugGraphThreeDBuildPagePatch27}
-\pastebutton{ugGraphThreeDBuildPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{polygon(spaceC,[e,f,b,a])\free{e f b a spaceC }\bound{pol6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPagePatch28}
-\begin{paste}{ugGraphThreeDBuildPageFull28}{ugGraphThreeDBuildPageEmpty28}
-\pastebutton{ugGraphThreeDBuildPageFull28}{\hidepaste}
-\tab{5}\spadgraph{makeViewport3D(spaceC, title == "Cube")\free{pol1 pol2 pol3 pol4 pol5 pol6 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedbuildpage28.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedbuildpage28}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDBuildPageEmpty28}
-\begin{paste}{ugGraphThreeDBuildPageEmpty28}{ugGraphThreeDBuildPagePatch28}
-\pastebutton{ugGraphThreeDBuildPageEmpty28}{\showpaste}
-\tab{5}\spadgraph{makeViewport3D(spaceC, title == "Cube")\free{pol1 pol2 pol3 pol4 pol5 pol6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch1}
-\begin{paste}{ugGraphTwoDOptionsPageFull1}{ugGraphTwoDOptionsPageEmpty1}
-\pastebutton{ugGraphTwoDOptionsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty1}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty1}{ugGraphTwoDOptionsPagePatch1}
-\pastebutton{ugGraphTwoDOptionsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(1/x),x=-2*\%pi..2*\%pi, adaptive == false)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch2}
-\begin{paste}{ugGraphTwoDOptionsPageFull2}{ugGraphTwoDOptionsPageEmpty2}
-\pastebutton{ugGraphTwoDOptionsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty2}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty2}{ugGraphTwoDOptionsPagePatch2}
-\pastebutton{ugGraphTwoDOptionsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(tan(x),x=-2*\%pi..2*\%pi, clip == true)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch3}
-\begin{paste}{ugGraphTwoDOptionsPageFull3}{ugGraphTwoDOptionsPageEmpty3}
-\pastebutton{ugGraphTwoDOptionsPageFull3}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty3}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty3}{ugGraphTwoDOptionsPagePatch3}
-\pastebutton{ugGraphTwoDOptionsPageEmpty3}{\showpaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, toScale == true, unit == [1.0,1.0])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch4}
-\begin{paste}{ugGraphTwoDOptionsPageFull4}{ugGraphTwoDOptionsPageEmpty4}
-\pastebutton{ugGraphTwoDOptionsPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty4}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty4}{ugGraphTwoDOptionsPagePatch4}
-\pastebutton{ugGraphTwoDOptionsPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(sec(x),x=-2*\%pi..2*\%pi, clip == [-2*\%pi..2*\%pi,-\%pi..\%pi], unit == [1.0,1.0])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch5}
-\begin{paste}{ugGraphTwoDOptionsPageFull5}{ugGraphTwoDOptionsPageEmpty5}
-\pastebutton{ugGraphTwoDOptionsPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty5}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty5}{ugGraphTwoDOptionsPagePatch5}
-\pastebutton{ugGraphTwoDOptionsPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, curveColor == bright red())}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch6}
-\begin{paste}{ugGraphTwoDOptionsPageFull6}{ugGraphTwoDOptionsPageEmpty6}
-\pastebutton{ugGraphTwoDOptionsPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty6}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty6}{ugGraphTwoDOptionsPagePatch6}
-\pastebutton{ugGraphTwoDOptionsPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(sin(x),x=-\%pi..\%pi, pointColor == pastel yellow())}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch7}
-\begin{paste}{ugGraphTwoDOptionsPageFull7}{ugGraphTwoDOptionsPageEmpty7}
-\pastebutton{ugGraphTwoDOptionsPageFull7}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage7}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty7}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty7}{ugGraphTwoDOptionsPagePatch7}
-\pastebutton{ugGraphTwoDOptionsPageEmpty7}{\showpaste}
-\tab{5}\spadgraph{draw(curve(9*sin(3*t/4),8*sin(t)), t = -4*\%pi..4*\%pi, unit == [2.0,1.0])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch8}
-\begin{paste}{ugGraphTwoDOptionsPageFull8}{ugGraphTwoDOptionsPageEmpty8}
-\pastebutton{ugGraphTwoDOptionsPageFull8}{\hidepaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage8.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage8}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty8}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty8}{ugGraphTwoDOptionsPagePatch8}
-\pastebutton{ugGraphTwoDOptionsPageEmpty8}{\showpaste}
-\tab{5}\spadgraph{draw(y**2 + y - (x**3 - x) = 0, x, y, range == [-2..2,-2..1], unit==[1.0,1.0])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch9}
-\begin{paste}{ugGraphTwoDOptionsPageFull9}{ugGraphTwoDOptionsPageEmpty9}
-\pastebutton{ugGraphTwoDOptionsPageFull9}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage9.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage9}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty9}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty9}{ugGraphTwoDOptionsPagePatch9}
-\pastebutton{ugGraphTwoDOptionsPageEmpty9}{\showpaste}
-\tab{5}\spadgraph{draw(x**2 + y**2 = 1, x, y, range == [-3/2..3/2,-3/2..3/2], unit==[0.5,0.5])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPagePatch10}
-\begin{paste}{ugGraphTwoDOptionsPageFull10}{ugGraphTwoDOptionsPageEmpty10}
-\pastebutton{ugGraphTwoDOptionsPageFull10}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodoptionspage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodoptionspage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDOptionsPageEmpty10}
-\begin{paste}{ugGraphTwoDOptionsPageEmpty10}{ugGraphTwoDOptionsPagePatch10}
-\pastebutton{ugGraphTwoDOptionsPageEmpty10}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(5*t),t),t=0..2*\%pi, coordinates == polar)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePagePatch1}
-\begin{paste}{ugGraphColorPalettePageFull1}{ugGraphColorPalettePageEmpty1}
-\pastebutton{ugGraphColorPalettePageFull1}{\hidepaste}
-\tab{5}\spadcommand{shade red()}
-\indentrel{3}\begin{verbatim}
-   (1)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePageEmpty1}
-\begin{paste}{ugGraphColorPalettePageEmpty1}{ugGraphColorPalettePagePatch1}
-\pastebutton{ugGraphColorPalettePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{shade red()}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePagePatch2}
-\begin{paste}{ugGraphColorPalettePageFull2}{ugGraphColorPalettePageEmpty2}
-\pastebutton{ugGraphColorPalettePageFull2}{\hidepaste}
-\tab{5}\spadcommand{myFavoriteColor := dark blue()\bound{mfc }}
-\indentrel{3}\begin{verbatim}
-   (2)  [Hue: 22  Weight: 1.0] from the Dark palette
-                                          Type: Palette
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePageEmpty2}
-\begin{paste}{ugGraphColorPalettePageEmpty2}{ugGraphColorPalettePagePatch2}
-\pastebutton{ugGraphColorPalettePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{myFavoriteColor := dark blue()\bound{mfc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePagePatch3}
-\begin{paste}{ugGraphColorPalettePageFull3}{ugGraphColorPalettePageEmpty3}
-\pastebutton{ugGraphColorPalettePageFull3}{\hidepaste}
-\tab{5}\spadcommand{shade myFavoriteColor\free{mfc }}
-\indentrel{3}\begin{verbatim}
-   (3)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePageEmpty3}
-\begin{paste}{ugGraphColorPalettePageEmpty3}{ugGraphColorPalettePagePatch3}
-\pastebutton{ugGraphColorPalettePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{shade myFavoriteColor\free{mfc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePagePatch4}
-\begin{paste}{ugGraphColorPalettePageFull4}{ugGraphColorPalettePageEmpty4}
-\pastebutton{ugGraphColorPalettePageFull4}{\hidepaste}
-\tab{5}\spadcommand{hue myFavoriteColor\free{mfc }}
-\indentrel{3}\begin{verbatim}
-   (4)  Hue: 22  Weight: 1.0
-                                            Type: Color
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePageEmpty4}
-\begin{paste}{ugGraphColorPalettePageEmpty4}{ugGraphColorPalettePagePatch4}
-\pastebutton{ugGraphColorPalettePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{hue myFavoriteColor\free{mfc }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePagePatch5}
-\begin{paste}{ugGraphColorPalettePageFull5}{ugGraphColorPalettePageEmpty5}
-\pastebutton{ugGraphColorPalettePageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == dark blue())}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpalettepage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpalettepage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPalettePageEmpty5}
-\begin{paste}{ugGraphColorPalettePageEmpty5}{ugGraphColorPalettePagePatch5}
-\pastebutton{ugGraphColorPalettePageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == dark blue())}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch1}
-\begin{paste}{ugGraphThreeDOptionsPageFull1}{ugGraphThreeDOptionsPageEmpty1}
-\pastebutton{ugGraphThreeDOptionsPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty1}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty1}{ugGraphThreeDOptionsPagePatch1}
-\pastebutton{ugGraphThreeDOptionsPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=0..2*\%pi,y=0..\%pi,title == "Title of Graph")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch2}
-\begin{paste}{ugGraphThreeDOptionsPageFull2}{ugGraphThreeDOptionsPageEmpty2}
-\pastebutton{ugGraphThreeDOptionsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty2}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty2}{ugGraphThreeDOptionsPagePatch2}
-\pastebutton{ugGraphThreeDOptionsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="smooth", title=="Smooth Option")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch3}
-\begin{paste}{ugGraphThreeDOptionsPageFull3}{ugGraphThreeDOptionsPageEmpty3}
-\pastebutton{ugGraphThreeDOptionsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{color1(t) == t\bound{colorFxn1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty3}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty3}{ugGraphThreeDOptionsPagePatch3}
-\pastebutton{ugGraphThreeDOptionsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{color1(t) == t\bound{colorFxn1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch4}
-\begin{paste}{ugGraphThreeDOptionsPageFull4}{ugGraphThreeDOptionsPageEmpty4}
-\pastebutton{ugGraphThreeDOptionsPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1)\free{colorFxn1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty4}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty4}{ugGraphThreeDOptionsPagePatch4}
-\pastebutton{ugGraphThreeDOptionsPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t), cos(t),0), t=0..2*\%pi, tubeRadius == .3, colorFunction == color1)\free{colorFxn1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch5}
-\begin{paste}{ugGraphThreeDOptionsPageFull5}{ugGraphThreeDOptionsPageEmpty5}
-\pastebutton{ugGraphThreeDOptionsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{color2(u,v) == u**2 - v**2\bound{colorFxn2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty5}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty5}{ugGraphThreeDOptionsPagePatch5}
-\pastebutton{ugGraphThreeDOptionsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{color2(u,v) == u**2 - v**2\bound{colorFxn2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch6}
-\begin{paste}{ugGraphThreeDOptionsPageFull6}{ugGraphThreeDOptionsPageEmpty6}
-\pastebutton{ugGraphThreeDOptionsPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2)\free{colorFxn2 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty6}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty6}{ugGraphThreeDOptionsPagePatch6}
-\pastebutton{ugGraphThreeDOptionsPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(cos(u*v), u=-3..3, v=-3..3, colorFunction == color2)\free{colorFxn2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch7}
-\begin{paste}{ugGraphThreeDOptionsPageFull7}{ugGraphThreeDOptionsPageEmpty7}
-\pastebutton{ugGraphThreeDOptionsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy)\bound{colorFxn3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty7}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty7}{ugGraphThreeDOptionsPagePatch7}
-\pastebutton{ugGraphThreeDOptionsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{color3(x,y,fxy) == sin(x*fxy) + cos(y*fxy)\bound{colorFxn3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch8}
-\begin{paste}{ugGraphThreeDOptionsPageFull8}{ugGraphThreeDOptionsPageEmpty8}
-\pastebutton{ugGraphThreeDOptionsPageFull8}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3)\free{colorFxn3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage8.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage8}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty8}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty8}{ugGraphThreeDOptionsPagePatch8}
-\pastebutton{ugGraphThreeDOptionsPageEmpty8}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y), x=-3..3, y=-3..3, colorFunction == color3)\free{colorFxn3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch9}
-\begin{paste}{ugGraphThreeDOptionsPageFull9}{ugGraphThreeDOptionsPageEmpty9}
-\pastebutton{ugGraphThreeDOptionsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty9}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty9}{ugGraphThreeDOptionsPagePatch9}
-\pastebutton{ugGraphThreeDOptionsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch10}
-\begin{paste}{ugGraphThreeDOptionsPageFull10}{ugGraphThreeDOptionsPageEmpty10}
-\pastebutton{ugGraphThreeDOptionsPageFull10}{\hidepaste}
-\tab{5}\spadgraph{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade")\free{m }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugGraphThreeDOptionsPage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty10}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty10}{ugGraphThreeDOptionsPagePatch10}
-\pastebutton{ugGraphThreeDOptionsPageEmpty10}{\showpaste}
-\tab{5}\spadgraph{draw(m, 0..2*\%pi,0..\%pi, coordinates == spherical, style=="shade")\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch11}
-\begin{paste}{ugGraphThreeDOptionsPageFull11}{ugGraphThreeDOptionsPageEmpty11}
-\pastebutton{ugGraphThreeDOptionsPageFull11}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage11.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage11}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty11}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty11}{ugGraphThreeDOptionsPagePatch11}
-\pastebutton{ugGraphThreeDOptionsPageEmpty11}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t),cos(t),0),t=0..2*\%pi, style=="shade", tubeRadius == .3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch12}
-\begin{paste}{ugGraphThreeDOptionsPageFull12}{ugGraphThreeDOptionsPageEmpty12}
-\pastebutton{ugGraphThreeDOptionsPageFull12}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage12.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage12}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty12}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty12}{ugGraphThreeDOptionsPagePatch12}
-\pastebutton{ugGraphThreeDOptionsPageEmpty12}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t), cos(t), 0), t=0..2*\%pi, style=="shade", tubeRadius == .25, tubePoints == 3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch13}
-\begin{paste}{ugGraphThreeDOptionsPageFull13}{ugGraphThreeDOptionsPageEmpty13}
-\pastebutton{ugGraphThreeDOptionsPageFull13}{\hidepaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage13.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage13}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty13}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty13}{ugGraphThreeDOptionsPagePatch13}
-\pastebutton{ugGraphThreeDOptionsPageEmpty13}{\showpaste}
-\tab{5}\spadgraph{draw(cos(x*y),x=-3..3,y=-3..3, style=="shade", var1Steps == 30, var2Steps == 30)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch14}
-\begin{paste}{ugGraphThreeDOptionsPageFull14}{ugGraphThreeDOptionsPageEmpty14}
-\pastebutton{ugGraphThreeDOptionsPageFull14}{\hidepaste}
-\tab{5}\spadcommand{s := create3Space()$(ThreeSpace DFLOAT)\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (14)  3-Space with 0 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty14}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty14}{ugGraphThreeDOptionsPagePatch14}
-\pastebutton{ugGraphThreeDOptionsPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{s := create3Space()$(ThreeSpace DFLOAT)\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch15}
-\begin{paste}{ugGraphThreeDOptionsPageFull15}{ugGraphThreeDOptionsPageEmpty15}
-\pastebutton{ugGraphThreeDOptionsPageFull15}{\hidepaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty15}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty15}{ugGraphThreeDOptionsPagePatch15}
-\pastebutton{ugGraphThreeDOptionsPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == 1\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch16}
-\begin{paste}{ugGraphThreeDOptionsPageFull16}{ugGraphThreeDOptionsPageEmpty16}
-\pastebutton{ugGraphThreeDOptionsPageFull16}{\hidepaste}
-\tab{5}\spadgraph{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s)\free{s m }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage16.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage16}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty16}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty16}{ugGraphThreeDOptionsPagePatch16}
-\pastebutton{ugGraphThreeDOptionsPageEmpty16}{\showpaste}
-\tab{5}\spadgraph{draw(m,0..\%pi,0..2*\%pi, coordinates == spherical, space == s)\free{s m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch17}
-\begin{paste}{ugGraphThreeDOptionsPageFull17}{ugGraphThreeDOptionsPageEmpty17}
-\pastebutton{ugGraphThreeDOptionsPageFull17}{\hidepaste}
-\tab{5}\spadgraph{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s)\free{s }\bound{v }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage17.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage17}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty17}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty17}{ugGraphThreeDOptionsPagePatch17}
-\pastebutton{ugGraphThreeDOptionsPageEmpty17}{\showpaste}
-\tab{5}\spadgraph{v := draw(curve(1.5*sin(t), 1.5*cos(t),0), t=0..2*\%pi, tubeRadius == .25, space == s)\free{s }\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch18}
-\begin{paste}{ugGraphThreeDOptionsPageFull18}{ugGraphThreeDOptionsPageEmpty18}
-\pastebutton{ugGraphThreeDOptionsPageFull18}{\hidepaste}
-\tab{5}\spadcommand{subsp := subspace v\free{v }\bound{su }}
-\indentrel{3}\begin{verbatim}
-   (18)  3-Space with 2 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty18}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty18}{ugGraphThreeDOptionsPagePatch18}
-\pastebutton{ugGraphThreeDOptionsPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{subsp := subspace v\free{v }\bound{su }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch19}
-\begin{paste}{ugGraphThreeDOptionsPageFull19}{ugGraphThreeDOptionsPageEmpty19}
-\pastebutton{ugGraphThreeDOptionsPageFull19}{\hidepaste}
-\tab{5}\spadcommand{subspace(v, subsp)\bound{sp }\free{su }}
-\indentrel{3}\begin{verbatim}
-   (19)
-   Closed or Undefined ThreeDimensionalViewport: "AXIOM3D"
-                         Type: ThreeDimensionalViewport
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty19}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty19}{ugGraphThreeDOptionsPagePatch19}
-\pastebutton{ugGraphThreeDOptionsPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{subspace(v, subsp)\bound{sp }\free{su }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPagePatch20}
-\begin{paste}{ugGraphThreeDOptionsPageFull20}{ugGraphThreeDOptionsPageEmpty20}
-\pastebutton{ugGraphThreeDOptionsPageFull20}{\hidepaste}
-\tab{5}\spadgraph{makeViewport3D(subsp,"Graphs")\free{sp }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedoptionspage20.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedoptionspage20}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDOptionsPageEmpty20}
-\begin{paste}{ugGraphThreeDOptionsPageEmpty20}{ugGraphThreeDOptionsPagePatch20}
-\pastebutton{ugGraphThreeDOptionsPageEmpty20}{\showpaste}
-\tab{5}\spadgraph{makeViewport3D(subsp,"Graphs")\free{sp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphClipPagePatch1}
-\begin{paste}{ugGraphClipPageFull1}{ugGraphClipPageEmpty1}
-\pastebutton{ugGraphClipPageFull1}{\hidepaste}
-\tab{5}\spadcommand{gamma(x,y) ==
-  g := Gamma complex(x,y)
-  point [x, y, max( min(real g, 4), -4), argument g]
-\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphClipPageEmpty1}
-\begin{paste}{ugGraphClipPageEmpty1}{ugGraphClipPagePatch1}
-\pastebutton{ugGraphClipPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{gamma(x,y) ==
-  g := Gamma complex(x,y)
-  point [x, y, max( min(real g, 4), -4), argument g]
-\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphClipPagePatch2}
-\begin{paste}{ugGraphClipPageFull2}{ugGraphClipPageEmpty2}
-\pastebutton{ugGraphClipPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50)\free{g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphclippage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphclippage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphClipPageEmpty2}
-\begin{paste}{ugGraphClipPageEmpty2}{ugGraphClipPagePatch2}
-\pastebutton{ugGraphClipPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(gamma,-\%pi..\%pi,-\%pi..\%pi,var1Steps==50,var2Steps==50)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch1}
-\begin{paste}{ugGraphCoordPageFull1}{ugGraphCoordPageEmpty1}
-\pastebutton{ugGraphCoordPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2\bound{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty1}
-\begin{paste}{ugGraphCoordPageEmpty1}{ugGraphCoordPagePatch1}
-\pastebutton{ugGraphCoordPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m(u:DFLOAT,v:DFLOAT):DFLOAT == u**2\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch2}
-\begin{paste}{ugGraphCoordPageFull2}{ugGraphCoordPageEmpty2}
-\pastebutton{ugGraphCoordPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(m,0..3,0..5)\free{m }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty2}
-\begin{paste}{ugGraphCoordPageEmpty2}{ugGraphCoordPagePatch2}
-\pastebutton{ugGraphCoordPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(m,0..3,0..5)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch3}
-\begin{paste}{ugGraphCoordPageFull3}{ugGraphCoordPageEmpty3}
-\pastebutton{ugGraphCoordPageFull3}{\hidepaste}
-\tab{5}\spadcommand{cartesian(point:Point DFLOAT):Point DFLOAT == point\bound{cart }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty3}
-\begin{paste}{ugGraphCoordPageEmpty3}{ugGraphCoordPagePatch3}
-\pastebutton{ugGraphCoordPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{cartesian(point:Point DFLOAT):Point DFLOAT == point\bound{cart }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch4}
-\begin{paste}{ugGraphCoordPageFull4}{ugGraphCoordPageEmpty4}
-\pastebutton{ugGraphCoordPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(m,0..3,0..5,coordinates==cartesian)\free{m cart }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty4}
-\begin{paste}{ugGraphCoordPageEmpty4}{ugGraphCoordPagePatch4}
-\pastebutton{ugGraphCoordPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(m,0..3,0..5,coordinates==cartesian)\free{m cart }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch5}
-\begin{paste}{ugGraphCoordPageFull5}{ugGraphCoordPageEmpty5}
-\pastebutton{ugGraphCoordPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty5}
-\begin{paste}{ugGraphCoordPageEmpty5}{ugGraphCoordPagePatch5}
-\pastebutton{ugGraphCoordPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f(u:DFLOAT,v:DFLOAT):DFLOAT == 3\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch6}
-\begin{paste}{ugGraphCoordPageFull6}{ugGraphCoordPageEmpty6}
-\pastebutton{ugGraphCoordPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(f,0..\%pi,0..6,coordinates==cylindrical)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty6}
-\begin{paste}{ugGraphCoordPageEmpty6}{ugGraphCoordPagePatch6}
-\pastebutton{ugGraphCoordPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(f,0..\%pi,0..6,coordinates==cylindrical)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch7}
-\begin{paste}{ugGraphCoordPageFull7}{ugGraphCoordPageEmpty7}
-\pastebutton{ugGraphCoordPageFull7}{\hidepaste}
-\tab{5}\spadcommand{col := 5\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (7)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty7}
-\begin{paste}{ugGraphCoordPageEmpty7}{ugGraphCoordPagePatch7}
-\pastebutton{ugGraphCoordPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{col := 5\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch8}
-\begin{paste}{ugGraphCoordPageFull8}{ugGraphCoordPageEmpty8}
-\pastebutton{ugGraphCoordPageFull8}{\hidepaste}
-\tab{5}\spadcommand{pt := point[1,2,3,col]$(Point DFLOAT)\free{c }\bound{pt }}
-\indentrel{3}\begin{verbatim}
-   (8)  [1.0,2.0,3.0,5.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty8}
-\begin{paste}{ugGraphCoordPageEmpty8}{ugGraphCoordPagePatch8}
-\pastebutton{ugGraphCoordPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{pt := point[1,2,3,col]$(Point DFLOAT)\free{c }\bound{pt }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch9}
-\begin{paste}{ugGraphCoordPageFull9}{ugGraphCoordPageEmpty9}
-\pastebutton{ugGraphCoordPageFull9}{\hidepaste}
-\tab{5}\spadcommand{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4]\bound{freo }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty9}
-\begin{paste}{ugGraphCoordPageEmpty9}{ugGraphCoordPagePatch9}
-\pastebutton{ugGraphCoordPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{reorder(p:Point DFLOAT):Point DFLOAT == point[p.2, p.3, p.1, p.4]\bound{freo }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch10}
-\begin{paste}{ugGraphCoordPageFull10}{ugGraphCoordPageEmpty10}
-\pastebutton{ugGraphCoordPageFull10}{\hidepaste}
-\tab{5}\spadcommand{reorder pt\free{pt freo }}
-\indentrel{3}\begin{verbatim}
-   (10)  [2.0,3.0,1.0,5.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty10}
-\begin{paste}{ugGraphCoordPageEmpty10}{ugGraphCoordPagePatch10}
-\pastebutton{ugGraphCoordPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{reorder pt\free{pt freo }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch11}
-\begin{paste}{ugGraphCoordPageFull11}{ugGraphCoordPageEmpty11}
-\pastebutton{ugGraphCoordPageFull11}{\hidepaste}
-\tab{5}\spadcommand{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)\free{freo }\bound{fnewmap }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty11}
-\begin{paste}{ugGraphCoordPageEmpty11}{ugGraphCoordPagePatch11}
-\pastebutton{ugGraphCoordPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{newmap(pt:Point DFLOAT):Point DFLOAT == cylindrical(reorder pt)\free{freo }\bound{fnewmap }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch12}
-\begin{paste}{ugGraphCoordPageFull12}{ugGraphCoordPageEmpty12}
-\pastebutton{ugGraphCoordPageFull12}{\hidepaste}
-\tab{5}\spadcommand{newmap pt\free{fnewmap pt }\bound{new }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [- 1.9799849932008908,0.28224001611973443,1.0,5.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty12}
-\begin{paste}{ugGraphCoordPageEmpty12}{ugGraphCoordPagePatch12}
-\pastebutton{ugGraphCoordPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{newmap pt\free{fnewmap pt }\bound{new }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPagePatch13}
-\begin{paste}{ugGraphCoordPageFull13}{ugGraphCoordPageEmpty13}
-\pastebutton{ugGraphCoordPageFull13}{\hidepaste}
-\tab{5}\spadgraph{draw(f,0..3,0..2*\%pi,coordinates==newmap)\free{f new }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcoordpage13.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcoordpage13}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphCoordPageEmpty13}
-\begin{paste}{ugGraphCoordPageEmpty13}{ugGraphCoordPagePatch13}
-\pastebutton{ugGraphCoordPageEmpty13}{\showpaste}
-\tab{5}\spadgraph{draw(f,0..3,0..2*\%pi,coordinates==newmap)\free{f new }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPagePatch1}
-\begin{paste}{ugGraphColorPageFull1}{ugGraphColorPageEmpty1}
-\pastebutton{ugGraphColorPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,pointColor == green())}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPageEmpty1}
-\begin{paste}{ugGraphColorPageEmpty1}{ugGraphColorPagePatch1}
-\pastebutton{ugGraphColorPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,pointColor == green())}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPagePatch2}
-\begin{paste}{ugGraphColorPageFull2}{ugGraphColorPageEmpty2}
-\pastebutton{ugGraphColorPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphcolorpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphcolorpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphColorPageEmpty2}
-\begin{paste}{ugGraphColorPageEmpty2}{ugGraphColorPagePatch2}
-\pastebutton{ugGraphColorPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,curveColor == color(13) + 2*blue())}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch1}
-\begin{paste}{ugGraphTwoDParPageFull1}{ugGraphTwoDParPageEmpty1}
-\pastebutton{ugGraphTwoDParPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty1}
-\begin{paste}{ugGraphTwoDParPageEmpty1}{ugGraphTwoDParPagePatch1}
-\pastebutton{ugGraphTwoDParPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(curve(sin(t)*sin(2*t)*sin(3*t), sin(4*t)*sin(5*t)*sin(6*t)), t = 0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch2}
-\begin{paste}{ugGraphTwoDParPageFull2}{ugGraphTwoDParPageEmpty2}
-\pastebutton{ugGraphTwoDParPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty2}
-\begin{paste}{ugGraphTwoDParPageEmpty2}{ugGraphTwoDParPagePatch2}
-\pastebutton{ugGraphTwoDParPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(curve(cos(t), sin(t)), t = 0..2*\%pi)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch3}
-\begin{paste}{ugGraphTwoDParPageFull3}{ugGraphTwoDParPageEmpty3}
-\pastebutton{ugGraphTwoDParPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(t:DFLOAT):DFLOAT == sin(3*t/4)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty3}
-\begin{paste}{ugGraphTwoDParPageEmpty3}{ugGraphTwoDParPagePatch3}
-\pastebutton{ugGraphTwoDParPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(t:DFLOAT):DFLOAT == sin(3*t/4)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch4}
-\begin{paste}{ugGraphTwoDParPageFull4}{ugGraphTwoDParPageEmpty4}
-\pastebutton{ugGraphTwoDParPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g(t:DFLOAT):DFLOAT == sin(t)\bound{g }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty4}
-\begin{paste}{ugGraphTwoDParPageEmpty4}{ugGraphTwoDParPagePatch4}
-\pastebutton{ugGraphTwoDParPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g(t:DFLOAT):DFLOAT == sin(t)\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch5}
-\begin{paste}{ugGraphTwoDParPageFull5}{ugGraphTwoDParPageEmpty5}
-\pastebutton{ugGraphTwoDParPageFull5}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(f,g),0..\%pi)\free{f g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty5}
-\begin{paste}{ugGraphTwoDParPageEmpty5}{ugGraphTwoDParPagePatch5}
-\pastebutton{ugGraphTwoDParPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{draw(curve(f,g),0..\%pi)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPagePatch6}
-\begin{paste}{ugGraphTwoDParPageFull6}{ugGraphTwoDParPageEmpty6}
-\pastebutton{ugGraphTwoDParPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(curve(f,g),-4*\%pi..4*\%pi)\free{f g }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodparpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodparpage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDParPageEmpty6}
-\begin{paste}{ugGraphTwoDParPageEmpty6}{ugGraphTwoDParPagePatch6}
-\pastebutton{ugGraphTwoDParPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(curve(f,g),-4*\%pi..4*\%pi)\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPagePatch1}
-\begin{paste}{ugGraphTwoDPlotPageFull1}{ugGraphTwoDPlotPageEmpty1}
-\pastebutton{ugGraphTwoDPlotPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPageEmpty1}
-\begin{paste}{ugGraphTwoDPlotPageEmpty1}{ugGraphTwoDPlotPagePatch1}
-\pastebutton{ugGraphTwoDPlotPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 0..6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPagePatch2}
-\begin{paste}{ugGraphTwoDPlotPageFull2}{ugGraphTwoDPlotPageEmpty2}
-\pastebutton{ugGraphTwoDPlotPageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPageEmpty2}
-\begin{paste}{ugGraphTwoDPlotPageEmpty2}{ugGraphTwoDPlotPagePatch2}
-\pastebutton{ugGraphTwoDPlotPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(sin(tan(x)) - tan(sin(x)),x = 10..16)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPagePatch3}
-\begin{paste}{ugGraphTwoDPlotPageFull3}{ugGraphTwoDPlotPageEmpty3}
-\pastebutton{ugGraphTwoDPlotPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPageEmpty3}
-\begin{paste}{ugGraphTwoDPlotPageEmpty3}{ugGraphTwoDPlotPagePatch3}
-\pastebutton{ugGraphTwoDPlotPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f(x) == (x-1)*(x-2)*(x-3)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPagePatch4}
-\begin{paste}{ugGraphTwoDPlotPageFull4}{ugGraphTwoDPlotPageEmpty4}
-\pastebutton{ugGraphTwoDPlotPageFull4}{\hidepaste}
-\tab{5}\spadgraph{draw(f, 0..4)\free{f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplotpage4.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplotpage4}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlotPageEmpty4}
-\begin{paste}{ugGraphTwoDPlotPageEmpty4}{ugGraphTwoDPlotPagePatch4}
-\pastebutton{ugGraphTwoDPlotPageEmpty4}{\showpaste}
-\tab{5}\spadgraph{draw(f, 0..4)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch1}
-\begin{paste}{ugGraphThreeDParPageFull1}{ugGraphThreeDParPageEmpty1}
-\pastebutton{ugGraphThreeDParPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty1}
-\begin{paste}{ugGraphThreeDParPageEmpty1}{ugGraphThreeDParPagePatch1}
-\pastebutton{ugGraphThreeDParPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(surface(u*cos(v), u*sin(v), v*cos(u)), u=-4..4, v=0..\%pi, coordinates== parabolicCylindrical)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch2}
-\begin{paste}{ugGraphThreeDParPageFull2}{ugGraphThreeDParPageEmpty2}
-\pastebutton{ugGraphThreeDParPageFull2}{\hidepaste}
-\tab{5}\spadcommand{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v)\bound{n1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty2}
-\begin{paste}{ugGraphThreeDParPageEmpty2}{ugGraphThreeDParPagePatch2}
-\pastebutton{ugGraphThreeDParPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{n1(u:DFLOAT,v:DFLOAT):DFLOAT == u*cos(v)\bound{n1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch3}
-\begin{paste}{ugGraphThreeDParPageFull3}{ugGraphThreeDParPageEmpty3}
-\pastebutton{ugGraphThreeDParPageFull3}{\hidepaste}
-\tab{5}\spadcommand{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v)\bound{n2 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty3}
-\begin{paste}{ugGraphThreeDParPageEmpty3}{ugGraphThreeDParPagePatch3}
-\pastebutton{ugGraphThreeDParPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{n2(u:DFLOAT,v:DFLOAT):DFLOAT == u*sin(v)\bound{n2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch4}
-\begin{paste}{ugGraphThreeDParPageFull4}{ugGraphThreeDParPageEmpty4}
-\pastebutton{ugGraphThreeDParPageFull4}{\hidepaste}
-\tab{5}\spadcommand{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u\bound{n3 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty4}
-\begin{paste}{ugGraphThreeDParPageEmpty4}{ugGraphThreeDParPagePatch4}
-\pastebutton{ugGraphThreeDParPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{n3(u:DFLOAT,v:DFLOAT):DFLOAT == u\bound{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch5}
-\begin{paste}{ugGraphThreeDParPageFull5}{ugGraphThreeDParPageEmpty5}
-\pastebutton{ugGraphThreeDParPageFull5}{\hidepaste}
-\tab{5}\spadcommand{n3(0.5,1.0)\free{n3 }}
-\indentrel{3}\begin{verbatim}
-   (5)  0.5
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty5}
-\begin{paste}{ugGraphThreeDParPageEmpty5}{ugGraphThreeDParPagePatch5}
-\pastebutton{ugGraphThreeDParPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{n3(0.5,1.0)\free{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPagePatch6}
-\begin{paste}{ugGraphThreeDParPageFull6}{ugGraphThreeDParPageEmpty6}
-\pastebutton{ugGraphThreeDParPageFull6}{\hidepaste}
-\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1$DFLOAT))\free{n1 n2 n3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphthreedparpage6.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphthreedparpage6}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphThreeDParPageEmpty6}
-\begin{paste}{ugGraphThreeDParPageEmpty6}{ugGraphThreeDParPagePatch6}
-\pastebutton{ugGraphThreeDParPageEmpty6}{\showpaste}
-\tab{5}\spadgraph{draw(surface(n1,n2,n3), 1..4, 1..2*\%pi, coordinates == toroidal(1$DFLOAT))\free{n1 n2 n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlanePagePatch1}
-\begin{paste}{ugGraphTwoDPlanePageFull1}{ugGraphTwoDPlanePageEmpty1}
-\pastebutton{ugGraphTwoDPlanePageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1)\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (1)
-    4      2            2    4      3      2
-   y  + (2x  - 16x - 6)y  + x  - 16x  + 58x  - 12x - 6
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlanePageEmpty1}
-\begin{paste}{ugGraphTwoDPlanePageEmpty1}{ugGraphTwoDPlanePagePatch1}
-\pastebutton{ugGraphTwoDPlanePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := ((x**2 + y**2 + 1) - 8*x)**2 - (8*(x**2 + y**2 + 1)-4*x-1)\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlanePagePatch2}
-\begin{paste}{ugGraphTwoDPlanePageFull2}{ugGraphTwoDPlanePageEmpty2}
-\pastebutton{ugGraphTwoDPlanePageFull2}{\hidepaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7])\free{p }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/uggraphtwodplanepage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/uggraphtwodplanepage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugGraphTwoDPlanePageEmpty2}
-\begin{paste}{ugGraphTwoDPlanePageEmpty2}{ugGraphTwoDPlanePagePatch2}
-\pastebutton{ugGraphTwoDPlanePageEmpty2}{\showpaste}
-\tab{5}\spadgraph{draw(p = 0, x, y, range == [-1..11, -7..7])\free{p }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug08.pht b/books/pages/ug08.pht
deleted file mode 100644
index 572a326..0000000
--- a/books/pages/ug08.pht
+++ /dev/null
@@ -1,7664 +0,0 @@
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch1}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull1}{ugxProblemSeriesBernoulliPageEmpty1}
-\pastebutton{ugxProblemSeriesBernoulliPageFull1}{\hidepaste}
-\tab{5}\spadcommand{reduce(+,[m**4 for m in 1..10])}
-\indentrel{3}\begin{verbatim}
-   (1)  25333
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty1}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty1}{ugxProblemSeriesBernoulliPagePatch1}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{reduce(+,[m**4 for m in 1..10])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch2}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull2}{ugxProblemSeriesBernoulliPageEmpty2}
-\pastebutton{ugxProblemSeriesBernoulliPageFull2}{\hidepaste}
-\tab{5}\spadcommand{sum4 := sum(m**4, m = 1..k)\bound{sum4 }}
-\indentrel{3}\begin{verbatim}
-          5      4      3
-        6k  + 15k  + 10k  - k
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                  30
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty2}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty2}{ugxProblemSeriesBernoulliPagePatch2}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{sum4 := sum(m**4, m = 1..k)\bound{sum4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch3}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull3}{ugxProblemSeriesBernoulliPageEmpty3}
-\pastebutton{ugxProblemSeriesBernoulliPageFull3}{\hidepaste}
-\tab{5}\spadcommand{eval(sum4, k = 10)\free{sum4 }}
-\indentrel{3}\begin{verbatim}
-   (3)  25333
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty3}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty3}{ugxProblemSeriesBernoulliPagePatch3}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{eval(sum4, k = 10)\free{sum4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch4}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull4}{ugxProblemSeriesBernoulliPageEmpty4}
-\pastebutton{ugxProblemSeriesBernoulliPageFull4}{\hidepaste}
-\tab{5}\spadcommand{f := t*exp(x*t) / (exp(t) - 1)\bound{f }}
-\indentrel{3}\begin{verbatim}
-            t x
-        t %e
-   (4)  ÄÄÄÄÄÄÄ
-          t
-        %e  - 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty4}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty4}{ugxProblemSeriesBernoulliPagePatch4}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{f := t*exp(x*t) / (exp(t) - 1)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch5}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull5}{ugxProblemSeriesBernoulliPageEmpty5}
-\pastebutton{ugxProblemSeriesBernoulliPageFull5}{\hidepaste}
-\tab{5}\spadcommand{)set streams calculate 5\bound{set }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty5}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty5}{ugxProblemSeriesBernoulliPagePatch5}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)set streams calculate 5\bound{set }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch6}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull6}{ugxProblemSeriesBernoulliPageEmpty6}
-\pastebutton{ugxProblemSeriesBernoulliPageFull6}{\hidepaste}
-\tab{5}\spadcommand{ff := taylor(f,t = 0)\free{f set }\bound{ff }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                      2                 3     2
-         2x - 1     6x  - 6x + 1  2   2x  - 3x  + x  3
-     1 + ÄÄÄÄÄÄ t + ÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-            2            12                 12
-   + 
-        4      3      2            5      4      3
-     30x  - 60x  + 30x  - 1  4   6x  - 15x  + 10x  - x  5
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-               720                        720
-   + 
-        6
-     O(t )
-   Type: UnivariateTaylorSeries(Expression Integer,t,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty6}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty6}{ugxProblemSeriesBernoulliPagePatch6}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{ff := taylor(f,t = 0)\free{f set }\bound{ff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch7}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull7}{ugxProblemSeriesBernoulliPageEmpty7}
-\pastebutton{ugxProblemSeriesBernoulliPageFull7}{\hidepaste}
-\tab{5}\spadcommand{factorial(6) * coefficient(ff,6)\free{ff }}
-\indentrel{3}\begin{verbatim}
-           6       5       4      2
-        42x  - 126x  + 105x  - 21x  + 1
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                       42
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty7}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty7}{ugxProblemSeriesBernoulliPagePatch7}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{factorial(6) * coefficient(ff,6)\free{ff }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch8}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull8}{ugxProblemSeriesBernoulliPageEmpty8}
-\pastebutton{ugxProblemSeriesBernoulliPageFull8}{\hidepaste}
-\tab{5}\spadcommand{g := eval(f, x = x + 1) - f\bound{g }\free{f }}
-\indentrel{3}\begin{verbatim}
-            t x + t       t x
-        t %e        - t %e
-   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                 t
-               %e  - 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty8}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty8}{ugxProblemSeriesBernoulliPagePatch8}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{g := eval(f, x = x + 1) - f\bound{g }\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch9}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull9}{ugxProblemSeriesBernoulliPageEmpty9}
-\pastebutton{ugxProblemSeriesBernoulliPageFull9}{\hidepaste}
-\tab{5}\spadcommand{normalize(g)\free{g }}
-\indentrel{3}\begin{verbatim}
-            t x
-   (8)  t %e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty9}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty9}{ugxProblemSeriesBernoulliPagePatch9}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{normalize(g)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch10}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull10}{ugxProblemSeriesBernoulliPageEmpty10}
-\pastebutton{ugxProblemSeriesBernoulliPageFull10}{\hidepaste}
-\tab{5}\spadcommand{taylor(g,t = 0)\free{g }}
-\indentrel{3}\begin{verbatim}
-                    2       3       4
-               2   x   3   x   4   x   5      6
-   (9)  t + x t  + ÄÄ t  + ÄÄ t  + ÄÄ t  + O(t )
-                    2       6      24
-   Type: UnivariateTaylorSeries(Expression Integer,t,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty10}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty10}{ugxProblemSeriesBernoulliPagePatch10}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{taylor(g,t = 0)\free{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch11}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull11}{ugxProblemSeriesBernoulliPageEmpty11}
-\pastebutton{ugxProblemSeriesBernoulliPageFull11}{\hidepaste}
-\tab{5}\spadcommand{B5 := factorial(5) * coefficient(ff,5)\free{ff }\bound{B5 }}
-\indentrel{3}\begin{verbatim}
-           5      4      3
-         6x  - 15x  + 10x  - x
-   (10)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   6
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty11}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty11}{ugxProblemSeriesBernoulliPagePatch11}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{B5 := factorial(5) * coefficient(ff,5)\free{ff }\bound{B5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch12}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull12}{ugxProblemSeriesBernoulliPageEmpty12}
-\pastebutton{ugxProblemSeriesBernoulliPageFull12}{\hidepaste}
-\tab{5}\spadcommand{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1))\free{B5 }}
-\indentrel{3}\begin{verbatim}
-           5      4      3
-         6k  + 15k  + 10k  - k
-   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   30
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty12}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty12}{ugxProblemSeriesBernoulliPagePatch12}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{1/5 * (eval(B5, x = k + 1) - eval(B5, x = 1))\free{B5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPagePatch13}
-\begin{paste}{ugxProblemSeriesBernoulliPageFull13}{ugxProblemSeriesBernoulliPageEmpty13}
-\pastebutton{ugxProblemSeriesBernoulliPageFull13}{\hidepaste}
-\tab{5}\spadcommand{sum4\free{sum4 }}
-\indentrel{3}\begin{verbatim}
-           5      4      3
-         6k  + 15k  + 10k  - k
-   (12)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   30
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesBernoulliPageEmpty13}
-\begin{paste}{ugxProblemSeriesBernoulliPageEmpty13}{ugxProblemSeriesBernoulliPagePatch13}
-\pastebutton{ugxProblemSeriesBernoulliPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{sum4\free{sum4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch1}
-\begin{paste}{ugProblemLaplacePageFull1}{ugProblemLaplacePageEmpty1}
-\pastebutton{ugProblemLaplacePageFull1}{\hidepaste}
-\tab{5}\spadcommand{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
-\indentrel{3}\begin{verbatim}
-             3
-           4a
-   (1)  ÄÄÄÄÄÄÄÄ
-         4     4
-        s  + 4a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty1}
-\begin{paste}{ugProblemLaplacePageEmpty1}{ugProblemLaplacePagePatch1}
-\pastebutton{ugProblemLaplacePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{laplace(sin(a*t)*cosh(a*t)-cos(a*t)*sinh(a*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch2}
-\begin{paste}{ugProblemLaplacePageFull2}{ugProblemLaplacePageEmpty2}
-\pastebutton{ugProblemLaplacePageFull2}{\hidepaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\indentrel{3}\begin{verbatim}
-   (2)  - log(s - a) + log(s - b)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty2}
-\begin{paste}{ugProblemLaplacePageEmpty2}{ugProblemLaplacePagePatch2}
-\pastebutton{ugProblemLaplacePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{laplace((exp(a*t) - exp(b*t))/t, t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch3}
-\begin{paste}{ugProblemLaplacePageFull3}{ugProblemLaplacePageEmpty3}
-\pastebutton{ugProblemLaplacePageFull3}{\hidepaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\indentrel{3}\begin{verbatim}
-             2    2
-   (3)  log(s  + a ) - 2log(s)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty3}
-\begin{paste}{ugProblemLaplacePageEmpty3}{ugProblemLaplacePagePatch3}
-\pastebutton{ugProblemLaplacePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{laplace(2/t * (1 - cos(a*t)), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch4}
-\begin{paste}{ugProblemLaplacePageFull4}{ugProblemLaplacePageEmpty4}
-\pastebutton{ugProblemLaplacePageFull4}{\hidepaste}
-\tab{5}\spadcommand{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
-\indentrel{3}\begin{verbatim}
-                    1
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-           2             3    2
-        b s  + 2a b s + b  + a b
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty4}
-\begin{paste}{ugProblemLaplacePageEmpty4}{ugProblemLaplacePagePatch4}
-\pastebutton{ugProblemLaplacePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{laplace(exp(-a*t) * sin(b*t) / b**2, t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch5}
-\begin{paste}{ugProblemLaplacePageFull5}{ugProblemLaplacePageEmpty5}
-\pastebutton{ugProblemLaplacePageFull5}{\hidepaste}
-\tab{5}\spadcommand{laplace((cos(a*t) - cos(b*t))/t, t, s)}
-\indentrel{3}\begin{verbatim}
-             2    2         2    2
-        log(s  + b ) - log(s  + a )
-   (5)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                     2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty5}
-\begin{paste}{ugProblemLaplacePageEmpty5}{ugProblemLaplacePagePatch5}
-\pastebutton{ugProblemLaplacePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{laplace((cos(a*t) - cos(b*t))/t, t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch6}
-\begin{paste}{ugProblemLaplacePageFull6}{ugProblemLaplacePageEmpty6}
-\pastebutton{ugProblemLaplacePageFull6}{\hidepaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\indentrel{3}\begin{verbatim}
-          b    s + c - a
-        %e log(ÄÄÄÄÄÄÄÄÄ)
-                   c
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-              s - a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty6}
-\begin{paste}{ugProblemLaplacePageEmpty6}{ugProblemLaplacePagePatch6}
-\pastebutton{ugProblemLaplacePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{laplace(exp(a*t+b)*Ei(c*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch7}
-\begin{paste}{ugProblemLaplacePageFull7}{ugProblemLaplacePageEmpty7}
-\pastebutton{ugProblemLaplacePageFull7}{\hidepaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\indentrel{3}\begin{verbatim}
-               2    2
-              s  + b             d
-        a log(ÄÄÄÄÄÄÄ) + 2c atan(Ä)
-                  2              s
-                 b
-   (7)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                     2s
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty7}
-\begin{paste}{ugProblemLaplacePageEmpty7}{ugProblemLaplacePagePatch7}
-\pastebutton{ugProblemLaplacePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{laplace(a*Ci(b*t) + c*Si(d*t), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePagePatch8}
-\begin{paste}{ugProblemLaplacePageFull8}{ugProblemLaplacePageEmpty8}
-\pastebutton{ugProblemLaplacePageFull8}{\hidepaste}
-\tab{5}\spadcommand{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
-\indentrel{3}\begin{verbatim}
-                                    2
-          4     2 2    4           t           3
-        (s  + 2a s  + a )laplace(%e  ,t,s) + 2a
-   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                      4     2 2    4
-                     s  + 2a s  + a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLaplacePageEmpty8}
-\begin{paste}{ugProblemLaplacePageEmpty8}{ugProblemLaplacePagePatch8}
-\pastebutton{ugProblemLaplacePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{laplace(sin(a*t) - a*t*cos(a*t) + exp(t**2), t, s)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch1}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull1}{ugxProblemSeriesFunctionsPageEmpty1}
-\pastebutton{ugxProblemSeriesFunctionsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x := series 'x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty1}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty1}{ugxProblemSeriesFunctionsPagePatch1}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x := series 'x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch2}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull2}{ugxProblemSeriesFunctionsPageEmpty2}
-\pastebutton{ugxProblemSeriesFunctionsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{rat := x**2 / (1 - 6*x + x**2)\free{x }\bound{rat }}
-\indentrel{3}\begin{verbatim}
-   (2)
-      2     3      4       5        6        7         8
-     x  + 6x  + 35x  + 204x  + 1189x  + 6930x  + 40391x
-   + 
-            9           10           11            12
-     235416x  + 1372105x   + 7997214x   + 46611179x
-   + 
-        13
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty2}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty2}{ugxProblemSeriesFunctionsPagePatch2}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{rat := x**2 / (1 - 6*x + x**2)\free{x }\bound{rat }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch3}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull3}{ugxProblemSeriesFunctionsPageEmpty3}
-\pastebutton{ugxProblemSeriesFunctionsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{sin(rat)\free{rat }}
-\indentrel{3}\begin{verbatim}
-   (3)
-      2     3      4       5   7133  6        7   80711  8
-     x  + 6x  + 35x  + 204x  + ÄÄÄÄ x  + 6927x  + ÄÄÄÄÄ x
-                                 6                  2
-   + 
-            9   164285281  10   31888513  11
-     235068x  + ÄÄÄÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄÄ x
-                   120              4
-   + 
-     371324777  12      13
-     ÄÄÄÄÄÄÄÄÄ x   + O(x  )
-         8
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty3}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty3}{ugxProblemSeriesFunctionsPagePatch3}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sin(rat)\free{rat }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch4}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull4}{ugxProblemSeriesFunctionsPageEmpty4}
-\pastebutton{ugxProblemSeriesFunctionsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{y : UTS(FRAC INT,y,0) := y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (4)  y
-     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty4}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty4}{ugxProblemSeriesFunctionsPagePatch4}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{y : UTS(FRAC INT,y,0) := y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch5}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull5}{ugxProblemSeriesFunctionsPageEmpty5}
-\pastebutton{ugxProblemSeriesFunctionsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{exp(y)\free{y }}
-\indentrel{3}\begin{verbatim}
-   (5)
-             1  2   1  3    1  4    1   5    1   6
-     1 + y + Ä y  + Ä y  + ÄÄ y  + ÄÄÄ y  + ÄÄÄ y
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ y  + ÄÄÄÄÄ y  + ÄÄÄÄÄÄ y  + ÄÄÄÄÄÄÄ y   + O(y  )
-   5040      40320      362880      3628800
-     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty5}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty5}{ugxProblemSeriesFunctionsPagePatch5}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{exp(y)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch6}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull6}{ugxProblemSeriesFunctionsPageEmpty6}
-\pastebutton{ugxProblemSeriesFunctionsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{tan(y**2)\free{y }}
-\indentrel{3}\begin{verbatim}
-         2   1  6    2  10      11
-   (6)  y  + Ä y  + ÄÄ y   + O(y  )
-             3      15
-     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty6}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty6}{ugxProblemSeriesFunctionsPagePatch6}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{tan(y**2)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch7}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull7}{ugxProblemSeriesFunctionsPageEmpty7}
-\pastebutton{ugxProblemSeriesFunctionsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{cos(y + y**5)\free{y }}
-\indentrel{3}\begin{verbatim}
-   (7)
-         1  2    1  4   721  6    6721  8   1844641  10
-     1 - Ä y  + ÄÄ y  - ÄÄÄ y  + ÄÄÄÄÄ y  - ÄÄÄÄÄÄÄ y
-         2      24      720      40320      3628800
-   + 
-        11
-     O(y  )
-     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty7}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty7}{ugxProblemSeriesFunctionsPagePatch7}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{cos(y + y**5)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch8}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull8}{ugxProblemSeriesFunctionsPageEmpty8}
-\pastebutton{ugxProblemSeriesFunctionsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{log(1 + sin(y))\free{y }}
-\indentrel{3}\begin{verbatim}
-   (8)
-         1  2   1  3    1  4    1  5    1  6    61   7
-     y - Ä y  + Ä y  - ÄÄ y  + ÄÄ y  - ÄÄ y  + ÄÄÄÄ y
-         2      6      12      24      45      5040
-   + 
-        17   8    277   9     31   10      11
-     - ÄÄÄÄ y  + ÄÄÄÄÄ y  - ÄÄÄÄÄ y   + O(y  )
-       2520      72576      14175
-     Type: UnivariateTaylorSeries(Fraction Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty8}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty8}{ugxProblemSeriesFunctionsPagePatch8}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{log(1 + sin(y))\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch9}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull9}{ugxProblemSeriesFunctionsPageEmpty9}
-\pastebutton{ugxProblemSeriesFunctionsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{z : UTS(EXPR INT,z,0) := z\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (9)  z
-   Type: UnivariateTaylorSeries(Expression Integer,z,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty9}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty9}{ugxProblemSeriesFunctionsPagePatch9}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{z : UTS(EXPR INT,z,0) := z\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch10}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull10}{ugxProblemSeriesFunctionsPageEmpty10}
-\pastebutton{ugxProblemSeriesFunctionsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{exp(2 + tan(z))\free{z }}
-\indentrel{3}\begin{verbatim}
-   (10)
-                    2        2         2          2
-       2     2    %e   2   %e   3   3%e   4   37%e   5
-     %e  + %e z + ÄÄÄ z  + ÄÄÄ z  + ÄÄÄÄ z  + ÄÄÄÄÄ z
-                   2        2         8        120
-   + 
-         2           2           2             2
-     59%e   6   137%e   7   871%e   8   41641%e   9
-     ÄÄÄÄÄ z  + ÄÄÄÄÄÄ z  + ÄÄÄÄÄÄ z  + ÄÄÄÄÄÄÄÄ z
-      240         720        5760        362880
-   + 
-             2
-     325249%e   10      11
-     ÄÄÄÄÄÄÄÄÄ z   + O(z  )
-      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,z,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty10}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty10}{ugxProblemSeriesFunctionsPagePatch10}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{exp(2 + tan(z))\free{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch11}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull11}{ugxProblemSeriesFunctionsPageEmpty11}
-\pastebutton{ugxProblemSeriesFunctionsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{w := taylor 'w\bound{w }}
-\indentrel{3}\begin{verbatim}
-   (11)  w
-   Type: UnivariateTaylorSeries(Expression Integer,w,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty11}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty11}{ugxProblemSeriesFunctionsPagePatch11}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{w := taylor 'w\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPagePatch12}
-\begin{paste}{ugxProblemSeriesFunctionsPageFull12}{ugxProblemSeriesFunctionsPageEmpty12}
-\pastebutton{ugxProblemSeriesFunctionsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{exp(2 + tan(w))\free{w }}
-\indentrel{3}\begin{verbatim}
-   (12)
-                    2        2         2          2
-       2     2    %e   2   %e   3   3%e   4   37%e   5
-     %e  + %e w + ÄÄÄ w  + ÄÄÄ w  + ÄÄÄÄ w  + ÄÄÄÄÄ w
-                   2        2         8        120
-   + 
-         2           2           2             2
-     59%e   6   137%e   7   871%e   8   41641%e   9
-     ÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄÄÄ w
-      240         720        5760        362880
-   + 
-             2
-     325249%e   10      11
-     ÄÄÄÄÄÄÄÄÄ w   + O(w  )
-      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,w,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFunctionsPageEmpty12}
-\begin{paste}{ugxProblemSeriesFunctionsPageEmpty12}{ugxProblemSeriesFunctionsPagePatch12}
-\pastebutton{ugxProblemSeriesFunctionsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{exp(2 + tan(w))\free{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch1}
-\begin{paste}{ugProblemGeneticPageFull1}{ugProblemGeneticPageEmpty1}
-\pastebutton{ugProblemGeneticPageFull1}{\hidepaste}
-\tab{5}\spadcommand{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] ] ]\bound{segregationRates }}
-\indentrel{3}\begin{verbatim}
-   (1)
-    Ú    1   1    9¿  Ú    1        1¿  Ú        1    1¿
-    ³1   Ä   Ä   ÄÄ³  ³0   Ä   0   ÄÄ³  ³0   0   Ä   ÄÄ³
-    ³    2   2   20³  ³    2       20³  ³        2   20³
-    ³              ³  ³              ³  ³              ³
-    ³1        1    ³  ³1        9  1 ³  ³         9    ³
-    ³Ä   0   ÄÄ  0 ³  ³Ä   1   ÄÄ  Ä ³  ³0   0   ÄÄ  0 ³
-    ³2       20    ³  ³2       20  2 ³  ³        20    ³
-   [³              ³, ³              ³, ³              ³,
-    ³1    1        ³  ³     9        ³  ³1    9      1 ³
-    ³Ä   ÄÄ  0   0 ³  ³0   ÄÄ  0   0 ³  ³Ä   ÄÄ  1   Ä ³
-    ³2   20        ³  ³    20        ³  ³2   20      2 ³
-    ³              ³  ³              ³  ³              ³
-    ³ 9            ³  ³ 1  1         ³  ³ 1      1     ³
-    ³ÄÄ  0   0   0 ³  ³ÄÄ  Ä   0   0 ³  ³ÄÄ  0   Ä   0 ³
-    À20            Ù  À20  2         Ù  À20      2     Ù
-    Ú             9¿
-    ³0   0   0   ÄÄ³
-    ³            20³
-    ³              ³
-    ³         1  1 ³
-    ³0   0   ÄÄ  Ä ³
-    ³        20  2 ³
-    ³              ³]
-    ³     1      1 ³
-    ³0   ÄÄ  0   Ä ³
-    ³    20      2 ³
-    ³              ³
-    ³ 9  1   1     ³
-    ³ÄÄ  Ä   Ä   1 ³
-    À20  2   2     Ù
-            Type: List SquareMatrix(4,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty1}
-\begin{paste}{ugProblemGeneticPageEmpty1}{ugProblemGeneticPagePatch1}
-\pastebutton{ugProblemGeneticPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{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] ] ]\bound{segregationRates }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch2}
-\begin{paste}{ugProblemGeneticPageFull2}{ugProblemGeneticPageEmpty2}
-\pastebutton{ugProblemGeneticPageFull2}{\hidepaste}
-\tab{5}\spadcommand{gametes := ['AB,'Ab,'aB,'ab]\bound{gametes }}
-\indentrel{3}\begin{verbatim}
-   (2)  [AB,Ab,aB,ab]
-           Type: List OrderedVariableList [AB,Ab,aB,ab]
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty2}
-\begin{paste}{ugProblemGeneticPageEmpty2}{ugProblemGeneticPagePatch2}
-\pastebutton{ugProblemGeneticPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{gametes := ['AB,'Ab,'aB,'ab]\bound{gametes }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch3}
-\begin{paste}{ugProblemGeneticPageFull3}{ugProblemGeneticPageEmpty3}
-\pastebutton{ugProblemGeneticPageFull3}{\hidepaste}
-\tab{5}\spadcommand{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A }\free{gametes segregationRates }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty3}
-\begin{paste}{ugProblemGeneticPageEmpty3}{ugProblemGeneticPagePatch3}
-\pastebutton{ugProblemGeneticPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{A := ALGSC(FRAC INT, 4, gametes, segregationRates);\bound{A }\free{gametes segregationRates }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch4}
-\begin{paste}{ugProblemGeneticPageFull4}{ugProblemGeneticPageEmpty4}
-\pastebutton{ugProblemGeneticPageFull4}{\hidepaste}
-\tab{5}\spadcommand{a := basis()$A; a.1*a.4}
-\indentrel{3}\begin{verbatim}
-         9       1       1       9
-   (4)  ÄÄ ab + ÄÄ aB + ÄÄ Ab + ÄÄ AB
-        20      20      20      20
-Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty4}
-\begin{paste}{ugProblemGeneticPageEmpty4}{ugProblemGeneticPagePatch4}
-\pastebutton{ugProblemGeneticPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{a := basis()$A; a.1*a.4}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch5}
-\begin{paste}{ugProblemGeneticPageFull5}{ugProblemGeneticPageEmpty5}
-\pastebutton{ugProblemGeneticPageFull5}{\hidepaste}
-\tab{5}\spadcommand{commutative?()$A\free{A }}
-\indentrel{3}\begin{verbatim}
-   algebra is commutative
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty5}
-\begin{paste}{ugProblemGeneticPageEmpty5}{ugProblemGeneticPagePatch5}
-\pastebutton{ugProblemGeneticPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{commutative?()$A\free{A }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch6}
-\begin{paste}{ugProblemGeneticPageFull6}{ugProblemGeneticPageEmpty6}
-\pastebutton{ugProblemGeneticPageFull6}{\hidepaste}
-\tab{5}\spadcommand{associative?()$A\free{A }}
-\indentrel{3}\begin{verbatim}
-   algebra is not associative
-   (6)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty6}
-\begin{paste}{ugProblemGeneticPageEmpty6}{ugProblemGeneticPagePatch6}
-\pastebutton{ugProblemGeneticPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{associative?()$A\free{A }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch7}
-\begin{paste}{ugProblemGeneticPageFull7}{ugProblemGeneticPageEmpty7}
-\pastebutton{ugProblemGeneticPageFull7}{\hidepaste}
-\tab{5}\spadcommand{x : ALGSC(DECIMAL, 4, gametes, segregationRates) := convert [3/10, 1/5, 1/10, 2/5]\bound{x }\free{gametes segregationRates }}
-\indentrel{3}\begin{verbatim}
-   (7)  0.4ab + 0.1aB + 0.2Ab + 0.3AB
-Type: AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty7}
-\begin{paste}{ugProblemGeneticPageEmpty7}{ugProblemGeneticPagePatch7}
-\pastebutton{ugProblemGeneticPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{x : ALGSC(DECIMAL, 4, gametes, segregationRates) := convert [3/10, 1/5, 1/10, 2/5]\bound{x }\free{gametes segregationRates }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch8}
-\begin{paste}{ugProblemGeneticPageFull8}{ugProblemGeneticPageEmpty8}
-\pastebutton{ugProblemGeneticPageFull8}{\hidepaste}
-\tab{5}\spadcommand{plenaryPower(x,5)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (8)  0.36561ab + 0.13439aB + 0.23439Ab + 0.26561AB
-Type: AlgebraGivenByStructuralConstants(DecimalExpansion,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty8}
-\begin{paste}{ugProblemGeneticPageEmpty8}{ugProblemGeneticPagePatch8}
-\pastebutton{ugProblemGeneticPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{plenaryPower(x,5)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch9}
-\begin{paste}{ugProblemGeneticPageFull9}{ugProblemGeneticPageEmpty9}
-\pastebutton{ugProblemGeneticPageFull9}{\hidepaste}
-\tab{5}\spadcommand{q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q }\free{gametes segregationRates }}
-\indentrel{3}\begin{verbatim}
-   (9)
-      3      29       29       29       29      2
-     Y  + (- ÄÄ %x4 - ÄÄ %x3 - ÄÄ %x2 - ÄÄ %x1)Y
-             20       20       20       20
-   + 
-          9    2     9        9        9            9    2
-         ÄÄ %x4  + (ÄÄ %x3 + ÄÄ %x2 + ÄÄ %x1)%x4 + ÄÄ %x3
-         20         10       10       10           20
-       + 
-           9        9            9    2    9
-         (ÄÄ %x2 + ÄÄ %x1)%x3 + ÄÄ %x2  + ÄÄ %x1 %x2
-          10       10           20        10
-       + 
-          9    2
-         ÄÄ %x1
-         20
-    *
-       Y
-Type: UnivariatePolynomial(Y,Polynomial Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty9}
-\begin{paste}{ugProblemGeneticPageEmpty9}{ugProblemGeneticPagePatch9}
-\pastebutton{ugProblemGeneticPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{q := leftRankPolynomial()$GCNAALG(FRAC INT, 4, gametes, segregationRates) :: UP(Y, POLY FRAC INT)\bound{q }\free{gametes segregationRates }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch10}
-\begin{paste}{ugProblemGeneticPageFull10}{ugProblemGeneticPageEmpty10}
-\pastebutton{ugProblemGeneticPageFull10}{\hidepaste}
-\tab{5}\spadcommand{factor(q :: POLY FRAC INT)\free{q }}
-\indentrel{3}\begin{verbatim}
-   (10)
-     (Y - %x4 - %x3 - %x2 - %x1)
-  *
-           9        9        9        9
-     (Y - ÄÄ %x4 - ÄÄ %x3 - ÄÄ %x2 - ÄÄ %x1)Y
-          20       20       20       20
-             Type: Factored Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty10}
-\begin{paste}{ugProblemGeneticPageEmpty10}{ugProblemGeneticPagePatch10}
-\pastebutton{ugProblemGeneticPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{factor(q :: POLY FRAC INT)\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch11}
-\begin{paste}{ugProblemGeneticPageFull11}{ugProblemGeneticPageEmpty11}
-\pastebutton{ugProblemGeneticPageFull11}{\hidepaste}
-\tab{5}\spadcommand{cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI }\free{gametes segregationRates }}
-\indentrel{3}\begin{verbatim}
-   (11)
-     9             1                              2
-   [ÄÄ %x1 %x4 + (ÄÄ %x2 + %x1)%x3 + %x1 %x2 + %x1  - %x1,
-    10            10
-            1            9              2
-    (%x2 + ÄÄ %x1)%x4 + ÄÄ %x2 %x3 + %x2  + (%x1 - 1)%x2,
-           10           10
-            1              2     9
-    (%x3 + ÄÄ %x1)%x4 + %x3  + (ÄÄ %x2 + %x1 - 1)%x3,
-           10                   10
-       2                 9                1
-    %x4  + (%x3 + %x2 + ÄÄ %x1 - 1)%x4 + ÄÄ %x2 %x3]
-                        10               10
-                 Type: List Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty11}
-\begin{paste}{ugProblemGeneticPageEmpty11}{ugProblemGeneticPagePatch11}
-\pastebutton{ugProblemGeneticPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{cI := conditionsForIdempotents()$GCNAALG(FRAC INT, 4, gametes, segregationRates)\bound{cI }\free{gametes segregationRates }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch12}
-\begin{paste}{ugProblemGeneticPageFull12}{ugProblemGeneticPageEmpty12}
-\pastebutton{ugProblemGeneticPageFull12}{\hidepaste}
-\tab{5}\spadcommand{gbs:= groebnerFactorize cI; gbs.1\free{cI }\bound{gbs }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [%x4 + %x3 + %x2 + %x1 - 1,
-                                  2
-    (%x2 + %x1)%x3 + %x1 %x2 + %x1  - %x1]
-                 Type: List Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty12}
-\begin{paste}{ugProblemGeneticPageEmpty12}{ugProblemGeneticPagePatch12}
-\pastebutton{ugProblemGeneticPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{gbs:= groebnerFactorize cI; gbs.1\free{cI }\bound{gbs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch13}
-\begin{paste}{ugProblemGeneticPageFull13}{ugProblemGeneticPageEmpty13}
-\pastebutton{ugProblemGeneticPageFull13}{\hidepaste}
-\tab{5}\spadcommand{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol }\free{gbs }}
-\indentrel{3}\begin{verbatim}
-                2      2       1       1
-   (13)  [[%x4= Ä,%x3= Ä,%x2= ÄÄ,%x1= ÄÄ]]
-                5      5      10      10
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty13}
-\begin{paste}{ugProblemGeneticPageEmpty13}{ugProblemGeneticPagePatch13}
-\pastebutton{ugProblemGeneticPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{sol := solve concat(gbs.1,[\%x1-1/10,\%x2-1/10])\bound{sol }\free{gbs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch14}
-\begin{paste}{ugProblemGeneticPageFull14}{ugProblemGeneticPageEmpty14}
-\pastebutton{ugProblemGeneticPageFull14}{\hidepaste}
-\tab{5}\spadcommand{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e }\free{A sol }}
-\indentrel{3}\begin{verbatim}
-         2      2       1       1
-   (14)  Ä ab + Ä aB + ÄÄ Ab + ÄÄ AB
-         5      5      10      10
-Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty14}
-\begin{paste}{ugProblemGeneticPageEmpty14}{ugProblemGeneticPagePatch14}
-\pastebutton{ugProblemGeneticPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{e : A := represents reverse (map(rhs, sol.1) :: List FRAC INT)\bound{e }\free{A sol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPagePatch15}
-\begin{paste}{ugProblemGeneticPageFull15}{ugProblemGeneticPageEmpty15}
-\pastebutton{ugProblemGeneticPageFull15}{\hidepaste}
-\tab{5}\spadcommand{e*e-e\free{e }}
-\indentrel{3}\begin{verbatim}
-   (15)  0
-Type: AlgebraGivenByStructuralConstants(Fraction Integer,4,[AB,Ab,aB,ab],[MATRIX,MATRIX,MATRIX,MATRIX])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGeneticPageEmpty15}
-\begin{paste}{ugProblemGeneticPageEmpty15}{ugProblemGeneticPagePatch15}
-\pastebutton{ugProblemGeneticPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{e*e-e\free{e }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch1}
-\begin{paste}{ugxProblemOnePolPageFull1}{ugxProblemOnePolPageEmpty1}
-\pastebutton{ugxProblemOnePolPageFull1}{\hidepaste}
-\tab{5}\spadcommand{solve(x**3 = 8,x)}
-\indentrel{3}\begin{verbatim}
-               2
-   (1)  [x= 2,x  + 2x + 4= 0]
-        Type: List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty1}
-\begin{paste}{ugxProblemOnePolPageEmpty1}{ugxProblemOnePolPagePatch1}
-\pastebutton{ugxProblemOnePolPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{solve(x**3 = 8,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch2}
-\begin{paste}{ugxProblemOnePolPageFull2}{ugxProblemOnePolPageEmpty2}
-\pastebutton{ugxProblemOnePolPageFull2}{\hidepaste}
-\tab{5}\spadcommand{radicalSolve(x**3 = 8,x)}
-\indentrel{3}\begin{verbatim}
-               ÚÄÄÄ¿         ÚÄÄÄ¿
-   (2)  [x= - \³- 3  - 1,x= \³- 3  - 1,x= 2]
-                 Type: List Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty2}
-\begin{paste}{ugxProblemOnePolPageEmpty2}{ugxProblemOnePolPagePatch2}
-\pastebutton{ugxProblemOnePolPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{radicalSolve(x**3 = 8,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch3}
-\begin{paste}{ugxProblemOnePolPageFull3}{ugxProblemOnePolPageEmpty3}
-\pastebutton{ugxProblemOnePolPageFull3}{\hidepaste}
-\tab{5}\spadcommand{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
-\indentrel{3}\begin{verbatim}
-   (3)  [x= 3.6180114746 09375,x= 1.3819885253 90625]
-                   Type: List Equation Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty3}
-\begin{paste}{ugxProblemOnePolPageEmpty3}{ugxProblemOnePolPagePatch3}
-\pastebutton{ugxProblemOnePolPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{solve(x**4 - 10*x**3 + 35*x**2 - 50*x + 25,.0001)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch4}
-\begin{paste}{ugxProblemOnePolPageFull4}{ugxProblemOnePolPageEmpty4}
-\pastebutton{ugxProblemOnePolPageFull4}{\hidepaste}
-\tab{5}\spadcommand{solve(x**3-2,1/1000)}
-\indentrel{3}\begin{verbatim}
-            2581
-   (4)  [x= ÄÄÄÄ]
-            2048
-        Type: List Equation Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty4}
-\begin{paste}{ugxProblemOnePolPageEmpty4}{ugxProblemOnePolPagePatch4}
-\pastebutton{ugxProblemOnePolPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{solve(x**3-2,1/1000)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch5}
-\begin{paste}{ugxProblemOnePolPageFull5}{ugxProblemOnePolPageEmpty5}
-\pastebutton{ugxProblemOnePolPageFull5}{\hidepaste}
-\tab{5}\spadcommand{complexSolve(x**3-2,.0001)}
-\indentrel{3}\begin{verbatim}
-   (5)
-   [x= 1.2599182128 90625,
-    x= - 0.6298943279 5395613131 - 1.0910949707 03125 %i,
-    x= - 0.6298943279 5395613131 + 1.0910949707 03125 %i]
-           Type: List Equation Polynomial Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty5}
-\begin{paste}{ugxProblemOnePolPageEmpty5}{ugxProblemOnePolPagePatch5}
-\pastebutton{ugxProblemOnePolPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{complexSolve(x**3-2,.0001)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch6}
-\begin{paste}{ugxProblemOnePolPageFull6}{ugxProblemOnePolPageEmpty6}
-\pastebutton{ugxProblemOnePolPageFull6}{\hidepaste}
-\tab{5}\spadcommand{complexSolve(x**2-2*\%i+1,1/100)}
-\indentrel{3}\begin{verbatim}
-              13028925   325       13028925   325
-   (6)  [x= - ÄÄÄÄÄÄÄÄ - ÄÄÄ %i,x= ÄÄÄÄÄÄÄÄ + ÄÄÄ %i]
-              16777216   256       16777216   256
-Type: List Equation Polynomial Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty6}
-\begin{paste}{ugxProblemOnePolPageEmpty6}{ugxProblemOnePolPagePatch6}
-\pastebutton{ugxProblemOnePolPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{complexSolve(x**2-2*\%i+1,1/100)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPagePatch7}
-\begin{paste}{ugxProblemOnePolPageFull7}{ugxProblemOnePolPageEmpty7}
-\pastebutton{ugxProblemOnePolPageFull7}{\hidepaste}
-\tab{5}\spadcommand{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
-\indentrel{3}\begin{verbatim}
-               ÚÄÄÄ¿         ÚÄÄÄ¿
-            - \³- 3  - 1    \³- 3  - 1
-   (7)  [x= ÄÄÄÄÄÄÄÄÄÄÄÄ,x= ÄÄÄÄÄÄÄÄÄÄ]
-                  2              2
-                 Type: List Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemOnePolPageEmpty7}
-\begin{paste}{ugxProblemOnePolPageEmpty7}{ugxProblemOnePolPagePatch7}
-\pastebutton{ugxProblemOnePolPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{radicalSolve(1/x**3 + 1/x**2 + 1/x = 0,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch1}
-\begin{paste}{ugProblemNumericPageFull1}{ugProblemNumericPageEmpty1}
-\pastebutton{ugProblemNumericPageFull1}{\hidepaste}
-\tab{5}\spadcommand{exp(3.1)}
-\indentrel{3}\begin{verbatim}
-   (1)  22.1979512814 41633405
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty1}
-\begin{paste}{ugProblemNumericPageEmpty1}{ugProblemNumericPagePatch1}
-\pastebutton{ugProblemNumericPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{exp(3.1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch2}
-\begin{paste}{ugProblemNumericPageFull2}{ugProblemNumericPageEmpty2}
-\pastebutton{ugProblemNumericPageFull2}{\hidepaste}
-\tab{5}\spadcommand{exp(3.1 + 4.5 * \%i)}
-\indentrel{3}\begin{verbatim}
-   (2)
-   - 4.6792348860 969899118 - 21.6991659280 71731864 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty2}
-\begin{paste}{ugProblemNumericPageEmpty2}{ugProblemNumericPagePatch2}
-\pastebutton{ugProblemNumericPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{exp(3.1 + 4.5 * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch3}
-\begin{paste}{ugProblemNumericPageFull3}{ugProblemNumericPageEmpty3}
-\pastebutton{ugProblemNumericPageFull3}{\hidepaste}
-\tab{5}\spadcommand{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
-\indentrel{3}\begin{verbatim}
-   (3)  - 4.6792348860969906 - 21.699165928071732%i
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty3}
-\begin{paste}{ugProblemNumericPageEmpty3}{ugProblemNumericPagePatch3}
-\pastebutton{ugProblemNumericPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{r: DFLOAT := 3.1; t: DFLOAT := 4.5; exp(r + t*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch4}
-\begin{paste}{ugProblemNumericPageFull4}{ugProblemNumericPageEmpty4}
-\pastebutton{ugProblemNumericPageFull4}{\hidepaste}
-\tab{5}\spadcommand{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
-\indentrel{3}\begin{verbatim}
-   (4)  - 4.6792348860969906 - 21.699165928071732%i
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty4}
-\begin{paste}{ugProblemNumericPageEmpty4}{ugProblemNumericPagePatch4}
-\pastebutton{ugProblemNumericPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{exp(3.1::DFLOAT + 4.5::DFLOAT * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch5}
-\begin{paste}{ugProblemNumericPageFull5}{ugProblemNumericPageEmpty5}
-\pastebutton{ugProblemNumericPageFull5}{\hidepaste}
-\tab{5}\spadcommand{Gamma(0.5)**2}
-\indentrel{3}\begin{verbatim}
-   (5)  3.14159265358979
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty5}
-\begin{paste}{ugProblemNumericPageEmpty5}{ugProblemNumericPagePatch5}
-\pastebutton{ugProblemNumericPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{Gamma(0.5)**2}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch6}
-\begin{paste}{ugProblemNumericPageFull6}{ugProblemNumericPageEmpty6}
-\pastebutton{ugProblemNumericPageFull6}{\hidepaste}
-\tab{5}\spadcommand{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
-\indentrel{3}\begin{verbatim}
-   (6)  2.489482417547372 - 2.3658460381468371%i
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty6}
-\begin{paste}{ugProblemNumericPageEmpty6}{ugProblemNumericPagePatch6}
-\pastebutton{ugProblemNumericPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{a := 2.1; b := 1.1; besselI(a + \%i*b, b*a + 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch7}
-\begin{paste}{ugProblemNumericPageFull7}{ugProblemNumericPageEmpty7}
-\pastebutton{ugProblemNumericPageFull7}{\hidepaste}
-\tab{5}\spadcommand{[chebyshevT(i, z) for i in 0..5]}
-\indentrel{3}\begin{verbatim}
-   (7)
-          2       3        4     2        5      3
-   [1,z,2z  - 1,4z  - 3z,8z  - 8z  + 1,16z  - 20z  + 5z]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty7}
-\begin{paste}{ugProblemNumericPageEmpty7}{ugProblemNumericPagePatch7}
-\pastebutton{ugProblemNumericPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{[chebyshevT(i, z) for i in 0..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch8}
-\begin{paste}{ugProblemNumericPageFull8}{ugProblemNumericPageEmpty8}
-\pastebutton{ugProblemNumericPageFull8}{\hidepaste}
-\tab{5}\spadcommand{chebyshevT(3, 5.0 + 6.0*\%i)}
-\indentrel{3}\begin{verbatim}
-   (8)  - 1675.0 + 918.0 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty8}
-\begin{paste}{ugProblemNumericPageEmpty8}{ugProblemNumericPagePatch8}
-\pastebutton{ugProblemNumericPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{chebyshevT(3, 5.0 + 6.0*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch9}
-\begin{paste}{ugProblemNumericPageFull9}{ugProblemNumericPageEmpty9}
-\pastebutton{ugProblemNumericPageFull9}{\hidepaste}
-\tab{5}\spadcommand{chebyshevT(3, 5.0::DoubleFloat)}
-\indentrel{3}\begin{verbatim}
-   (9)  485.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty9}
-\begin{paste}{ugProblemNumericPageEmpty9}{ugProblemNumericPagePatch9}
-\pastebutton{ugProblemNumericPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{chebyshevT(3, 5.0::DoubleFloat)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch10}
-\begin{paste}{ugProblemNumericPageFull10}{ugProblemNumericPageEmpty10}
-\pastebutton{ugProblemNumericPageFull10}{\hidepaste}
-\tab{5}\spadcommand{[chebyshevU(i, z) for i in 0..5]}
-\indentrel{3}\begin{verbatim}
-   (10)
-             2        3          4      2
-   [1, 2z, 4z  - 1, 8z  - 4z, 16z  - 12z  + 1,
-       5      3
-    32z  - 32z  + 6z]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty10}
-\begin{paste}{ugProblemNumericPageEmpty10}{ugProblemNumericPagePatch10}
-\pastebutton{ugProblemNumericPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{[chebyshevU(i, z) for i in 0..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch11}
-\begin{paste}{ugProblemNumericPageFull11}{ugProblemNumericPageEmpty11}
-\pastebutton{ugProblemNumericPageFull11}{\hidepaste}
-\tab{5}\spadcommand{chebyshevU(3, 0.2)}
-\indentrel{3}\begin{verbatim}
-   (11)  - 0.736
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty11}
-\begin{paste}{ugProblemNumericPageEmpty11}{ugProblemNumericPagePatch11}
-\pastebutton{ugProblemNumericPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{chebyshevU(3, 0.2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch12}
-\begin{paste}{ugProblemNumericPageFull12}{ugProblemNumericPageEmpty12}
-\pastebutton{ugProblemNumericPageFull12}{\hidepaste}
-\tab{5}\spadcommand{[hermiteH(i, z) for i in 0..5]}
-\indentrel{3}\begin{verbatim}
-   (12)
-             2        3           4      2
-   [1, 2z, 4z  - 2, 8z  - 12z, 16z  - 48z  + 12,
-       5       3
-    32z  - 160z  + 120z]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty12}
-\begin{paste}{ugProblemNumericPageEmpty12}{ugProblemNumericPagePatch12}
-\pastebutton{ugProblemNumericPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{[hermiteH(i, z) for i in 0..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch13}
-\begin{paste}{ugProblemNumericPageFull13}{ugProblemNumericPageEmpty13}
-\pastebutton{ugProblemNumericPageFull13}{\hidepaste}
-\tab{5}\spadcommand{hermiteH(100, 1.0)}
-\indentrel{3}\begin{verbatim}
-   (13)  - 0.1448706729 337934088 E 93
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty13}
-\begin{paste}{ugProblemNumericPageEmpty13}{ugProblemNumericPagePatch13}
-\pastebutton{ugProblemNumericPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{hermiteH(100, 1.0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch14}
-\begin{paste}{ugProblemNumericPageFull14}{ugProblemNumericPageEmpty14}
-\pastebutton{ugProblemNumericPageFull14}{\hidepaste}
-\tab{5}\spadcommand{[laguerreL(i, z) for i in 0..4]}
-\indentrel{3}\begin{verbatim}
-   (14)
-                 2              3     2
-   [1, - z + 1, z  - 4z + 2, - z  + 9z  - 18z + 6,
-     4      3      2
-    z  - 16z  + 72z  - 96z + 24]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty14}
-\begin{paste}{ugProblemNumericPageEmpty14}{ugProblemNumericPagePatch14}
-\pastebutton{ugProblemNumericPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{[laguerreL(i, z) for i in 0..4]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch15}
-\begin{paste}{ugProblemNumericPageFull15}{ugProblemNumericPageEmpty15}
-\pastebutton{ugProblemNumericPageFull15}{\hidepaste}
-\tab{5}\spadcommand{laguerreL(4, 1.2)}
-\indentrel{3}\begin{verbatim}
-   (15)  - 13.0944
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty15}
-\begin{paste}{ugProblemNumericPageEmpty15}{ugProblemNumericPagePatch15}
-\pastebutton{ugProblemNumericPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{laguerreL(4, 1.2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch16}
-\begin{paste}{ugProblemNumericPageFull16}{ugProblemNumericPageEmpty16}
-\pastebutton{ugProblemNumericPageFull16}{\hidepaste}
-\tab{5}\spadcommand{[laguerreL(j, 3, z) for j in 0..4]}
-\indentrel{3}\begin{verbatim}
-   (16)
-       3     2               2
-   [- z  + 9z  - 18z + 6,- 3z  + 18z - 18,- 6z + 18,- 6,0]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty16}
-\begin{paste}{ugProblemNumericPageEmpty16}{ugProblemNumericPagePatch16}
-\pastebutton{ugProblemNumericPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[laguerreL(j, 3, z) for j in 0..4]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch17}
-\begin{paste}{ugProblemNumericPageFull17}{ugProblemNumericPageEmpty17}
-\pastebutton{ugProblemNumericPageFull17}{\hidepaste}
-\tab{5}\spadcommand{laguerreL(1, 3, 2.1)}
-\indentrel{3}\begin{verbatim}
-   (17)  6.57
-                                            Type: Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty17}
-\begin{paste}{ugProblemNumericPageEmpty17}{ugProblemNumericPagePatch17}
-\pastebutton{ugProblemNumericPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{laguerreL(1, 3, 2.1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch18}
-\begin{paste}{ugProblemNumericPageFull18}{ugProblemNumericPageEmpty18}
-\pastebutton{ugProblemNumericPageFull18}{\hidepaste}
-\tab{5}\spadcommand{[legendreP(i,z) for i in 0..5]}
-\indentrel{3}\begin{verbatim}
-   (18)
-          3  2   1  5  3   3    35  4   15  2   3
-   [1, z, Ä z  - Ä, Ä z  - Ä z, ÄÄ z  - ÄÄ z  + Ä,
-          2      2  2      2     8       4      8
-    63  5   35  3   15
-    ÄÄ z  - ÄÄ z  + ÄÄ z]
-     8       4       8
-                 Type: List Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty18}
-\begin{paste}{ugProblemNumericPageEmpty18}{ugProblemNumericPagePatch18}
-\pastebutton{ugProblemNumericPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{[legendreP(i,z) for i in 0..5]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch19}
-\begin{paste}{ugProblemNumericPageFull19}{ugProblemNumericPageEmpty19}
-\pastebutton{ugProblemNumericPageFull19}{\hidepaste}
-\tab{5}\spadcommand{legendreP(3, 3.0*\%i)}
-\indentrel{3}\begin{verbatim}
-   (19)  - 72.0 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty19}
-\begin{paste}{ugProblemNumericPageEmpty19}{ugProblemNumericPagePatch19}
-\pastebutton{ugProblemNumericPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{legendreP(3, 3.0*\%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch20}
-\begin{paste}{ugProblemNumericPageFull20}{ugProblemNumericPageEmpty20}
-\pastebutton{ugProblemNumericPageFull20}{\hidepaste}
-\tab{5}\spadcommand{bernoulliB(3, z)}
-\indentrel{3}\begin{verbatim}
-          3   3  2   1
-   (20)  z  - Ä z  + Ä z
-              2      2
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty20}
-\begin{paste}{ugProblemNumericPageEmpty20}{ugProblemNumericPagePatch20}
-\pastebutton{ugProblemNumericPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{bernoulliB(3, z)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch21}
-\begin{paste}{ugProblemNumericPageFull21}{ugProblemNumericPageEmpty21}
-\pastebutton{ugProblemNumericPageFull21}{\hidepaste}
-\tab{5}\spadcommand{bernoulliB(3, 0.7 + 0.4 * \%i)}
-\indentrel{3}\begin{verbatim}
-   (21)  - 0.138 - 0.116 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty21}
-\begin{paste}{ugProblemNumericPageEmpty21}{ugProblemNumericPagePatch21}
-\pastebutton{ugProblemNumericPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{bernoulliB(3, 0.7 + 0.4 * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch22}
-\begin{paste}{ugProblemNumericPageFull22}{ugProblemNumericPageEmpty22}
-\pastebutton{ugProblemNumericPageFull22}{\hidepaste}
-\tab{5}\spadcommand{eulerE(3, z)}
-\indentrel{3}\begin{verbatim}
-          3   3  2   1
-   (22)  z  - Ä z  + Ä
-              2      4
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty22}
-\begin{paste}{ugProblemNumericPageEmpty22}{ugProblemNumericPagePatch22}
-\pastebutton{ugProblemNumericPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{eulerE(3, z)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch23}
-\begin{paste}{ugProblemNumericPageFull23}{ugProblemNumericPageEmpty23}
-\pastebutton{ugProblemNumericPageFull23}{\hidepaste}
-\tab{5}\spadcommand{eulerE(3, 0.7 + 0.4 * \%i)}
-\indentrel{3}\begin{verbatim}
-   (23)  - 0.238 - 0.316 %i
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty23}
-\begin{paste}{ugProblemNumericPageEmpty23}{ugProblemNumericPagePatch23}
-\pastebutton{ugProblemNumericPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{eulerE(3, 0.7 + 0.4 * \%i)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch24}
-\begin{paste}{ugProblemNumericPageFull24}{ugProblemNumericPageEmpty24}
-\pastebutton{ugProblemNumericPageFull24}{\hidepaste}
-\tab{5}\spadcommand{cyclotomic(3, z)}
-\indentrel{3}\begin{verbatim}
-          2
-   (24)  z  + z + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty24}
-\begin{paste}{ugProblemNumericPageEmpty24}{ugProblemNumericPagePatch24}
-\pastebutton{ugProblemNumericPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{cyclotomic(3, z)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch25}
-\begin{paste}{ugProblemNumericPageFull25}{ugProblemNumericPageEmpty25}
-\pastebutton{ugProblemNumericPageFull25}{\hidepaste}
-\tab{5}\spadcommand{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
-\indentrel{3}\begin{verbatim}
-   (25)  0.0
-                                    Type: Complex Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty25}
-\begin{paste}{ugProblemNumericPageEmpty25}{ugProblemNumericPagePatch25}
-\pastebutton{ugProblemNumericPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{cyclotomic(3, (-1.0 + 0.0 * \%i)**(2/3))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch26}
-\begin{paste}{ugProblemNumericPageFull26}{ugProblemNumericPageEmpty26}
-\pastebutton{ugProblemNumericPageFull26}{\hidepaste}
-\tab{5}\spadgraph{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")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage26.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage26}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty26}
-\begin{paste}{ugProblemNumericPageEmpty26}{ugProblemNumericPagePatch26}
-\pastebutton{ugProblemNumericPageEmpty26}{\showpaste}
-\tab{5}\spadgraph{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")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch27}
-\begin{paste}{ugProblemNumericPageFull27}{ugProblemNumericPageEmpty27}
-\pastebutton{ugProblemNumericPageFull27}{\hidepaste}
-\tab{5}\spadgraph{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}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage27.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage27}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty27}
-\begin{paste}{ugProblemNumericPageEmpty27}{ugProblemNumericPagePatch27}
-\pastebutton{ugProblemNumericPageEmpty27}{\showpaste}
-\tab{5}\spadgraph{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}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch28}
-\begin{paste}{ugProblemNumericPageFull28}{ugProblemNumericPageEmpty28}
-\pastebutton{ugProblemNumericPageFull28}{\hidepaste}
-\tab{5}\spadgraph{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)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage28.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage28}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty28}
-\begin{paste}{ugProblemNumericPageEmpty28}{ugProblemNumericPagePatch28}
-\pastebutton{ugProblemNumericPageEmpty28}{\showpaste}
-\tab{5}\spadgraph{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)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch29}
-\begin{paste}{ugProblemNumericPageFull29}{ugProblemNumericPageEmpty29}
-\pastebutton{ugProblemNumericPageFull29}{\hidepaste}
-\tab{5}\spadgraph{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)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage29.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage29}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty29}
-\begin{paste}{ugProblemNumericPageEmpty29}{ugProblemNumericPagePatch29}
-\pastebutton{ugProblemNumericPageEmpty29}{\showpaste}
-\tab{5}\spadgraph{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)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch30}
-\begin{paste}{ugProblemNumericPageFull30}{ugProblemNumericPageEmpty30}
-\pastebutton{ugProblemNumericPageFull30}{\hidepaste}
-\tab{5}\spadgraph{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)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage30.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage30}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty30}
-\begin{paste}{ugProblemNumericPageEmpty30}{ugProblemNumericPagePatch30}
-\pastebutton{ugProblemNumericPageEmpty30}{\showpaste}
-\tab{5}\spadgraph{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)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch31}
-\begin{paste}{ugProblemNumericPageFull31}{ugProblemNumericPageEmpty31}
-\pastebutton{ugProblemNumericPageFull31}{\hidepaste}
-\tab{5}\spadgraph{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage31.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage31}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty31}
-\begin{paste}{ugProblemNumericPageEmpty31}{ugProblemNumericPagePatch31}
-\pastebutton{ugProblemNumericPageEmpty31}{\showpaste}
-\tab{5}\spadgraph{draw(besselI(alpha, 5), alpha = -12..12, unit==[5,20])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch32}
-\begin{paste}{ugProblemNumericPageFull32}{ugProblemNumericPageEmpty32}
-\pastebutton{ugProblemNumericPageFull32}{\hidepaste}
-\tab{5}\spadgraph{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")}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugproblemnumericpage32.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugproblemnumericpage32}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty32}
-\begin{paste}{ugProblemNumericPageEmpty32}{ugProblemNumericPagePatch32}
-\pastebutton{ugProblemNumericPageEmpty32}{\showpaste}
-\tab{5}\spadgraph{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")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPagePatch33}
-\begin{paste}{ugProblemNumericPageFull33}{ugProblemNumericPageEmpty33}
-\pastebutton{ugProblemNumericPageFull33}{\hidepaste}
-\tab{5}\spadcommand{all}
-\indentrel{3}\begin{verbatim}
-   (33)  all
-                                     Type: Variable all
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemNumericPageEmpty33}
-\begin{paste}{ugProblemNumericPageEmpty33}{ugProblemNumericPagePatch33}
-\pastebutton{ugProblemNumericPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{all}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch1}
-\begin{paste}{ugxProblemLinSysPageFull1}{ugxProblemLinSysPageEmpty1}
-\pastebutton{ugxProblemLinSysPageFull1}{\hidepaste}
-\tab{5}\spadcommand{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
-\indentrel{3}\begin{verbatim}
-   (1)  [[x= - 1,y= 2,z= 7]]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty1}
-\begin{paste}{ugxProblemLinSysPageEmpty1}{ugxProblemLinSysPagePatch1}
-\pastebutton{ugxProblemLinSysPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{solve([x+y+z=8,3*x-2*y+z=0,x+2*y+2*z=17],[x,y,z])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch2}
-\begin{paste}{ugxProblemLinSysPageFull2}{ugxProblemLinSysPageEmpty2}
-\pastebutton{ugxProblemLinSysPageFull2}{\hidepaste}
-\tab{5}\spadcommand{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
-\indentrel{3}\begin{verbatim}
-   (2)  [[x= %Y - 2,y= - 2%Y + 2,z= %Y]]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty2}
-\begin{paste}{ugxProblemLinSysPageEmpty2}{ugxProblemLinSysPagePatch2}
-\pastebutton{ugxProblemLinSysPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{solve([x+2*y+3*z=2,2*x+3*y+4*z=2,3*x+4*y+5*z=2],[x,y,z])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch3}
-\begin{paste}{ugxProblemLinSysPageFull3}{ugxProblemLinSysPageEmpty3}
-\pastebutton{ugxProblemLinSysPageFull3}{\hidepaste}
-\tab{5}\spadcommand{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
-\indentrel{3}\begin{verbatim}
-   (3)  [particular= [- 1,2,7],basis= [[0,0,0]]]
-Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty3}
-\begin{paste}{ugxProblemLinSysPageEmpty3}{ugxProblemLinSysPagePatch3}
-\pastebutton{ugxProblemLinSysPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{solve([[1,1,1],[3,-2,1],[1,2,2]],[8,0,17])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch4}
-\begin{paste}{ugxProblemLinSysPageFull4}{ugxProblemLinSysPageEmpty4}
-\pastebutton{ugxProblemLinSysPageFull4}{\hidepaste}
-\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
-\indentrel{3}\begin{verbatim}
-   (4)  [particular= [- 2,2,0],basis= [[1,- 2,1]]]
-Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty4}
-\begin{paste}{ugxProblemLinSysPageEmpty4}{ugxProblemLinSysPagePatch4}
-\pastebutton{ugxProblemLinSysPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,2,2])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch5}
-\begin{paste}{ugxProblemLinSysPageFull5}{ugxProblemLinSysPageEmpty5}
-\pastebutton{ugxProblemLinSysPageFull5}{\hidepaste}
-\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
-\indentrel{3}\begin{verbatim}
-   (5)  [particular= "failed",basis= [[1,- 2,1]]]
-Type: Record(particular: Union(Vector Fraction Integer,"failed"),basis: List Vector Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty5}
-\begin{paste}{ugxProblemLinSysPageEmpty5}{ugxProblemLinSysPagePatch5}
-\pastebutton{ugxProblemLinSysPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{solve([[1,2,3],[2,3,4],[3,4,5]],[2,3,2])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPagePatch6}
-\begin{paste}{ugxProblemLinSysPageFull6}{ugxProblemLinSysPageEmpty6}
-\pastebutton{ugxProblemLinSysPageFull6}{\hidepaste}
-\tab{5}\spadcommand{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
-\indentrel{3}\begin{verbatim}
-   (6)  [[1,- 2,1]]
-                              Type: List Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLinSysPageEmpty6}
-\begin{paste}{ugxProblemLinSysPageEmpty6}{ugxProblemLinSysPagePatch6}
-\pastebutton{ugxProblemLinSysPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{nullSpace([[1,2,3],[2,3,4],[3,4,5]])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch1}
-\begin{paste}{ugxProblemPolSysPageFull1}{ugxProblemPolSysPageEmpty1}
-\pastebutton{ugxProblemPolSysPageFull1}{\hidepaste}
-\tab{5}\spadcommand{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
-\indentrel{3}\begin{verbatim}
-   (1)
-                     2
-   [[x= - 1,y= 2], [x  - x + 1= 0,y= 2],
-       3
-    [3x  - 1= 0,y= - 2]]
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty1}
-\begin{paste}{ugxProblemPolSysPageEmpty1}{ugxProblemPolSysPagePatch1}
-\pastebutton{ugxProblemPolSysPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{solve([3*x**3 + y + 1,y**2 -4],[x,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch2}
-\begin{paste}{ugxProblemPolSysPageFull2}{ugxProblemPolSysPageEmpty2}
-\pastebutton{ugxProblemPolSysPageFull2}{\hidepaste}
-\tab{5}\spadcommand{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
-\indentrel{3}\begin{verbatim}
-   (2)
-               2
-        z    3z  + z + 9   4     3      2
-   [[x= Ä,y= ÄÄÄÄÄÄÄÄÄÄÄ,9z  + 6z  + 55z  + 15z - 90= 0]]
-        3         3
-   Type: List List Equation Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty2}
-\begin{paste}{ugxProblemPolSysPageEmpty2}{ugxProblemPolSysPagePatch2}
-\pastebutton{ugxProblemPolSysPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{solve([x = y**2-19,y = z**2+x+3,z = 3*x],[x,y,z])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch3}
-\begin{paste}{ugxProblemPolSysPageFull3}{ugxProblemPolSysPageEmpty3}
-\pastebutton{ugxProblemPolSysPageFull3}{\hidepaste}
-\tab{5}\spadcommand{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
-\indentrel{3}\begin{verbatim}
-   (3)
-         ÚÄÄÄ¿                   ÚÄÄÄ¿
-        \³- 3  + 1            - \³- 3  + 1
-   [[x= ÄÄÄÄÄÄÄÄÄÄ,y= 2], [x= ÄÄÄÄÄÄÄÄÄÄÄÄ,y= 2],
-             2                      2
-           ÚÄÄÄ¿ ÚÄ¿
-        - \³- 1 \³3  - 1
-    [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,y= - 2],
-               3ÚÄ¿
-              2\³3
-         ÚÄÄÄ¿ ÚÄ¿
-        \³- 1 \³3  - 1                1
-    [x= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,y= - 2], [x= ÄÄÄÄ,y= - 2],
-              3ÚÄ¿                  3ÚÄ¿
-             2\³3                   \³3
-    [x= - 1,y= 2]]
-            Type: List List Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty3}
-\begin{paste}{ugxProblemPolSysPageEmpty3}{ugxProblemPolSysPagePatch3}
-\pastebutton{ugxProblemPolSysPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{radicalSolve([3*x**3 + y + 1,y**2 -4],[x,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch4}
-\begin{paste}{ugxProblemPolSysPageFull4}{ugxProblemPolSysPageEmpty4}
-\pastebutton{ugxProblemPolSysPageFull4}{\hidepaste}
-\tab{5}\spadcommand{solve([x**2*y - 1,x*y**2 - 2],.01)}
-\indentrel{3}\begin{verbatim}
-   (4)  [[y= 1.5859375,x= 0.79296875]]
-              Type: List List Equation Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty4}
-\begin{paste}{ugxProblemPolSysPageEmpty4}{ugxProblemPolSysPagePatch4}
-\pastebutton{ugxProblemPolSysPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{solve([x**2*y - 1,x*y**2 - 2],.01)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch5}
-\begin{paste}{ugxProblemPolSysPageFull5}{ugxProblemPolSysPageEmpty5}
-\pastebutton{ugxProblemPolSysPageFull5}{\hidepaste}
-\tab{5}\spadcommand{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
-\indentrel{3}\begin{verbatim}
-   (5)
-        1625    1625
-   [[y= ÄÄÄÄ,x= ÄÄÄÄ],
-        1024    2048
-
-           435445573689   1407
-     [y= - ÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄ %i,
-           549755813888   1024
-            435445573689   1407
-      x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄ - ÄÄÄÄ %i]
-           1099511627776   2048
-     ,
-
-           435445573689   1407
-     [y= - ÄÄÄÄÄÄÄÄÄÄÄÄ + ÄÄÄÄ %i,
-           549755813888   1024
-            435445573689   1407
-      x= - ÄÄÄÄÄÄÄÄÄÄÄÄÄ + ÄÄÄÄ %i]
-           1099511627776   2048
-     ]
-Type: List List Equation Polynomial Complex Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty5}
-\begin{paste}{ugxProblemPolSysPageEmpty5}{ugxProblemPolSysPagePatch5}
-\pastebutton{ugxProblemPolSysPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{complexSolve([x**2*y - 1,x*y**2 - 2],1/1000)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch6}
-\begin{paste}{ugxProblemPolSysPageFull6}{ugxProblemPolSysPageEmpty6}
-\pastebutton{ugxProblemPolSysPageFull6}{\hidepaste}
-\tab{5}\spadcommand{solve([x**2/a = a,a = a*x],.001)}
-\indentrel{3}\begin{verbatim}
-   (6)  [[x= 1.0,a= - 1.0],[x= 1.0,a= 1.0]]
-              Type: List List Equation Polynomial Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty6}
-\begin{paste}{ugxProblemPolSysPageEmpty6}{ugxProblemPolSysPagePatch6}
-\pastebutton{ugxProblemPolSysPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{solve([x**2/a = a,a = a*x],.001)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPagePatch7}
-\begin{paste}{ugxProblemPolSysPageFull7}{ugxProblemPolSysPageEmpty7}
-\pastebutton{ugxProblemPolSysPageFull7}{\hidepaste}
-\tab{5}\spadcommand{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
-\indentrel{3}\begin{verbatim}
-   (7)
-           ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-           ³   4     3     2
-           ³- a  + 2a  + 3a  + 3a + 1     - a - 1
-   [[x= -  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ,y= ÄÄÄÄÄÄÄ],
-           ³             2                   a
-          \³            a
-         ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
-         ³   4     3     2
-         ³- a  + 2a  + 3a  + 3a + 1     - a - 1
-    [x=  ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ,y= ÄÄÄÄÄÄÄ]]
-         ³             2                   a
-        \³            a
-            Type: List List Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemPolSysPageEmpty7}
-\begin{paste}{ugxProblemPolSysPageEmpty7}{ugxProblemPolSysPagePatch7}
-\pastebutton{ugxProblemPolSysPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{radicalSolve([x**2/a + a + y**3 - 1,a*y + a + 1],[x,y])}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPagePatch1}
-\begin{paste}{ugProblemFactorFFPageFull1}{ugProblemFactorFFPageEmpty1}
-\pastebutton{ugProblemFactorFFPageFull1}{\hidepaste}
-\tab{5}\spadcommand{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18\bound{u }}
-\indentrel{3}\begin{verbatim}
-          4     2
-   (1)  3x  + 2x  + 15x + 18
-                         Type: Polynomial PrimeField 19
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPageEmpty1}
-\begin{paste}{ugProblemFactorFFPageEmpty1}{ugProblemFactorFFPagePatch1}
-\pastebutton{ugProblemFactorFFPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u : POLY(PF(19)) :=3*x**4+2*x**2+15*x+18\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPagePatch2}
-\begin{paste}{ugProblemFactorFFPageFull2}{ugProblemFactorFFPageEmpty2}
-\pastebutton{ugProblemFactorFFPageFull2}{\hidepaste}
-\tab{5}\spadcommand{factor u\free{u }}
-\indentrel{3}\begin{verbatim}
-                   3    2
-   (2)  3(x + 18)(x  + x  + 8x + 13)
-                Type: Factored Polynomial PrimeField 19
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPageEmpty2}
-\begin{paste}{ugProblemFactorFFPageEmpty2}{ugProblemFactorFFPagePatch2}
-\pastebutton{ugProblemFactorFFPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{factor u\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPagePatch3}
-\begin{paste}{ugProblemFactorFFPageFull3}{ugProblemFactorFFPageEmpty3}
-\pastebutton{ugProblemFactorFFPageFull3}{\hidepaste}
-\tab{5}\spadcommand{factor(u :: POLY FFX(PF 19,3))\free{u }}
-\indentrel{3}\begin{verbatim}
-   (3)
-                       2
-     3(x + 18)(x + 5%BC  + 3%BC + 13)
-  *
-               2                        2
-     (x + 16%BC  + 14%BC + 13)(x + 17%BC  + 2%BC + 13)
-Type: Factored Polynomial FiniteFieldExtension(PrimeField 19,3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorFFPageEmpty3}
-\begin{paste}{ugProblemFactorFFPageEmpty3}{ugProblemFactorFFPagePatch3}
-\pastebutton{ugProblemFactorFFPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{factor(u :: POLY FFX(PF 19,3))\free{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPagePatch1}
-\begin{paste}{ugxProblemSeriesArithmeticPageFull1}{ugxProblemSeriesArithmeticPageEmpty1}
-\pastebutton{ugxProblemSeriesArithmeticPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x := series x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPageEmpty1}
-\begin{paste}{ugxProblemSeriesArithmeticPageEmpty1}{ugxProblemSeriesArithmeticPagePatch1}
-\pastebutton{ugxProblemSeriesArithmeticPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x := series x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPagePatch2}
-\begin{paste}{ugxProblemSeriesArithmeticPageFull2}{ugxProblemSeriesArithmeticPageEmpty2}
-\pastebutton{ugxProblemSeriesArithmeticPageFull2}{\hidepaste}
-\tab{5}\spadcommand{(3 + x) / (1 + 7*x)}
-\indentrel{3}\begin{verbatim}
-   (2)
-                   2       3        4         5          6
-     3 - 20x + 140x  - 980x  + 6860x  - 48020x  + 336140x
-   + 
-               7            8             9             10
-     - 2352980x  + 16470860x  - 115296020x  + 807072140x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPageEmpty2}
-\begin{paste}{ugxProblemSeriesArithmeticPageEmpty2}{ugxProblemSeriesArithmeticPagePatch2}
-\pastebutton{ugxProblemSeriesArithmeticPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(3 + x) / (1 + 7*x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPagePatch3}
-\begin{paste}{ugxProblemSeriesArithmeticPageFull3}{ugxProblemSeriesArithmeticPageEmpty3}
-\pastebutton{ugxProblemSeriesArithmeticPageFull3}{\hidepaste}
-\tab{5}\spadcommand{base := 1 / (1 - x)\free{x }\bound{base }}
-\indentrel{3}\begin{verbatim}
-   (3)
-              2    3    4    5    6    7    8    9    10
-     1 + x + x  + x  + x  + x  + x  + x  + x  + x  + x
-   + 
-        11
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPageEmpty3}
-\begin{paste}{ugxProblemSeriesArithmeticPageEmpty3}{ugxProblemSeriesArithmeticPagePatch3}
-\pastebutton{ugxProblemSeriesArithmeticPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{base := 1 / (1 - x)\free{x }\bound{base }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPagePatch4}
-\begin{paste}{ugxProblemSeriesArithmeticPageFull4}{ugxProblemSeriesArithmeticPageEmpty4}
-\pastebutton{ugxProblemSeriesArithmeticPageFull4}{\hidepaste}
-\tab{5}\spadcommand{expon := x * base\free{x base }\bound{expon }}
-\indentrel{3}\begin{verbatim}
-   (4)
-          2    3    4    5    6    7    8    9    10    11
-     x + x  + x  + x  + x  + x  + x  + x  + x  + x   + x
-   + 
-        12
-     O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPageEmpty4}
-\begin{paste}{ugxProblemSeriesArithmeticPageEmpty4}{ugxProblemSeriesArithmeticPagePatch4}
-\pastebutton{ugxProblemSeriesArithmeticPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{expon := x * base\free{x base }\bound{expon }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPagePatch5}
-\begin{paste}{ugxProblemSeriesArithmeticPageFull5}{ugxProblemSeriesArithmeticPageEmpty5}
-\pastebutton{ugxProblemSeriesArithmeticPageFull5}{\hidepaste}
-\tab{5}\spadcommand{base ** expon\free{base expon }}
-\indentrel{3}\begin{verbatim}
-   (5)
-          2   3  3   7  4   43  5   649  6   241  7
-     1 + x  + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-              2      3      12      120       30
-   + 
-     3706  8   85763  9   245339  10      11
-     ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x   + O(x  )
-      315       5040       10080
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesArithmeticPageEmpty5}
-\begin{paste}{ugxProblemSeriesArithmeticPageEmpty5}{ugxProblemSeriesArithmeticPagePatch5}
-\pastebutton{ugxProblemSeriesArithmeticPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{base ** expon\free{base expon }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch1}
-\begin{paste}{ugxProblemFiniteConversionPageFull1}{ugxProblemFiniteConversionPageEmpty1}
-\pastebutton{ugxProblemFiniteConversionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := PrimeField 3\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  PrimeField 3
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty1}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty1}{ugxProblemFiniteConversionPagePatch1}
-\pastebutton{ugxProblemFiniteConversionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := PrimeField 3\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch2}
-\begin{paste}{ugxProblemFiniteConversionPageFull2}{ugxProblemFiniteConversionPageEmpty2}
-\pastebutton{ugxProblemFiniteConversionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{(m,n) := (4,8)\bound{m n }}
-\indentrel{3}\begin{verbatim}
-   (2)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty2}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty2}{ugxProblemFiniteConversionPagePatch2}
-\pastebutton{ugxProblemFiniteConversionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(m,n) := (4,8)\bound{m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch3}
-\begin{paste}{ugxProblemFiniteConversionPageFull3}{ugxProblemFiniteConversionPageEmpty3}
-\pastebutton{ugxProblemFiniteConversionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{Km := FiniteFieldExtension(K,m)\bound{Km }\free{K m }}
-\indentrel{3}\begin{verbatim}
-   (3)  FiniteFieldExtension(PrimeField 3,4)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty3}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty3}{ugxProblemFiniteConversionPagePatch3}
-\pastebutton{ugxProblemFiniteConversionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{Km := FiniteFieldExtension(K,m)\bound{Km }\free{K m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch4}
-\begin{paste}{ugxProblemFiniteConversionPageFull4}{ugxProblemFiniteConversionPageEmpty4}
-\pastebutton{ugxProblemFiniteConversionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{Kn := FiniteFieldExtension(K,n)\bound{Kn }\free{K n }}
-\indentrel{3}\begin{verbatim}
-   (4)  FiniteFieldExtension(PrimeField 3,8)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty4}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty4}{ugxProblemFiniteConversionPagePatch4}
-\pastebutton{ugxProblemFiniteConversionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{Kn := FiniteFieldExtension(K,n)\bound{Kn }\free{K n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch5}
-\begin{paste}{ugxProblemFiniteConversionPageFull5}{ugxProblemFiniteConversionPageEmpty5}
-\pastebutton{ugxProblemFiniteConversionPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a1 := random()$Km\bound{a1 }\free{Km }}
-\indentrel{3}\begin{verbatim}
-            3       2
-   (5)  2%BD  + 2%BD  + 2%BD + 1
-             Type: FiniteFieldExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty5}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty5}{ugxProblemFiniteConversionPagePatch5}
-\pastebutton{ugxProblemFiniteConversionPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a1 := random()$Km\bound{a1 }\free{Km }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch6}
-\begin{paste}{ugxProblemFiniteConversionPageFull6}{ugxProblemFiniteConversionPageEmpty6}
-\pastebutton{ugxProblemFiniteConversionPageFull6}{\hidepaste}
-\tab{5}\spadcommand{b1 := random()$Km\bound{b1 }\free{Km }}
-\indentrel{3}\begin{verbatim}
-           3      2
-   (6)  %BD  + %BD  + 2%BD + 2
-             Type: FiniteFieldExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty6}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty6}{ugxProblemFiniteConversionPagePatch6}
-\pastebutton{ugxProblemFiniteConversionPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{b1 := random()$Km\bound{b1 }\free{Km }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch7}
-\begin{paste}{ugxProblemFiniteConversionPageFull7}{ugxProblemFiniteConversionPageEmpty7}
-\pastebutton{ugxProblemFiniteConversionPageFull7}{\hidepaste}
-\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a2 }\free{a1 Kn }}
-\indentrel{3}\begin{verbatim}
-            6
-   (7)  2%BE  + 1
-             Type: FiniteFieldExtension(PrimeField 3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty7}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty7}{ugxProblemFiniteConversionPagePatch7}
-\pastebutton{ugxProblemFiniteConversionPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a2 }\free{a1 Kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch8}
-\begin{paste}{ugxProblemFiniteConversionPageFull8}{ugxProblemFiniteConversionPageEmpty8}
-\pastebutton{ugxProblemFiniteConversionPageFull8}{\hidepaste}
-\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b2 }\free{b1 Kn }}
-\indentrel{3}\begin{verbatim}
-            6       4      2
-   (8)  2%BE  + 2%BE  + %BE  + 2
-             Type: FiniteFieldExtension(PrimeField 3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty8}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty8}{ugxProblemFiniteConversionPagePatch8}
-\pastebutton{ugxProblemFiniteConversionPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b2 }\free{b1 Kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch9}
-\begin{paste}{ugxProblemFiniteConversionPageFull9}{ugxProblemFiniteConversionPageEmpty9}
-\pastebutton{ugxProblemFiniteConversionPageFull9}{\hidepaste}
-\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-             Type: FiniteFieldExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty9}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty9}{ugxProblemFiniteConversionPagePatch9}
-\pastebutton{ugxProblemFiniteConversionPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch10}
-\begin{paste}{ugxProblemFiniteConversionPageFull10}{ugxProblemFiniteConversionPageEmpty10}
-\pastebutton{ugxProblemFiniteConversionPageFull10}{\hidepaste}
-\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
-\indentrel{3}\begin{verbatim}
-   (10)  0
-             Type: FiniteFieldExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty10}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty10}{ugxProblemFiniteConversionPagePatch10}
-\pastebutton{ugxProblemFiniteConversionPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a1 a2 b1 b2 Km Kn }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch11}
-\begin{paste}{ugxProblemFiniteConversionPageFull11}{ugxProblemFiniteConversionPageEmpty11}
-\pastebutton{ugxProblemFiniteConversionPageFull11}{\hidepaste}
-\tab{5}\spadcommand{Km := FFCGX(K,m)\bound{Km2 }\free{K m }}
-\indentrel{3}\begin{verbatim}
-   (11)  FiniteFieldCyclicGroupExtension(PrimeField 3,4)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty11}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty11}{ugxProblemFiniteConversionPagePatch11}
-\pastebutton{ugxProblemFiniteConversionPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{Km := FFCGX(K,m)\bound{Km2 }\free{K m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch12}
-\begin{paste}{ugxProblemFiniteConversionPageFull12}{ugxProblemFiniteConversionPageEmpty12}
-\pastebutton{ugxProblemFiniteConversionPageFull12}{\hidepaste}
-\tab{5}\spadcommand{Kn := FFNBX(K,n)\bound{Kn2 }\free{K n }}
-\indentrel{3}\begin{verbatim}
-   (12)  FiniteFieldNormalBasisExtension(PrimeField 3,8)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty12}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty12}{ugxProblemFiniteConversionPagePatch12}
-\pastebutton{ugxProblemFiniteConversionPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{Kn := FFNBX(K,n)\bound{Kn2 }\free{K n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch13}
-\begin{paste}{ugxProblemFiniteConversionPageFull13}{ugxProblemFiniteConversionPageEmpty13}
-\pastebutton{ugxProblemFiniteConversionPageFull13}{\hidepaste}
-\tab{5}\spadcommand{(a1,b1) := (random()$Km,random()$Km)\bound{a12 b12 }\free{Km2 }}
-\indentrel{3}\begin{verbatim}
-            13
-   (13)  %BF
-  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty13}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty13}{ugxProblemFiniteConversionPagePatch13}
-\pastebutton{ugxProblemFiniteConversionPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{(a1,b1) := (random()$Km,random()$Km)\bound{a12 b12 }\free{Km2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch14}
-\begin{paste}{ugxProblemFiniteConversionPageFull14}{ugxProblemFiniteConversionPageEmpty14}
-\pastebutton{ugxProblemFiniteConversionPageFull14}{\hidepaste}
-\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a22 }\free{a12 Kn2 }}
-\indentrel{3}\begin{verbatim}
-   (14)
-        6        5        4        2
-       q        q        q        q        q
-   2%BG   + 2%BG   + 2%BG   + 2%BG   + 2%BG  + 2%BG
-  Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty14}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty14}{ugxProblemFiniteConversionPagePatch14}
-\pastebutton{ugxProblemFiniteConversionPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{a2 := a1 :: Kn\bound{a22 }\free{a12 Kn2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch15}
-\begin{paste}{ugxProblemFiniteConversionPageFull15}{ugxProblemFiniteConversionPageEmpty15}
-\pastebutton{ugxProblemFiniteConversionPageFull15}{\hidepaste}
-\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b22 }\free{b12 Kn2 }}
-\indentrel{3}\begin{verbatim}
-   (15)
-          7       6       5       4        3       2
-         q       q       q       q        q       q
-     2%BG   + %BG   + %BG   + %BG   + 2%BG   + %BG
-   + 
-        q
-     %BG  + %BG
-  Type: FiniteFieldNormalBasisExtension(PrimeField 3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty15}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty15}{ugxProblemFiniteConversionPagePatch15}
-\pastebutton{ugxProblemFiniteConversionPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{b2 := b1 :: Kn\bound{b22 }\free{b12 Kn2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch16}
-\begin{paste}{ugxProblemFiniteConversionPageFull16}{ugxProblemFiniteConversionPageEmpty16}
-\pastebutton{ugxProblemFiniteConversionPageFull16}{\hidepaste}
-\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
-\indentrel{3}\begin{verbatim}
-   (16)  0
-  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty16}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty16}{ugxProblemFiniteConversionPagePatch16}
-\pastebutton{ugxProblemFiniteConversionPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{a1+b1 - ((a2+b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPagePatch17}
-\begin{paste}{ugxProblemFiniteConversionPageFull17}{ugxProblemFiniteConversionPageEmpty17}
-\pastebutton{ugxProblemFiniteConversionPageFull17}{\hidepaste}
-\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
-\indentrel{3}\begin{verbatim}
-   (17)  0
-  Type: FiniteFieldCyclicGroupExtension(PrimeField 3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteConversionPageEmpty17}
-\begin{paste}{ugxProblemFiniteConversionPageEmpty17}{ugxProblemFiniteConversionPagePatch17}
-\pastebutton{ugxProblemFiniteConversionPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{a1*b1 - ((a2*b2) :: Km)\free{a12 a22 b12 b22 Km2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesSubstitutePagePatch1}
-\begin{paste}{ugxProblemSeriesSubstitutePageFull1}{ugxProblemSeriesSubstitutePageEmpty1}
-\pastebutton{ugxProblemSeriesSubstitutePageFull1}{\hidepaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f }}
-\indentrel{3}\begin{verbatim}
-   (1)
-             1  2   1  3    1  4    1   5    1   6
-     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
-   5040      40320      362880      3628800
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesSubstitutePageEmpty1}
-\begin{paste}{ugxProblemSeriesSubstitutePageEmpty1}{ugxProblemSeriesSubstitutePagePatch1}
-\pastebutton{ugxProblemSeriesSubstitutePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{f := taylor(exp(x))\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesSubstitutePagePatch2}
-\begin{paste}{ugxProblemSeriesSubstitutePageFull2}{ugxProblemSeriesSubstitutePageEmpty2}
-\pastebutton{ugxProblemSeriesSubstitutePageFull2}{\hidepaste}
-\tab{5}\spadcommand{eval(f,1.0)}
-\indentrel{3}\begin{verbatim}
-   (2)
-   [1.0, 2.0, 2.5, 2.6666666666 666666667,
-    2.7083333333 333333333, 2.7166666666 666666667,
-    2.7180555555 555555556, 2.7182539682 53968254,
-    2.7182787698 412698413, 2.7182815255 731922399, ...]
-                          Type: Stream Expression Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesSubstitutePageEmpty2}
-\begin{paste}{ugxProblemSeriesSubstitutePageEmpty2}{ugxProblemSeriesSubstitutePagePatch2}
-\pastebutton{ugxProblemSeriesSubstitutePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{eval(f,1.0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch1}
-\begin{paste}{ugProblemFactorAlgPageFull1}{ugProblemFactorAlgPageEmpty1}
-\pastebutton{ugProblemFactorAlgPageFull1}{\hidepaste}
-\tab{5}\spadcommand{aa := rootOf(aa**2+aa+1)\bound{aa }}
-\indentrel{3}\begin{verbatim}
-   (1)  aa
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty1}
-\begin{paste}{ugProblemFactorAlgPageEmpty1}{ugProblemFactorAlgPagePatch1}
-\pastebutton{ugProblemFactorAlgPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{aa := rootOf(aa**2+aa+1)\bound{aa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch2}
-\begin{paste}{ugProblemFactorAlgPageFull2}{ugProblemFactorAlgPageEmpty2}
-\pastebutton{ugProblemFactorAlgPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2\free{aa }\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (2)
-                5               3         4
-     (- aa - 1)y  + ((- aa - 1)x  + aa x)y
-   + 
-                  2                 3
-     ((- 2aa - 2)x  + (- 2aa - 2)x)y
-   + 
-                  5               4        3        2  2
-     ((- 2aa - 2)x  + (- 2aa - 2)x  + 2aa x  + 2aa x )y
-   + 
-                 4               3              2
-     ((- aa - 1)x  + (- 2aa - 2)x  + (- aa - 1)x )y
-   + 
-                7               6    5        4       3
-     (- aa - 1)x  + (- 2aa - 2)x  - x  + 2aa x  + aa x
-                       Type: Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty2}
-\begin{paste}{ugProblemFactorAlgPageEmpty2}{ugProblemFactorAlgPagePatch2}
-\pastebutton{ugProblemFactorAlgPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p:=(x**3+aa**2*x+y)*(aa*x**2+aa*x+aa*y**2)**2\free{aa }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch3}
-\begin{paste}{ugProblemFactorAlgPageFull3}{ugProblemFactorAlgPageEmpty3}
-\pastebutton{ugProblemFactorAlgPageFull3}{\hidepaste}
-\tab{5}\spadcommand{factor(p,[aa])\free{p aa }}
-\indentrel{3}\begin{verbatim}
-                        3                 2    2     2
-   (3)  (- aa - 1)(y + x  + (- aa - 1)x)(y  + x  + x)
-              Type: Factored Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty3}
-\begin{paste}{ugProblemFactorAlgPageEmpty3}{ugProblemFactorAlgPagePatch3}
-\pastebutton{ugProblemFactorAlgPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{factor(p,[aa])\free{p aa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch4}
-\begin{paste}{ugProblemFactorAlgPageFull4}{ugProblemFactorAlgPageEmpty4}
-\pastebutton{ugProblemFactorAlgPageFull4}{\hidepaste}
-\tab{5}\spadcommand{factor(x**2+3)}
-\indentrel{3}\begin{verbatim}
-         2
-   (4)  x  + 3
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty4}
-\begin{paste}{ugProblemFactorAlgPageEmpty4}{ugProblemFactorAlgPagePatch4}
-\pastebutton{ugProblemFactorAlgPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factor(x**2+3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch5}
-\begin{paste}{ugProblemFactorAlgPageFull5}{ugProblemFactorAlgPageEmpty5}
-\pastebutton{ugProblemFactorAlgPageFull5}{\hidepaste}
-\tab{5}\spadcommand{factor(x**2+3,[aa])\free{aa }}
-\indentrel{3}\begin{verbatim}
-   (5)  (x - 2aa - 1)(x + 2aa + 1)
-              Type: Factored Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty5}
-\begin{paste}{ugProblemFactorAlgPageEmpty5}{ugProblemFactorAlgPagePatch5}
-\pastebutton{ugProblemFactorAlgPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{factor(x**2+3,[aa])\free{aa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch6}
-\begin{paste}{ugProblemFactorAlgPageFull6}{ugProblemFactorAlgPageEmpty6}
-\pastebutton{ugProblemFactorAlgPageFull6}{\hidepaste}
-\tab{5}\spadcommand{factor(x**6+108,[aa])\free{aa }}
-\indentrel{3}\begin{verbatim}
-          3              3
-   (6)  (x  - 12aa - 6)(x  + 12aa + 6)
-              Type: Factored Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty6}
-\begin{paste}{ugProblemFactorAlgPageEmpty6}{ugProblemFactorAlgPagePatch6}
-\pastebutton{ugProblemFactorAlgPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{factor(x**6+108,[aa])\free{aa }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch7}
-\begin{paste}{ugProblemFactorAlgPageFull7}{ugProblemFactorAlgPageEmpty7}
-\pastebutton{ugProblemFactorAlgPageFull7}{\hidepaste}
-\tab{5}\spadcommand{bb:=rootOf(bb**3-2)\bound{bb }}
-\indentrel{3}\begin{verbatim}
-   (7)  bb
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty7}
-\begin{paste}{ugProblemFactorAlgPageEmpty7}{ugProblemFactorAlgPagePatch7}
-\pastebutton{ugProblemFactorAlgPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{bb:=rootOf(bb**3-2)\bound{bb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch8}
-\begin{paste}{ugProblemFactorAlgPageFull8}{ugProblemFactorAlgPageEmpty8}
-\pastebutton{ugProblemFactorAlgPageFull8}{\hidepaste}
-\tab{5}\spadcommand{factor(x**6+108,[bb])\free{bb }}
-\indentrel{3}\begin{verbatim}
-   (8)
-     2              2   2      2   2              2
-   (x  - 3bb x + 3bb )(x  + 3bb )(x  + 3bb x + 3bb )
-              Type: Factored Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty8}
-\begin{paste}{ugProblemFactorAlgPageEmpty8}{ugProblemFactorAlgPagePatch8}
-\pastebutton{ugProblemFactorAlgPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{factor(x**6+108,[bb])\free{bb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPagePatch9}
-\begin{paste}{ugProblemFactorAlgPageFull9}{ugProblemFactorAlgPageEmpty9}
-\pastebutton{ugProblemFactorAlgPageFull9}{\hidepaste}
-\tab{5}\spadcommand{factor(x**6+108,[aa,bb])\free{aa bb }}
-\indentrel{3}\begin{verbatim}
-   (9)
-     (x + (- 2aa - 1)bb)(x + (- aa - 2)bb)
-  *
-     (x + (- aa + 1)bb)(x + (aa - 1)bb)(x + (aa + 2)bb)
-  *
-     (x + (2aa + 1)bb)
-              Type: Factored Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorAlgPageEmpty9}
-\begin{paste}{ugProblemFactorAlgPageEmpty9}{ugProblemFactorAlgPagePatch9}
-\pastebutton{ugProblemFactorAlgPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{factor(x**6+108,[aa,bb])\free{aa bb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch1}
-\begin{paste}{ugxProblemSeriesConversionsPageFull1}{ugxProblemSeriesConversionsPageEmpty1}
-\pastebutton{ugxProblemSeriesConversionsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{taylor(sin(x),x = 0)}
-\indentrel{3}\begin{verbatim}
-            1  3    1   5     1   7      1    9      11
-   (1)  x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x  + O(x  )
-            6      120      5040      362880
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty1}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty1}{ugxProblemSeriesConversionsPagePatch1}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{taylor(sin(x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch2}
-\begin{paste}{ugxProblemSeriesConversionsPageFull2}{ugxProblemSeriesConversionsPageEmpty2}
-\pastebutton{ugxProblemSeriesConversionsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{taylor(sin(x),x = \%pi/6)}
-\indentrel{3}\begin{verbatim}
-   (2)
-          ÚÄ¿                             ÚÄ¿
-     1   \³3       %pi    1      %pi 2   \³3       %pi 3
-     Ä + ÄÄÄÄ (x - ÄÄÄ) - Ä (x - ÄÄÄ)  - ÄÄÄÄ (x - ÄÄÄ)
-     2     2        6     4       6       12        6
-   + 
-                      ÚÄ¿
-      1      %pi 4   \³3       %pi 5     1       %pi 6
-     ÄÄ (x - ÄÄÄ)  + ÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄ (x - ÄÄÄ)
-     48       6       240       6      1440       6
-   + 
-         ÚÄ¿
-        \³3       %pi 7     1        %pi 8
-     - ÄÄÄÄÄ (x - ÄÄÄ)  + ÄÄÄÄÄ (x - ÄÄÄ)
-       10080       6      80640       6
-   + 
-       ÚÄ¿
-      \³3        %pi 9      1         %pi 10
-     ÄÄÄÄÄÄ (x - ÄÄÄ)  - ÄÄÄÄÄÄÄ (x - ÄÄÄ)
-     725760       6      7257600       6
-   + 
-            %pi 11
-     O((x - ÄÄÄ)  )
-             6
-Type: UnivariateTaylorSeries(Expression Integer,x,pi/6)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty2}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty2}{ugxProblemSeriesConversionsPagePatch2}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{taylor(sin(x),x = \%pi/6)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch3}
-\begin{paste}{ugxProblemSeriesConversionsPageFull3}{ugxProblemSeriesConversionsPageEmpty3}
-\pastebutton{ugxProblemSeriesConversionsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{taylor(tan(x*y),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (3)
-          3        5         7         9
-         y   3   2y   5   17y   7   62y   9      11
-   y x + ÄÄ x  + ÄÄÄ x  + ÄÄÄÄ x  + ÄÄÄÄ x  + O(x  )
-          3       15       315      2835
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty3}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty3}{ugxProblemSeriesConversionsPagePatch3}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{taylor(tan(x*y),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch4}
-\begin{paste}{ugxProblemSeriesConversionsPageFull4}{ugxProblemSeriesConversionsPageEmpty4}
-\pastebutton{ugxProblemSeriesConversionsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{taylor(tan(x*y),y = 0)}
-\indentrel{3}\begin{verbatim}
-   (4)
-          3        5         7         9
-         x   3   2x   5   17x   7   62x   9      11
-   x y + ÄÄ y  + ÄÄÄ y  + ÄÄÄÄ y  + ÄÄÄÄ y  + O(y  )
-          3       15       315      2835
-   Type: UnivariateTaylorSeries(Expression Integer,y,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty4}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty4}{ugxProblemSeriesConversionsPagePatch4}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{taylor(tan(x*y),y = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch5}
-\begin{paste}{ugxProblemSeriesConversionsPageFull5}{ugxProblemSeriesConversionsPageEmpty5}
-\pastebutton{ugxProblemSeriesConversionsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0)\bound{bern }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                      2                 3     2
-         2x - 1     6x  - 6x + 1  2   2x  - 3x  + x  3
-     1 + ÄÄÄÄÄÄ t + ÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-            2            12                 12
-   + 
-        4      3      2            5      4      3
-     30x  - 60x  + 30x  - 1  4   6x  - 15x  + 10x  - x  5
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t  + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-               720                        720
-   + 
-        6       5       4      2
-     42x  - 126x  + 105x  - 21x  + 1  6
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-                  30240
-   + 
-       7      6      5     3
-     6x  - 21x  + 21x  - 7x  + x  7
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-                30240
-   + 
-        8       7       6      4      2
-     30x  - 120x  + 140x  - 70x  + 20x  - 1  8
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-                     1209600
-   + 
-        9      8      7      5      3
-     10x  - 45x  + 60x  - 42x  + 20x  - 3x  9
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-                    3628800
-   + 
-        10       9       8       6       4      2
-     66x   - 330x  + 495x  - 462x  + 330x  - 99x  + 5  10
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ t
-                         239500800
-   + 
-        11
-     O(t  )
-   Type: UnivariateTaylorSeries(Expression Integer,t,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty5}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty5}{ugxProblemSeriesConversionsPagePatch5}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{bern := taylor(t*exp(x*t)/(exp(t) - 1),t = 0)\bound{bern }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch6}
-\begin{paste}{ugxProblemSeriesConversionsPageFull6}{ugxProblemSeriesConversionsPageEmpty6}
-\pastebutton{ugxProblemSeriesConversionsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{factorial(6) * coefficient(bern,6)\free{bern }}
-\indentrel{3}\begin{verbatim}
-           6       5       4      2
-        42x  - 126x  + 105x  - 21x  + 1
-   (6)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                       42
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty6}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty6}{ugxProblemSeriesConversionsPagePatch6}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{factorial(6) * coefficient(bern,6)\free{bern }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch7}
-\begin{paste}{ugxProblemSeriesConversionsPageFull7}{ugxProblemSeriesConversionsPageEmpty7}
-\pastebutton{ugxProblemSeriesConversionsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{bernoulliB(6,x)}
-\indentrel{3}\begin{verbatim}
-         6     5   5  4   1  2    1
-   (7)  x  - 3x  + Ä x  - Ä x  + ÄÄ
-                   2      2      42
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty7}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty7}{ugxProblemSeriesConversionsPagePatch7}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{bernoulliB(6,x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch8}
-\begin{paste}{ugxProblemSeriesConversionsPageFull8}{ugxProblemSeriesConversionsPageEmpty8}
-\pastebutton{ugxProblemSeriesConversionsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{laurent(x/log(x),x = 1)}
-\indentrel{3}\begin{verbatim}
-   (8)
-            - 1   3    5            1        2
-     (x - 1)    + Ä + ÄÄ (x - 1) - ÄÄ (x - 1)
-                  2   12           24
-   + 
-      11        3    11         4    271         5
-     ÄÄÄ (x - 1)  - ÄÄÄÄ (x - 1)  + ÄÄÄÄÄ (x - 1)
-     720            1440            60480
-   + 
-        13         6     7297         7     425         8
-     - ÄÄÄÄ (x - 1)  + ÄÄÄÄÄÄÄ (x - 1)  - ÄÄÄÄÄÄ (x - 1)
-       4480            3628800            290304
-   + 
-       530113         9            10
-     ÄÄÄÄÄÄÄÄÄ (x - 1)  + O((x - 1)  )
-     479001600
-  Type: UnivariateLaurentSeries(Expression Integer,x,1)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty8}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty8}{ugxProblemSeriesConversionsPagePatch8}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{laurent(x/log(x),x = 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch9}
-\begin{paste}{ugxProblemSeriesConversionsPageFull9}{ugxProblemSeriesConversionsPageEmpty9}
-\pastebutton{ugxProblemSeriesConversionsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
-\indentrel{3}\begin{verbatim}
-   (9)
-                 1                3                 7
-               - Ä                Ä                 Ä
-          3%pi   2    1      3%pi 2    1       3%pi 2
-     (x - ÄÄÄÄ)    + ÄÄ (x - ÄÄÄÄ)  + ÄÄÄ (x - ÄÄÄÄ)
-            2        12        2      160        2
-   + 
-            3%pi 5
-     O((x - ÄÄÄÄ) )
-              2
-Type: UnivariatePuiseuxSeries(Expression Integer,x,(3*pi)/2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty9}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty9}{ugxProblemSeriesConversionsPagePatch9}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{puiseux(sqrt(sec(x)),x = 3 * \%pi/2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPagePatch10}
-\begin{paste}{ugxProblemSeriesConversionsPageFull10}{ugxProblemSeriesConversionsPageEmpty10}
-\pastebutton{ugxProblemSeriesConversionsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{series(x**x,x=0)}
-\indentrel{3}\begin{verbatim}
-   (10)
-                         2            3            4
-                   log(x)   2   log(x)   3   log(x)   4
-     1 + log(x)x + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x
-                      2            6            24
-   + 
-           5            6            7            8
-     log(x)   5   log(x)   6   log(x)   7   log(x)   8
-     ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x
-       120          720          5040        40320
-   + 
-           9            10
-     log(x)   9   log(x)    10      11
-     ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄ x   + O(x  )
-      362880       3628800
-Type: GeneralUnivariatePowerSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesConversionsPageEmpty10}
-\begin{paste}{ugxProblemSeriesConversionsPageEmpty10}{ugxProblemSeriesConversionsPagePatch10}
-\pastebutton{ugxProblemSeriesConversionsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{series(x**x,x=0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch1}
-\begin{paste}{ugxProblemDEQSeriesPageFull1}{ugxProblemDEQSeriesPageEmpty1}
-\pastebutton{ugxProblemDEQSeriesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set streams calculate 7\bound{c7 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty1}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty1}{ugxProblemDEQSeriesPagePatch1}
-\pastebutton{ugxProblemDEQSeriesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set streams calculate 7\bound{c7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch2}
-\begin{paste}{ugxProblemDEQSeriesPageFull2}{ugxProblemDEQSeriesPageEmpty2}
-\pastebutton{ugxProblemDEQSeriesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (1)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty2}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty2}{ugxProblemDEQSeriesPagePatch2}
-\pastebutton{ugxProblemDEQSeriesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch3}
-\begin{paste}{ugxProblemDEQSeriesPageFull3}{ugxProblemDEQSeriesPageEmpty3}
-\pastebutton{ugxProblemDEQSeriesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq }\free{y }}
-\indentrel{3}\begin{verbatim}
-         ,,,        y(x)     ,,
-   (2)  y   (x) - %e    sin(y  (x))= cos(x)
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty3}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty3}{ugxProblemDEQSeriesPagePatch3}
-\pastebutton{ugxProblemDEQSeriesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{eq := D(y(x), x, 3) - sin(D(y(x), x, 2))*exp(y(x)) = cos(x)\bound{eq }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch4}
-\begin{paste}{ugxProblemDEQSeriesPageFull4}{ugxProblemDEQSeriesPageEmpty4}
-\pastebutton{ugxProblemDEQSeriesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y }\free{eq }\free{c7 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-                          2            3
-         1  3   %e  4   %e  - 1  5   %e  - 2%e  6
-     1 + Ä x  + ÄÄ x  + ÄÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄÄÄ x
-         6      24        120           720
-   + 
-       4      2
-     %e  - 8%e  + 4%e + 1  7      8
-     ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ x  + O(x )
-             5040
-   Type: UnivariateTaylorSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty4}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty4}{ugxProblemDEQSeriesPagePatch4}
-\pastebutton{ugxProblemDEQSeriesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{seriesSolve(eq, y, x = 0, [1, 0, 0])\free{y }\free{eq }\free{c7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch5}
-\begin{paste}{ugxProblemDEQSeriesPageFull5}{ugxProblemDEQSeriesPageEmpty5}
-\pastebutton{ugxProblemDEQSeriesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{x := operator 'x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (4)  x
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty5}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty5}{ugxProblemDEQSeriesPagePatch5}
-\pastebutton{ugxProblemDEQSeriesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{x := operator 'x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch6}
-\begin{paste}{ugxProblemDEQSeriesPageFull6}{ugxProblemDEQSeriesPageEmpty6}
-\pastebutton{ugxProblemDEQSeriesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
-\indentrel{3}\begin{verbatim}
-         ,         2
-   (5)  x (t)= x(t)  + 1
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty6}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty6}{ugxProblemDEQSeriesPagePatch6}
-\pastebutton{ugxProblemDEQSeriesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{eq1 := D(x(t), t) = 1 + x(t)**2\free{x }\free{y }\bound{eq1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch7}
-\begin{paste}{ugxProblemDEQSeriesPageFull7}{ugxProblemDEQSeriesPageEmpty7}
-\pastebutton{ugxProblemDEQSeriesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
-\indentrel{3}\begin{verbatim}
-         ,
-   (6)  y (t)= x(t)y(t)
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty7}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty7}{ugxProblemDEQSeriesPagePatch7}
-\pastebutton{ugxProblemDEQSeriesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{eq2 := D(y(t), t) = x(t) * y(t)\free{x }\free{y }\bound{eq2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPagePatch8}
-\begin{paste}{ugxProblemDEQSeriesPageFull8}{ugxProblemDEQSeriesPageEmpty8}
-\pastebutton{ugxProblemDEQSeriesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }\free{c7 }}
-\indentrel{3}\begin{verbatim}
-   (7)
-        1  3    2  5    17  7      8
-   [t + Ä t  + ÄÄ t  + ÄÄÄ t  + O(t ),
-        3      15      315
-        1  2    5  4    61  6      8
-    1 + Ä t  + ÄÄ t  + ÄÄÄ t  + O(t )]
-        2      24      720
-Type: List UnivariateTaylorSeries(Expression Integer,t,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemDEQSeriesPageEmpty8}
-\begin{paste}{ugxProblemDEQSeriesPageEmpty8}{ugxProblemDEQSeriesPagePatch8}
-\pastebutton{ugxProblemDEQSeriesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{seriesSolve([eq2, eq1], [x, y], t = 0, [y(0) = 1, x(0) = 0])\free{x }\free{y }\free{eq1 }\free{eq2 }\free{c7 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPagePatch1}
-\begin{paste}{ugxProblemSeriesCoefficientsPageFull1}{ugxProblemSeriesCoefficientsPageEmpty1}
-\pastebutton{ugxProblemSeriesCoefficientsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{x := series(x)\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty1}
-\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty1}{ugxProblemSeriesCoefficientsPagePatch1}
-\pastebutton{ugxProblemSeriesCoefficientsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x := series(x)\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPagePatch2}
-\begin{paste}{ugxProblemSeriesCoefficientsPageFull2}{ugxProblemSeriesCoefficientsPageEmpty2}
-\pastebutton{ugxProblemSeriesCoefficientsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{y := exp(x) * sin(x)\free{x }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (2)
-          2   1  3    1  5    1  6    1   7     1    9
-     x + x  + Ä x  - ÄÄ x  - ÄÄ x  - ÄÄÄ x  + ÄÄÄÄÄ x
-              3      30      90      630      22680
-   + 
-        1    10      1     11      12
-     ÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄ x   + O(x  )
-     113400       1247400
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty2}
-\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty2}{ugxProblemSeriesCoefficientsPagePatch2}
-\pastebutton{ugxProblemSeriesCoefficientsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{y := exp(x) * sin(x)\free{x }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPagePatch3}
-\begin{paste}{ugxProblemSeriesCoefficientsPageFull3}{ugxProblemSeriesCoefficientsPageEmpty3}
-\pastebutton{ugxProblemSeriesCoefficientsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{coefficient(y,6)\free{y }}
-\indentrel{3}\begin{verbatim}
-           1
-   (3)  - ÄÄ
-          90
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty3}
-\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty3}{ugxProblemSeriesCoefficientsPagePatch3}
-\pastebutton{ugxProblemSeriesCoefficientsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{coefficient(y,6)\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPagePatch4}
-\begin{paste}{ugxProblemSeriesCoefficientsPageFull4}{ugxProblemSeriesCoefficientsPageEmpty4}
-\pastebutton{ugxProblemSeriesCoefficientsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{coefficient(y,15)\free{y }\bound{y15 }}
-\indentrel{3}\begin{verbatim}
-               1
-   (4)  - ÄÄÄÄÄÄÄÄÄÄÄ
-          10216206000
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty4}
-\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty4}{ugxProblemSeriesCoefficientsPagePatch4}
-\pastebutton{ugxProblemSeriesCoefficientsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{coefficient(y,15)\free{y }\bound{y15 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPagePatch5}
-\begin{paste}{ugxProblemSeriesCoefficientsPageFull5}{ugxProblemSeriesCoefficientsPageEmpty5}
-\pastebutton{ugxProblemSeriesCoefficientsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{y\free{y15 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-          2   1  3    1  5    1  6    1   7     1    9
-     x + x  + Ä x  - ÄÄ x  - ÄÄ x  - ÄÄÄ x  + ÄÄÄÄÄ x
-              3      30      90      630      22680
-   + 
-        1    10      1     11       1     13
-     ÄÄÄÄÄÄ x   + ÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄ x
-     113400       1247400       97297200
-   + 
-           1      14        1       15      16
-     - ÄÄÄÄÄÄÄÄÄ x   - ÄÄÄÄÄÄÄÄÄÄÄ x   + O(x  )
-       681080400       10216206000
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCoefficientsPageEmpty5}
-\begin{paste}{ugxProblemSeriesCoefficientsPageEmpty5}{ugxProblemSeriesCoefficientsPagePatch5}
-\pastebutton{ugxProblemSeriesCoefficientsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{y\free{y15 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch1}
-\begin{paste}{ugxProblemLDEQClosedPageFull1}{ugxProblemLDEQClosedPageEmpty1}
-\pastebutton{ugxProblemLDEQClosedPageFull1}{\hidepaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (1)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty1}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty1}{ugxProblemLDEQClosedPagePatch1}
-\pastebutton{ugxProblemLDEQClosedPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch2}
-\begin{paste}{ugxProblemLDEQClosedPageFull2}{ugxProblemLDEQClosedPageEmpty2}
-\pastebutton{ugxProblemLDEQClosedPageFull2}{\hidepaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
-\indentrel{3}\begin{verbatim}
-         ,,       ,
-   (2)  y  (x) + y (x) + y(x)= 0
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty2}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty2}{ugxProblemLDEQClosedPagePatch2}
-\pastebutton{ugxProblemLDEQClosedPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + D(y x, x) + y x = 0\bound{e1 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch3}
-\begin{paste}{ugxProblemLDEQClosedPageFull3}{ugxProblemLDEQClosedPageEmpty3}
-\pastebutton{ugxProblemLDEQClosedPageFull3}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   [particular= 0,
-                          x     x
-                  ÚÄ¿   - Ä   - Ä      ÚÄ¿
-                x\³3      2     2    x\³3
-    basis= [cos(ÄÄÄÄÄ)%e   ,%e   sin(ÄÄÄÄÄ)]]
-                  2                    2
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty3}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty3}{ugxProblemLDEQClosedPagePatch3}
-\pastebutton{ugxProblemLDEQClosedPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e1 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch4}
-\begin{paste}{ugxProblemLDEQClosedPageFull4}{ugxProblemLDEQClosedPageEmpty4}
-\pastebutton{ugxProblemLDEQClosedPageFull4}{\hidepaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + y x\bound{e2 }\free{y }}
-\indentrel{3}\begin{verbatim}
-         ,,
-   (4)  y  (x) + y(x)
-
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty4}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty4}{ugxProblemLDEQClosedPagePatch4}
-\pastebutton{ugxProblemLDEQClosedPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{deq := D(y x, x, 2) + y x\bound{e2 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch5}
-\begin{paste}{ugxProblemLDEQClosedPageFull5}{ugxProblemLDEQClosedPageEmpty5}
-\pastebutton{ugxProblemLDEQClosedPageFull5}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x = 0, [1, 1])\free{e2 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (5)  sin(x) + cos(x)
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty5}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty5}{ugxProblemLDEQClosedPagePatch5}
-\pastebutton{ugxProblemLDEQClosedPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x = 0, [1, 1])\free{e2 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch6}
-\begin{paste}{ugxProblemLDEQClosedPageFull6}{ugxProblemLDEQClosedPageEmpty6}
-\pastebutton{ugxProblemLDEQClosedPageFull6}{\hidepaste}
-\tab{5}\spadcommand{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\bound{e3 }\free{y }}
-\indentrel{3}\begin{verbatim}
-         3 ,,,       2 ,,         ,               4
-   (6)  x y   (x) + x y  (x) - 2xy (x) + 2y(x)= 2x
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty6}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty6}{ugxProblemLDEQClosedPagePatch6}
-\pastebutton{ugxProblemLDEQClosedPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{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\bound{e3 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch7}
-\begin{paste}{ugxProblemLDEQClosedPageFull7}{ugxProblemLDEQClosedPageEmpty7}
-\pastebutton{ugxProblemLDEQClosedPageFull7}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (7)
-                 5      3      2
-                x  - 10x  + 20x  + 4
-   [particular= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-                         15x
-              3     2      3      3     2
-            2x  - 3x  + 1 x  - 1 x  - 3x  - 1
-    basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]]
-                  x          x         x
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty7}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty7}{ugxProblemLDEQClosedPagePatch7}
-\pastebutton{ugxProblemLDEQClosedPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e3 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch8}
-\begin{paste}{ugxProblemLDEQClosedPageFull8}{ugxProblemLDEQClosedPageEmpty8}
-\pastebutton{ugxProblemLDEQClosedPageFull8}{\hidepaste}
-\tab{5}\spadcommand{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\bound{e4 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (8)
-       9    3  ,,,         8 ,,          ,
-     (x  + x )y   (x) + 18x y  (x) - 90xy (x)
-
-   + 
-            6
-     (- 330x  + 90)y(x)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty8}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty8}{ugxProblemLDEQClosedPagePatch8}
-\pastebutton{ugxProblemLDEQClosedPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{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\bound{e4 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch9}
-\begin{paste}{ugxProblemLDEQClosedPageFull9}{ugxProblemLDEQClosedPageEmpty9}
-\pastebutton{ugxProblemLDEQClosedPageFull9}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e4 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [particular= 0,
-                          ÚÄÄ¿            ÚÄÄ¿
-                       - \³91 log(x)     \³91 log(x)
-               x   x %e              x %e
-    basis= [ÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
-             6            6                6
-            x  + 1       x  + 1           x  + 1
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty9}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty9}{ugxProblemLDEQClosedPagePatch9}
-\pastebutton{ugxProblemLDEQClosedPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e4 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch10}
-\begin{paste}{ugxProblemLDEQClosedPageFull10}{ugxProblemLDEQClosedPageEmpty10}
-\pastebutton{ugxProblemLDEQClosedPageFull10}{\hidepaste}
-\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
-\indentrel{3}\begin{verbatim}
-           2      ,,         ,
-   (10)  (x  + 1)y  (x) + 3xy (x) + y(x)= 0
-
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty10}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty10}{ugxProblemLDEQClosedPagePatch10}
-\pastebutton{ugxProblemLDEQClosedPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{deq := (x**2 + 1) * D(y x, x, 2) + 3 * x * D(y x, x) + y x = 0\bound{e5 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPagePatch11}
-\begin{paste}{ugxProblemLDEQClosedPageFull11}{ugxProblemLDEQClosedPageEmpty11}
-\pastebutton{ugxProblemLDEQClosedPageFull11}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (11)
-                                         ÚÄÄÄÄÄÄ¿
-                                         ³ 2
-                              1     log(\³x  + 1  - x)
-   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
-                           ÚÄÄÄÄÄÄ¿       ÚÄÄÄÄÄÄ¿
-                           ³ 2            ³ 2
-                          \³x  + 1       \³x  + 1
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemLDEQClosedPageEmpty11}
-\begin{paste}{ugxProblemLDEQClosedPageEmpty11}{ugxProblemLDEQClosedPagePatch11}
-\pastebutton{ugxProblemLDEQClosedPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{e5 }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch1}
-\begin{paste}{ugxProblemNLDEQClosedPageFull1}{ugxProblemNLDEQClosedPageEmpty1}
-\pastebutton{ugxProblemNLDEQClosedPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m := -y\bound{m }}
-\indentrel{3}\begin{verbatim}
-   (1)  - y
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty1}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty1}{ugxProblemNLDEQClosedPagePatch1}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m := -y\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch2}
-\begin{paste}{ugxProblemNLDEQClosedPageFull2}{ugxProblemNLDEQClosedPageEmpty2}
-\pastebutton{ugxProblemNLDEQClosedPageFull2}{\hidepaste}
-\tab{5}\spadcommand{n := x + y * log y\bound{n }}
-\indentrel{3}\begin{verbatim}
-   (2)  y log(y) + x
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty2}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty2}{ugxProblemNLDEQClosedPagePatch2}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{n := x + y * log y\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch3}
-\begin{paste}{ugxProblemNLDEQClosedPageFull3}{ugxProblemNLDEQClosedPageEmpty3}
-\pastebutton{ugxProblemNLDEQClosedPageFull3}{\hidepaste}
-\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m n }}
-\indentrel{3}\begin{verbatim}
-   (3)  - 2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty3}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty3}{ugxProblemNLDEQClosedPagePatch3}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch4}
-\begin{paste}{ugxProblemNLDEQClosedPageFull4}{ugxProblemNLDEQClosedPageEmpty4}
-\pastebutton{ugxProblemNLDEQClosedPageFull4}{\hidepaste}
-\tab{5}\spadcommand{mu := operator 'mu\bound{mu }}
-\indentrel{3}\begin{verbatim}
-   (4)  mu
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty4}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty4}{ugxProblemNLDEQClosedPagePatch4}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{mu := operator 'mu\bound{mu }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch5}
-\begin{paste}{ugxProblemNLDEQClosedPageFull5}{ugxProblemNLDEQClosedPageEmpty5}
-\pastebutton{ugxProblemNLDEQClosedPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a := D(mu(x) * m, y) - D(mu(x) * n, x)\bound{a }\free{m n mu }}
-\indentrel{3}\begin{verbatim}
-                          ,
-   (5)  (- y log(y) - x)mu (x) - 2mu(x)
-
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty5}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty5}{ugxProblemNLDEQClosedPagePatch5}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a := D(mu(x) * m, y) - D(mu(x) * n, x)\bound{a }\free{m n mu }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch6}
-\begin{paste}{ugxProblemNLDEQClosedPageFull6}{ugxProblemNLDEQClosedPageEmpty6}
-\pastebutton{ugxProblemNLDEQClosedPageFull6}{\hidepaste}
-\tab{5}\spadcommand{solve(a = 0, mu, x)\free{mu a }}
-\indentrel{3}\begin{verbatim}
-   (6)
-                                        1
-   [particular= 0,basis= [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]]
-                           2      2                  2
-                          y log(y)  + 2x y log(y) + x
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty6}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty6}{ugxProblemNLDEQClosedPagePatch6}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{solve(a = 0, mu, x)\free{mu a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch7}
-\begin{paste}{ugxProblemNLDEQClosedPageFull7}{ugxProblemNLDEQClosedPageEmpty7}
-\pastebutton{ugxProblemNLDEQClosedPageFull7}{\hidepaste}
-\tab{5}\spadcommand{b := D(mu(y) * m, y) - D(mu(y) * n, x)\bound{b }\free{mu m }}
-\indentrel{3}\begin{verbatim}
-             ,
-   (7)  - ymu (y) - 2mu(y)
-
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty7}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty7}{ugxProblemNLDEQClosedPagePatch7}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{b := D(mu(y) * m, y) - D(mu(y) * n, x)\bound{b }\free{mu m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch8}
-\begin{paste}{ugxProblemNLDEQClosedPageFull8}{ugxProblemNLDEQClosedPageEmpty8}
-\pastebutton{ugxProblemNLDEQClosedPageFull8}{\hidepaste}
-\tab{5}\spadcommand{sb := solve(b = 0, mu, y)\free{mu b }\bound{sb }}
-\indentrel{3}\begin{verbatim}
-                                1
-   (8)  [particular= 0,basis= [ÄÄ]]
-                                2
-                               y
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty8}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty8}{ugxProblemNLDEQClosedPagePatch8}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{sb := solve(b = 0, mu, y)\free{mu b }\bound{sb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch9}
-\begin{paste}{ugxProblemNLDEQClosedPageFull9}{ugxProblemNLDEQClosedPageEmpty9}
-\pastebutton{ugxProblemNLDEQClosedPageFull9}{\hidepaste}
-\tab{5}\spadcommand{intFactor := sb.basis.1\bound{intFactor }\free{sb }}
-\indentrel{3}\begin{verbatim}
-         1
-   (9)  ÄÄ
-         2
-        y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty9}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty9}{ugxProblemNLDEQClosedPagePatch9}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{intFactor := sb.basis.1\bound{intFactor }\free{sb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch10}
-\begin{paste}{ugxProblemNLDEQClosedPageFull10}{ugxProblemNLDEQClosedPageEmpty10}
-\pastebutton{ugxProblemNLDEQClosedPageFull10}{\hidepaste}
-\tab{5}\spadcommand{m := intFactor * m\bound{m1 }\free{m intFactor }}
-\indentrel{3}\begin{verbatim}
-           1
-   (10)  - Ä
-           y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty10}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty10}{ugxProblemNLDEQClosedPagePatch10}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m := intFactor * m\bound{m1 }\free{m intFactor }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch11}
-\begin{paste}{ugxProblemNLDEQClosedPageFull11}{ugxProblemNLDEQClosedPageEmpty11}
-\pastebutton{ugxProblemNLDEQClosedPageFull11}{\hidepaste}
-\tab{5}\spadcommand{n := intFactor * n\bound{n1 }\free{n intFactor }}
-\indentrel{3}\begin{verbatim}
-         y log(y) + x
-   (11)  ÄÄÄÄÄÄÄÄÄÄÄÄ
-               2
-              y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty11}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty11}{ugxProblemNLDEQClosedPagePatch11}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{n := intFactor * n\bound{n1 }\free{n intFactor }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch12}
-\begin{paste}{ugxProblemNLDEQClosedPageFull12}{ugxProblemNLDEQClosedPageEmpty12}
-\pastebutton{ugxProblemNLDEQClosedPageFull12}{\hidepaste}
-\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m1 n1 }}
-\indentrel{3}\begin{verbatim}
-   (12)  0
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty12}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty12}{ugxProblemNLDEQClosedPagePatch12}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{D(m, y) - D(n, x)\free{m1 n1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch13}
-\begin{paste}{ugxProblemNLDEQClosedPageFull13}{ugxProblemNLDEQClosedPageEmpty13}
-\pastebutton{ugxProblemNLDEQClosedPageFull13}{\hidepaste}
-\tab{5}\spadcommand{h := operator 'h\bound{h }}
-\indentrel{3}\begin{verbatim}
-   (13)  h
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty13}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty13}{ugxProblemNLDEQClosedPagePatch13}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{h := operator 'h\bound{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch14}
-\begin{paste}{ugxProblemNLDEQClosedPageFull14}{ugxProblemNLDEQClosedPageEmpty14}
-\pastebutton{ugxProblemNLDEQClosedPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sol := h y + integrate(m, x)\bound{sol }\free{h m1 }}
-\indentrel{3}\begin{verbatim}
-         y h(y) - x
-   (14)  ÄÄÄÄÄÄÄÄÄÄ
-              y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty14}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty14}{ugxProblemNLDEQClosedPagePatch14}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sol := h y + integrate(m, x)\bound{sol }\free{h m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch15}
-\begin{paste}{ugxProblemNLDEQClosedPageFull15}{ugxProblemNLDEQClosedPageEmpty15}
-\pastebutton{ugxProblemNLDEQClosedPageFull15}{\hidepaste}
-\tab{5}\spadcommand{dsol := D(sol, y)\free{sol }\bound{dsol }}
-\indentrel{3}\begin{verbatim}
-          2 ,
-         y h (y) + x
-
-   (15)  ÄÄÄÄÄÄÄÄÄÄÄ
-               2
-              y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty15}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty15}{ugxProblemNLDEQClosedPagePatch15}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{dsol := D(sol, y)\free{sol }\bound{dsol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch16}
-\begin{paste}{ugxProblemNLDEQClosedPageFull16}{ugxProblemNLDEQClosedPageEmpty16}
-\pastebutton{ugxProblemNLDEQClosedPageFull16}{\hidepaste}
-\tab{5}\spadcommand{nsol := solve(dsol = n, h, y)\free{dsol n1 h }\bound{nsol }}
-\indentrel{3}\begin{verbatim}
-                            2
-                      log(y)
-   (16)  [particular= ÄÄÄÄÄÄÄ,basis= [1]]
-                         2
-Type: Union(Record(particular: Expression Integer,basis: List Expression Integer),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty16}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty16}{ugxProblemNLDEQClosedPagePatch16}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{nsol := solve(dsol = n, h, y)\free{dsol n1 h }\bound{nsol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch17}
-\begin{paste}{ugxProblemNLDEQClosedPageFull17}{ugxProblemNLDEQClosedPageEmpty17}
-\pastebutton{ugxProblemNLDEQClosedPageFull17}{\hidepaste}
-\tab{5}\spadcommand{eval(sol, h y = nsol.particular)\free{sol h nsol }}
-\indentrel{3}\begin{verbatim}
-                 2
-         y log(y)  - 2x
-   (17)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-               2y
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty17}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty17}{ugxProblemNLDEQClosedPagePatch17}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{eval(sol, h y = nsol.particular)\free{sol h nsol }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch18}
-\begin{paste}{ugxProblemNLDEQClosedPageFull18}{ugxProblemNLDEQClosedPageEmpty18}
-\pastebutton{ugxProblemNLDEQClosedPageFull18}{\hidepaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (18)  y
-                                    Type: BasicOperator
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty18}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty18}{ugxProblemNLDEQClosedPagePatch18}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{y := operator 'y\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch19}
-\begin{paste}{ugxProblemNLDEQClosedPageFull19}{ugxProblemNLDEQClosedPageEmpty19}
-\pastebutton{ugxProblemNLDEQClosedPageFull19}{\hidepaste}
-\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
-\indentrel{3}\begin{verbatim}
-          ,            y(x)
-   (19)  y (x)= ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                y(x)log(y(x)) + x
-                      Type: Equation Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty19}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty19}{ugxProblemNLDEQClosedPagePatch19}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{deq := D(y x, x) = y(x) / (x + y(x) * log y x)\bound{deqi }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPagePatch20}
-\begin{paste}{ugxProblemNLDEQClosedPageFull20}{ugxProblemNLDEQClosedPageEmpty20}
-\pastebutton{ugxProblemNLDEQClosedPageFull20}{\hidepaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
-\indentrel{3}\begin{verbatim}
-                      2
-         y(x)log(y(x))  - 2x
-   (20)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                2y(x)
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemNLDEQClosedPageEmpty20}
-\begin{paste}{ugxProblemNLDEQClosedPageEmpty20}{ugxProblemNLDEQClosedPagePatch20}
-\pastebutton{ugxProblemNLDEQClosedPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{solve(deq, y, x)\free{deqi y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch1}
-\begin{paste}{ugxProblemSymRootAllPageFull1}{ugxProblemSymRootAllPageEmpty1}
-\pastebutton{ugxProblemSymRootAllPageFull1}{\hidepaste}
-\tab{5}\spadcommand{l := rootsOf(x**4+1,x)\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (1)  [%x0,%x0 %x1,- %x0,- %x0 %x1]
-                          Type: List Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty1}
-\begin{paste}{ugxProblemSymRootAllPageEmpty1}{ugxProblemSymRootAllPagePatch1}
-\pastebutton{ugxProblemSymRootAllPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{l := rootsOf(x**4+1,x)\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch2}
-\begin{paste}{ugxProblemSymRootAllPageFull2}{ugxProblemSymRootAllPageEmpty2}
-\pastebutton{ugxProblemSymRootAllPageFull2}{\hidepaste}
-\tab{5}\spadcommand{\%x0**5\free{l }}
-\indentrel{3}\begin{verbatim}
-   (2)  - %x0
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty2}
-\begin{paste}{ugxProblemSymRootAllPageEmpty2}{ugxProblemSymRootAllPagePatch2}
-\pastebutton{ugxProblemSymRootAllPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{\%x0**5\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch3}
-\begin{paste}{ugxProblemSymRootAllPageFull3}{ugxProblemSymRootAllPageEmpty3}
-\pastebutton{ugxProblemSymRootAllPageFull3}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial \%x0\free{l }}
-\indentrel{3}\begin{verbatim}
-           4
-   (3)  %x0  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty3}
-\begin{paste}{ugxProblemSymRootAllPageEmpty3}{ugxProblemSymRootAllPagePatch3}
-\pastebutton{ugxProblemSymRootAllPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial \%x0\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch4}
-\begin{paste}{ugxProblemSymRootAllPageFull4}{ugxProblemSymRootAllPageEmpty4}
-\pastebutton{ugxProblemSymRootAllPageFull4}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial \%x1\free{l }}
-\indentrel{3}\begin{verbatim}
-           2
-   (4)  %x1  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty4}
-\begin{paste}{ugxProblemSymRootAllPageEmpty4}{ugxProblemSymRootAllPagePatch4}
-\pastebutton{ugxProblemSymRootAllPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial \%x1\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch5}
-\begin{paste}{ugxProblemSymRootAllPageFull5}{ugxProblemSymRootAllPageEmpty5}
-\pastebutton{ugxProblemSymRootAllPageFull5}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial \%x2\free{l }}
-\indentrel{3}\begin{verbatim}
-   (5)  - %x2 + %%var
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty5}
-\begin{paste}{ugxProblemSymRootAllPageEmpty5}{ugxProblemSymRootAllPagePatch5}
-\pastebutton{ugxProblemSymRootAllPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial \%x2\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch6}
-\begin{paste}{ugxProblemSymRootAllPageFull6}{ugxProblemSymRootAllPageEmpty6}
-\pastebutton{ugxProblemSymRootAllPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x3 := last l\free{l }\bound{x3 }}
-\indentrel{3}\begin{verbatim}
-   (6)  - %x0 %x1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty6}
-\begin{paste}{ugxProblemSymRootAllPageEmpty6}{ugxProblemSymRootAllPagePatch6}
-\pastebutton{ugxProblemSymRootAllPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x3 := last l\free{l }\bound{x3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch7}
-\begin{paste}{ugxProblemSymRootAllPageFull7}{ugxProblemSymRootAllPageEmpty7}
-\pastebutton{ugxProblemSymRootAllPageFull7}{\hidepaste}
-\tab{5}\spadcommand{\%x0 + \%x1 + \%x2 + x3\free{x3 }}
-\indentrel{3}\begin{verbatim}
-   (7)  (- %x0 + 1)%x1 + %x0 + %x2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty7}
-\begin{paste}{ugxProblemSymRootAllPageEmpty7}{ugxProblemSymRootAllPagePatch7}
-\pastebutton{ugxProblemSymRootAllPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{\%x0 + \%x1 + \%x2 + x3\free{x3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch8}
-\begin{paste}{ugxProblemSymRootAllPageFull8}{ugxProblemSymRootAllPageEmpty8}
-\pastebutton{ugxProblemSymRootAllPageFull8}{\hidepaste}
-\tab{5}\spadcommand{\%x0 * \%x1 * \%x2 * x3\free{x3 }}
-\indentrel{3}\begin{verbatim}
-               2
-   (8)  %x2 %x0
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty8}
-\begin{paste}{ugxProblemSymRootAllPageEmpty8}{ugxProblemSymRootAllPagePatch8}
-\pastebutton{ugxProblemSymRootAllPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{\%x0 * \%x1 * \%x2 * x3\free{x3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch9}
-\begin{paste}{ugxProblemSymRootAllPageFull9}{ugxProblemSymRootAllPageEmpty9}
-\pastebutton{ugxProblemSymRootAllPageFull9}{\hidepaste}
-\tab{5}\spadcommand{zerosOf(y**4+1,y)\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (9)
-     ÚÄÄÄ¿      ÚÄÄÄ¿        ÚÄÄÄ¿        ÚÄÄÄ¿
-    \³- 1  + 1 \³- 1  - 1 - \³- 1  - 1 - \³- 1  + 1
-   [ÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ,ÄÄÄÄÄÄÄÄÄÄÄÄ]
-        ÚÄ¿        ÚÄ¿         ÚÄ¿          ÚÄ¿
-       \³2        \³2         \³2          \³2
-                          Type: List Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty9}
-\begin{paste}{ugxProblemSymRootAllPageEmpty9}{ugxProblemSymRootAllPagePatch9}
-\pastebutton{ugxProblemSymRootAllPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{zerosOf(y**4+1,y)\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPagePatch10}
-\begin{paste}{ugxProblemSymRootAllPageFull10}{ugxProblemSymRootAllPageEmpty10}
-\pastebutton{ugxProblemSymRootAllPageFull10}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial \%y1\free{z }}
-\indentrel{3}\begin{verbatim}
-              2
-   (10)  %%var  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootAllPageEmpty10}
-\begin{paste}{ugxProblemSymRootAllPageEmpty10}{ugxProblemSymRootAllPagePatch10}
-\pastebutton{ugxProblemSymRootAllPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial \%y1\free{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch1}
-\begin{paste}{ugxProblemSymRootOnePageFull1}{ugxProblemSymRootOnePageEmpty1}
-\pastebutton{ugxProblemSymRootOnePageFull1}{\hidepaste}
-\tab{5}\spadcommand{a := rootOf(a**4+1,a)\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (1)  a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty1}
-\begin{paste}{ugxProblemSymRootOnePageEmpty1}{ugxProblemSymRootOnePagePatch1}
-\pastebutton{ugxProblemSymRootOnePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a := rootOf(a**4+1,a)\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch2}
-\begin{paste}{ugxProblemSymRootOnePageFull2}{ugxProblemSymRootOnePageEmpty2}
-\pastebutton{ugxProblemSymRootOnePageFull2}{\hidepaste}
-\tab{5}\spadcommand{definingPolynomial a\free{a }}
-\indentrel{3}\begin{verbatim}
-         4
-   (2)  a  + 1
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty2}
-\begin{paste}{ugxProblemSymRootOnePageEmpty2}{ugxProblemSymRootOnePagePatch2}
-\pastebutton{ugxProblemSymRootOnePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{definingPolynomial a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch3}
-\begin{paste}{ugxProblemSymRootOnePageFull3}{ugxProblemSymRootOnePageEmpty3}
-\pastebutton{ugxProblemSymRootOnePageFull3}{\hidepaste}
-\tab{5}\spadcommand{b := rootOf(b**2-a-1,b)\free{a }\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (3)  b
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty3}
-\begin{paste}{ugxProblemSymRootOnePageEmpty3}{ugxProblemSymRootOnePagePatch3}
-\pastebutton{ugxProblemSymRootOnePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{b := rootOf(b**2-a-1,b)\free{a }\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch4}
-\begin{paste}{ugxProblemSymRootOnePageFull4}{ugxProblemSymRootOnePageEmpty4}
-\pastebutton{ugxProblemSymRootOnePageFull4}{\hidepaste}
-\tab{5}\spadcommand{a + b\free{a b }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (4)  b + a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty4}
-\begin{paste}{ugxProblemSymRootOnePageEmpty4}{ugxProblemSymRootOnePagePatch4}
-\pastebutton{ugxProblemSymRootOnePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{a + b\free{a b }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch5}
-\begin{paste}{ugxProblemSymRootOnePageFull5}{ugxProblemSymRootOnePageEmpty5}
-\pastebutton{ugxProblemSymRootOnePageFull5}{\hidepaste}
-\tab{5}\spadcommand{\% ** 5\free{c }}
-\indentrel{3}\begin{verbatim}
-            3      2                 3      2
-   (5)  (10a  + 11a  + 2a - 4)b + 15a  + 10a  + 4a - 10
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty5}
-\begin{paste}{ugxProblemSymRootOnePageEmpty5}{ugxProblemSymRootOnePagePatch5}
-\pastebutton{ugxProblemSymRootOnePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{\% ** 5\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch6}
-\begin{paste}{ugxProblemSymRootOnePageFull6}{ugxProblemSymRootOnePageEmpty6}
-\pastebutton{ugxProblemSymRootOnePageFull6}{\hidepaste}
-\tab{5}\spadcommand{rootOf(c**2+c+1,c)}
-\indentrel{3}\begin{verbatim}
-   (6)  c
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty6}
-\begin{paste}{ugxProblemSymRootOnePageEmpty6}{ugxProblemSymRootOnePagePatch6}
-\pastebutton{ugxProblemSymRootOnePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{rootOf(c**2+c+1,c)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch7}
-\begin{paste}{ugxProblemSymRootOnePageFull7}{ugxProblemSymRootOnePageEmpty7}
-\pastebutton{ugxProblemSymRootOnePageFull7}{\hidepaste}
-\tab{5}\spadcommand{zeroOf(d**2+d+1,d)}
-\indentrel{3}\begin{verbatim}
-         ÚÄÄÄ¿
-        \³- 3  - 1
-   (7)  ÄÄÄÄÄÄÄÄÄÄ
-             2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty7}
-\begin{paste}{ugxProblemSymRootOnePageEmpty7}{ugxProblemSymRootOnePagePatch7}
-\pastebutton{ugxProblemSymRootOnePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{zeroOf(d**2+d+1,d)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch8}
-\begin{paste}{ugxProblemSymRootOnePageFull8}{ugxProblemSymRootOnePageEmpty8}
-\pastebutton{ugxProblemSymRootOnePageFull8}{\hidepaste}
-\tab{5}\spadcommand{rootOf(e**5-2,e)}
-\indentrel{3}\begin{verbatim}
-   (8)  e
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty8}
-\begin{paste}{ugxProblemSymRootOnePageEmpty8}{ugxProblemSymRootOnePagePatch8}
-\pastebutton{ugxProblemSymRootOnePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{rootOf(e**5-2,e)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePagePatch9}
-\begin{paste}{ugxProblemSymRootOnePageFull9}{ugxProblemSymRootOnePageEmpty9}
-\pastebutton{ugxProblemSymRootOnePageFull9}{\hidepaste}
-\tab{5}\spadcommand{zeroOf(f**5-2,f)}
-\indentrel{3}\begin{verbatim}
-        5ÚÄ¿
-   (9)  \³2
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSymRootOnePageEmpty9}
-\begin{paste}{ugxProblemSymRootOnePageEmpty9}{ugxProblemSymRootOnePagePatch9}
-\pastebutton{ugxProblemSymRootOnePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{zeroOf(f**5-2,f)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch1}
-\begin{paste}{ugProblemIntegrationPageFull1}{ugProblemIntegrationPageEmpty1}
-\pastebutton{ugProblemIntegrationPageFull1}{\hidepaste}
-\tab{5}\spadcommand{integrate(cosh(a*x)*sinh(a*x), x)}
-\indentrel{3}\begin{verbatim}
-                 2            2
-        sinh(a x)  + cosh(a x)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   4a
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty1}
-\begin{paste}{ugProblemIntegrationPageEmpty1}{ugProblemIntegrationPagePatch1}
-\pastebutton{ugProblemIntegrationPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{integrate(cosh(a*x)*sinh(a*x), x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch2}
-\begin{paste}{ugProblemIntegrationPageFull2}{ugProblemIntegrationPageEmpty2}
-\pastebutton{ugProblemIntegrationPageFull2}{\hidepaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a * x + b)) / x, x)}
-\indentrel{3}\begin{verbatim}
-           x      ÚÄÄÄÄÄÄÄÄ¿
-         Ú¿  log(\³b + %E a  + 1)
-   (2)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%E
-        ÀÙ            %E
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty2}
-\begin{paste}{ugProblemIntegrationPageEmpty2}{ugProblemIntegrationPagePatch2}
-\pastebutton{ugProblemIntegrationPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{integrate(log(1 + sqrt(a * x + b)) / x, x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch3}
-\begin{paste}{ugProblemIntegrationPageFull3}{ugProblemIntegrationPageEmpty3}
-\pastebutton{ugProblemIntegrationPageFull3}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2 - 2),x)}
-\indentrel{3}\begin{verbatim}
-              2      ÚÄ¿
-            (x  + 2)\³2  - 4x
-        log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                   2
-                  x  - 2
-   (3)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                   ÚÄ¿
-                 2\³2
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty3}
-\begin{paste}{ugProblemIntegrationPageEmpty3}{ugProblemIntegrationPagePatch3}
-\pastebutton{ugProblemIntegrationPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2 - 2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch4}
-\begin{paste}{ugProblemIntegrationPageFull4}{ugProblemIntegrationPageEmpty4}
-\pastebutton{ugProblemIntegrationPageFull4}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + 2),x)}
-\indentrel{3}\begin{verbatim}
-               ÚÄ¿
-             x\³2
-        atan(ÄÄÄÄÄ)
-               2
-   (4)  ÄÄÄÄÄÄÄÄÄÄÄ
-             ÚÄ¿
-            \³2
-                    Type: Union(Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty4}
-\begin{paste}{ugProblemIntegrationPageEmpty4}{ugProblemIntegrationPagePatch4}
-\pastebutton{ugProblemIntegrationPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2 + 2),x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch5}
-\begin{paste}{ugProblemIntegrationPageFull5}{ugProblemIntegrationPageEmpty5}
-\pastebutton{ugProblemIntegrationPageFull5}{\hidepaste}
-\tab{5}\spadcommand{integrate(x**2 / (x**4 - a**2), x)}
-\indentrel{3}\begin{verbatim}
-   (5)
-          2      ÚÄ¿                   ÚÄ¿
-        (x  + a)\³a  - 2a x          x\³a
-    log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ) + 2atan(ÄÄÄÄÄ)
-                2                      a
-               x  - a
-   [ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-                       ÚÄ¿
-                     4\³a
-          2      ÚÄÄÄ¿                   ÚÄÄÄ¿
-        (x  - a)\³- a  + 2a x          x\³- a
-    log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ) - 2atan(ÄÄÄÄÄÄÄ)
-                 2                        a
-                x  + a
-    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
-                        ÚÄÄÄ¿
-                      4\³- a
-               Type: Union(List Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty5}
-\begin{paste}{ugProblemIntegrationPageEmpty5}{ugProblemIntegrationPagePatch5}
-\pastebutton{ugProblemIntegrationPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{integrate(x**2 / (x**4 - a**2), x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch6}
-\begin{paste}{ugProblemIntegrationPageFull6}{ugProblemIntegrationPageEmpty6}
-\pastebutton{ugProblemIntegrationPageFull6}{\hidepaste}
-\tab{5}\spadcommand{complexIntegrate(x**2 / (x**4 - a**2), x)}
-\indentrel{3}\begin{verbatim}
-   (6)
-                  ÚÄÄÄÄ¿                      ÚÄÄ¿
-        ÚÄÄ¿    x\³- 4a  + 2a     ÚÄÄÄÄ¿    x\³4a  + 2a
-       \³4a log(ÄÄÄÄÄÄÄÄÄÄÄÄÄ) - \³- 4a log(ÄÄÄÄÄÄÄÄÄÄÄ)
-                    ÚÄÄÄÄ¿                      ÚÄÄ¿
-                   \³- 4a                      \³4a
-     + 
-                    ÚÄÄ¿                    ÚÄÄÄÄ¿
-        ÚÄÄÄÄ¿    x\³4a  - 2a     ÚÄÄ¿    x\³- 4a  - 2a
-       \³- 4a log(ÄÄÄÄÄÄÄÄÄÄÄ) - \³4a log(ÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                      ÚÄÄ¿                    ÚÄÄÄÄ¿
-                     \³4a                    \³- 4a
-  /
-       ÚÄÄÄÄ¿ ÚÄÄ¿
-     2\³- 4a \³4a
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty6}
-\begin{paste}{ugProblemIntegrationPageEmpty6}{ugProblemIntegrationPagePatch6}
-\pastebutton{ugProblemIntegrationPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{complexIntegrate(x**2 / (x**4 - a**2), x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch7}
-\begin{paste}{ugProblemIntegrationPageFull7}{ugProblemIntegrationPageEmpty7}
-\pastebutton{ugProblemIntegrationPageFull7}{\hidepaste}
-\tab{5}\spadcommand{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
-\indentrel{3}\begin{verbatim}
-           x      ÚÄÄÄÄÄÄÄÄ¿
-         Ú¿  log(\³b + %E a  + 1)
-   (7)   ³   ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ d%E
-        ÀÙ            %E
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty7}
-\begin{paste}{ugProblemIntegrationPageEmpty7}{ugProblemIntegrationPagePatch7}
-\pastebutton{ugProblemIntegrationPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{complexIntegrate(log(1 + sqrt(a * x + b)) / x, x)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch8}
-\begin{paste}{ugProblemIntegrationPageFull8}{ugProblemIntegrationPageEmpty8}
-\pastebutton{ugProblemIntegrationPageFull8}{\hidepaste}
-\tab{5}\spadcommand{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
-\indentrel{3}\begin{verbatim}
-                                               1
-        2atan(8) + 2atan(5) + 2atan(2) + 2atan(Ä) - %pi
-                                               2
-   (8)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                               2
-Type: Union(f1: OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty8}
-\begin{paste}{ugProblemIntegrationPageEmpty8}{ugProblemIntegrationPagePatch8}
-\pastebutton{ugProblemIntegrationPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{integrate((x**4 - 3*x**2 + 6)/(x**6-5*x**4+5*x**2+4), x = 1..2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch9}
-\begin{paste}{ugProblemIntegrationPageFull9}{ugProblemIntegrationPageEmpty9}
-\pastebutton{ugProblemIntegrationPageFull9}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2)}
-\indentrel{3}\begin{verbatim}
-   (9)  potentialPole
-                   Type: Union(pole: potentialPole,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty9}
-\begin{paste}{ugProblemIntegrationPageEmpty9}{ugProblemIntegrationPagePatch9}
-\pastebutton{ugProblemIntegrationPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPagePatch10}
-\begin{paste}{ugProblemIntegrationPageFull10}{ugProblemIntegrationPageEmpty10}
-\pastebutton{ugProblemIntegrationPageFull10}{\hidepaste}
-\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2, "noPole")}
-\indentrel{3}\begin{verbatim}
-   (10)
-   [
-                    2       ÚÄ¿    3     2
-               (- 4a  - 4a)\³a  + a  + 6a  + a
-         - log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                          2
-                         a  - 2a + 1
-       + 
-                  2        ÚÄ¿    3      2
-             (- 8a  - 32a)\³a  + a  + 24a  + 16a
-         log(ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                          2
-                         a  - 8a + 16
-    /
-         ÚÄ¿
-       4\³a
-     ,
-             ÚÄÄÄ¿          ÚÄÄÄ¿
-           2\³- a          \³- a
-    - atan(ÄÄÄÄÄÄÄ) + atan(ÄÄÄÄÄÄ)
-              a               a
-    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ]
-                 ÚÄÄÄ¿
-                \³- a
-Type: Union(f2: List OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIntegrationPageEmpty10}
-\begin{paste}{ugProblemIntegrationPageEmpty10}{ugProblemIntegrationPagePatch10}
-\pastebutton{ugProblemIntegrationPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{integrate(1/(x**2-a), x = 1..2, "noPole")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorRatFunPagePatch1}
-\begin{paste}{ugProblemFactorRatFunPageFull1}{ugProblemFactorRatFunPageEmpty1}
-\pastebutton{ugProblemFactorRatFunPageFull1}{\hidepaste}
-\tab{5}\spadcommand{factorFraction((x**2-4)/(y**2-4))}
-\indentrel{3}\begin{verbatim}
-        (x - 2)(x + 2)
-   (1)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-        (y - 2)(y + 2)
-             Type: Fraction Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorRatFunPageEmpty1}
-\begin{paste}{ugProblemFactorRatFunPageEmpty1}{ugProblemFactorRatFunPagePatch1}
-\pastebutton{ugProblemFactorRatFunPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{factorFraction((x**2-4)/(y**2-4))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorRatFunPagePatch2}
-\begin{paste}{ugProblemFactorRatFunPageFull2}{ugProblemFactorRatFunPageEmpty2}
-\pastebutton{ugProblemFactorRatFunPageFull2}{\hidepaste}
-\tab{5}\spadcommand{map(factor,(x**2-4)/(y**2-4))}
-\indentrel{3}\begin{verbatim}
-        (x - 2)(x + 2)
-   (2)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-        (y - 2)(y + 2)
-             Type: Fraction Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorRatFunPageEmpty2}
-\begin{paste}{ugProblemFactorRatFunPageEmpty2}{ugProblemFactorRatFunPagePatch2}
-\pastebutton{ugProblemFactorRatFunPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{map(factor,(x**2-4)/(y**2-4))}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPagePatch1}
-\begin{paste}{ugProblemFactorIntRatPageFull1}{ugProblemFactorIntRatPageEmpty1}
-\pastebutton{ugProblemFactorIntRatPageFull1}{\hidepaste}
-\tab{5}\spadcommand{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12)\bound{v }}
-\indentrel{3}\begin{verbatim}
-   (1)
-         3 3       5       2        6    3        8      5
-     - 2x y  + (24x  + 24)y  + (- 4x  - x )y + 48x  + 12x
-   + 
-        3
-     48x  + 12
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPageEmpty1}
-\begin{paste}{ugProblemFactorIntRatPageEmpty1}{ugProblemFactorIntRatPagePatch1}
-\pastebutton{ugProblemFactorIntRatPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{v := (4*x**3+2*y**2+1)*(12*x**5-x**3*y+12)\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPagePatch2}
-\begin{paste}{ugProblemFactorIntRatPageFull2}{ugProblemFactorIntRatPageEmpty2}
-\pastebutton{ugProblemFactorIntRatPageFull2}{\hidepaste}
-\tab{5}\spadcommand{factor v\free{v }}
-\indentrel{3}\begin{verbatim}
-            3       5         2     3
-   (2)  - (x y - 12x  - 12)(2y  + 4x  + 1)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPageEmpty2}
-\begin{paste}{ugProblemFactorIntRatPageEmpty2}{ugProblemFactorIntRatPagePatch2}
-\pastebutton{ugProblemFactorIntRatPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{factor v\free{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPagePatch3}
-\begin{paste}{ugProblemFactorIntRatPageFull3}{ugProblemFactorIntRatPageEmpty3}
-\pastebutton{ugProblemFactorIntRatPageFull3}{\hidepaste}
-\tab{5}\spadcommand{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12)\bound{w }}
-\indentrel{3}\begin{verbatim}
-           8     7     6   35  5   95  3     2
-   (3)  48x  + 8x  - 2x  + ÄÄ x  + ÄÄ x  + 8x  + 12
-                            3       2
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPageEmpty3}
-\begin{paste}{ugProblemFactorIntRatPageEmpty3}{ugProblemFactorIntRatPagePatch3}
-\pastebutton{ugProblemFactorIntRatPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{w := (4*x**3+(2/3)*x**2+1)*(12*x**5-(1/2)*x**3+12)\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPagePatch4}
-\begin{paste}{ugProblemFactorIntRatPageFull4}{ugProblemFactorIntRatPageEmpty4}
-\pastebutton{ugProblemFactorIntRatPageFull4}{\hidepaste}
-\tab{5}\spadcommand{factor w\free{w }}
-\indentrel{3}\begin{verbatim}
-            3   1  2   1   5    1  3
-   (4)  48(x  + Ä x  + Ä)(x  - ÄÄ x  + 1)
-                6      4       24
-             Type: Factored Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemFactorIntRatPageEmpty4}
-\begin{paste}{ugProblemFactorIntRatPageEmpty4}{ugProblemFactorIntRatPagePatch4}
-\pastebutton{ugProblemFactorIntRatPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factor w\free{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch1}
-\begin{paste}{ugxProblemFinitePrimePageFull1}{ugxProblemFinitePrimePageEmpty1}
-\pastebutton{ugxProblemFinitePrimePageFull1}{\hidepaste}
-\tab{5}\spadcommand{(a,b) : IntegerMod 12\bound{abdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty1}
-\begin{paste}{ugxProblemFinitePrimePageEmpty1}{ugxProblemFinitePrimePagePatch1}
-\pastebutton{ugxProblemFinitePrimePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(a,b) : IntegerMod 12\bound{abdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch2}
-\begin{paste}{ugxProblemFinitePrimePageFull2}{ugxProblemFinitePrimePageEmpty2}
-\pastebutton{ugxProblemFinitePrimePageFull2}{\hidepaste}
-\tab{5}\spadcommand{(a, b) := (16, 7)\free{abdec }\bound{a b }}
-\indentrel{3}\begin{verbatim}
-   (2)  7
-                                    Type: IntegerMod 12
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty2}
-\begin{paste}{ugxProblemFinitePrimePageEmpty2}{ugxProblemFinitePrimePagePatch2}
-\pastebutton{ugxProblemFinitePrimePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{(a, b) := (16, 7)\free{abdec }\bound{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch3}
-\begin{paste}{ugxProblemFinitePrimePageFull3}{ugxProblemFinitePrimePageEmpty3}
-\pastebutton{ugxProblemFinitePrimePageFull3}{\hidepaste}
-\tab{5}\spadcommand{[a - b, a * b]\free{a b }}
-\indentrel{3}\begin{verbatim}
-   (3)  [9,4]
-                               Type: List IntegerMod 12
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty3}
-\begin{paste}{ugxProblemFinitePrimePageEmpty3}{ugxProblemFinitePrimePagePatch3}
-\pastebutton{ugxProblemFinitePrimePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{[a - b, a * b]\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch4}
-\begin{paste}{ugxProblemFinitePrimePageFull4}{ugxProblemFinitePrimePageEmpty4}
-\pastebutton{ugxProblemFinitePrimePageFull4}{\hidepaste}
-\tab{5}\spadcommand{a / b\free{a b }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty4}
-\begin{paste}{ugxProblemFinitePrimePageEmpty4}{ugxProblemFinitePrimePagePatch4}
-\pastebutton{ugxProblemFinitePrimePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{a / b\free{a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch5}
-\begin{paste}{ugxProblemFinitePrimePageFull5}{ugxProblemFinitePrimePageEmpty5}
-\pastebutton{ugxProblemFinitePrimePageFull5}{\hidepaste}
-\tab{5}\spadcommand{recip a\free{a }}
-\indentrel{3}\begin{verbatim}
-   (4)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty5}
-\begin{paste}{ugxProblemFinitePrimePageEmpty5}{ugxProblemFinitePrimePagePatch5}
-\pastebutton{ugxProblemFinitePrimePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{recip a\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch6}
-\begin{paste}{ugxProblemFinitePrimePageFull6}{ugxProblemFinitePrimePageEmpty6}
-\pastebutton{ugxProblemFinitePrimePageFull6}{\hidepaste}
-\tab{5}\spadcommand{recip b\free{b }}
-\indentrel{3}\begin{verbatim}
-   (5)  7
-                         Type: Union(IntegerMod 12,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty6}
-\begin{paste}{ugxProblemFinitePrimePageEmpty6}{ugxProblemFinitePrimePagePatch6}
-\pastebutton{ugxProblemFinitePrimePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{recip b\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch7}
-\begin{paste}{ugxProblemFinitePrimePageFull7}{ugxProblemFinitePrimePageEmpty7}
-\pastebutton{ugxProblemFinitePrimePageFull7}{\hidepaste}
-\tab{5}\spadcommand{c : PrimeField 11 := 8\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (6)  8
-                                    Type: PrimeField 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty7}
-\begin{paste}{ugxProblemFinitePrimePageEmpty7}{ugxProblemFinitePrimePagePatch7}
-\pastebutton{ugxProblemFinitePrimePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{c : PrimeField 11 := 8\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch8}
-\begin{paste}{ugxProblemFinitePrimePageFull8}{ugxProblemFinitePrimePageEmpty8}
-\pastebutton{ugxProblemFinitePrimePageFull8}{\hidepaste}
-\tab{5}\spadcommand{inv c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (7)  7
-                                    Type: PrimeField 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty8}
-\begin{paste}{ugxProblemFinitePrimePageEmpty8}{ugxProblemFinitePrimePagePatch8}
-\pastebutton{ugxProblemFinitePrimePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{inv c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch9}
-\begin{paste}{ugxProblemFinitePrimePageFull9}{ugxProblemFinitePrimePageEmpty9}
-\pastebutton{ugxProblemFinitePrimePageFull9}{\hidepaste}
-\tab{5}\spadcommand{9/c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (8)  8
-                                    Type: PrimeField 11
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty9}
-\begin{paste}{ugxProblemFinitePrimePageEmpty9}{ugxProblemFinitePrimePagePatch9}
-\pastebutton{ugxProblemFinitePrimePageEmpty9}{\showpaste}
-\tab{5}\spadcommand{9/c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch10}
-\begin{paste}{ugxProblemFinitePrimePageFull10}{ugxProblemFinitePrimePageEmpty10}
-\pastebutton{ugxProblemFinitePrimePageFull10}{\hidepaste}
-\tab{5}\spadcommand{GF101 := PF 101\bound{GF101 }}
-\indentrel{3}\begin{verbatim}
-   (9)  PrimeField 101
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty10}
-\begin{paste}{ugxProblemFinitePrimePageEmpty10}{ugxProblemFinitePrimePagePatch10}
-\pastebutton{ugxProblemFinitePrimePageEmpty10}{\showpaste}
-\tab{5}\spadcommand{GF101 := PF 101\bound{GF101 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch11}
-\begin{paste}{ugxProblemFinitePrimePageFull11}{ugxProblemFinitePrimePageEmpty11}
-\pastebutton{ugxProblemFinitePrimePageFull11}{\hidepaste}
-\tab{5}\spadcommand{x := random()$GF101\bound{x }\free{GF101 }}
-\indentrel{3}\begin{verbatim}
-   (10)  78
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty11}
-\begin{paste}{ugxProblemFinitePrimePageEmpty11}{ugxProblemFinitePrimePagePatch11}
-\pastebutton{ugxProblemFinitePrimePageEmpty11}{\showpaste}
-\tab{5}\spadcommand{x := random()$GF101\bound{x }\free{GF101 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch12}
-\begin{paste}{ugxProblemFinitePrimePageFull12}{ugxProblemFinitePrimePageEmpty12}
-\pastebutton{ugxProblemFinitePrimePageFull12}{\hidepaste}
-\tab{5}\spadcommand{y : GF101 := 37\bound{y }\free{GF101 }}
-\indentrel{3}\begin{verbatim}
-   (11)  37
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty12}
-\begin{paste}{ugxProblemFinitePrimePageEmpty12}{ugxProblemFinitePrimePagePatch12}
-\pastebutton{ugxProblemFinitePrimePageEmpty12}{\showpaste}
-\tab{5}\spadcommand{y : GF101 := 37\bound{y }\free{GF101 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch13}
-\begin{paste}{ugxProblemFinitePrimePageFull13}{ugxProblemFinitePrimePageEmpty13}
-\pastebutton{ugxProblemFinitePrimePageFull13}{\hidepaste}
-\tab{5}\spadcommand{z := x/y\bound{z }\free{x y }}
-\indentrel{3}\begin{verbatim}
-   (12)  84
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty13}
-\begin{paste}{ugxProblemFinitePrimePageEmpty13}{ugxProblemFinitePrimePagePatch13}
-\pastebutton{ugxProblemFinitePrimePageEmpty13}{\showpaste}
-\tab{5}\spadcommand{z := x/y\bound{z }\free{x y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch14}
-\begin{paste}{ugxProblemFinitePrimePageFull14}{ugxProblemFinitePrimePageEmpty14}
-\pastebutton{ugxProblemFinitePrimePageFull14}{\hidepaste}
-\tab{5}\spadcommand{z * y - x\free{x y z }}
-\indentrel{3}\begin{verbatim}
-   (13)  0
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty14}
-\begin{paste}{ugxProblemFinitePrimePageEmpty14}{ugxProblemFinitePrimePagePatch14}
-\pastebutton{ugxProblemFinitePrimePageEmpty14}{\showpaste}
-\tab{5}\spadcommand{z * y - x\free{x y z }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch15}
-\begin{paste}{ugxProblemFinitePrimePageFull15}{ugxProblemFinitePrimePageEmpty15}
-\pastebutton{ugxProblemFinitePrimePageFull15}{\hidepaste}
-\tab{5}\spadcommand{pe := primitiveElement()$GF101\bound{pe }\free{GF101 }}
-\indentrel{3}\begin{verbatim}
-   (14)  2
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty15}
-\begin{paste}{ugxProblemFinitePrimePageEmpty15}{ugxProblemFinitePrimePagePatch15}
-\pastebutton{ugxProblemFinitePrimePageEmpty15}{\showpaste}
-\tab{5}\spadcommand{pe := primitiveElement()$GF101\bound{pe }\free{GF101 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch16}
-\begin{paste}{ugxProblemFinitePrimePageFull16}{ugxProblemFinitePrimePageEmpty16}
-\pastebutton{ugxProblemFinitePrimePageFull16}{\hidepaste}
-\tab{5}\spadcommand{[pe**i for i in 0..99]\free{pe }}
-\indentrel{3}\begin{verbatim}
-   (15)
-   [1, 2, 4, 8, 16, 32, 64, 27, 54, 7, 14, 28, 56, 11,
-    22, 44, 88, 75, 49, 98, 95, 89, 77, 53, 5, 10, 20,
-    40, 80, 59, 17, 34, 68, 35, 70, 39, 78, 55, 9, 18,
-    36, 72, 43, 86, 71, 41, 82, 63, 25, 50, 100, 99, 97,
-    93, 85, 69, 37, 74, 47, 94, 87, 73, 45, 90, 79, 57,
-    13, 26, 52, 3, 6, 12, 24, 48, 96, 91, 81, 61, 21, 42,
-    84, 67, 33, 66, 31, 62, 23, 46, 92, 83, 65, 29, 58,
-    15, 30, 60, 19, 38, 76, 51]
-                              Type: List PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty16}
-\begin{paste}{ugxProblemFinitePrimePageEmpty16}{ugxProblemFinitePrimePagePatch16}
-\pastebutton{ugxProblemFinitePrimePageEmpty16}{\showpaste}
-\tab{5}\spadcommand{[pe**i for i in 0..99]\free{pe }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch17}
-\begin{paste}{ugxProblemFinitePrimePageFull17}{ugxProblemFinitePrimePageEmpty17}
-\pastebutton{ugxProblemFinitePrimePageFull17}{\hidepaste}
-\tab{5}\spadcommand{ex := discreteLog(y)\bound{ex }\free{y }}
-\indentrel{3}\begin{verbatim}
-   (16)  56
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty17}
-\begin{paste}{ugxProblemFinitePrimePageEmpty17}{ugxProblemFinitePrimePagePatch17}
-\pastebutton{ugxProblemFinitePrimePageEmpty17}{\showpaste}
-\tab{5}\spadcommand{ex := discreteLog(y)\bound{ex }\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch18}
-\begin{paste}{ugxProblemFinitePrimePageFull18}{ugxProblemFinitePrimePageEmpty18}
-\pastebutton{ugxProblemFinitePrimePageFull18}{\hidepaste}
-\tab{5}\spadcommand{pe ** ex\free{ex pe }}
-\indentrel{3}\begin{verbatim}
-   (17)  37
-                                   Type: PrimeField 101
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty18}
-\begin{paste}{ugxProblemFinitePrimePageEmpty18}{ugxProblemFinitePrimePagePatch18}
-\pastebutton{ugxProblemFinitePrimePageEmpty18}{\showpaste}
-\tab{5}\spadcommand{pe ** ex\free{ex pe }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch19}
-\begin{paste}{ugxProblemFinitePrimePageFull19}{ugxProblemFinitePrimePageEmpty19}
-\pastebutton{ugxProblemFinitePrimePageFull19}{\hidepaste}
-\tab{5}\spadcommand{order y\free{y }}
-\indentrel{3}\begin{verbatim}
-   (18)  25
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty19}
-\begin{paste}{ugxProblemFinitePrimePageEmpty19}{ugxProblemFinitePrimePagePatch19}
-\pastebutton{ugxProblemFinitePrimePageEmpty19}{\showpaste}
-\tab{5}\spadcommand{order y\free{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePagePatch20}
-\begin{paste}{ugxProblemFinitePrimePageFull20}{ugxProblemFinitePrimePageEmpty20}
-\pastebutton{ugxProblemFinitePrimePageFull20}{\hidepaste}
-\tab{5}\spadcommand{order pe\free{pe }}
-\indentrel{3}\begin{verbatim}
-   (19)  100
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFinitePrimePageEmpty20}
-\begin{paste}{ugxProblemFinitePrimePageEmpty20}{ugxProblemFinitePrimePagePatch20}
-\pastebutton{ugxProblemFinitePrimePageEmpty20}{\showpaste}
-\tab{5}\spadcommand{order pe\free{pe }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch1}
-\begin{paste}{ugxProblemFiniteCyclicPageFull1}{ugxProblemFiniteCyclicPageEmpty1}
-\pastebutton{ugxProblemFiniteCyclicPageFull1}{\hidepaste}
-\tab{5}\spadcommand{GF81 := FFCG(3,4);\bound{GF81 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty1}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty1}{ugxProblemFiniteCyclicPagePatch1}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{GF81 := FFCG(3,4);\bound{GF81 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch2}
-\begin{paste}{ugxProblemFiniteCyclicPageFull2}{ugxProblemFiniteCyclicPageEmpty2}
-\pastebutton{ugxProblemFiniteCyclicPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a := primitiveElement()$GF81\bound{a }\free{GF81 }}
-\indentrel{3}\begin{verbatim}
-           1
-   (2)  %BF
-                      Type: FiniteFieldCyclicGroup(3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty2}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty2}{ugxProblemFiniteCyclicPagePatch2}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a := primitiveElement()$GF81\bound{a }\free{GF81 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch3}
-\begin{paste}{ugxProblemFiniteCyclicPageFull3}{ugxProblemFiniteCyclicPageEmpty3}
-\pastebutton{ugxProblemFiniteCyclicPageFull3}{\hidepaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\indentrel{3}\begin{verbatim}
-           72
-   (3)  %BF
-                      Type: FiniteFieldCyclicGroup(3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty3}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty3}{ugxProblemFiniteCyclicPagePatch3}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch4}
-\begin{paste}{ugxProblemFiniteCyclicPageFull4}{ugxProblemFiniteCyclicPageEmpty4}
-\pastebutton{ugxProblemFiniteCyclicPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b\free{b }}
-\indentrel{3}\begin{verbatim}
-           72
-   (4)  %BF
-                      Type: FiniteFieldCyclicGroup(3,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty4}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty4}{ugxProblemFiniteCyclicPagePatch4}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch5}
-\begin{paste}{ugxProblemFiniteCyclicPageFull5}{ugxProblemFiniteCyclicPageEmpty5}
-\pastebutton{ugxProblemFiniteCyclicPageFull5}{\hidepaste}
-\tab{5}\spadcommand{discreteLog b\free{b }}
-\indentrel{3}\begin{verbatim}
-   (5)  72
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty5}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty5}{ugxProblemFiniteCyclicPagePatch5}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{discreteLog b\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch6}
-\begin{paste}{ugxProblemFiniteCyclicPageFull6}{ugxProblemFiniteCyclicPageEmpty6}
-\pastebutton{ugxProblemFiniteCyclicPageFull6}{\hidepaste}
-\tab{5}\spadcommand{GF9 := FF(3,2);\bound{GF9 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty6}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty6}{ugxProblemFiniteCyclicPagePatch6}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{GF9 := FF(3,2);\bound{GF9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch7}
-\begin{paste}{ugxProblemFiniteCyclicPageFull7}{ugxProblemFiniteCyclicPageEmpty7}
-\pastebutton{ugxProblemFiniteCyclicPageFull7}{\hidepaste}
-\tab{5}\spadcommand{GF729 := FFCGX(GF9,3);\bound{GF729 }\free{GF9 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty7}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty7}{ugxProblemFiniteCyclicPagePatch7}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{GF729 := FFCGX(GF9,3);\bound{GF729 }\free{GF9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch8}
-\begin{paste}{ugxProblemFiniteCyclicPageFull8}{ugxProblemFiniteCyclicPageEmpty8}
-\pastebutton{ugxProblemFiniteCyclicPageFull8}{\hidepaste}
-\tab{5}\spadcommand{r := (random()$GF729) ** 20\free{GF729 }\bound{r }}
-\indentrel{3}\begin{verbatim}
-           68
-   (8)  %CN
-Type: FiniteFieldCyclicGroupExtension(FiniteField(3,2),3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty8}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty8}{ugxProblemFiniteCyclicPagePatch8}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{r := (random()$GF729) ** 20\free{GF729 }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch9}
-\begin{paste}{ugxProblemFiniteCyclicPageFull9}{ugxProblemFiniteCyclicPageEmpty9}
-\pastebutton{ugxProblemFiniteCyclicPageFull9}{\hidepaste}
-\tab{5}\spadcommand{trace(r)\free{r }}
-\indentrel{3}\begin{verbatim}
-   (9)  2
-                                 Type: FiniteField(3,2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty9}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty9}{ugxProblemFiniteCyclicPagePatch9}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{trace(r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch10}
-\begin{paste}{ugxProblemFiniteCyclicPageFull10}{ugxProblemFiniteCyclicPageEmpty10}
-\pastebutton{ugxProblemFiniteCyclicPageFull10}{\hidepaste}
-\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty10}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty10}{ugxProblemFiniteCyclicPagePatch10}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch11}
-\begin{paste}{ugxProblemFiniteCyclicPageFull11}{ugxProblemFiniteCyclicPageEmpty11}
-\pastebutton{ugxProblemFiniteCyclicPageFull11}{\hidepaste}
-\tab{5}\spadcommand{f := createPrimitivePoly(4)$FFPOLY(GF3)\bound{f }\free{GF3 }}
-\indentrel{3}\begin{verbatim}
-          4
-   (11)  ?  + ? + 2
-          Type: SparseUnivariatePolynomial PrimeField 3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty11}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty11}{ugxProblemFiniteCyclicPagePatch11}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{f := createPrimitivePoly(4)$FFPOLY(GF3)\bound{f }\free{GF3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch12}
-\begin{paste}{ugxProblemFiniteCyclicPageFull12}{ugxProblemFiniteCyclicPageEmpty12}
-\pastebutton{ugxProblemFiniteCyclicPageFull12}{\hidepaste}
-\tab{5}\spadcommand{GF81 := FFCGP(GF3,f);\bound{GF81x }\free{f GF3 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty12}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty12}{ugxProblemFiniteCyclicPagePatch12}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{GF81 := FFCGP(GF3,f);\bound{GF81x }\free{f GF3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPagePatch13}
-\begin{paste}{ugxProblemFiniteCyclicPageFull13}{ugxProblemFiniteCyclicPageEmpty13}
-\pastebutton{ugxProblemFiniteCyclicPageFull13}{\hidepaste}
-\tab{5}\spadcommand{random()$GF81\free{GF81x }}
-\indentrel{3}\begin{verbatim}
-            8
-   (13)  %BF
-Type: FiniteFieldCyclicGroupExtensionByPolynomial(PrimeField 3,?**4+?+2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteCyclicPageEmpty13}
-\begin{paste}{ugxProblemFiniteCyclicPageEmpty13}{ugxProblemFiniteCyclicPagePatch13}
-\pastebutton{ugxProblemFiniteCyclicPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{random()$GF81\free{GF81x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch1}
-\begin{paste}{ugxProblemSeriesCreatePageFull1}{ugxProblemSeriesCreatePageEmpty1}
-\pastebutton{ugxProblemSeriesCreatePageFull1}{\hidepaste}
-\tab{5}\spadcommand{x := series 'x\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (1)  x
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty1}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty1}{ugxProblemSeriesCreatePagePatch1}
-\pastebutton{ugxProblemSeriesCreatePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{x := series 'x\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch2}
-\begin{paste}{ugxProblemSeriesCreatePageFull2}{ugxProblemSeriesCreatePageEmpty2}
-\pastebutton{ugxProblemSeriesCreatePageFull2}{\hidepaste}
-\tab{5}\spadcommand{1/(1 - x - x**2)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (2)
-               2     3     4     5      6      7      8
-     1 + x + 2x  + 3x  + 5x  + 8x  + 13x  + 21x  + 34x
-   + 
-        9      10      11
-     55x  + 89x   + O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty2}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty2}{ugxProblemSeriesCreatePagePatch2}
-\pastebutton{ugxProblemSeriesCreatePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{1/(1 - x - x**2)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch3}
-\begin{paste}{ugxProblemSeriesCreatePageFull3}{ugxProblemSeriesCreatePageEmpty3}
-\pastebutton{ugxProblemSeriesCreatePageFull3}{\hidepaste}
-\tab{5}\spadcommand{sin(x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (3)
-         1  3    1   5     1   7      1    9
-     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-         6      120      5040      362880
-   + 
-           1     11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty3}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty3}{ugxProblemSeriesCreatePagePatch3}
-\pastebutton{ugxProblemSeriesCreatePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{sin(x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch4}
-\begin{paste}{ugxProblemSeriesCreatePageFull4}{ugxProblemSeriesCreatePageEmpty4}
-\pastebutton{ugxProblemSeriesCreatePageFull4}{\hidepaste}
-\tab{5}\spadcommand{sin(1 + x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (4)
-                        sin(1)  2   cos(1)  3   sin(1)  4
-     sin(1) + cos(1)x - ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
-                           2           6          24
-   + 
-     cos(1)  5   sin(1)  6   cos(1)  7   sin(1)  8
-     ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
-       120         720        5040        40320
-   + 
-     cos(1)  9    sin(1)  10      11
-     ÄÄÄÄÄÄ x  - ÄÄÄÄÄÄÄ x   + O(x  )
-     362880      3628800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty4}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty4}{ugxProblemSeriesCreatePagePatch4}
-\pastebutton{ugxProblemSeriesCreatePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sin(1 + x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch5}
-\begin{paste}{ugxProblemSeriesCreatePageFull5}{ugxProblemSeriesCreatePageEmpty5}
-\pastebutton{ugxProblemSeriesCreatePageFull5}{\hidepaste}
-\tab{5}\spadcommand{sin(a * x)\free{x }}
-\indentrel{3}\begin{verbatim}
-   (5)
-            3        5        7          9
-           a   3    a   5    a    7     a     9
-     a x - ÄÄ x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-            6      120      5040      362880
-   + 
-           11
-          a      11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty5}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty5}{ugxProblemSeriesCreatePagePatch5}
-\pastebutton{ugxProblemSeriesCreatePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{sin(a * x)\free{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch6}
-\begin{paste}{ugxProblemSeriesCreatePageFull6}{ugxProblemSeriesCreatePageEmpty6}
-\pastebutton{ugxProblemSeriesCreatePageFull6}{\hidepaste}
-\tab{5}\spadcommand{series(1/log(y),y = 1)}
-\indentrel{3}\begin{verbatim}
-   (6)
-            - 1   1    1            1        2
-     (y - 1)    + Ä - ÄÄ (y - 1) + ÄÄ (y - 1)
-                  2   12           24
-   + 
-        19        3    3         4    863         5
-     - ÄÄÄ (y - 1)  + ÄÄÄ (y - 1)  - ÄÄÄÄÄ (y - 1)
-       720            160            60480
-   + 
-      275         6    33953         7     8183         8
-     ÄÄÄÄÄ (y - 1)  - ÄÄÄÄÄÄÄ (y - 1)  + ÄÄÄÄÄÄÄ (y - 1)
-     24192            3628800            1036800
-   + 
-        3250433         9            10
-     - ÄÄÄÄÄÄÄÄÄ (y - 1)  + O((y - 1)  )
-       479001600
-  Type: UnivariatePuiseuxSeries(Expression Integer,y,1)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty6}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty6}{ugxProblemSeriesCreatePagePatch6}
-\pastebutton{ugxProblemSeriesCreatePageEmpty6}{\showpaste}
-\tab{5}\spadcommand{series(1/log(y),y = 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch7}
-\begin{paste}{ugxProblemSeriesCreatePageFull7}{ugxProblemSeriesCreatePageEmpty7}
-\pastebutton{ugxProblemSeriesCreatePageFull7}{\hidepaste}
-\tab{5}\spadcommand{y : UTS(FLOAT,'z,0) := exp(z)\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (7)
-                    2                            3
-     1.0 + z + 0.5 z  + 0.1666666666 6666666667 z
-   + 
-                                4
-     0.0416666666 6666666666 7 z
-   + 
-                                 5
-     0.0083333333 3333333333 34 z
-   + 
-                                 6
-     0.0013888888 8888888888 89 z
-   + 
-                                 7
-     0.0001984126 9841269841 27 z
-   + 
-                                   8
-     0.0000248015 8730158730 1587 z
-   + 
-                                    9
-     0.0000027557 3192239858 90653 z
-   + 
-                                   10      11
-     0.2755731922 3985890653 E -6 z   + O(z  )
-              Type: UnivariateTaylorSeries(Float,z,0.0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty7}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty7}{ugxProblemSeriesCreatePagePatch7}
-\pastebutton{ugxProblemSeriesCreatePageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y : UTS(FLOAT,'z,0) := exp(z)\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePagePatch8}
-\begin{paste}{ugxProblemSeriesCreatePageFull8}{ugxProblemSeriesCreatePageEmpty8}
-\pastebutton{ugxProblemSeriesCreatePageFull8}{\hidepaste}
-\tab{5}\spadcommand{series(1/factorial(n),n,w = 0)}
-\indentrel{3}\begin{verbatim}
-   (8)
-             1  2   1  3    1  4    1   5    1   6
-     1 + w + Ä w  + Ä w  + ÄÄ w  + ÄÄÄ w  + ÄÄÄ w
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ w  + ÄÄÄÄÄ w  + ÄÄÄÄÄÄ w  + ÄÄÄÄÄÄÄ w   + O(w  )
-   5040      40320      362880      3628800
-  Type: UnivariatePuiseuxSeries(Expression Integer,w,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesCreatePageEmpty8}
-\begin{paste}{ugxProblemSeriesCreatePageEmpty8}{ugxProblemSeriesCreatePagePatch8}
-\pastebutton{ugxProblemSeriesCreatePageEmpty8}{\showpaste}
-\tab{5}\spadcommand{series(1/factorial(n),n,w = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch1}
-\begin{paste}{ugxProblemFiniteNormalPageFull1}{ugxProblemFiniteNormalPageEmpty1}
-\pastebutton{ugxProblemFiniteNormalPageFull1}{\hidepaste}
-\tab{5}\spadcommand{K := FFNB(3,8)\bound{K }}
-\indentrel{3}\begin{verbatim}
-   (1)  FiniteFieldNormalBasis(3,8)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty1}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty1}{ugxProblemFiniteNormalPagePatch1}
-\pastebutton{ugxProblemFiniteNormalPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{K := FFNB(3,8)\bound{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch2}
-\begin{paste}{ugxProblemFiniteNormalPageFull2}{ugxProblemFiniteNormalPageEmpty2}
-\pastebutton{ugxProblemFiniteNormalPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a := normalElement()$K\bound{a }\free{K }}
-\indentrel{3}\begin{verbatim}
-   (2)  %CO
-                      Type: FiniteFieldNormalBasis(3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty2}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty2}{ugxProblemFiniteNormalPagePatch2}
-\pastebutton{ugxProblemFiniteNormalPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a := normalElement()$K\bound{a }\free{K }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch3}
-\begin{paste}{ugxProblemFiniteNormalPageFull3}{ugxProblemFiniteNormalPageEmpty3}
-\pastebutton{ugxProblemFiniteNormalPageFull3}{\hidepaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\indentrel{3}\begin{verbatim}
-             7       5
-            q       q       q
-   (3)  2%CO   + %CO   + %CO
-                      Type: FiniteFieldNormalBasis(3,8)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty3}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty3}{ugxProblemFiniteNormalPagePatch3}
-\pastebutton{ugxProblemFiniteNormalPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch4}
-\begin{paste}{ugxProblemFiniteNormalPageFull4}{ugxProblemFiniteNormalPageEmpty4}
-\pastebutton{ugxProblemFiniteNormalPageFull4}{\hidepaste}
-\tab{5}\spadcommand{GF9 := FFNB(3,2);\bound{GF9 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty4}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty4}{ugxProblemFiniteNormalPagePatch4}
-\pastebutton{ugxProblemFiniteNormalPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{GF9 := FFNB(3,2);\bound{GF9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch5}
-\begin{paste}{ugxProblemFiniteNormalPageFull5}{ugxProblemFiniteNormalPageEmpty5}
-\pastebutton{ugxProblemFiniteNormalPageFull5}{\hidepaste}
-\tab{5}\spadcommand{GF729 := FFNBX(GF9,3);\bound{GF729 }\free{GF9 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty5}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty5}{ugxProblemFiniteNormalPagePatch5}
-\pastebutton{ugxProblemFiniteNormalPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{GF729 := FFNBX(GF9,3);\bound{GF729 }\free{GF9 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch6}
-\begin{paste}{ugxProblemFiniteNormalPageFull6}{ugxProblemFiniteNormalPageEmpty6}
-\pastebutton{ugxProblemFiniteNormalPageFull6}{\hidepaste}
-\tab{5}\spadcommand{r := random()$GF729\bound{r }\free{GF729 }}
-\indentrel{3}\begin{verbatim}
-                 2
-            q   q
-   (6)  2%CP %CQ
-Type: FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty6}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty6}{ugxProblemFiniteNormalPagePatch6}
-\pastebutton{ugxProblemFiniteNormalPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{r := random()$GF729\bound{r }\free{GF729 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch7}
-\begin{paste}{ugxProblemFiniteNormalPageFull7}{ugxProblemFiniteNormalPageEmpty7}
-\pastebutton{ugxProblemFiniteNormalPageFull7}{\hidepaste}
-\tab{5}\spadcommand{r + r**3 + r**9 + r**27\free{r }}
-\indentrel{3}\begin{verbatim}
-                          2
-             q           q            q       q
-   (7)  (2%CP  + 2%CP)%CQ   + 2%CP %CQ  + 2%CP %CQ
-Type: FiniteFieldNormalBasisExtension(FiniteFieldNormalBasis(3,2),3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty7}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty7}{ugxProblemFiniteNormalPagePatch7}
-\pastebutton{ugxProblemFiniteNormalPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{r + r**3 + r**9 + r**27\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch8}
-\begin{paste}{ugxProblemFiniteNormalPageFull8}{ugxProblemFiniteNormalPageEmpty8}
-\pastebutton{ugxProblemFiniteNormalPageFull8}{\hidepaste}
-\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty8}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty8}{ugxProblemFiniteNormalPagePatch8}
-\pastebutton{ugxProblemFiniteNormalPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{GF3 := PrimeField 3;\bound{GF3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch9}
-\begin{paste}{ugxProblemFiniteNormalPageFull9}{ugxProblemFiniteNormalPageEmpty9}
-\pastebutton{ugxProblemFiniteNormalPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f := createNormalPoly(4)$FFPOLY(GF3)\free{GF3 }\bound{f }}
-\indentrel{3}\begin{verbatim}
-         4     3
-   (9)  ?  + 2?  + 2
-          Type: SparseUnivariatePolynomial PrimeField 3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty9}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty9}{ugxProblemFiniteNormalPagePatch9}
-\pastebutton{ugxProblemFiniteNormalPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f := createNormalPoly(4)$FFPOLY(GF3)\free{GF3 }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch10}
-\begin{paste}{ugxProblemFiniteNormalPageFull10}{ugxProblemFiniteNormalPageEmpty10}
-\pastebutton{ugxProblemFiniteNormalPageFull10}{\hidepaste}
-\tab{5}\spadcommand{GF81 := FFNBP(GF3,f);\bound{GF81 }\free{f GF3 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty10}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty10}{ugxProblemFiniteNormalPagePatch10}
-\pastebutton{ugxProblemFiniteNormalPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{GF81 := FFNBP(GF3,f);\bound{GF81 }\free{f GF3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch11}
-\begin{paste}{ugxProblemFiniteNormalPageFull11}{ugxProblemFiniteNormalPageEmpty11}
-\pastebutton{ugxProblemFiniteNormalPageFull11}{\hidepaste}
-\tab{5}\spadcommand{r := random()$GF81\free{GF81 }\bound{r1 }}
-\indentrel{3}\begin{verbatim}
-             3       2
-            q       q       q
-   (11)  %CR   + %CR   + %CR
-Type: FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty11}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty11}{ugxProblemFiniteNormalPagePatch11}
-\pastebutton{ugxProblemFiniteNormalPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{r := random()$GF81\free{GF81 }\bound{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch12}
-\begin{paste}{ugxProblemFiniteNormalPageFull12}{ugxProblemFiniteNormalPageEmpty12}
-\pastebutton{ugxProblemFiniteNormalPageFull12}{\hidepaste}
-\tab{5}\spadcommand{r * r**3 * r**9 * r**27\free{r1 }}
-\indentrel{3}\begin{verbatim}
-              3        2
-             q        q        q
-   (12)  2%CR   + 2%CR   + 2%CR  + 2%CR
-Type: FiniteFieldNormalBasisExtensionByPolynomial(PrimeField 3,?**4+2*?**3+2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty12}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty12}{ugxProblemFiniteNormalPagePatch12}
-\pastebutton{ugxProblemFiniteNormalPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{r * r**3 * r**9 * r**27\free{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPagePatch13}
-\begin{paste}{ugxProblemFiniteNormalPageFull13}{ugxProblemFiniteNormalPageEmpty13}
-\pastebutton{ugxProblemFiniteNormalPageFull13}{\hidepaste}
-\tab{5}\spadcommand{norm r\free{r1 }}
-\indentrel{3}\begin{verbatim}
-   (13)  2
-                                     Type: PrimeField 3
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteNormalPageEmpty13}
-\begin{paste}{ugxProblemFiniteNormalPageEmpty13}{ugxProblemFiniteNormalPagePatch13}
-\pastebutton{ugxProblemFiniteNormalPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{norm r\free{r1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch1}
-\begin{paste}{ugxProblemSeriesFormulaPageFull1}{ugxProblemSeriesFormulaPageEmpty1}
-\pastebutton{ugxProblemSeriesFormulaPageFull1}{\hidepaste}
-\tab{5}\spadcommand{series(n +-> 1/factorial(n),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (1)
-             1  2   1  3    1  4    1   5    1   6
-     1 + x + Ä x  + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄ x
-             2      6      24      120      720
-   + 
-     1   7     1    8      1    9      1     10      11
-   ÄÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x  + ÄÄÄÄÄÄÄ x   + O(x  )
-   5040      40320      362880      3628800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty1}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty1}{ugxProblemSeriesFormulaPagePatch1}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{series(n +-> 1/factorial(n),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch2}
-\begin{paste}{ugxProblemSeriesFormulaPageFull2}{ugxProblemSeriesFormulaPageEmpty2}
-\pastebutton{ugxProblemSeriesFormulaPageFull2}{\hidepaste}
-\tab{5}\spadcommand{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
-\indentrel{3}\begin{verbatim}
-   (2)
-               1        2   1        3   1        4
-     (x - 1) - Ä (x - 1)  + Ä (x - 1)  - Ä (x - 1)
-               2            3            4
-   + 
-     1        5   1        6   1        7   1        8
-     Ä (x - 1)  - Ä (x - 1)  + Ä (x - 1)  - Ä (x - 1)
-     5            6            7            8
-   + 
-   1        9    1        10    1        11            12
-   Ä (x - 1)  - ÄÄ (x - 1)   + ÄÄ (x - 1)   + O((x - 1)  )
-   9            10             11
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,1)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty2}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty2}{ugxProblemSeriesFormulaPagePatch2}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{series(n +-> (-1)**(n-1)/n,x = 1,1..)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch3}
-\begin{paste}{ugxProblemSeriesFormulaPageFull3}{ugxProblemSeriesFormulaPageEmpty3}
-\pastebutton{ugxProblemSeriesFormulaPageFull3}{\hidepaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
-\indentrel{3}\begin{verbatim}
-   (3)
-         1  3    1   5     1   7      1    9
-     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-         6      120      5040      362880
-   + 
-           1     11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty3}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty3}{ugxProblemSeriesFormulaPagePatch3}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((n-1)/2)/factorial(n),x = 0,1..,2)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch4}
-\begin{paste}{ugxProblemSeriesFormulaPageFull4}{ugxProblemSeriesFormulaPageEmpty4}
-\pastebutton{ugxProblemSeriesFormulaPageFull4}{\hidepaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
-\indentrel{3}\begin{verbatim}
-   (4)
-      1              5         7
-      Ä              Ä         Ä
-      3   1      1   3     1   3      1    3
-     x  - Ä x + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-          6     120      5040      362880
-   + 
-                 11
-                 ÄÄ
-           1      3      4
-     - ÄÄÄÄÄÄÄÄ x   + O(x )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty4}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty4}{ugxProblemSeriesFormulaPagePatch4}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{series(n +-> (-1)**((3*n-1)/2)/factorial(3*n),x = 0,1/3..,2/3)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch5}
-\begin{paste}{ugxProblemSeriesFormulaPageFull5}{ugxProblemSeriesFormulaPageEmpty5}
-\pastebutton{ugxProblemSeriesFormulaPageFull5}{\hidepaste}
-\tab{5}\spadcommand{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2)\bound{cscx }}
-\indentrel{3}\begin{verbatim}
-   (5)
-      - 1   1      7   3     31   5     127   7
-     x    + Ä x + ÄÄÄ x  + ÄÄÄÄÄ x  + ÄÄÄÄÄÄ x
-            6     360      15120      604800
-   + 
-        73    9      10
-     ÄÄÄÄÄÄÄ x  + O(x  )
-     3421440
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty5}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty5}{ugxProblemSeriesFormulaPagePatch5}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{cscx := series(n +-> (-1)**((n-1)/2) * 2 * (2**n-1) * bernoulli(numer(n+1)) / factorial(n+1), x=0, -1..,2)\bound{cscx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch6}
-\begin{paste}{ugxProblemSeriesFormulaPageFull6}{ugxProblemSeriesFormulaPageEmpty6}
-\pastebutton{ugxProblemSeriesFormulaPageFull6}{\hidepaste}
-\tab{5}\spadcommand{1/cscx\free{cscx }}
-\indentrel{3}\begin{verbatim}
-   (6)
-         1  3    1   5     1   7      1    9
-     x - Ä x  + ÄÄÄ x  - ÄÄÄÄ x  + ÄÄÄÄÄÄ x
-         6      120      5040      362880
-   + 
-           1     11      12
-     - ÄÄÄÄÄÄÄÄ x   + O(x  )
-       39916800
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty6}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty6}{ugxProblemSeriesFormulaPagePatch6}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{1/cscx\free{cscx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch7}
-\begin{paste}{ugxProblemSeriesFormulaPageFull7}{ugxProblemSeriesFormulaPageEmpty7}
-\pastebutton{ugxProblemSeriesFormulaPageFull7}{\hidepaste}
-\tab{5}\spadcommand{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2)\bound{asinx }}
-\indentrel{3}\begin{verbatim}
-   (7)
-       1  3    3  5    5   7    35   9    63   11      12
-   x + Ä x  + ÄÄ x  + ÄÄÄ x  + ÄÄÄÄ x  + ÄÄÄÄ x   + O(x  )
-       6      40      112      1152      2816
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty7}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty7}{ugxProblemSeriesFormulaPagePatch7}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{asinx := series(n +-> binomial(n-1,(n-1)/2)/(n*2**(n-1)),x=0,1..,2)\bound{asinx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPagePatch8}
-\begin{paste}{ugxProblemSeriesFormulaPageFull8}{ugxProblemSeriesFormulaPageEmpty8}
-\pastebutton{ugxProblemSeriesFormulaPageFull8}{\hidepaste}
-\tab{5}\spadcommand{sin(asinx)\free{asinx }}
-\indentrel{3}\begin{verbatim}
-               12
-   (8)  x + O(x  )
-  Type: UnivariatePuiseuxSeries(Expression Integer,x,0)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemSeriesFormulaPageEmpty8}
-\begin{paste}{ugxProblemSeriesFormulaPageEmpty8}{ugxProblemSeriesFormulaPagePatch8}
-\pastebutton{ugxProblemSeriesFormulaPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{sin(asinx)\free{asinx }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch1}
-\begin{paste}{ugxProblemFiniteModulusPageFull1}{ugxProblemFiniteModulusPageEmpty1}
-\pastebutton{ugxProblemFiniteModulusPageFull1}{\hidepaste}
-\tab{5}\spadcommand{GF4096 := FF(2,12);\bound{GF4096 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty1}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty1}{ugxProblemFiniteModulusPagePatch1}
-\pastebutton{ugxProblemFiniteModulusPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{GF4096 := FF(2,12);\bound{GF4096 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch2}
-\begin{paste}{ugxProblemFiniteModulusPageFull2}{ugxProblemFiniteModulusPageEmpty2}
-\pastebutton{ugxProblemFiniteModulusPageFull2}{\hidepaste}
-\tab{5}\spadcommand{a := index(2)$GF4096\bound{a }\free{GF4096 }}
-\indentrel{3}\begin{verbatim}
-   (2)  %CS
-                                Type: FiniteField(2,12)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty2}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty2}{ugxProblemFiniteModulusPagePatch2}
-\pastebutton{ugxProblemFiniteModulusPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{a := index(2)$GF4096\bound{a }\free{GF4096 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch3}
-\begin{paste}{ugxProblemFiniteModulusPageFull3}{ugxProblemFiniteModulusPageEmpty3}
-\pastebutton{ugxProblemFiniteModulusPageFull3}{\hidepaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\indentrel{3}\begin{verbatim}
-           5      3
-   (3)  %CS  + %CS  + %CS + 1
-                                Type: FiniteField(2,12)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty3}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty3}{ugxProblemFiniteModulusPagePatch3}
-\pastebutton{ugxProblemFiniteModulusPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{b := a**12 - a**5 + a\bound{b }\free{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch4}
-\begin{paste}{ugxProblemFiniteModulusPageFull4}{ugxProblemFiniteModulusPageEmpty4}
-\pastebutton{ugxProblemFiniteModulusPageFull4}{\hidepaste}
-\tab{5}\spadcommand{b ** 1000\free{b }}
-\indentrel{3}\begin{verbatim}
-           10      9      7      5      4      3
-   (4)  %CS   + %CS  + %CS  + %CS  + %CS  + %CS  + %CS
-                                Type: FiniteField(2,12)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty4}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty4}{ugxProblemFiniteModulusPagePatch4}
-\pastebutton{ugxProblemFiniteModulusPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{b ** 1000\free{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch5}
-\begin{paste}{ugxProblemFiniteModulusPageFull5}{ugxProblemFiniteModulusPageEmpty5}
-\pastebutton{ugxProblemFiniteModulusPageFull5}{\hidepaste}
-\tab{5}\spadcommand{c := a/b\free{a b }\bound{c }}
-\indentrel{3}\begin{verbatim}
-           11      8      7      5      4      3      2
-   (5)  %CS   + %CS  + %CS  + %CS  + %CS  + %CS  + %CS
-                                Type: FiniteField(2,12)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty5}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty5}{ugxProblemFiniteModulusPagePatch5}
-\pastebutton{ugxProblemFiniteModulusPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{c := a/b\free{a b }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch6}
-\begin{paste}{ugxProblemFiniteModulusPageFull6}{ugxProblemFiniteModulusPageEmpty6}
-\pastebutton{ugxProblemFiniteModulusPageFull6}{\hidepaste}
-\tab{5}\spadcommand{norm c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (6)  1
-                                     Type: PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty6}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty6}{ugxProblemFiniteModulusPagePatch6}
-\pastebutton{ugxProblemFiniteModulusPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{norm c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch7}
-\begin{paste}{ugxProblemFiniteModulusPageFull7}{ugxProblemFiniteModulusPageEmpty7}
-\pastebutton{ugxProblemFiniteModulusPageFull7}{\hidepaste}
-\tab{5}\spadcommand{trace c\free{c }}
-\indentrel{3}\begin{verbatim}
-   (7)  0
-                                     Type: PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty7}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty7}{ugxProblemFiniteModulusPagePatch7}
-\pastebutton{ugxProblemFiniteModulusPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{trace c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch8}
-\begin{paste}{ugxProblemFiniteModulusPageFull8}{ugxProblemFiniteModulusPageEmpty8}
-\pastebutton{ugxProblemFiniteModulusPageFull8}{\hidepaste}
-\tab{5}\spadcommand{dL := discreteLog a\free{a }\bound{dL }}
-\indentrel{3}\begin{verbatim}
-   (8)  1729
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty8}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty8}{ugxProblemFiniteModulusPagePatch8}
-\pastebutton{ugxProblemFiniteModulusPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{dL := discreteLog a\free{a }\bound{dL }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch9}
-\begin{paste}{ugxProblemFiniteModulusPageFull9}{ugxProblemFiniteModulusPageEmpty9}
-\pastebutton{ugxProblemFiniteModulusPageFull9}{\hidepaste}
-\tab{5}\spadcommand{g ** dL\free{dL g }}
-\indentrel{3}\begin{verbatim}
-         1729
-   (9)  g
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty9}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty9}{ugxProblemFiniteModulusPagePatch9}
-\pastebutton{ugxProblemFiniteModulusPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{g ** dL\free{dL g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch10}
-\begin{paste}{ugxProblemFiniteModulusPageFull10}{ugxProblemFiniteModulusPageEmpty10}
-\pastebutton{ugxProblemFiniteModulusPageFull10}{\hidepaste}
-\tab{5}\spadcommand{GF16 := FF(2,4);\bound{GF16 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty10}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty10}{ugxProblemFiniteModulusPagePatch10}
-\pastebutton{ugxProblemFiniteModulusPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{GF16 := FF(2,4);\bound{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch11}
-\begin{paste}{ugxProblemFiniteModulusPageFull11}{ugxProblemFiniteModulusPageEmpty11}
-\pastebutton{ugxProblemFiniteModulusPageFull11}{\hidepaste}
-\tab{5}\spadcommand{GF4096 := FFX(GF16,3);\bound{GF4096x }\free{GF16 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty11}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty11}{ugxProblemFiniteModulusPagePatch11}
-\pastebutton{ugxProblemFiniteModulusPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{GF4096 := FFX(GF16,3);\bound{GF4096x }\free{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch12}
-\begin{paste}{ugxProblemFiniteModulusPageFull12}{ugxProblemFiniteModulusPageEmpty12}
-\pastebutton{ugxProblemFiniteModulusPageFull12}{\hidepaste}
-\tab{5}\spadcommand{r := (random()$GF4096) ** 20\free{GF4096x }\bound{r }}
-\indentrel{3}\begin{verbatim}
-             3              2
-   (12)  (%CT  + %CT + 1)%CU  + %CT %CU
-         Type: FiniteFieldExtension(FiniteField(2,4),3)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty12}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty12}{ugxProblemFiniteModulusPagePatch12}
-\pastebutton{ugxProblemFiniteModulusPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{r := (random()$GF4096) ** 20\free{GF4096x }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch13}
-\begin{paste}{ugxProblemFiniteModulusPageFull13}{ugxProblemFiniteModulusPageEmpty13}
-\pastebutton{ugxProblemFiniteModulusPageFull13}{\hidepaste}
-\tab{5}\spadcommand{norm(r)\free{r }}
-\indentrel{3}\begin{verbatim}
-            2
-   (13)  %CT  + %CT
-                                 Type: FiniteField(2,4)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty13}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty13}{ugxProblemFiniteModulusPagePatch13}
-\pastebutton{ugxProblemFiniteModulusPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{norm(r)\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch14}
-\begin{paste}{ugxProblemFiniteModulusPageFull14}{ugxProblemFiniteModulusPageEmpty14}
-\pastebutton{ugxProblemFiniteModulusPageFull14}{\hidepaste}
-\tab{5}\spadcommand{GF4 := FF(2,2);\bound{GF4 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty14}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty14}{ugxProblemFiniteModulusPagePatch14}
-\pastebutton{ugxProblemFiniteModulusPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{GF4 := FF(2,2);\bound{GF4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch15}
-\begin{paste}{ugxProblemFiniteModulusPageFull15}{ugxProblemFiniteModulusPageEmpty15}
-\pastebutton{ugxProblemFiniteModulusPageFull15}{\hidepaste}
-\tab{5}\spadcommand{f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4)\free{GF4 }\bound{f }}
-\indentrel{3}\begin{verbatim}
-          6    5             4             2
-   (15)  ?  + ?  + (%CV + 1)?  + (%CV + 1)?  + ? + %CV
-Type: Union(SparseUnivariatePolynomial FiniteField(2,2),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty15}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty15}{ugxProblemFiniteModulusPagePatch15}
-\pastebutton{ugxProblemFiniteModulusPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{f := nextIrreduciblePoly(random(6)$FFPOLY(GF4))$FFPOLY(GF4)\free{GF4 }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch16}
-\begin{paste}{ugxProblemFiniteModulusPageFull16}{ugxProblemFiniteModulusPageEmpty16}
-\pastebutton{ugxProblemFiniteModulusPageFull16}{\hidepaste}
-\tab{5}\spadcommand{GF4096 := FFP(GF4,f);\bound{GF4096y }\free{f GF4 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty16}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty16}{ugxProblemFiniteModulusPagePatch16}
-\pastebutton{ugxProblemFiniteModulusPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{GF4096 := FFP(GF4,f);\bound{GF4096y }\free{f GF4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPagePatch17}
-\begin{paste}{ugxProblemFiniteModulusPageFull17}{ugxProblemFiniteModulusPageEmpty17}
-\pastebutton{ugxProblemFiniteModulusPageFull17}{\hidepaste}
-\tab{5}\spadcommand{discreteLog random()$GF4096\free{GF4096y }}
-\indentrel{3}\begin{verbatim}
-   (17)  3370
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteModulusPageEmpty17}
-\begin{paste}{ugxProblemFiniteModulusPageEmpty17}{ugxProblemFiniteModulusPagePatch17}
-\pastebutton{ugxProblemFiniteModulusPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{discreteLog random()$GF4096\free{GF4096y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch1}
-\begin{paste}{ugProblemIdealPageFull1}{ugProblemIdealPageEmpty1}
-\pastebutton{ugProblemIdealPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(n,m) : List DMP([x,y],FRAC INT)\bound{nm }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty1}
-\begin{paste}{ugProblemIdealPageEmpty1}{ugProblemIdealPagePatch1}
-\pastebutton{ugProblemIdealPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(n,m) : List DMP([x,y],FRAC INT)\bound{nm }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch2}
-\begin{paste}{ugProblemIdealPageFull2}{ugProblemIdealPageEmpty2}
-\pastebutton{ugProblemIdealPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := [x**2+y**2-1]\free{nm }\bound{m }}
-\indentrel{3}\begin{verbatim}
-          2    2
-   (2)  [x  + y  - 1]
-Type: List DistributedMultivariatePolynomial([x,y],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty2}
-\begin{paste}{ugProblemIdealPageEmpty2}{ugProblemIdealPagePatch2}
-\pastebutton{ugProblemIdealPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := [x**2+y**2-1]\free{nm }\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch3}
-\begin{paste}{ugProblemIdealPageFull3}{ugProblemIdealPageEmpty3}
-\pastebutton{ugProblemIdealPageFull3}{\hidepaste}
-\tab{5}\spadcommand{n := [x**2-y**2]\free{nm }\bound{n }}
-\indentrel{3}\begin{verbatim}
-          2    2
-   (3)  [x  - y ]
-Type: List DistributedMultivariatePolynomial([x,y],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty3}
-\begin{paste}{ugProblemIdealPageEmpty3}{ugProblemIdealPagePatch3}
-\pastebutton{ugProblemIdealPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{n := [x**2-y**2]\free{nm }\bound{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch4}
-\begin{paste}{ugProblemIdealPageFull4}{ugProblemIdealPageEmpty4}
-\pastebutton{ugProblemIdealPageFull4}{\hidepaste}
-\tab{5}\spadcommand{id := ideal m + ideal n\free{n m }\bound{id }}
-\indentrel{3}\begin{verbatim}
-          2   1  2   1
-   (4)  [x  - Ä,y  - Ä]
-              2      2
-Type: PolynomialIdeals(Fraction Integer,DirectProduct(2,NonNegativeInteger),OrderedVariableList [x,y],DistributedMultivariatePolynomial([x,y],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty4}
-\begin{paste}{ugProblemIdealPageEmpty4}{ugProblemIdealPagePatch4}
-\pastebutton{ugProblemIdealPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{id := ideal m + ideal n\free{n m }\bound{id }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch5}
-\begin{paste}{ugProblemIdealPageFull5}{ugProblemIdealPageEmpty5}
-\pastebutton{ugProblemIdealPageFull5}{\hidepaste}
-\tab{5}\spadcommand{zeroDim? id\free{id }}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty5}
-\begin{paste}{ugProblemIdealPageEmpty5}{ugProblemIdealPagePatch5}
-\pastebutton{ugProblemIdealPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{zeroDim? id\free{id }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch6}
-\begin{paste}{ugProblemIdealPageFull6}{ugProblemIdealPageEmpty6}
-\pastebutton{ugProblemIdealPageFull6}{\hidepaste}
-\tab{5}\spadcommand{zeroDim?(ideal m)\free{m }}
-\indentrel{3}\begin{verbatim}
-   (6)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty6}
-\begin{paste}{ugProblemIdealPageEmpty6}{ugProblemIdealPagePatch6}
-\pastebutton{ugProblemIdealPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{zeroDim?(ideal m)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch7}
-\begin{paste}{ugProblemIdealPageFull7}{ugProblemIdealPageEmpty7}
-\pastebutton{ugProblemIdealPageFull7}{\hidepaste}
-\tab{5}\spadcommand{dimension ideal m\free{m }}
-\indentrel{3}\begin{verbatim}
-   (7)  1
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty7}
-\begin{paste}{ugProblemIdealPageEmpty7}{ugProblemIdealPagePatch7}
-\pastebutton{ugProblemIdealPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{dimension ideal m\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch8}
-\begin{paste}{ugProblemIdealPageFull8}{ugProblemIdealPageEmpty8}
-\pastebutton{ugProblemIdealPageFull8}{\hidepaste}
-\tab{5}\spadcommand{(f,g):DMP([x,y],FRAC INT)\bound{fg }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty8}
-\begin{paste}{ugProblemIdealPageEmpty8}{ugProblemIdealPagePatch8}
-\pastebutton{ugProblemIdealPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{(f,g):DMP([x,y],FRAC INT)\bound{fg }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch9}
-\begin{paste}{ugProblemIdealPageFull9}{ugProblemIdealPageEmpty9}
-\pastebutton{ugProblemIdealPageFull9}{\hidepaste}
-\tab{5}\spadcommand{f := x**2-1\free{fg }\bound{f }}
-\indentrel{3}\begin{verbatim}
-         2
-   (9)  x  - 1
-Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty9}
-\begin{paste}{ugProblemIdealPageEmpty9}{ugProblemIdealPagePatch9}
-\pastebutton{ugProblemIdealPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{f := x**2-1\free{fg }\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch10}
-\begin{paste}{ugProblemIdealPageFull10}{ugProblemIdealPageEmpty10}
-\pastebutton{ugProblemIdealPageFull10}{\hidepaste}
-\tab{5}\spadcommand{g := x*(x**2-1)\free{fg }\bound{g }}
-\indentrel{3}\begin{verbatim}
-          3
-   (10)  x  - x
-Type: DistributedMultivariatePolynomial([x,y],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty10}
-\begin{paste}{ugProblemIdealPageEmpty10}{ugProblemIdealPagePatch10}
-\pastebutton{ugProblemIdealPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{g := x*(x**2-1)\free{fg }\bound{g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch11}
-\begin{paste}{ugProblemIdealPageFull11}{ugProblemIdealPageEmpty11}
-\pastebutton{ugProblemIdealPageFull11}{\hidepaste}
-\tab{5}\spadcommand{relationsIdeal [f,g]\free{f g }}
-\indentrel{3}\begin{verbatim}
-   (11)
-         2      3      2           2           3
-   [- %CY  + %CX  + %CX ] | [%CX= x  - 1,%CY= x  - x]
-Type: SuchThat(List Polynomial Fraction Integer,List Equation Polynomial Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty11}
-\begin{paste}{ugProblemIdealPageEmpty11}{ugProblemIdealPagePatch11}
-\pastebutton{ugProblemIdealPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{relationsIdeal [f,g]\free{f g }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch12}
-\begin{paste}{ugProblemIdealPageFull12}{ugProblemIdealPageEmpty12}
-\pastebutton{ugProblemIdealPageFull12}{\hidepaste}
-\tab{5}\spadcommand{l: List DMP([x,y,z],FRAC INT)\bound{ll }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty12}
-\begin{paste}{ugProblemIdealPageEmpty12}{ugProblemIdealPagePatch12}
-\pastebutton{ugProblemIdealPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{l: List DMP([x,y,z],FRAC INT)\bound{ll }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch13}
-\begin{paste}{ugProblemIdealPageFull13}{ugProblemIdealPageEmpty13}
-\pastebutton{ugProblemIdealPageFull13}{\hidepaste}
-\tab{5}\spadcommand{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]\free{ll }\bound{l }}
-\indentrel{3}\begin{verbatim}
-           2     2    2        2
-   (13)  [x  + 2y ,x z  - y z,z  - 4]
-Type: List DistributedMultivariatePolynomial([x,y,z],Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty13}
-\begin{paste}{ugProblemIdealPageEmpty13}{ugProblemIdealPagePatch13}
-\pastebutton{ugProblemIdealPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{l:=[x**2+2*y**2,x*z**2-y*z,z**2-4]\free{ll }\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch14}
-\begin{paste}{ugProblemIdealPageFull14}{ugProblemIdealPageEmpty14}
-\pastebutton{ugProblemIdealPageFull14}{\hidepaste}
-\tab{5}\spadcommand{ld:=primaryDecomp ideal l\free{l }\bound{ld }}
-\indentrel{3}\begin{verbatim}
-               1    2             1    2
-   (14)  [[x + Ä y,y ,z + 2],[x - Ä y,y ,z - 2]]
-               2                  2
-Type: List PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty14}
-\begin{paste}{ugProblemIdealPageEmpty14}{ugProblemIdealPagePatch14}
-\pastebutton{ugProblemIdealPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{ld:=primaryDecomp ideal l\free{l }\bound{ld }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch15}
-\begin{paste}{ugProblemIdealPageFull15}{ugProblemIdealPageEmpty15}
-\pastebutton{ugProblemIdealPageFull15}{\hidepaste}
-\tab{5}\spadcommand{reduce(intersect,ld)\free{ld }}
-\indentrel{3}\begin{verbatim}
-              1      2  2
-   (15)  [x - Ä y z,y ,z  - 4]
-              4
-Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty15}
-\begin{paste}{ugProblemIdealPageEmpty15}{ugProblemIdealPagePatch15}
-\pastebutton{ugProblemIdealPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{reduce(intersect,ld)\free{ld }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch16}
-\begin{paste}{ugProblemIdealPageFull16}{ugProblemIdealPageEmpty16}
-\pastebutton{ugProblemIdealPageFull16}{\hidepaste}
-\tab{5}\spadcommand{reduce(intersect,[radical ld.i for i in 1..2])\free{ld }}
-\indentrel{3}\begin{verbatim}
-               2
-   (16)  [x,y,z  - 4]
-Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty16}
-\begin{paste}{ugProblemIdealPageEmpty16}{ugProblemIdealPagePatch16}
-\pastebutton{ugProblemIdealPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{reduce(intersect,[radical ld.i for i in 1..2])\free{ld }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPagePatch17}
-\begin{paste}{ugProblemIdealPageFull17}{ugProblemIdealPageEmpty17}
-\pastebutton{ugProblemIdealPageFull17}{\hidepaste}
-\tab{5}\spadcommand{radical ideal l\free{l }}
-\indentrel{3}\begin{verbatim}
-               2
-   (17)  [x,y,z  - 4]
-Type: PolynomialIdeals(Fraction Integer,DirectProduct(3,NonNegativeInteger),OrderedVariableList [x,y,z],DistributedMultivariatePolynomial([x,y,z],Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemIdealPageEmpty17}
-\begin{paste}{ugProblemIdealPageEmpty17}{ugProblemIdealPagePatch17}
-\pastebutton{ugProblemIdealPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{radical ideal l\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch1}
-\begin{paste}{ugxProblemFiniteUtilityPageFull1}{ugxProblemFiniteUtilityPageEmpty1}
-\pastebutton{ugxProblemFiniteUtilityPageFull1}{\hidepaste}
-\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty1}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty1}{ugxProblemFiniteUtilityPagePatch1}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch2}
-\begin{paste}{ugxProblemFiniteUtilityPageFull2}{ugxProblemFiniteUtilityPageEmpty2}
-\pastebutton{ugxProblemFiniteUtilityPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f := createIrreduciblePoly(8)$FFPOLY(GF5)\bound{f }\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-         8    4
-   (2)  ?  + ?  + 2
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty2}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty2}{ugxProblemFiniteUtilityPagePatch2}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f := createIrreduciblePoly(8)$FFPOLY(GF5)\bound{f }\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch3}
-\begin{paste}{ugxProblemFiniteUtilityPageFull3}{ugxProblemFiniteUtilityPageEmpty3}
-\pastebutton{ugxProblemFiniteUtilityPageFull3}{\hidepaste}
-\tab{5}\spadcommand{primitive?(f)$FFPOLY(GF5)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (3)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty3}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty3}{ugxProblemFiniteUtilityPagePatch3}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{primitive?(f)$FFPOLY(GF5)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch4}
-\begin{paste}{ugxProblemFiniteUtilityPageFull4}{ugxProblemFiniteUtilityPageEmpty4}
-\pastebutton{ugxProblemFiniteUtilityPageFull4}{\hidepaste}
-\tab{5}\spadcommand{normal?(f)$FFPOLY(GF5)\free{f }}
-\indentrel{3}\begin{verbatim}
-   (4)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty4}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty4}{ugxProblemFiniteUtilityPagePatch4}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{normal?(f)$FFPOLY(GF5)\free{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch5}
-\begin{paste}{ugxProblemFiniteUtilityPageFull5}{ugxProblemFiniteUtilityPageEmpty5}
-\pastebutton{ugxProblemFiniteUtilityPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p := createPrimitivePoly(8)$FFPOLY(GF5)\bound{p }\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-         8    3    2
-   (5)  ?  + ?  + ?  + ? + 2
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty5}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty5}{ugxProblemFiniteUtilityPagePatch5}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p := createPrimitivePoly(8)$FFPOLY(GF5)\bound{p }\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch6}
-\begin{paste}{ugxProblemFiniteUtilityPageFull6}{ugxProblemFiniteUtilityPageEmpty6}
-\pastebutton{ugxProblemFiniteUtilityPageFull6}{\hidepaste}
-\tab{5}\spadcommand{primitive?(p)$FFPOLY(GF5)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (6)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty6}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty6}{ugxProblemFiniteUtilityPagePatch6}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{primitive?(p)$FFPOLY(GF5)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch7}
-\begin{paste}{ugxProblemFiniteUtilityPageFull7}{ugxProblemFiniteUtilityPageEmpty7}
-\pastebutton{ugxProblemFiniteUtilityPageFull7}{\hidepaste}
-\tab{5}\spadcommand{normal?(p)$FFPOLY(GF5)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (7)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty7}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty7}{ugxProblemFiniteUtilityPagePatch7}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{normal?(p)$FFPOLY(GF5)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch8}
-\begin{paste}{ugxProblemFiniteUtilityPageFull8}{ugxProblemFiniteUtilityPageEmpty8}
-\pastebutton{ugxProblemFiniteUtilityPageFull8}{\hidepaste}
-\tab{5}\spadcommand{n := createNormalPoly(8)$FFPOLY(GF5)\bound{n }\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-         8     7    3
-   (8)  ?  + 4?  + ?  + 1
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty8}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty8}{ugxProblemFiniteUtilityPagePatch8}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{n := createNormalPoly(8)$FFPOLY(GF5)\bound{n }\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch9}
-\begin{paste}{ugxProblemFiniteUtilityPageFull9}{ugxProblemFiniteUtilityPageEmpty9}
-\pastebutton{ugxProblemFiniteUtilityPageFull9}{\hidepaste}
-\tab{5}\spadcommand{primitive?(n)$FFPOLY(GF5)\free{n }}
-\indentrel{3}\begin{verbatim}
-   (9)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty9}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty9}{ugxProblemFiniteUtilityPagePatch9}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{primitive?(n)$FFPOLY(GF5)\free{n }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch10}
-\begin{paste}{ugxProblemFiniteUtilityPageFull10}{ugxProblemFiniteUtilityPageEmpty10}
-\pastebutton{ugxProblemFiniteUtilityPageFull10}{\hidepaste}
-\tab{5}\spadcommand{createPrimitiveNormalPoly(8)$FFPOLY(GF5)\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-          8     7     5
-   (10)  ?  + 4?  + 2?  + 2
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty10}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty10}{ugxProblemFiniteUtilityPagePatch10}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{createPrimitiveNormalPoly(8)$FFPOLY(GF5)\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch11}
-\begin{paste}{ugxProblemFiniteUtilityPageFull11}{ugxProblemFiniteUtilityPageEmpty11}
-\pastebutton{ugxProblemFiniteUtilityPageFull11}{\hidepaste}
-\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty11}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty11}{ugxProblemFiniteUtilityPagePatch11}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{GF5 := PF 5;\bound{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch12}
-\begin{paste}{ugxProblemFiniteUtilityPageFull12}{ugxProblemFiniteUtilityPageEmpty12}
-\pastebutton{ugxProblemFiniteUtilityPageFull12}{\hidepaste}
-\tab{5}\spadcommand{h := monomial(1,8)$SUP(GF5)\bound{h }\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-          8
-   (12)  ?
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty12}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty12}{ugxProblemFiniteUtilityPagePatch12}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{h := monomial(1,8)$SUP(GF5)\bound{h }\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch13}
-\begin{paste}{ugxProblemFiniteUtilityPageFull13}{ugxProblemFiniteUtilityPageEmpty13}
-\pastebutton{ugxProblemFiniteUtilityPageFull13}{\hidepaste}
-\tab{5}\spadcommand{nh := nextIrreduciblePoly(h)$FFPOLY(GF5)\bound{nh }\free{h }}
-\indentrel{3}\begin{verbatim}
-          8
-   (13)  ?  + 2
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty13}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty13}{ugxProblemFiniteUtilityPagePatch13}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{nh := nextIrreduciblePoly(h)$FFPOLY(GF5)\bound{nh }\free{h }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch14}
-\begin{paste}{ugxProblemFiniteUtilityPageFull14}{ugxProblemFiniteUtilityPageEmpty14}
-\pastebutton{ugxProblemFiniteUtilityPageFull14}{\hidepaste}
-\tab{5}\spadcommand{createIrreduciblePoly(3)$FFPOLY(GF5)\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-          3
-   (14)  ?  + ? + 1
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty14}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty14}{ugxProblemFiniteUtilityPagePatch14}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{createIrreduciblePoly(3)$FFPOLY(GF5)\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch15}
-\begin{paste}{ugxProblemFiniteUtilityPageFull15}{ugxProblemFiniteUtilityPageEmpty15}
-\pastebutton{ugxProblemFiniteUtilityPageFull15}{\hidepaste}
-\tab{5}\spadcommand{nh := nextIrreduciblePoly(nh)$FFPOLY(GF5)\free{nh }}
-\indentrel{3}\begin{verbatim}
-          8
-   (15)  ?  + 3
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty15}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty15}{ugxProblemFiniteUtilityPagePatch15}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{nh := nextIrreduciblePoly(nh)$FFPOLY(GF5)\free{nh }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch16}
-\begin{paste}{ugxProblemFiniteUtilityPageFull16}{ugxProblemFiniteUtilityPageEmpty16}
-\pastebutton{ugxProblemFiniteUtilityPageFull16}{\hidepaste}
-\tab{5}\spadcommand{numberOfIrreduciblePoly(5)$FFPOLY(GF5)\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-   (16)  624
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty16}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty16}{ugxProblemFiniteUtilityPagePatch16}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{numberOfIrreduciblePoly(5)$FFPOLY(GF5)\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch17}
-\begin{paste}{ugxProblemFiniteUtilityPageFull17}{ugxProblemFiniteUtilityPageEmpty17}
-\pastebutton{ugxProblemFiniteUtilityPageFull17}{\hidepaste}
-\tab{5}\spadcommand{numberOfPrimitivePoly(3)$FFPOLY(GF5)\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-   (17)  20
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty17}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty17}{ugxProblemFiniteUtilityPagePatch17}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{numberOfPrimitivePoly(3)$FFPOLY(GF5)\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch18}
-\begin{paste}{ugxProblemFiniteUtilityPageFull18}{ugxProblemFiniteUtilityPageEmpty18}
-\pastebutton{ugxProblemFiniteUtilityPageFull18}{\hidepaste}
-\tab{5}\spadcommand{m := monomial(1,1)$SUP(GF5)\bound{m }\free{GF5 }}
-\indentrel{3}\begin{verbatim}
-   (18)  ?
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty18}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty18}{ugxProblemFiniteUtilityPagePatch18}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{m := monomial(1,1)$SUP(GF5)\bound{m }\free{GF5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch19}
-\begin{paste}{ugxProblemFiniteUtilityPageFull19}{ugxProblemFiniteUtilityPageEmpty19}
-\pastebutton{ugxProblemFiniteUtilityPageFull19}{\hidepaste}
-\tab{5}\spadcommand{f := m**3 + 4*m**2 + m + 2\bound{fx }\free{m }}
-\indentrel{3}\begin{verbatim}
-          3     2
-   (19)  ?  + 4?  + ? + 2
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty19}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty19}{ugxProblemFiniteUtilityPagePatch19}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{f := m**3 + 4*m**2 + m + 2\bound{fx }\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch20}
-\begin{paste}{ugxProblemFiniteUtilityPageFull20}{ugxProblemFiniteUtilityPageEmpty20}
-\pastebutton{ugxProblemFiniteUtilityPageFull20}{\hidepaste}
-\tab{5}\spadcommand{f1 := nextPrimitivePoly(f)$FFPOLY(GF5)\free{fx }\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-          3     2
-   (20)  ?  + 4?  + 4? + 2
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty20}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty20}{ugxProblemFiniteUtilityPagePatch20}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{f1 := nextPrimitivePoly(f)$FFPOLY(GF5)\free{fx }\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch21}
-\begin{paste}{ugxProblemFiniteUtilityPageFull21}{ugxProblemFiniteUtilityPageEmpty21}
-\pastebutton{ugxProblemFiniteUtilityPageFull21}{\hidepaste}
-\tab{5}\spadcommand{nextPrimitivePoly(f1)$FFPOLY(GF5)\free{f1 }}
-\indentrel{3}\begin{verbatim}
-          3     2
-   (21)  ?  + 2?  + 3
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty21}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty21}{ugxProblemFiniteUtilityPagePatch21}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{nextPrimitivePoly(f1)$FFPOLY(GF5)\free{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch22}
-\begin{paste}{ugxProblemFiniteUtilityPageFull22}{ugxProblemFiniteUtilityPageEmpty22}
-\pastebutton{ugxProblemFiniteUtilityPageFull22}{\hidepaste}
-\tab{5}\spadcommand{f := m**3 + m**2 + 4*m + 1\bound{fy }\free{m }}
-\indentrel{3}\begin{verbatim}
-          3    2
-   (22)  ?  + ?  + 4? + 1
-          Type: SparseUnivariatePolynomial PrimeField 5
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty22}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty22}{ugxProblemFiniteUtilityPagePatch22}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{f := m**3 + m**2 + 4*m + 1\bound{fy }\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch23}
-\begin{paste}{ugxProblemFiniteUtilityPageFull23}{ugxProblemFiniteUtilityPageEmpty23}
-\pastebutton{ugxProblemFiniteUtilityPageFull23}{\hidepaste}
-\tab{5}\spadcommand{f1 := nextNormalPoly(f)$FFPOLY(GF5)\free{fy }\bound{f1y }}
-\indentrel{3}\begin{verbatim}
-          3    2
-   (23)  ?  + ?  + 4? + 3
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty23}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty23}{ugxProblemFiniteUtilityPagePatch23}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{f1 := nextNormalPoly(f)$FFPOLY(GF5)\free{fy }\bound{f1y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch24}
-\begin{paste}{ugxProblemFiniteUtilityPageFull24}{ugxProblemFiniteUtilityPageEmpty24}
-\pastebutton{ugxProblemFiniteUtilityPageFull24}{\hidepaste}
-\tab{5}\spadcommand{nextNormalPoly(f1)$FFPOLY(GF5)\free{f1y }}
-\indentrel{3}\begin{verbatim}
-          3     2
-   (24)  ?  + 2?  + 1
-Type: Union(SparseUnivariatePolynomial PrimeField 5,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty24}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty24}{ugxProblemFiniteUtilityPagePatch24}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{nextNormalPoly(f1)$FFPOLY(GF5)\free{f1y }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch25}
-\begin{paste}{ugxProblemFiniteUtilityPageFull25}{ugxProblemFiniteUtilityPageEmpty25}
-\pastebutton{ugxProblemFiniteUtilityPageFull25}{\hidepaste}
-\tab{5}\spadcommand{GF16 := FFX(FFX(PF 2,2),2);\bound{GF16 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty25}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty25}{ugxProblemFiniteUtilityPagePatch25}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{GF16 := FFX(FFX(PF 2,2),2);\bound{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch26}
-\begin{paste}{ugxProblemFiniteUtilityPageFull26}{ugxProblemFiniteUtilityPageEmpty26}
-\pastebutton{ugxProblemFiniteUtilityPageFull26}{\hidepaste}
-\tab{5}\spadcommand{createIrreduciblePoly(5)$FFPOLY(GF16)\free{GF16 }}
-\indentrel{3}\begin{verbatim}
-          5
-   (26)  ?  + %CZ
-Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty26}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty26}{ugxProblemFiniteUtilityPagePatch26}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{createIrreduciblePoly(5)$FFPOLY(GF16)\free{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch27}
-\begin{paste}{ugxProblemFiniteUtilityPageFull27}{ugxProblemFiniteUtilityPageEmpty27}
-\pastebutton{ugxProblemFiniteUtilityPageFull27}{\hidepaste}
-\tab{5}\spadcommand{random(5)$FFPOLY(GF16)\free{GF16 }}
-\indentrel{3}\begin{verbatim}
-   (27)
-      5             4                            3
-     ?  + (%CV + 1)?  + ((%CV + 1)%CZ + %CV + 1)?
-   + 
-               2
-     (%CV + 1)?  + ((%CV + 1)%CZ + %CV + 1)?
-   + 
-     (%CV + 1)%CZ + 1
-Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty27}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty27}{ugxProblemFiniteUtilityPagePatch27}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{random(5)$FFPOLY(GF16)\free{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch28}
-\begin{paste}{ugxProblemFiniteUtilityPageFull28}{ugxProblemFiniteUtilityPageEmpty28}
-\pastebutton{ugxProblemFiniteUtilityPageFull28}{\hidepaste}
-\tab{5}\spadcommand{random(3,9)$FFPOLY(GF16)\free{GF16 }}
-\indentrel{3}\begin{verbatim}
-   (28)
-      4                   3                       2
-     ?  + (%CZ + %CV + 1)?  + (%CV %CZ + %CV + 1)?
-   + 
-     (%CZ + %CV)? + (%CV + 1)%CZ
-Type: SparseUnivariatePolynomial FiniteFieldExtension(FiniteFieldExtension(PrimeField 2,2),2)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty28}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty28}{ugxProblemFiniteUtilityPagePatch28}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{random(3,9)$FFPOLY(GF16)\free{GF16 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch29}
-\begin{paste}{ugxProblemFiniteUtilityPageFull29}{ugxProblemFiniteUtilityPageEmpty29}
-\pastebutton{ugxProblemFiniteUtilityPageFull29}{\hidepaste}
-\tab{5}\spadcommand{GF2 := PrimeField 2;\bound{GF2 }}
-\indentrel{3}\begin{verbatim}
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty29}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty29}{ugxProblemFiniteUtilityPagePatch29}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{GF2 := PrimeField 2;\bound{GF2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch30}
-\begin{paste}{ugxProblemFiniteUtilityPageFull30}{ugxProblemFiniteUtilityPageEmpty30}
-\pastebutton{ugxProblemFiniteUtilityPageFull30}{\hidepaste}
-\tab{5}\spadcommand{F := FFX(GF2,12)\bound{F }\free{GF2 }}
-\indentrel{3}\begin{verbatim}
-   (30)  FiniteFieldExtension(PrimeField 2,12)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty30}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty30}{ugxProblemFiniteUtilityPagePatch30}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{F := FFX(GF2,12)\bound{F }\free{GF2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch31}
-\begin{paste}{ugxProblemFiniteUtilityPageFull31}{ugxProblemFiniteUtilityPageEmpty31}
-\pastebutton{ugxProblemFiniteUtilityPageFull31}{\hidepaste}
-\tab{5}\spadcommand{f := createIrreduciblePoly(6)$FFPOLY(GF2)\bound{fz }\free{GF2 }}
-\indentrel{3}\begin{verbatim}
-          6
-   (31)  ?  + ? + 1
-          Type: SparseUnivariatePolynomial PrimeField 2
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty31}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty31}{ugxProblemFiniteUtilityPagePatch31}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{f := createIrreduciblePoly(6)$FFPOLY(GF2)\bound{fz }\free{GF2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPagePatch32}
-\begin{paste}{ugxProblemFiniteUtilityPageFull32}{ugxProblemFiniteUtilityPageEmpty32}
-\pastebutton{ugxProblemFiniteUtilityPageFull32}{\hidepaste}
-\tab{5}\spadcommand{root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2)\free{F GF2 fz }\bound{root }}
-\indentrel{3}\begin{verbatim}
-            11      8      7      5
-   (32)  %CS   + %CS  + %CS  + %CS  + %CS + 1
-            Type: FiniteFieldExtension(PrimeField 2,12)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugxProblemFiniteUtilityPageEmpty32}
-\begin{paste}{ugxProblemFiniteUtilityPageEmpty32}{ugxProblemFiniteUtilityPagePatch32}
-\pastebutton{ugxProblemFiniteUtilityPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{root := rootOfIrreduciblePoly(f)$FFPOLY2(F,GF2)\free{F GF2 fz }\bound{root }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch1}
-\begin{paste}{ugProblemEigenPageFull1}{ugProblemEigenPageEmpty1}
-\pastebutton{ugProblemEigenPageFull1}{\hidepaste}
-\tab{5}\spadcommand{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]]\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1   2    1 ¿
-        ³           ³
-   (1)  ³2   1   - 2³
-        ³           ³
-        À1  - 2   4 Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty1}
-\begin{paste}{ugProblemEigenPageEmpty1}{ugProblemEigenPagePatch1}
-\pastebutton{ugProblemEigenPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{m1 := matrix [[1,2,1],[2,1,-2],[1,-2,4]]\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch2}
-\begin{paste}{ugProblemEigenPageFull2}{ugProblemEigenPageEmpty2}
-\pastebutton{ugProblemEigenPageFull2}{\hidepaste}
-\tab{5}\spadcommand{leig := eigenvalues(m1)\free{m1 }\bound{leig }}
-\indentrel{3}\begin{verbatim}
-                    2
-   (2)  [5,%DA | %DA  - %DA - 5]
-Type: List Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty2}
-\begin{paste}{ugProblemEigenPageEmpty2}{ugProblemEigenPagePatch2}
-\pastebutton{ugProblemEigenPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{leig := eigenvalues(m1)\free{m1 }\bound{leig }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch3}
-\begin{paste}{ugProblemEigenPageFull3}{ugProblemEigenPageEmpty3}
-\pastebutton{ugProblemEigenPageFull3}{\hidepaste}
-\tab{5}\spadcommand{eigenvector(first(leig),m1)\free{m1 leig }}
-\indentrel{3}\begin{verbatim}
-         Ú 0 ¿
-         ³   ³
-         ³  1³
-   (3)  [³- Ä³]
-         ³  2³
-         ³   ³
-         À 1 Ù
- Type: List Matrix Fraction Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty3}
-\begin{paste}{ugProblemEigenPageEmpty3}{ugProblemEigenPagePatch3}
-\pastebutton{ugProblemEigenPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{eigenvector(first(leig),m1)\free{m1 leig }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch4}
-\begin{paste}{ugProblemEigenPageFull4}{ugProblemEigenPageEmpty4}
-\pastebutton{ugProblemEigenPageFull4}{\hidepaste}
-\tab{5}\spadcommand{eigenvectors(m1)\free{m1 }}
-\indentrel{3}\begin{verbatim}
-   (4)
-                                   Ú 0 ¿
-                                   ³   ³
-                                   ³  1³
-   [[eigval= 5,eigmult= 1,eigvec= [³- Ä³]],
-                                   ³  2³
-                                   ³   ³
-                                   À 1 Ù
-
-                        2
-     [eigval= (%DB | %DB  - %DB - 5), eigmult= 1,
-               Ú%DB¿
-               ³   ³
-      eigvec= [³ 2 ³]]
-               ³   ³
-               À 1 Ù
-     ]
-Type: List Record(eigval: Union(Fraction Polynomial Integer,SuchThat(Symbol,Polynomial Integer)),eigmult: NonNegativeInteger,eigvec: List Matrix Fraction Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty4}
-\begin{paste}{ugProblemEigenPageEmpty4}{ugProblemEigenPagePatch4}
-\pastebutton{ugProblemEigenPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{eigenvectors(m1)\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch5}
-\begin{paste}{ugProblemEigenPageFull5}{ugProblemEigenPageEmpty5}
-\pastebutton{ugProblemEigenPageFull5}{\hidepaste}
-\tab{5}\spadcommand{radicalEigenvectors(m1)\free{m1 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-                                            Ú ÚÄÄ¿    ¿
-              ÚÄÄ¿                          ³\³21  + 1³
-             \³21  + 1                      ³ÄÄÄÄÄÄÄÄÄ³
-   [[radval= ÄÄÄÄÄÄÄÄÄ,radmult= 1,radvect= [³    2    ³]],
-                 2                          ³         ³
-                                            ³    2    ³
-                                            ³         ³
-                                            À    1    Ù
-
-                 ÚÄÄ¿
-              - \³21  + 1
-     [radval= ÄÄÄÄÄÄÄÄÄÄÄ, radmult= 1,
-                   2
-                Ú   ÚÄÄ¿    ¿
-                ³- \³21  + 1³
-                ³ÄÄÄÄÄÄÄÄÄÄÄ³
-      radvect= [³     2     ³]]
-                ³           ³
-                ³     2     ³
-                ³           ³
-                À     1     Ù
-     ,
-                                    Ú 0 ¿
-                                    ³   ³
-                                    ³  1³
-    [radval= 5,radmult= 1,radvect= [³- Ä³]]]
-                                    ³  2³
-                                    ³   ³
-                                    À 1 Ù
-Type: List Record(radval: Expression Integer,radmult: Integer,radvect: List Matrix Expression Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty5}
-\begin{paste}{ugProblemEigenPageEmpty5}{ugProblemEigenPagePatch5}
-\pastebutton{ugProblemEigenPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{radicalEigenvectors(m1)\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch6}
-\begin{paste}{ugProblemEigenPageFull6}{ugProblemEigenPageEmpty6}
-\pastebutton{ugProblemEigenPageFull6}{\hidepaste}
-\tab{5}\spadcommand{realEigenvectors(m1,1/1000)\free{m1 }}
-\indentrel{3}\begin{verbatim}
-   (6)
-                                    Ú 0 ¿
-                                    ³   ³
-                                    ³  1³
-   [[outval= 5,outmult= 1,outvect= [³- Ä³]],
-                                    ³  2³
-                                    ³   ³
-                                    À 1 Ù
-                                       Ú5717¿
-                                       ³ÄÄÄÄ³
-             5717                      ³2048³
-    [outval= ÄÄÄÄ,outmult= 1,outvect= [³    ³]],
-             2048                      ³ 2  ³
-                                       ³    ³
-                                       À 1  Ù
-                                         Ú  3669¿
-                                         ³- ÄÄÄÄ³
-               3669                      ³  2048³
-    [outval= - ÄÄÄÄ,outmult= 1,outvect= [³      ³]]]
-               2048                      ³  2   ³
-                                         ³      ³
-                                         À  1   Ù
-Type: List Record(outval: Fraction Integer,outmult: Integer,outvect: List Matrix Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty6}
-\begin{paste}{ugProblemEigenPageEmpty6}{ugProblemEigenPagePatch6}
-\pastebutton{ugProblemEigenPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{realEigenvectors(m1,1/1000)\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch7}
-\begin{paste}{ugProblemEigenPageFull7}{ugProblemEigenPageEmpty7}
-\pastebutton{ugProblemEigenPageFull7}{\hidepaste}
-\tab{5}\spadcommand{eigenMatrix(m1)\free{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú ÚÄÄ¿         ÚÄÄ¿         ¿
-        ³\³21  + 1  - \³21  + 1     ³
-        ³ÄÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄÄÄÄ   0 ³
-        ³    2           2          ³
-   (7)  ³                           ³
-        ³                          1³
-        ³    2           2       - Ä³
-        ³                          2³
-        ³                           ³
-        À    1           1        1 Ù
-             Type: Union(Matrix Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty7}
-\begin{paste}{ugProblemEigenPageEmpty7}{ugProblemEigenPagePatch7}
-\pastebutton{ugProblemEigenPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{eigenMatrix(m1)\free{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch8}
-\begin{paste}{ugProblemEigenPageFull8}{ugProblemEigenPageEmpty8}
-\pastebutton{ugProblemEigenPageFull8}{\hidepaste}
-\tab{5}\spadcommand{m2 := matrix [[-5,-2],[18,7]]\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú- 5  - 2¿
-   (8)  ³        ³
-        À18    7 Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty8}
-\begin{paste}{ugProblemEigenPageEmpty8}{ugProblemEigenPagePatch8}
-\pastebutton{ugProblemEigenPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{m2 := matrix [[-5,-2],[18,7]]\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch9}
-\begin{paste}{ugProblemEigenPageFull9}{ugProblemEigenPageEmpty9}
-\pastebutton{ugProblemEigenPageFull9}{\hidepaste}
-\tab{5}\spadcommand{eigenMatrix(m2)\free{m2 }}
-\indentrel{3}\begin{verbatim}
-   (9)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty9}
-\begin{paste}{ugProblemEigenPageEmpty9}{ugProblemEigenPagePatch9}
-\pastebutton{ugProblemEigenPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{eigenMatrix(m2)\free{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch10}
-\begin{paste}{ugProblemEigenPageFull10}{ugProblemEigenPageEmpty10}
-\pastebutton{ugProblemEigenPageFull10}{\hidepaste}
-\tab{5}\spadcommand{m3 := matrix [[1,2],[2,1]]\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-         Ú1  2¿
-   (10)  ³    ³
-         À2  1Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty10}
-\begin{paste}{ugProblemEigenPageEmpty10}{ugProblemEigenPagePatch10}
-\pastebutton{ugProblemEigenPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m3 := matrix [[1,2],[2,1]]\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPagePatch11}
-\begin{paste}{ugProblemEigenPageFull11}{ugProblemEigenPageEmpty11}
-\pastebutton{ugProblemEigenPageFull11}{\hidepaste}
-\tab{5}\spadcommand{orthonormalBasis(m3)\free{m3 }}
-\indentrel{3}\begin{verbatim}
-          Ú    1 ¿ Ú  1 ¿
-          ³- ÄÄÄÄ³ ³ÄÄÄÄ³
-          ³   ÚÄ¿³ ³ ÚÄ¿³
-          ³  \³2 ³ ³\³2 ³
-   (11)  [³      ³,³    ³]
-          ³   1  ³ ³  1 ³
-          ³ ÄÄÄÄ ³ ³ÄÄÄÄ³
-          ³  ÚÄ¿ ³ ³ ÚÄ¿³
-          À \³2  Ù À\³2 Ù
-                   Type: List Matrix Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemEigenPageEmpty11}
-\begin{paste}{ugProblemEigenPageEmpty11}{ugProblemEigenPagePatch11}
-\pastebutton{ugProblemEigenPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{orthonormalBasis(m3)\free{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch1}
-\begin{paste}{ugProblemGaloisPageFull1}{ugProblemGaloisPageEmpty1}
-\pastebutton{ugProblemGaloisPageFull1}{\hidepaste}
-\tab{5}\spadcommand{p := x**5 - 5*x + 12\bound{p }}
-\indentrel{3}\begin{verbatim}
-         5
-   (1)  x  - 5x + 12
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty1}
-\begin{paste}{ugProblemGaloisPageEmpty1}{ugProblemGaloisPagePatch1}
-\pastebutton{ugProblemGaloisPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{p := x**5 - 5*x + 12\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch2}
-\begin{paste}{ugProblemGaloisPageFull2}{ugProblemGaloisPageEmpty2}
-\pastebutton{ugProblemGaloisPageFull2}{\hidepaste}
-\tab{5}\spadcommand{q := resultant(eval(p,x,y),-eval(p,x,y-x),y)\free{p }\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (2)
-      25      21        17         15        13
-     x   - 50x   - 2375x   + 90000x   - 5000x
-   + 
-             11          9            7            5
-     2700000x   + 250000x  + 18000000x  + 64000000x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty2}
-\begin{paste}{ugProblemGaloisPageEmpty2}{ugProblemGaloisPagePatch2}
-\pastebutton{ugProblemGaloisPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{q := resultant(eval(p,x,y),-eval(p,x,y-x),y)\free{p }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch3}
-\begin{paste}{ugProblemGaloisPageFull3}{ugProblemGaloisPageEmpty3}
-\pastebutton{ugProblemGaloisPageFull3}{\hidepaste}
-\tab{5}\spadcommand{q1 := exquo(q, x**5)\free{q }\bound{q1 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-      20      16        12         10        8           6
-     x   - 50x   - 2375x   + 90000x   - 5000x  + 2700000x
-   + 
-            4            2
-     250000x  + 18000000x  + 64000000
-                    Type: Union(Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty3}
-\begin{paste}{ugProblemGaloisPageEmpty3}{ugProblemGaloisPagePatch3}
-\pastebutton{ugProblemGaloisPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{q1 := exquo(q, x**5)\free{q }\bound{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch4}
-\begin{paste}{ugProblemGaloisPageFull4}{ugProblemGaloisPageEmpty4}
-\pastebutton{ugProblemGaloisPageFull4}{\hidepaste}
-\tab{5}\spadcommand{factoredQ := factor q1\free{q1 }\bound{factoredQ }}
-\indentrel{3}\begin{verbatim}
-   (4)
-       10      8      6        4        2
-     (x   - 10x  - 75x  + 1500x  - 5500x  + 16000)
-  *
-       10      8       6       4        2
-     (x   + 10x  + 125x  + 500x  + 2500x  + 4000)
-                      Type: Factored Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty4}
-\begin{paste}{ugProblemGaloisPageEmpty4}{ugProblemGaloisPagePatch4}
-\pastebutton{ugProblemGaloisPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{factoredQ := factor q1\free{q1 }\bound{factoredQ }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch5}
-\begin{paste}{ugProblemGaloisPageFull5}{ugProblemGaloisPageEmpty5}
-\pastebutton{ugProblemGaloisPageFull5}{\hidepaste}
-\tab{5}\spadcommand{r := nthFactor(factoredQ,1)\free{factoredQ }\bound{r }}
-\indentrel{3}\begin{verbatim}
-         10      8      6        4        2
-   (5)  x   - 10x  - 75x  + 1500x  - 5500x  + 16000
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty5}
-\begin{paste}{ugProblemGaloisPageEmpty5}{ugProblemGaloisPagePatch5}
-\pastebutton{ugProblemGaloisPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{r := nthFactor(factoredQ,1)\free{factoredQ }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch6}
-\begin{paste}{ugProblemGaloisPageFull6}{ugProblemGaloisPageEmpty6}
-\pastebutton{ugProblemGaloisPageFull6}{\hidepaste}
-\tab{5}\spadcommand{beta:AN := rootOf(eval(r,x,b))\free{r }\bound{beta }}
-\indentrel{3}\begin{verbatim}
-   (6)  b
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty6}
-\begin{paste}{ugProblemGaloisPageEmpty6}{ugProblemGaloisPagePatch6}
-\pastebutton{ugProblemGaloisPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{beta:AN := rootOf(eval(r,x,b))\free{r }\bound{beta }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch7}
-\begin{paste}{ugProblemGaloisPageFull7}{ugProblemGaloisPageEmpty7}
-\pastebutton{ugProblemGaloisPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p := p::UP(x,INT)::UP(x,AN)\free{p }\bound{declareP }}
-\indentrel{3}\begin{verbatim}
-         5
-   (7)  x  - 5x + 12
-          Type: UnivariatePolynomial(x,AlgebraicNumber)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty7}
-\begin{paste}{ugProblemGaloisPageEmpty7}{ugProblemGaloisPagePatch7}
-\pastebutton{ugProblemGaloisPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p := p::UP(x,INT)::UP(x,AN)\free{p }\bound{declareP }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch8}
-\begin{paste}{ugProblemGaloisPageFull8}{ugProblemGaloisPageEmpty8}
-\pastebutton{ugProblemGaloisPageFull8}{\hidepaste}
-\tab{5}\spadcommand{algFactors := factor(p,[beta])\free{declareP beta }\bound{algFactors }}
-\indentrel{3}\begin{verbatim}
-   (8)
-       x
-     + 
-                9       8       7        6         5
-           - 85b  - 116b  + 780b  + 2640b  + 14895b
-         + 
-                  4          3          2
-           - 8820b  - 127050b  - 327000b  - 405200b
-         + 
-           2062400
-      /
-         1339200
-  *
-               8       6        4         2
-          - 17b  + 156b  + 2979b  - 25410b  - 14080
-     (x + ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ)
-                            66960
-  *
-       x
-     + 
-               8        6         4          2
-           143b  - 2100b  - 10485b  + 290550b  - 334800b
-         + 
-           - 960800
-      /
-         669600
-  *
-       x
-     + 
-               8        6         4          2
-           143b  - 2100b  - 10485b  + 290550b  + 334800b
-         + 
-           - 960800
-      /
-         669600
-  *
-       x
-     + 
-              9       8       7        6         5
-           85b  - 116b  - 780b  + 2640b  - 14895b
-         + 
-                  4          3          2
-           - 8820b  + 127050b  - 327000b  + 405200b
-         + 
-           2062400
-      /
-         1339200
- Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty8}
-\begin{paste}{ugProblemGaloisPageEmpty8}{ugProblemGaloisPagePatch8}
-\pastebutton{ugProblemGaloisPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{algFactors := factor(p,[beta])\free{declareP beta }\bound{algFactors }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch9}
-\begin{paste}{ugProblemGaloisPageFull9}{ugProblemGaloisPageEmpty9}
-\pastebutton{ugProblemGaloisPageFull9}{\hidepaste}
-\tab{5}\spadcommand{factor(p)\free{declareP }}
-\indentrel{3}\begin{verbatim}
-         5
-   (9)  x  - 5x + 12
- Type: Factored UnivariatePolynomial(x,AlgebraicNumber)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty9}
-\begin{paste}{ugProblemGaloisPageEmpty9}{ugProblemGaloisPagePatch9}
-\pastebutton{ugProblemGaloisPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{factor(p)\free{declareP }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch10}
-\begin{paste}{ugProblemGaloisPageFull10}{ugProblemGaloisPageEmpty10}
-\pastebutton{ugProblemGaloisPageFull10}{\hidepaste}
-\tab{5}\spadcommand{factor1 := nthFactor(algFactors,1)\free{algFactors }\bound{factor1 }}
-\indentrel{3}\begin{verbatim}
-   (10)
-     x
-   + 
-              9       8       7        6         5
-         - 85b  - 116b  + 780b  + 2640b  + 14895b
-       + 
-              4          3          2
-       - 8820b  - 127050b  - 327000b  - 405200b + 2062400
-    /
-       1339200
-          Type: UnivariatePolynomial(x,AlgebraicNumber)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty10}
-\begin{paste}{ugProblemGaloisPageEmpty10}{ugProblemGaloisPagePatch10}
-\pastebutton{ugProblemGaloisPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{factor1 := nthFactor(algFactors,1)\free{algFactors }\bound{factor1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch11}
-\begin{paste}{ugProblemGaloisPageFull11}{ugProblemGaloisPageEmpty11}
-\pastebutton{ugProblemGaloisPageFull11}{\hidepaste}
-\tab{5}\spadcommand{root1 := -coefficient(factor1,0)\free{factor1 }\bound{root1 }}
-\indentrel{3}\begin{verbatim}
-   (11)
-          9       8       7        6         5        4
-       85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
-     + 
-              3          2
-       127050b  + 327000b  + 405200b - 2062400
-  /
-     1339200
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty11}
-\begin{paste}{ugProblemGaloisPageEmpty11}{ugProblemGaloisPagePatch11}
-\pastebutton{ugProblemGaloisPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{root1 := -coefficient(factor1,0)\free{factor1 }\bound{root1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch12}
-\begin{paste}{ugProblemGaloisPageFull12}{ugProblemGaloisPageEmpty12}
-\pastebutton{ugProblemGaloisPageFull12}{\hidepaste}
-\tab{5}\spadcommand{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]\free{algFactors }\bound{roots }}
-\indentrel{3}\begin{verbatim}
-   (12)
-   [
-            9       8       7        6         5        4
-         85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
-       + 
-                3          2
-         127050b  + 327000b  + 405200b - 2062400
-    /
-       1339200
-     ,
-       8       6        4         2
-    17b  - 156b  - 2979b  + 25410b  + 14080
-    ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ,
-                     66960
-
-               8        6         4          2
-         - 143b  + 2100b  + 10485b  - 290550b  + 334800b
-       + 
-         960800
-    /
-       669600
-     ,
-
-               8        6         4          2
-         - 143b  + 2100b  + 10485b  - 290550b  - 334800b
-       + 
-         960800
-    /
-       669600
-     ,
-
-              9       8       7        6         5
-         - 85b  + 116b  + 780b  - 2640b  + 14895b
-       + 
-              4          3          2
-         8820b  - 127050b  + 327000b  - 405200b - 2062400
-    /
-       1339200
-     ]
-                             Type: List AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty12}
-\begin{paste}{ugProblemGaloisPageEmpty12}{ugProblemGaloisPagePatch12}
-\pastebutton{ugProblemGaloisPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{roots := [-coefficient(nthFactor(algFactors,i),0) for i in 1..5]\free{algFactors }\bound{roots }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch13}
-\begin{paste}{ugProblemGaloisPageFull13}{ugProblemGaloisPageEmpty13}
-\pastebutton{ugProblemGaloisPageFull13}{\hidepaste}
-\tab{5}\spadcommand{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)\free{roots }\bound{ais }}
-\indentrel{3}\begin{verbatim}
-   (13)
-            9       8       7        6         5        4
-       - 85b  + 116b  + 780b  - 2640b  + 14895b  + 8820b
-     + 
-                3          2
-       - 127050b  + 327000b  - 405200b - 2062400
-  /
-     1339200
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty13}
-\begin{paste}{ugProblemGaloisPageEmpty13}{ugProblemGaloisPagePatch13}
-\pastebutton{ugProblemGaloisPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{(a1,a2,a3,a4,a5) := (roots.1,roots.2,roots.3,roots.4,roots.5)\free{roots }\bound{ais }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch14}
-\begin{paste}{ugProblemGaloisPageFull14}{ugProblemGaloisPageEmpty14}
-\pastebutton{ugProblemGaloisPageFull14}{\hidepaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a2)\free{ais }}
-\indentrel{3}\begin{verbatim}
-   (14)  0
-                       Type: Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty14}
-\begin{paste}{ugProblemGaloisPageEmpty14}{ugProblemGaloisPagePatch14}
-\pastebutton{ugProblemGaloisPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a2)\free{ais }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch15}
-\begin{paste}{ugProblemGaloisPageFull15}{ugProblemGaloisPageEmpty15}
-\pastebutton{ugProblemGaloisPageFull15}{\hidepaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a3)\free{ais }}
-\indentrel{3}\begin{verbatim}
-   (15)
-             9         8          7          6           5
-       47905b  + 66920b  - 536100b  - 980400b  - 3345075b
-     + 
-                 4            3             2
-       - 5787000b  + 75572250b  + 161688000b  - 184600000b
-     + 
-       - 710912000
-  /
-     4464
-                       Type: Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty15}
-\begin{paste}{ugProblemGaloisPageEmpty15}{ugProblemGaloisPagePatch15}
-\pastebutton{ugProblemGaloisPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a3)\free{ais }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch16}
-\begin{paste}{ugProblemGaloisPageFull16}{ugProblemGaloisPageEmpty16}
-\pastebutton{ugProblemGaloisPageFull16}{\hidepaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a4)\free{ais }}
-\indentrel{3}\begin{verbatim}
-   (16)  0
-                       Type: Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty16}
-\begin{paste}{ugProblemGaloisPageEmpty16}{ugProblemGaloisPagePatch16}
-\pastebutton{ugProblemGaloisPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a4)\free{ais }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch17}
-\begin{paste}{ugProblemGaloisPageFull17}{ugProblemGaloisPageEmpty17}
-\pastebutton{ugProblemGaloisPageFull17}{\hidepaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a5)\free{ais }}
-\indentrel{3}\begin{verbatim}
-             8        6         4          2
-         405b  + 3450b  - 19875b  - 198000b  - 588000
-   (17)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                              31
-                       Type: Polynomial AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty17}
-\begin{paste}{ugProblemGaloisPageEmpty17}{ugProblemGaloisPagePatch17}
-\pastebutton{ugProblemGaloisPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{eval(r,x,a1 - a5)\free{ais }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch18}
-\begin{paste}{ugProblemGaloisPageFull18}{ugProblemGaloisPageEmpty18}
-\pastebutton{ugProblemGaloisPageFull18}{\hidepaste}
-\tab{5}\spadcommand{bb := a1 - a4\free{ais }\bound{bb }}
-\indentrel{3}\begin{verbatim}
-   (18)
-          9       8       7        6         5         4
-       85b  + 402b  - 780b  - 6840b  - 14895b  - 12150b
-     + 
-              3          2
-       127050b  + 908100b  + 1074800b - 3984000
-  /
-     1339200
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty18}
-\begin{paste}{ugProblemGaloisPageEmpty18}{ugProblemGaloisPagePatch18}
-\pastebutton{ugProblemGaloisPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{bb := a1 - a4\free{ais }\bound{bb }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch19}
-\begin{paste}{ugProblemGaloisPageFull19}{ugProblemGaloisPageEmpty19}
-\pastebutton{ugProblemGaloisPageFull19}{\hidepaste}
-\tab{5}\spadcommand{aa1 := subst(a1,beta = bb)\free{beta bb ais }\bound{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (19)
-             8        6         4          2
-       - 143b  + 2100b  + 10485b  - 290550b  + 334800b
-     + 
-       960800
-  /
-     669600
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty19}
-\begin{paste}{ugProblemGaloisPageEmpty19}{ugProblemGaloisPagePatch19}
-\pastebutton{ugProblemGaloisPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{aa1 := subst(a1,beta = bb)\free{beta bb ais }\bound{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch20}
-\begin{paste}{ugProblemGaloisPageFull20}{ugProblemGaloisPageEmpty20}
-\pastebutton{ugProblemGaloisPageFull20}{\hidepaste}
-\tab{5}\spadcommand{aa2 := subst(a2,beta = bb)\free{beta bb ais }\bound{aa2 }}
-\indentrel{3}\begin{verbatim}
-   (20)
-            9       8       7        6         5        4
-       - 85b  + 116b  + 780b  - 2640b  + 14895b  + 8820b
-     + 
-                3          2
-       - 127050b  + 327000b  - 405200b - 2062400
-  /
-     1339200
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty20}
-\begin{paste}{ugProblemGaloisPageEmpty20}{ugProblemGaloisPagePatch20}
-\pastebutton{ugProblemGaloisPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{aa2 := subst(a2,beta = bb)\free{beta bb ais }\bound{aa2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch21}
-\begin{paste}{ugProblemGaloisPageFull21}{ugProblemGaloisPageEmpty21}
-\pastebutton{ugProblemGaloisPageFull21}{\hidepaste}
-\tab{5}\spadcommand{aa3 := subst(a3,beta = bb)\free{beta bb ais }\bound{aa3 }}
-\indentrel{3}\begin{verbatim}
-   (21)
-          9       8       7        6         5        4
-       85b  + 116b  - 780b  - 2640b  - 14895b  + 8820b
-     + 
-              3          2
-       127050b  + 327000b  + 405200b - 2062400
-  /
-     1339200
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty21}
-\begin{paste}{ugProblemGaloisPageEmpty21}{ugProblemGaloisPagePatch21}
-\pastebutton{ugProblemGaloisPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{aa3 := subst(a3,beta = bb)\free{beta bb ais }\bound{aa3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch22}
-\begin{paste}{ugProblemGaloisPageFull22}{ugProblemGaloisPageEmpty22}
-\pastebutton{ugProblemGaloisPageFull22}{\hidepaste}
-\tab{5}\spadcommand{aa4 := subst(a4,beta = bb)\free{beta bb ais }\bound{aa4 }}
-\indentrel{3}\begin{verbatim}
-   (22)
-             8        6         4          2
-       - 143b  + 2100b  + 10485b  - 290550b  - 334800b
-     + 
-       960800
-  /
-     669600
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty22}
-\begin{paste}{ugProblemGaloisPageEmpty22}{ugProblemGaloisPagePatch22}
-\pastebutton{ugProblemGaloisPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{aa4 := subst(a4,beta = bb)\free{beta bb ais }\bound{aa4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch23}
-\begin{paste}{ugProblemGaloisPageFull23}{ugProblemGaloisPageEmpty23}
-\pastebutton{ugProblemGaloisPageFull23}{\hidepaste}
-\tab{5}\spadcommand{aa5 := subst(a5,beta = bb)\free{beta bb ais }\bound{aa5 }}
-\indentrel{3}\begin{verbatim}
-            8       6        4         2
-         17b  - 156b  - 2979b  + 25410b  + 14080
-   (23)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                          66960
-                                  Type: AlgebraicNumber
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty23}
-\begin{paste}{ugProblemGaloisPageEmpty23}{ugProblemGaloisPagePatch23}
-\pastebutton{ugProblemGaloisPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{aa5 := subst(a5,beta = bb)\free{beta bb ais }\bound{aa5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch24}
-\begin{paste}{ugProblemGaloisPageFull24}{ugProblemGaloisPageEmpty24}
-\pastebutton{ugProblemGaloisPageFull24}{\hidepaste}
-\tab{5}\spadcommand{(aa1 = a1) :: Boolean\free{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (24)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty24}
-\begin{paste}{ugProblemGaloisPageEmpty24}{ugProblemGaloisPagePatch24}
-\pastebutton{ugProblemGaloisPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{(aa1 = a1) :: Boolean\free{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch25}
-\begin{paste}{ugProblemGaloisPageFull25}{ugProblemGaloisPageEmpty25}
-\pastebutton{ugProblemGaloisPageFull25}{\hidepaste}
-\tab{5}\spadcommand{(aa1 = a2) :: Boolean\free{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (25)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty25}
-\begin{paste}{ugProblemGaloisPageEmpty25}{ugProblemGaloisPagePatch25}
-\pastebutton{ugProblemGaloisPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{(aa1 = a2) :: Boolean\free{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch26}
-\begin{paste}{ugProblemGaloisPageFull26}{ugProblemGaloisPageEmpty26}
-\pastebutton{ugProblemGaloisPageFull26}{\hidepaste}
-\tab{5}\spadcommand{(aa1 = a3) :: Boolean\free{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (26)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty26}
-\begin{paste}{ugProblemGaloisPageEmpty26}{ugProblemGaloisPagePatch26}
-\pastebutton{ugProblemGaloisPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{(aa1 = a3) :: Boolean\free{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch27}
-\begin{paste}{ugProblemGaloisPageFull27}{ugProblemGaloisPageEmpty27}
-\pastebutton{ugProblemGaloisPageFull27}{\hidepaste}
-\tab{5}\spadcommand{(aa1 = a4) :: Boolean\free{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (27)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty27}
-\begin{paste}{ugProblemGaloisPageEmpty27}{ugProblemGaloisPagePatch27}
-\pastebutton{ugProblemGaloisPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{(aa1 = a4) :: Boolean\free{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPagePatch28}
-\begin{paste}{ugProblemGaloisPageFull28}{ugProblemGaloisPageEmpty28}
-\pastebutton{ugProblemGaloisPageFull28}{\hidepaste}
-\tab{5}\spadcommand{(aa1 = a5) :: Boolean\free{aa1 }}
-\indentrel{3}\begin{verbatim}
-   (28)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemGaloisPageEmpty28}
-\begin{paste}{ugProblemGaloisPageEmpty28}{ugProblemGaloisPagePatch28}
-\pastebutton{ugProblemGaloisPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{(aa1 = a5) :: Boolean\free{aa1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch1}
-\begin{paste}{ugProblemLimitsPageFull1}{ugProblemLimitsPageEmpty1}
-\pastebutton{ugProblemLimitsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\indentrel{3}\begin{verbatim}
-          1
-   (1)  - Ä
-          2
-Type: Union(OrderedCompletion Fraction Polynomial Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty1}
-\begin{paste}{ugProblemLimitsPageEmpty1}{ugProblemLimitsPagePatch1}
-\pastebutton{ugProblemLimitsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch2}
-\begin{paste}{ugProblemLimitsPageFull2}{ugProblemLimitsPageEmpty2}
-\pastebutton{ugProblemLimitsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\indentrel{3}\begin{verbatim}
-   (2)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty2}
-\begin{paste}{ugProblemLimitsPageEmpty2}{ugProblemLimitsPagePatch2}
-\pastebutton{ugProblemLimitsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0,"right")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch3}
-\begin{paste}{ugProblemLimitsPageFull3}{ugProblemLimitsPageEmpty3}
-\pastebutton{ugProblemLimitsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\indentrel{3}\begin{verbatim}
-   (3)  [leftHandLimit= "failed",rightHandLimit= 0]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty3}
-\begin{paste}{ugProblemLimitsPageEmpty3}{ugProblemLimitsPagePatch3}
-\pastebutton{ugProblemLimitsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{limit(x * log(x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch4}
-\begin{paste}{ugProblemLimitsPageFull4}{ugProblemLimitsPageEmpty4}
-\pastebutton{ugProblemLimitsPageFull4}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\indentrel{3}\begin{verbatim}
-   (4)  [leftHandLimit= - 1,rightHandLimit= 1]
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty4}
-\begin{paste}{ugProblemLimitsPageEmpty4}{ugProblemLimitsPagePatch4}
-\pastebutton{ugProblemLimitsPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(y**2)/y,y = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch5}
-\begin{paste}{ugProblemLimitsPageFull5}{ugProblemLimitsPageEmpty5}
-\pastebutton{ugProblemLimitsPageFull5}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\indentrel{3}\begin{verbatim}
-                            1                    1
-   (5)  [leftHandLimit= - ÄÄÄÄ,rightHandLimit= ÄÄÄÄ]
-                           ÚÄ¿                  ÚÄ¿
-                          \³2                  \³2
-Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"),rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty5}
-\begin{paste}{ugProblemLimitsPageEmpty5}{ugProblemLimitsPagePatch5}
-\pastebutton{ugProblemLimitsPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(1 - cos(t))/t,t = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch6}
-\begin{paste}{ugProblemLimitsPageFull6}{ugProblemLimitsPageEmpty6}
-\pastebutton{ugProblemLimitsPageFull6}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-         ÚÄ¿
-        \³3
-   (6)  ÄÄÄÄ
-          5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty6}
-\begin{paste}{ugProblemLimitsPageEmpty6}{ugProblemLimitsPagePatch6}
-\pastebutton{ugProblemLimitsPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch7}
-\begin{paste}{ugProblemLimitsPageFull7}{ugProblemLimitsPageEmpty7}
-\pastebutton{ugProblemLimitsPageFull7}{\hidepaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\indentrel{3}\begin{verbatim}
-           ÚÄ¿
-          \³3
-   (7)  - ÄÄÄÄ
-            5
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty7}
-\begin{paste}{ugProblemLimitsPageEmpty7}{ugProblemLimitsPagePatch7}
-\pastebutton{ugProblemLimitsPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{limit(sqrt(3*x**2 + 1)/(5*x),x = \%minusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch8}
-\begin{paste}{ugProblemLimitsPageFull8}{ugProblemLimitsPageEmpty8}
-\pastebutton{ugProblemLimitsPageFull8}{\hidepaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\indentrel{3}\begin{verbatim}
-        a
-   (8)  Ä
-        b
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty8}
-\begin{paste}{ugProblemLimitsPageEmpty8}{ugProblemLimitsPagePatch8}
-\pastebutton{ugProblemLimitsPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{limit(sinh(a*x)/tan(b*x),x = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch9}
-\begin{paste}{ugProblemLimitsPageFull9}{ugProblemLimitsPageEmpty9}
-\pastebutton{ugProblemLimitsPageFull9}{\hidepaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (9)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty9}
-\begin{paste}{ugProblemLimitsPageEmpty9}{ugProblemLimitsPagePatch9}
-\pastebutton{ugProblemLimitsPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{limit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch10}
-\begin{paste}{ugProblemLimitsPageFull10}{ugProblemLimitsPageEmpty10}
-\pastebutton{ugProblemLimitsPageFull10}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\indentrel{3}\begin{verbatim}
-   (10)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty10}
-\begin{paste}{ugProblemLimitsPageEmpty10}{ugProblemLimitsPagePatch10}
-\pastebutton{ugProblemLimitsPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{complexLimit(z * sin(1/z),z = 0)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch11}
-\begin{paste}{ugProblemLimitsPageFull11}{ugProblemLimitsPageEmpty11}
-\pastebutton{ugProblemLimitsPageFull11}{\hidepaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (11)  - 1
-   Type: OnePointCompletion Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty11}
-\begin{paste}{ugProblemLimitsPageEmpty11}{ugProblemLimitsPagePatch11}
-\pastebutton{ugProblemLimitsPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{complexLimit((2 + z)/(1 - z),z = \%infinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch12}
-\begin{paste}{ugProblemLimitsPageFull12}{ugProblemLimitsPageEmpty12}
-\pastebutton{ugProblemLimitsPageFull12}{\hidepaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\indentrel{3}\begin{verbatim}
-   (12)  0
-  Type: Union(OrderedCompletion Expression Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty12}
-\begin{paste}{ugProblemLimitsPageEmpty12}{ugProblemLimitsPagePatch12}
-\pastebutton{ugProblemLimitsPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{limit(sin(x)/x,x = \%plusInfinity)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPagePatch13}
-\begin{paste}{ugProblemLimitsPageFull13}{ugProblemLimitsPageEmpty13}
-\pastebutton{ugProblemLimitsPageFull13}{\hidepaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\indentrel{3}\begin{verbatim}
-   (13)  "failed"
-                              Type: Union("failed",...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugProblemLimitsPageEmpty13}
-\begin{paste}{ugProblemLimitsPageEmpty13}{ugProblemLimitsPagePatch13}
-\pastebutton{ugProblemLimitsPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{complexLimit(sin(x)/x,x = \%infinity)}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug10.pht b/books/pages/ug10.pht
deleted file mode 100644
index a321137..0000000
--- a/books/pages/ug10.pht
+++ /dev/null
@@ -1,729 +0,0 @@
-\begin{patch}{ugIntProgDrawingPagePatch1}
-\begin{paste}{ugIntProgDrawingPageFull1}{ugIntProgDrawingPageEmpty1}
-\pastebutton{ugIntProgDrawingPageFull1}{\hidepaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,y=0..1)}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage1.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage1}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty1}
-\begin{paste}{ugIntProgDrawingPageEmpty1}{ugIntProgDrawingPagePatch1}
-\pastebutton{ugIntProgDrawingPageEmpty1}{\showpaste}
-\tab{5}\spadgraph{draw(x**2,x=-1..1,y=0..1)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch2}
-\begin{paste}{ugIntProgDrawingPageFull2}{ugIntProgDrawingPageEmpty2}
-\pastebutton{ugIntProgDrawingPageFull2}{\hidepaste}
-\tab{5}\spadgraph{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1)\bound{d1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty2}
-\begin{paste}{ugIntProgDrawingPageEmpty2}{ugIntProgDrawingPagePatch2}
-\pastebutton{ugIntProgDrawingPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{vp := draw(x**2,x=-1..1,y=0..1,var2Steps==1)\bound{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch3}
-\begin{paste}{ugIntProgDrawingPageFull3}{ugIntProgDrawingPageEmpty3}
-\pastebutton{ugIntProgDrawingPageFull3}{\hidepaste}
-\tab{5}\spadcommand{rotate(vp, 0, -90)\bound{d3 }\free{d1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty3}
-\begin{paste}{ugIntProgDrawingPageEmpty3}{ugIntProgDrawingPagePatch3}
-\pastebutton{ugIntProgDrawingPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{rotate(vp, 0, -90)\bound{d3 }\free{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch4}
-\begin{paste}{ugIntProgDrawingPageFull4}{ugIntProgDrawingPageEmpty4}
-\pastebutton{ugIntProgDrawingPageFull4}{\hidepaste}
-\tab{5}\spadcommand{sp := subspace(vp)\bound{d5 }\free{d1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  3-Space with 1 component
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty4}
-\begin{paste}{ugIntProgDrawingPageEmpty4}{ugIntProgDrawingPagePatch4}
-\pastebutton{ugIntProgDrawingPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{sp := subspace(vp)\bound{d5 }\free{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch5}
-\begin{paste}{ugIntProgDrawingPageFull5}{ugIntProgDrawingPageEmpty5}
-\pastebutton{ugIntProgDrawingPageFull5}{\hidepaste}
-\tab{5}\spadgraph{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6 }\free{d5 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogdrawingpage5.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogdrawingpage5}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty5}
-\begin{paste}{ugIntProgDrawingPageEmpty5}{ugIntProgDrawingPagePatch5}
-\pastebutton{ugIntProgDrawingPageEmpty5}{\showpaste}
-\tab{5}\spadgraph{vp := draw(x**3,x=-1..1,y=1..2,var2Steps==1, space==sp)\bound{d6 }\free{d5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch6}
-\begin{paste}{ugIntProgDrawingPageFull6}{ugIntProgDrawingPageEmpty6}
-\pastebutton{ugIntProgDrawingPageFull6}{\hidepaste}
-\tab{5}\spadcommand{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10 }\free{d6 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty6}
-\begin{paste}{ugIntProgDrawingPageEmpty6}{ugIntProgDrawingPagePatch6}
-\pastebutton{ugIntProgDrawingPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{drawStyle(vp,"shade");outlineRender(vp,"on")\bound{d10 }\free{d6 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPagePatch7}
-\begin{paste}{ugIntProgDrawingPageFull7}{ugIntProgDrawingPageEmpty7}
-\pastebutton{ugIntProgDrawingPageFull7}{\hidepaste}
-\tab{5}\spadcommand{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11 }\free{d10 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgDrawingPageEmpty7}
-\begin{paste}{ugIntProgDrawingPageEmpty7}{ugIntProgDrawingPagePatch7}
-\pastebutton{ugIntProgDrawingPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{rotate(vp,20,-60); showRegion(vp,"on")\bound{d11 }\free{d10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgColorArrPagePatch1}
-\begin{paste}{ugIntProgColorArrPageFull1}{ugIntProgColorArrPageEmpty1}
-\pastebutton{ugIntProgColorArrPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)read bouquet\bound{b1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  0.20000000000000001
-                                      Type: DoubleFloat
-   (2)  2.8274333882308138
-                                      Type: DoubleFloat
-                                             Type: Void
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgColorArrPageEmpty1}
-\begin{paste}{ugIntProgColorArrPageEmpty1}{ugIntProgColorArrPagePatch1}
-\pastebutton{ugIntProgColorArrPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)read bouquet\bound{b1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgColorArrPagePatch2}
-\begin{paste}{ugIntProgColorArrPageFull2}{ugIntProgColorArrPageEmpty2}
-\pastebutton{ugIntProgColorArrPageFull2}{\hidepaste}
-\tab{5}\spadgraph{drawBouquet(12,"A Dozen Arrows")\free{b1 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogcolorarrpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogcolorarrpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgColorArrPageEmpty2}
-\begin{paste}{ugIntProgColorArrPageEmpty2}{ugIntProgColorArrPagePatch2}
-\pastebutton{ugIntProgColorArrPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{drawBouquet(12,"A Dozen Arrows")\free{b1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPagePatch1}
-\begin{paste}{ugIntProgCompFunsPageFull1}{ugIntProgCompFunsPageEmpty1}
-\pastebutton{ugIntProgCompFunsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)read vectors\bound{readVI }}
-\indentrel{3}\begin{verbatim}
-   (1)  2.8274333882308138
-                                      Type: DoubleFloat
-   (2)  0.20000000000000001
-                                      Type: DoubleFloat
-                                             Type: Void
-   (4)  6.0
-                                      Type: DoubleFloat
-                                             Type: Void
-   (6)  25
-                                          Type: Integer
-   (7)  25
-                                          Type: Integer
-   (8)  Complex DoubleFloat
-                                           Type: Domain
-   (9)  Segment DoubleFloat
-                                           Type: Domain
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPageEmpty1}
-\begin{paste}{ugIntProgCompFunsPageEmpty1}{ugIntProgCompFunsPagePatch1}
-\pastebutton{ugIntProgCompFunsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)read vectors\bound{readVI }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPagePatch2}
-\begin{paste}{ugIntProgCompFunsPageFull2}{ugIntProgCompFunsPageEmpty2}
-\pastebutton{ugIntProgCompFunsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f(z) == exp(1/z)\bound{e1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPageEmpty2}
-\begin{paste}{ugIntProgCompFunsPageEmpty2}{ugIntProgCompFunsPagePatch2}
-\pastebutton{ugIntProgCompFunsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f(z) == exp(1/z)\bound{e1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPagePatch3}
-\begin{paste}{ugIntProgCompFunsPageFull3}{ugIntProgCompFunsPageEmpty3}
-\pastebutton{ugIntProgCompFunsPageFull3}{\hidepaste}
-\tab{5}\spadgraph{drawComplex(f,-2..2,-2..2)\free{e1 readVI }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogcompfunspage3.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogcompfunspage3}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgCompFunsPageEmpty3}
-\begin{paste}{ugIntProgCompFunsPageEmpty3}{ugIntProgCompFunsPagePatch3}
-\pastebutton{ugIntProgCompFunsPageEmpty3}{\showpaste}
-\tab{5}\spadgraph{drawComplex(f,-2..2,-2..2)\free{e1 readVI }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgVecFieldsPagePatch1}
-\begin{paste}{ugIntProgVecFieldsPageFull1}{ugIntProgVecFieldsPageEmpty1}
-\pastebutton{ugIntProgVecFieldsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)read vectors\bound{readVI }}
-\indentrel{3}\begin{verbatim}
-   (1)  2.8274333882308138
-                                      Type: DoubleFloat
-   (2)  0.20000000000000001
-                                      Type: DoubleFloat
-                                             Type: Void
-   (4)  6.0
-                                      Type: DoubleFloat
-                                             Type: Void
-   (6)  25
-                                          Type: Integer
-   (7)  25
-                                          Type: Integer
-   (8)  Complex DoubleFloat
-                                           Type: Domain
-   (9)  Segment DoubleFloat
-                                           Type: Domain
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgVecFieldsPageEmpty1}
-\begin{paste}{ugIntProgVecFieldsPageEmpty1}{ugIntProgVecFieldsPagePatch1}
-\pastebutton{ugIntProgVecFieldsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)read vectors\bound{readVI }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgVecFieldsPagePatch2}
-\begin{paste}{ugIntProgVecFieldsPageFull2}{ugIntProgVecFieldsPageEmpty2}
-\pastebutton{ugIntProgVecFieldsPageFull2}{\hidepaste}
-\tab{5}\spadgraph{drawComplexVectorField(sin,-2..2,-2..2)\free{readVI }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogvecfieldspage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogvecfieldspage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgVecFieldsPageEmpty2}
-\begin{paste}{ugIntProgVecFieldsPageEmpty2}{ugIntProgVecFieldsPagePatch2}
-\pastebutton{ugIntProgVecFieldsPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{drawComplexVectorField(sin,-2..2,-2..2)\free{readVI }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPagePatch1}
-\begin{paste}{ugIntProgFunctionsPageFull1}{ugIntProgFunctionsPageEmpty1}
-\pastebutton{ugIntProgFunctionsPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(x+1/3)**5\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-         5   5  4   10  3   10  2    5      1
-   (1)  x  + Ä x  + ÄÄ x  + ÄÄ x  + ÄÄ x + ÄÄÄ
-             3       9      27      81     243
-                      Type: Polynomial Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPageEmpty1}
-\begin{paste}{ugIntProgFunctionsPageEmpty1}{ugIntProgFunctionsPagePatch1}
-\pastebutton{ugIntProgFunctionsPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(x+1/3)**5\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPagePatch2}
-\begin{paste}{ugIntProgFunctionsPageFull2}{ugIntProgFunctionsPageEmpty2}
-\pastebutton{ugIntProgFunctionsPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p := compiledFunction(\%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)\bound{p2 }\free{p1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  theMap(MKUCFUNC;unaryFunction;SM;2!0,350)
-                     Type: (DoubleFloat -> DoubleFloat)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPageEmpty2}
-\begin{paste}{ugIntProgFunctionsPageEmpty2}{ugIntProgFunctionsPagePatch2}
-\pastebutton{ugIntProgFunctionsPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p := compiledFunction(\%,x)$MakeUnaryCompiledFunction(POLY FRAC INT,DFLOAT,DFLOAT)\bound{p2 }\free{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPagePatch3}
-\begin{paste}{ugIntProgFunctionsPageFull3}{ugIntProgFunctionsPageEmpty3}
-\pastebutton{ugIntProgFunctionsPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p(sin(1.3))\bound{p3 }\free{p2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  3.668751115057229
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgFunctionsPageEmpty3}
-\begin{paste}{ugIntProgFunctionsPageEmpty3}{ugIntProgFunctionsPagePatch3}
-\pastebutton{ugIntProgFunctionsPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p(sin(1.3))\bound{p3 }\free{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch1}
-\begin{paste}{ugIntProgPLCPageFull1}{ugIntProgPLCPageEmpty1}
-\pastebutton{ugIntProgPLCPageFull1}{\hidepaste}
-\tab{5}\spadcommand{zero := 0.0@DFLOAT\bound{d1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  0.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty1}
-\begin{paste}{ugIntProgPLCPageEmpty1}{ugIntProgPLCPagePatch1}
-\pastebutton{ugIntProgPLCPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{zero := 0.0@DFLOAT\bound{d1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch2}
-\begin{paste}{ugIntProgPLCPageFull2}{ugIntProgPLCPageEmpty2}
-\pastebutton{ugIntProgPLCPageFull2}{\hidepaste}
-\tab{5}\spadcommand{one := 1.0@DFLOAT\bound{d2 }}
-\indentrel{3}\begin{verbatim}
-   (2)  1.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty2}
-\begin{paste}{ugIntProgPLCPageEmpty2}{ugIntProgPLCPagePatch2}
-\pastebutton{ugIntProgPLCPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{one := 1.0@DFLOAT\bound{d2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch3}
-\begin{paste}{ugIntProgPLCPageFull3}{ugIntProgPLCPageEmpty3}
-\pastebutton{ugIntProgPLCPageFull3}{\hidepaste}
-\tab{5}\spadcommand{origin := point [zero,zero,zero,zero]\free{d1 }\bound{d3 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [0.0,0.0,0.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty3}
-\begin{paste}{ugIntProgPLCPageEmpty3}{ugIntProgPLCPagePatch3}
-\pastebutton{ugIntProgPLCPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{origin := point [zero,zero,zero,zero]\free{d1 }\bound{d3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch4}
-\begin{paste}{ugIntProgPLCPageFull4}{ugIntProgPLCPageEmpty4}
-\pastebutton{ugIntProgPLCPageFull4}{\hidepaste}
-\tab{5}\spadcommand{unit := point [one,one,one,zero]\free{d1 d2 }\bound{d4 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [1.0,1.0,1.0,0.0]
-                                Type: Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty4}
-\begin{paste}{ugIntProgPLCPageEmpty4}{ugIntProgPLCPagePatch4}
-\pastebutton{ugIntProgPLCPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{unit := point [one,one,one,zero]\free{d1 d2 }\bound{d4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch5}
-\begin{paste}{ugIntProgPLCPageFull5}{ugIntProgPLCPageEmpty5}
-\pastebutton{ugIntProgPLCPageFull5}{\hidepaste}
-\tab{5}\spadcommand{line := [origin, unit]\free{d3 d4 }\bound{d5 }}
-\indentrel{3}\begin{verbatim}
-   (5)  [[0.0,0.0,0.0,0.0],[1.0,1.0,1.0,0.0]]
-                           Type: List Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty5}
-\begin{paste}{ugIntProgPLCPageEmpty5}{ugIntProgPLCPagePatch5}
-\pastebutton{ugIntProgPLCPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{line := [origin, unit]\free{d3 d4 }\bound{d5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch6}
-\begin{paste}{ugIntProgPLCPageFull6}{ugIntProgPLCPageEmpty6}
-\pastebutton{ugIntProgPLCPageFull6}{\hidepaste}
-\tab{5}\spadcommand{)read arrows\bound{v1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  2.8274333882308138
-                                      Type: DoubleFloat
-   (7)  0.20000000000000001
-                                      Type: DoubleFloat
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty6}
-\begin{paste}{ugIntProgPLCPageEmpty6}{ugIntProgPLCPagePatch6}
-\pastebutton{ugIntProgPLCPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{)read arrows\bound{v1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch7}
-\begin{paste}{ugIntProgPLCPageFull7}{ugIntProgPLCPageEmpty7}
-\pastebutton{ugIntProgPLCPageFull7}{\hidepaste}
-\tab{5}\spadcommand{arrow := makeArrow(origin,unit)\bound{v2 }\free{v1 d3 d4 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [
-     [[0.0,0.0,0.0,0.0], [1.0,1.0,1.0,0.0],
-
-       [0.69134628604607973, 0.842733077659504,
-        0.80000000000000004, 0.0]
-       ]
-     ,
-
-     [[1.0,1.0,1.0,0.0],
-
-       [0.842733077659504, 0.69134628604607973,
-        0.80000000000000004, 0.0]
-       ]
-     ]
-                      Type: List List Point DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty7}
-\begin{paste}{ugIntProgPLCPageEmpty7}{ugIntProgPLCPagePatch7}
-\pastebutton{ugIntProgPLCPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{arrow := makeArrow(origin,unit)\bound{v2 }\free{v1 d3 d4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch8}
-\begin{paste}{ugIntProgPLCPageFull8}{ugIntProgPLCPageEmpty8}
-\pastebutton{ugIntProgPLCPageFull8}{\hidepaste}
-\tab{5}\spadcommand{sp := createThreeSpace()\bound{c1 }}
-\indentrel{3}\begin{verbatim}
-   (10)  3-Space with 0 components
-                           Type: ThreeSpace DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty8}
-\begin{paste}{ugIntProgPLCPageEmpty8}{ugIntProgPLCPagePatch8}
-\pastebutton{ugIntProgPLCPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{sp := createThreeSpace()\bound{c1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch9}
-\begin{paste}{ugIntProgPLCPageFull9}{ugIntProgPLCPageEmpty9}
-\pastebutton{ugIntProgPLCPageFull9}{\hidepaste}
-\tab{5}\spadcommand{for a in arrow repeat sp := curve(sp,a)\bound{v3 }\free{v2 }\free{c1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty9}
-\begin{paste}{ugIntProgPLCPageEmpty9}{ugIntProgPLCPagePatch9}
-\pastebutton{ugIntProgPLCPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{for a in arrow repeat sp := curve(sp,a)\bound{v3 }\free{v2 }\free{c1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch10}
-\begin{paste}{ugIntProgPLCPageFull10}{ugIntProgPLCPageEmpty10}
-\pastebutton{ugIntProgPLCPageFull10}{\hidepaste}
-\tab{5}\spadgraph{vp := makeViewport3D(sp,"Arrow")\bound{v4 }\free{v3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogplcpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogplcpage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty10}
-\begin{paste}{ugIntProgPLCPageEmpty10}{ugIntProgPLCPagePatch10}
-\pastebutton{ugIntProgPLCPageEmpty10}{\showpaste}
-\tab{5}\spadgraph{vp := makeViewport3D(sp,"Arrow")\bound{v4 }\free{v3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPagePatch11}
-\begin{paste}{ugIntProgPLCPageFull11}{ugIntProgPLCPageEmpty11}
-\pastebutton{ugIntProgPLCPageFull11}{\hidepaste}
-\tab{5}\spadcommand{rotate(vp,200,-60)\bound{v5 }\free{v4 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgPLCPageEmpty11}
-\begin{paste}{ugIntProgPLCPageEmpty11}{ugIntProgPLCPagePatch11}
-\pastebutton{ugIntProgPLCPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{rotate(vp,200,-60)\bound{v5 }\free{v4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgRibbonPagePatch1}
-\begin{paste}{ugIntProgRibbonPageFull1}{ugIntProgRibbonPageEmpty1}
-\pastebutton{ugIntProgRibbonPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)read ribbon\bound{s0 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgRibbonPageEmpty1}
-\begin{paste}{ugIntProgRibbonPageEmpty1}{ugIntProgRibbonPagePatch1}
-\pastebutton{ugIntProgRibbonPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)read ribbon\bound{s0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgRibbonPagePatch2}
-\begin{paste}{ugIntProgRibbonPageFull2}{ugIntProgRibbonPageEmpty2}
-\pastebutton{ugIntProgRibbonPageFull2}{\hidepaste}
-\tab{5}\spadgraph{drawRibbons([x**i for i in 1..5],x=-1..1)\free{s0 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprogribbonpage2.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprogribbonpage2}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgRibbonPageEmpty2}
-\begin{paste}{ugIntProgRibbonPageEmpty2}{ugIntProgRibbonPagePatch2}
-\pastebutton{ugIntProgRibbonPageEmpty2}{\showpaste}
-\tab{5}\spadgraph{drawRibbons([x**i for i in 1..5],x=-1..1)\free{s0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch1}
-\begin{paste}{ugIntProgNewtonPageFull1}{ugIntProgNewtonPageEmpty1}
-\pastebutton{ugIntProgNewtonPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)read newton\bound{n1 }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-   (2)
-  MakeUnaryCompiledFunction(Expression Integer,Complex Do
-  ubleFloat,Complex DoubleFloat)
-                                           Type: Domain
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty1}
-\begin{paste}{ugIntProgNewtonPageEmpty1}{ugIntProgNewtonPagePatch1}
-\pastebutton{ugIntProgNewtonPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)read newton\bound{n1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch2}
-\begin{paste}{ugIntProgNewtonPageFull2}{ugIntProgNewtonPageEmpty2}
-\pastebutton{ugIntProgNewtonPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)read vectors\bound{n1a }}
-\indentrel{3}\begin{verbatim}
-   (6)  2.8274333882308138
-                                      Type: DoubleFloat
-   (7)  0.20000000000000001
-                                      Type: DoubleFloat
-                                             Type: Void
-   (9)  6.0
-                                      Type: DoubleFloat
-                                             Type: Void
-   (11)  25
-                                          Type: Integer
-   (12)  25
-                                          Type: Integer
-   (13)  Complex DoubleFloat
-                                           Type: Domain
-   (14)  Segment DoubleFloat
-                                           Type: Domain
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty2}
-\begin{paste}{ugIntProgNewtonPageEmpty2}{ugIntProgNewtonPagePatch2}
-\pastebutton{ugIntProgNewtonPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)read vectors\bound{n1a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch3}
-\begin{paste}{ugIntProgNewtonPageFull3}{ugIntProgNewtonPageEmpty3}
-\pastebutton{ugIntProgNewtonPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f := x**3 - 2\bound{n2 }\free{n1 n1a }}
-\indentrel{3}\begin{verbatim}
-          3
-   (19)  x  - 2
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty3}
-\begin{paste}{ugIntProgNewtonPageEmpty3}{ugIntProgNewtonPagePatch3}
-\pastebutton{ugIntProgNewtonPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f := x**3 - 2\bound{n2 }\free{n1 n1a }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch4}
-\begin{paste}{ugIntProgNewtonPageFull4}{ugIntProgNewtonPageEmpty4}
-\pastebutton{ugIntProgNewtonPageFull4}{\hidepaste}
-\tab{5}\spadcommand{g := newtonStep f\bound{n3 }\free{n2 }}
-\indentrel{3}\begin{verbatim}
-   (20)  theMap(LAMBDA_f3lkwh_704,484)
-     Type: (Complex DoubleFloat -> Complex DoubleFloat)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty4}
-\begin{paste}{ugIntProgNewtonPageEmpty4}{ugIntProgNewtonPagePatch4}
-\pastebutton{ugIntProgNewtonPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{g := newtonStep f\bound{n3 }\free{n2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch5}
-\begin{paste}{ugIntProgNewtonPageFull5}{ugIntProgNewtonPageEmpty5}
-\pastebutton{ugIntProgNewtonPageFull5}{\hidepaste}
-\tab{5}\spadcommand{a := g(1.0 + \%i)\bound{n4 }\free{n3 }}
-\indentrel{3}\begin{verbatim}
-   (21)  0.66666666666666674 + 0.33333333333333337%i
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty5}
-\begin{paste}{ugIntProgNewtonPageEmpty5}{ugIntProgNewtonPagePatch5}
-\pastebutton{ugIntProgNewtonPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{a := g(1.0 + \%i)\bound{n4 }\free{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch6}
-\begin{paste}{ugIntProgNewtonPageFull6}{ugIntProgNewtonPageEmpty6}
-\pastebutton{ugIntProgNewtonPageFull6}{\hidepaste}
-\tab{5}\spadcommand{[(a := g(a)) for i in 1..]\bound{n5 }\free{n4 }}
-\indentrel{3}\begin{verbatim}
-   (22)
-   [1.1644444444444444 - 0.73777777777777775%i,
-    0.92614004697164776 - 0.17463006425584393%i,
-    1.3164444838140228 + 0.15690694583015852%i,
-    1.2462991025761463 + 0.015454763610132094%i,
-    1.2598725296532081 - 0.00033827162059311272%i,
-    1.259920960928212 + 2.6023534653422681e-08%i,
-    1.259921049894879 - 3.6751942591616685e-15%i,
-    1.2599210498948732 - 3.3132158019282496e-29%i,
-    1.2599210498948732 - 5.6051938572992683e-45%i,
-    1.2599210498948732, ...]
-                       Type: Stream Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty6}
-\begin{paste}{ugIntProgNewtonPageEmpty6}{ugIntProgNewtonPagePatch6}
-\pastebutton{ugIntProgNewtonPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{[(a := g(a)) for i in 1..]\bound{n5 }\free{n4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch7}
-\begin{paste}{ugIntProgNewtonPageFull7}{ugIntProgNewtonPageEmpty7}
-\pastebutton{ugIntProgNewtonPageFull7}{\hidepaste}
-\tab{5}\spadcommand{a**3\bound{n6 }\free{n5 }}
-\indentrel{3}\begin{verbatim}
-   (23)  2.0
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty7}
-\begin{paste}{ugIntProgNewtonPageEmpty7}{ugIntProgNewtonPagePatch7}
-\pastebutton{ugIntProgNewtonPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{a**3\bound{n6 }\free{n5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch8}
-\begin{paste}{ugIntProgNewtonPageFull8}{ugIntProgNewtonPageEmpty8}
-\pastebutton{ugIntProgNewtonPageFull8}{\hidepaste}
-\tab{5}\spadcommand{(g*g) (1.0 + \%i)\bound{n10 }\free{n3 }}
-\indentrel{3}\begin{verbatim}
-   (24)  1.1644444444444444 - 0.73777777777777775%i
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty8}
-\begin{paste}{ugIntProgNewtonPageEmpty8}{ugIntProgNewtonPagePatch8}
-\pastebutton{ugIntProgNewtonPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{(g*g) (1.0 + \%i)\bound{n10 }\free{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch9}
-\begin{paste}{ugIntProgNewtonPageFull9}{ugIntProgNewtonPageEmpty9}
-\pastebutton{ugIntProgNewtonPageFull9}{\hidepaste}
-\tab{5}\spadcommand{(g**11) (1.0 + \%i)\bound{n11 }\free{n10 }}
-\indentrel{3}\begin{verbatim}
-   (25)  1.2599210498948732
-                              Type: Complex DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty9}
-\begin{paste}{ugIntProgNewtonPageEmpty9}{ugIntProgNewtonPagePatch9}
-\pastebutton{ugIntProgNewtonPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{(g**11) (1.0 + \%i)\bound{n11 }\free{n10 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch10}
-\begin{paste}{ugIntProgNewtonPageFull10}{ugIntProgNewtonPageEmpty10}
-\pastebutton{ugIntProgNewtonPageFull10}{\hidepaste}
-\tab{5}\spadgraph{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprognewtonpage10.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprognewtonpage10}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty10}
-\begin{paste}{ugIntProgNewtonPageEmpty10}{ugIntProgNewtonPagePatch10}
-\pastebutton{ugIntProgNewtonPageEmpty10}{\showpaste}
-\tab{5}\spadgraph{drawComplexVectorField(g**3,-3..3,-3..3)\free{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch11}
-\begin{paste}{ugIntProgNewtonPageFull11}{ugIntProgNewtonPageEmpty11}
-\pastebutton{ugIntProgNewtonPageFull11}{\hidepaste}
-\tab{5}\spadgraph{drawComplex(g**3,-3..3,-3..3)\free{n3 }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugintprognewtonpage11.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugintprognewtonpage11}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty11}
-\begin{paste}{ugIntProgNewtonPageEmpty11}{ugIntProgNewtonPagePatch11}
-\pastebutton{ugIntProgNewtonPageEmpty11}{\showpaste}
-\tab{5}\spadgraph{drawComplex(g**3,-3..3,-3..3)\free{n3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPagePatch12}
-\begin{paste}{ugIntProgNewtonPageFull12}{ugIntProgNewtonPageEmpty12}
-\pastebutton{ugIntProgNewtonPageFull12}{\hidepaste}
-\tab{5}\spadcommand{all}
-\indentrel{3}\begin{verbatim}
-   (28)  all
-                                     Type: Variable all
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugIntProgNewtonPageEmpty12}
-\begin{paste}{ugIntProgNewtonPageEmpty12}{ugIntProgNewtonPagePatch12}
-\pastebutton{ugIntProgNewtonPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{all}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug11.pht b/books/pages/ug11.pht
deleted file mode 100644
index aaa7946..0000000
--- a/books/pages/ug11.pht
+++ /dev/null
@@ -1,356 +0,0 @@
-\begin{patch}{ugPackagesPackagesPagePatch1}
-\begin{paste}{ugPackagesPackagesPageFull1}{ugPackagesPackagesPageEmpty1}
-\pastebutton{ugPackagesPackagesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)compile drawpak}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty1}
-\begin{paste}{ugPackagesPackagesPageEmpty1}{ugPackagesPackagesPagePatch1}
-\pastebutton{ugPackagesPackagesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)compile drawpak}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch2}
-\begin{paste}{ugPackagesPackagesPageFull2}{ugPackagesPackagesPageEmpty2}
-\pastebutton{ugPackagesPackagesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)expose DRAWCX\bound{dp }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty2}
-\begin{paste}{ugPackagesPackagesPageEmpty2}{ugPackagesPackagesPagePatch2}
-\pastebutton{ugPackagesPackagesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)expose DRAWCX\bound{dp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch3}
-\begin{paste}{ugPackagesPackagesPageFull3}{ugPackagesPackagesPageEmpty3}
-\pastebutton{ugPackagesPackagesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{setRealSteps 51\free{dp }\bound{srs }}
-\indentrel{3}\begin{verbatim}
-   (1)  51
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty3}
-\begin{paste}{ugPackagesPackagesPageEmpty3}{ugPackagesPackagesPagePatch3}
-\pastebutton{ugPackagesPackagesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{setRealSteps 51\free{dp }\bound{srs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch4}
-\begin{paste}{ugPackagesPackagesPageFull4}{ugPackagesPackagesPageEmpty4}
-\pastebutton{ugPackagesPackagesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{setImagSteps 51\free{dp }\bound{scs }}
-\indentrel{3}\begin{verbatim}
-   (2)  51
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty4}
-\begin{paste}{ugPackagesPackagesPageEmpty4}{ugPackagesPackagesPagePatch4}
-\pastebutton{ugPackagesPackagesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{setImagSteps 51\free{dp }\bound{scs }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch5}
-\begin{paste}{ugPackagesPackagesPageFull5}{ugPackagesPackagesPageEmpty5}
-\pastebutton{ugPackagesPackagesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{f(z) == Gamma(z)\bound{f }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty5}
-\begin{paste}{ugPackagesPackagesPageEmpty5}{ugPackagesPackagesPagePatch5}
-\pastebutton{ugPackagesPackagesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{f(z) == Gamma(z)\bound{f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch6}
-\begin{paste}{ugPackagesPackagesPageFull6}{ugPackagesPackagesPageEmpty6}
-\pastebutton{ugPackagesPackagesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{setClipValue 7}
-\indentrel{3}\begin{verbatim}
-   (4)  7.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty6}
-\begin{paste}{ugPackagesPackagesPageEmpty6}{ugPackagesPackagesPagePatch6}
-\pastebutton{ugPackagesPackagesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{setClipValue 7}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPagePatch7}
-\begin{paste}{ugPackagesPackagesPageFull7}{ugPackagesPackagesPageEmpty7}
-\pastebutton{ugPackagesPackagesPageFull7}{\hidepaste}
-\tab{5}\spadgraph{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false)\free{srs scs f }}
-\center{\unixcommand{\inputimage{\env{AXIOM}/doc/viewports/ugpackagespackagespage7.view/image}}{viewalone\space{1} \env{AXIOM}/doc/viewports/ugpackagespackagespage7}}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesPackagesPageEmpty7}
-\begin{paste}{ugPackagesPackagesPageEmpty7}{ugPackagesPackagesPagePatch7}
-\pastebutton{ugPackagesPackagesPageEmpty7}{\showpaste}
-\tab{5}\spadgraph{drawComplex(f,-\%pi..\%pi,-\%pi..\%pi, false)\free{srs scs f }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch1}
-\begin{paste}{ugPackagesCompilingPageFull1}{ugPackagesCompilingPageEmpty1}
-\pastebutton{ugPackagesCompilingPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)expose SORTPAK}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty1}
-\begin{paste}{ugPackagesCompilingPageEmpty1}{ugPackagesCompilingPagePatch1}
-\pastebutton{ugPackagesCompilingPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)expose SORTPAK}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch2}
-\begin{paste}{ugPackagesCompilingPageFull2}{ugPackagesCompilingPageEmpty2}
-\pastebutton{ugPackagesCompilingPageFull2}{\hidepaste}
-\tab{5}\spadcommand{l := [1,7,4,2,11,-7,3,2]}
-\indentrel{3}\begin{verbatim}
-   (1)  [1,7,4,2,11,- 7,3,2]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty2}
-\begin{paste}{ugPackagesCompilingPageEmpty2}{ugPackagesCompilingPagePatch2}
-\pastebutton{ugPackagesCompilingPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{l := [1,7,4,2,11,-7,3,2]}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch3}
-\begin{paste}{ugPackagesCompilingPageFull3}{ugPackagesCompilingPageEmpty3}
-\pastebutton{ugPackagesCompilingPageFull3}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort!(l)}
-\indentrel{3}\begin{verbatim}
-   (2)  [- 7,1,2,2,3,4,7,11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty3}
-\begin{paste}{ugPackagesCompilingPageEmpty3}{ugPackagesCompilingPagePatch3}
-\pastebutton{ugPackagesCompilingPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{bubbleSort!(l)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch4}
-\begin{paste}{ugPackagesCompilingPageFull4}{ugPackagesCompilingPageEmpty4}
-\pastebutton{ugPackagesCompilingPageFull4}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort!(l,(x,y) +-> x > y)}
-\indentrel{3}\begin{verbatim}
-   (3)  [11,7,4,3,2,2,1,- 7]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty4}
-\begin{paste}{ugPackagesCompilingPageEmpty4}{ugPackagesCompilingPagePatch4}
-\pastebutton{ugPackagesCompilingPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{bubbleSort!(l,(x,y) +-> x > y)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch5}
-\begin{paste}{ugPackagesCompilingPageFull5}{ugPackagesCompilingPageEmpty5}
-\pastebutton{ugPackagesCompilingPageFull5}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort!(l, <$Integer)}
-\indentrel{3}\begin{verbatim}
-   (4)  [- 7,1,2,2,3,4,7,11]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty5}
-\begin{paste}{ugPackagesCompilingPageEmpty5}{ugPackagesCompilingPagePatch5}
-\pastebutton{ugPackagesCompilingPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{bubbleSort!(l, <$Integer)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch6}
-\begin{paste}{ugPackagesCompilingPageFull6}{ugPackagesCompilingPageEmpty6}
-\pastebutton{ugPackagesCompilingPageFull6}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort! "Mathematical Sciences"}
-\indentrel{3}\begin{verbatim}
-   (5)  " MSaaaccceeehiilmnstt"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty6}
-\begin{paste}{ugPackagesCompilingPageEmpty6}{ugPackagesCompilingPagePatch6}
-\pastebutton{ugPackagesCompilingPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{bubbleSort! "Mathematical Sciences"}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch7}
-\begin{paste}{ugPackagesCompilingPageFull7}{ugPackagesCompilingPageEmpty7}
-\pastebutton{ugPackagesCompilingPageFull7}{\hidepaste}
-\tab{5}\spadcommand{false < true}
-\indentrel{3}\begin{verbatim}
-   (6)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty7}
-\begin{paste}{ugPackagesCompilingPageEmpty7}{ugPackagesCompilingPagePatch7}
-\pastebutton{ugPackagesCompilingPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{false < true}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch8}
-\begin{paste}{ugPackagesCompilingPageFull8}{ugPackagesCompilingPageEmpty8}
-\pastebutton{ugPackagesCompilingPageFull8}{\hidepaste}
-\tab{5}\spadcommand{u : Bits := new(10,true)}
-\indentrel{3}\begin{verbatim}
-   (7)  "1111111111"
-                                             Type: Bits
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty8}
-\begin{paste}{ugPackagesCompilingPageEmpty8}{ugPackagesCompilingPagePatch8}
-\pastebutton{ugPackagesCompilingPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{u : Bits := new(10,true)}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch9}
-\begin{paste}{ugPackagesCompilingPageFull9}{ugPackagesCompilingPageEmpty9}
-\pastebutton{ugPackagesCompilingPageFull9}{\hidepaste}
-\tab{5}\spadcommand{u(3..5) := false; u}
-\indentrel{3}\begin{verbatim}
-   (8)  "1100011111"
-                                             Type: Bits
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty9}
-\begin{paste}{ugPackagesCompilingPageEmpty9}{ugPackagesCompilingPagePatch9}
-\pastebutton{ugPackagesCompilingPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{u(3..5) := false; u}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch10}
-\begin{paste}{ugPackagesCompilingPageFull10}{ugPackagesCompilingPageEmpty10}
-\pastebutton{ugPackagesCompilingPageFull10}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort! u}
-\indentrel{3}\begin{verbatim}
-   (9)  "0001111111"
-                                             Type: Bits
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty10}
-\begin{paste}{ugPackagesCompilingPageEmpty10}{ugPackagesCompilingPagePatch10}
-\pastebutton{ugPackagesCompilingPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{bubbleSort! u}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch11}
-\begin{paste}{ugPackagesCompilingPageFull11}{ugPackagesCompilingPageEmpty11}
-\pastebutton{ugPackagesCompilingPageFull11}{\hidepaste}
-\tab{5}\spadcommand{t : EqTable(Integer,String) := table()}
-\indentrel{3}\begin{verbatim}
-   (10)  table()
-                          Type: EqTable(Integer,String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty11}
-\begin{paste}{ugPackagesCompilingPageEmpty11}{ugPackagesCompilingPagePatch11}
-\pastebutton{ugPackagesCompilingPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{t : EqTable(Integer,String) := table()}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch12}
-\begin{paste}{ugPackagesCompilingPageFull12}{ugPackagesCompilingPageEmpty12}
-\pastebutton{ugPackagesCompilingPageFull12}{\hidepaste}
-\tab{5}\spadcommand{t.1 := "robert"}
-\indentrel{3}\begin{verbatim}
-   (11)  "robert"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty12}
-\begin{paste}{ugPackagesCompilingPageEmpty12}{ugPackagesCompilingPagePatch12}
-\pastebutton{ugPackagesCompilingPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{t.1 := "robert"}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch13}
-\begin{paste}{ugPackagesCompilingPageFull13}{ugPackagesCompilingPageEmpty13}
-\pastebutton{ugPackagesCompilingPageFull13}{\hidepaste}
-\tab{5}\spadcommand{t.2 := "richard"}
-\indentrel{3}\begin{verbatim}
-   (12)  "richard"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty13}
-\begin{paste}{ugPackagesCompilingPageEmpty13}{ugPackagesCompilingPagePatch13}
-\pastebutton{ugPackagesCompilingPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{t.2 := "richard"}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch14}
-\begin{paste}{ugPackagesCompilingPageFull14}{ugPackagesCompilingPageEmpty14}
-\pastebutton{ugPackagesCompilingPageFull14}{\hidepaste}
-\tab{5}\spadcommand{t}
-\indentrel{3}\begin{verbatim}
-   (13)  table(2= "richard",1= "robert")
-                          Type: EqTable(Integer,String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty14}
-\begin{paste}{ugPackagesCompilingPageEmpty14}{ugPackagesCompilingPagePatch14}
-\pastebutton{ugPackagesCompilingPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{t}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPagePatch15}
-\begin{paste}{ugPackagesCompilingPageFull15}{ugPackagesCompilingPageEmpty15}
-\pastebutton{ugPackagesCompilingPageFull15}{\hidepaste}
-\tab{5}\spadcommand{bubbleSort! t}
-\indentrel{3}\begin{verbatim}
-   (14)  table(2= "robert",1= "richard")
-                          Type: EqTable(Integer,String)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesCompilingPageEmpty15}
-\begin{paste}{ugPackagesCompilingPageEmpty15}{ugPackagesCompilingPagePatch15}
-\pastebutton{ugPackagesCompilingPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{bubbleSort! t}
-\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesHowPagePatch1}
-\begin{paste}{ugPackagesHowPageFull1}{ugPackagesHowPageEmpty1}
-\pastebutton{ugPackagesHowPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)display op bubbleSort!}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugPackagesHowPageEmpty1}
-\begin{paste}{ugPackagesHowPageEmpty1}{ugPackagesHowPagePatch1}
-\pastebutton{ugPackagesHowPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)display op bubbleSort!}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug12.pht b/books/pages/ug12.pht
deleted file mode 100644
index 118e4a5..0000000
--- a/books/pages/ug12.pht
+++ /dev/null
@@ -1,32 +0,0 @@
-\begin{patch}{ugCategoriesAttributesPagePatch1}
-\begin{paste}{ugCategoriesAttributesPageFull1}{ugCategoriesAttributesPageEmpty1}
-\pastebutton{ugCategoriesAttributesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Polynomial Integer has commutative("*")}
-\indentrel{3}\begin{verbatim}
-   (1)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugCategoriesAttributesPageEmpty1}
-\begin{paste}{ugCategoriesAttributesPageEmpty1}{ugCategoriesAttributesPagePatch1}
-\pastebutton{ugCategoriesAttributesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Polynomial Integer has commutative("*")}
-\end{paste}\end{patch}
-
-\begin{patch}{ugCategoriesAttributesPagePatch2}
-\begin{paste}{ugCategoriesAttributesPageFull2}{ugCategoriesAttributesPageEmpty2}
-\pastebutton{ugCategoriesAttributesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{Matrix Integer has commutative("*")}
-\indentrel{3}\begin{verbatim}
-   (2)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugCategoriesAttributesPageEmpty2}
-\begin{paste}{ugCategoriesAttributesPageEmpty2}{ugCategoriesAttributesPagePatch2}
-\pastebutton{ugCategoriesAttributesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{Matrix Integer has commutative("*")}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug13.pht b/books/pages/ug13.pht
deleted file mode 100644
index aa8f34e..0000000
--- a/books/pages/ug13.pht
+++ /dev/null
@@ -1,673 +0,0 @@
-\begin{patch}{ugDomainsExamplesPagePatch1}
-\begin{paste}{ugDomainsExamplesPageFull1}{ugDomainsExamplesPageEmpty1}
-\pastebutton{ugDomainsExamplesPageFull1}{\hidepaste}
-\tab{5}\spadcommand{ks := getDatabase "k"\bound{q1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  1067
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty1}
-\begin{paste}{ugDomainsExamplesPageEmpty1}{ugDomainsExamplesPagePatch1}
-\pastebutton{ugDomainsExamplesPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ks := getDatabase "k"\bound{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch2}
-\begin{paste}{ugDomainsExamplesPageFull2}{ugDomainsExamplesPageEmpty2}
-\pastebutton{ugDomainsExamplesPageFull2}{\hidepaste}
-\tab{5}\spadcommand{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3 }\free{q1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  [205,393,469]
-                          Type: List Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty2}
-\begin{paste}{ugDomainsExamplesPageEmpty2}{ugDomainsExamplesPagePatch2}
-\pastebutton{ugDomainsExamplesPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{[ks.(kind=k) for k in ["c","d","p"]]\bound{q3 }\free{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch3}
-\begin{paste}{ugDomainsExamplesPageFull3}{ugDomainsExamplesPageEmpty3}
-\pastebutton{ugDomainsExamplesPageFull3}{\hidepaste}
-\tab{5}\spadcommand{elt(ks.(kind="d").(nargs="0"),name)\bound{q4 }\free{q1 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   ["AlgebraicNumber", "AnonymousFunction", "Any",
-    "AttributeButtons", "BasicFunctions",
-    "BasicOperator", "BinaryExpansion", "BinaryFile",
-    "Bits", "Boolean", "CardinalNumber",
-    "CharacterClass", "Character", "Color", "Commutator",
-    "DecimalExpansion", "DoubleFloat", "DrawOption",
-    "Exit", "ExtAlgBasis", "FileName", "Float",
-    "FortranCode", "FortranScalarType",
-    "FortranTemplate", "FortranType", "GraphImage",
-    "HexadecimalExpansion", "IVBaseColor", "IVBasicNode",
-    "IVCoordinate3", "IVCoordinate4", "IVFaceSet",
-    "IVField", "IVGroup", "IVIndexedLineSet",
-    "IVNodeConnection", "IVNodeObject", "IVPointSet",
-    "IVQuadMesh", "IVSeparator", "IVSimpleInnerNode",
-    "IVUtilities", "IVValue", "IndexCard",
-    "InnerAlgebraicNumber", "InputForm", "Integer",
-    "IntegrationFunctionsTable", "InventorDataSink",
-    "InventorRenderPackage", "InventorViewPort",
-    "Library", "MachineComplex", "MachineFloat",
-    "MachineInteger",
-    "NagDiscreteFourierTransformInterfacePackage",
-    "NagEigenInterfacePackage",
-    "NagOptimisationInterfacePackage",
-    "NagQuadratureInterfacePackage", "NagResultChecks",
-    "NagSpecialFunctionsInterfacePackage",
-    "NonNegativeInteger", "None",
-    "NumericalIntegrationProblem", "NumericalODEProblem",
-    "NumericalOptimizationProblem",
-    "NumericalPDEProblem", "ODEIntensityFunctionsTable",
-    "OrdSetInts", "OutputForm", "Palette", "Partition",
-    "Pi", "PlaneAlgebraicCurvePlot", "Plot3D", "Plot",
-    "PositiveInteger", "QueryEquation", "RenderTools",
-    "Result", "RomanNumeral", "RoutinesTable",
-    "SExpression", "ScriptFormulaFormat",
-    "SingleInteger", "SingletonAsOrderedSet", "String",
-    "SubSpaceComponentProperty", "Switch", "SymbolTable",
-    "Symbol", "TexFormat", "TextFile", "TheSymbolTable",
-    "ThreeDimensionalViewport", "Timer",
-    "TwoDimensionalViewport", "Void",
-    "d01TransformFunctionType", "d01ajfAnnaType",
-    "d01akfAnnaType", "d01alfAnnaType", "d01amfAnnaType",
-    "d01anfAnnaType", "d01apfAnnaType", "d01aqfAnnaType",
-    "d01asfAnnaType", "d01fcfAnnaType", "d01gbfAnnaType",
-    "d02bbfAnnaType", "d02bhfAnnaType", "d02cjfAnnaType",
-    "d02ejfAnnaType", "d03eefAnnaType", "d03fafAnnaType",
-    "e04dgfAnnaType", "e04fdfAnnaType", "e04gcfAnnaType",
-    "e04jafAnnaType", "e04mbfAnnaType", "e04nafAnnaType",
-    "e04ucfAnnaType"]
-                                  Type: DataList String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty3}
-\begin{paste}{ugDomainsExamplesPageEmpty3}{ugDomainsExamplesPagePatch3}
-\pastebutton{ugDomainsExamplesPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{elt(ks.(kind="d").(nargs="0"),name)\bound{q4 }\free{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch4}
-\begin{paste}{ugDomainsExamplesPageFull4}{ugDomainsExamplesPageEmpty4}
-\pastebutton{ugDomainsExamplesPageFull4}{\hidepaste}
-\tab{5}\spadcommand{mk := ks.(name="*Matrix*")\bound{q5 }\free{q1 }}
-\indentrel{3}\begin{verbatim}
-   (4)  26
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty4}
-\begin{paste}{ugDomainsExamplesPageEmpty4}{ugDomainsExamplesPagePatch4}
-\pastebutton{ugDomainsExamplesPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{mk := ks.(name="*Matrix*")\bound{q5 }\free{q1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch5}
-\begin{paste}{ugDomainsExamplesPageFull5}{ugDomainsExamplesPageEmpty5}
-\pastebutton{ugDomainsExamplesPageFull5}{\hidepaste}
-\tab{5}\spadcommand{elt(mk.(kind="d"),name)\bound{q6 }\free{q5 }}
-\indentrel{3}\begin{verbatim}
-   (5)
-   ["DenavitHartenbergMatrix",
-    "DirectProductMatrixModule", "IndexedMatrix",
-    "LieSquareMatrix", "Matrix", "RectangularMatrix",
-    "SquareMatrix", "ThreeDimensionalMatrix"]
-                                  Type: DataList String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty5}
-\begin{paste}{ugDomainsExamplesPageEmpty5}{ugDomainsExamplesPagePatch5}
-\pastebutton{ugDomainsExamplesPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{elt(mk.(kind="d"),name)\bound{q6 }\free{q5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch6}
-\begin{paste}{ugDomainsExamplesPageFull6}{ugDomainsExamplesPageEmpty6}
-\pastebutton{ugDomainsExamplesPageFull6}{\hidepaste}
-\tab{5}\spadcommand{o := getDatabase "o"\bound{o1 }}
-\indentrel{3}\begin{verbatim}
-   (6)  6315
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty6}
-\begin{paste}{ugDomainsExamplesPageEmpty6}{ugDomainsExamplesPagePatch6}
-\pastebutton{ugDomainsExamplesPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{o := getDatabase "o"\bound{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch7}
-\begin{paste}{ugDomainsExamplesPageFull7}{ugDomainsExamplesPageEmpty7}
-\pastebutton{ugDomainsExamplesPageFull7}{\hidepaste}
-\tab{5}\spadcommand{[o.(kind=k) for k in ["c","d","p"]]\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1646,2040,2629]
-                          Type: List Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty7}
-\begin{paste}{ugDomainsExamplesPageEmpty7}{ugDomainsExamplesPagePatch7}
-\pastebutton{ugDomainsExamplesPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{[o.(kind=k) for k in ["c","d","p"]]\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch8}
-\begin{paste}{ugDomainsExamplesPageFull8}{ugDomainsExamplesPageEmpty8}
-\pastebutton{ugDomainsExamplesPageFull8}{\hidepaste}
-\tab{5}\spadcommand{eigens := o.(name="*eigen*")\bound{eigens }\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (8)  4
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty8}
-\begin{paste}{ugDomainsExamplesPageEmpty8}{ugDomainsExamplesPagePatch8}
-\pastebutton{ugDomainsExamplesPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{eigens := o.(name="*eigen*")\bound{eigens }\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch9}
-\begin{paste}{ugDomainsExamplesPageFull9}{ugDomainsExamplesPageEmpty9}
-\pastebutton{ugDomainsExamplesPageFull9}{\hidepaste}
-\tab{5}\spadcommand{elt(eigens,name)\free{eigens }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   ["eigenMatrix", "eigenvalues", "eigenvector",
-    "eigenvectors"]
-                                  Type: DataList String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty9}
-\begin{paste}{ugDomainsExamplesPageEmpty9}{ugDomainsExamplesPagePatch9}
-\pastebutton{ugDomainsExamplesPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{elt(eigens,name)\free{eigens }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch10}
-\begin{paste}{ugDomainsExamplesPageFull10}{ugDomainsExamplesPageEmpty10}
-\pastebutton{ugDomainsExamplesPageFull10}{\hidepaste}
-\tab{5}\spadcommand{elt(elt(elt(eigens,origin),sort),unique)\free{eigens }}
-\indentrel{3}\begin{verbatim}
-   (10)  ["EigenPackage","RadicalEigenPackage"]
-                                  Type: DataList String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty10}
-\begin{paste}{ugDomainsExamplesPageEmpty10}{ugDomainsExamplesPagePatch10}
-\pastebutton{ugDomainsExamplesPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{elt(elt(elt(eigens,origin),sort),unique)\free{eigens }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch11}
-\begin{paste}{ugDomainsExamplesPageFull11}{ugDomainsExamplesPageEmpty11}
-\pastebutton{ugDomainsExamplesPageFull11}{\hidepaste}
-\tab{5}\spadcommand{tm := o.(type="*Matrix*")\bound{x10 }\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (11)  353
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty11}
-\begin{paste}{ugDomainsExamplesPageEmpty11}{ugDomainsExamplesPagePatch11}
-\pastebutton{ugDomainsExamplesPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{tm := o.(type="*Matrix*")\bound{x10 }\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch12}
-\begin{paste}{ugDomainsExamplesPageFull12}{ugDomainsExamplesPageEmpty12}
-\pastebutton{ugDomainsExamplesPageFull12}{\hidepaste}
-\tab{5}\spadcommand{fm := o.(origin="*Matrix*")\bound{x11 }\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (12)  192
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty12}
-\begin{paste}{ugDomainsExamplesPageEmpty12}{ugDomainsExamplesPagePatch12}
-\pastebutton{ugDomainsExamplesPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{fm := o.(origin="*Matrix*")\bound{x11 }\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch13}
-\begin{paste}{ugDomainsExamplesPageFull13}{ugDomainsExamplesPageEmpty13}
-\pastebutton{ugDomainsExamplesPageFull13}{\hidepaste}
-\tab{5}\spadcommand{fm-tm\bound{x12 }\free{x10 x11 }}
-\indentrel{3}\begin{verbatim}
-   (13)  146
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty13}
-\begin{paste}{ugDomainsExamplesPageEmpty13}{ugDomainsExamplesPagePatch13}
-\pastebutton{ugDomainsExamplesPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{fm-tm\bound{x12 }\free{x10 x11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch14}
-\begin{paste}{ugDomainsExamplesPageFull14}{ugDomainsExamplesPageEmpty14}
-\pastebutton{ugDomainsExamplesPageFull14}{\hidepaste}
-\tab{5}\spadcommand{fullDisplay(fm-\%)\bound{x13 }\free{x12 }}
-\indentrel{3}\begin{verbatim}
-   ** : (Matrix(R),NonNegativeInteger)->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   clearDenominator : (Matrix(Q))->Matrix(R)
-      from MatrixCommonDenominator(R,Q)
-   coerceP
-      : (Vector(Matrix(R)))->Vector(Matrix(Polynomial(R)))
-      from CoerceVectorMatrixPackage(R) (unexposed)
-   coerce
-      :
-      (Vector(Matrix(R)))->Vector(Matrix(Fraction(Polynom
-      ial(R))))
-      from CoerceVectorMatrixPackage(R) (unexposed)
-   coerce : (_$)->Matrix(R)
-      from RectangularMatrix(m,n,R) (unexposed)
-   coerce : (_$)->Matrix(R)
-      from SquareMatrix(ndim,R) (unexposed)
-   coerce : (Matrix(MachineFloat))->_$
-      from FortranMatrixCategory
-   commonDenominator : (Matrix(Q))->R
-      from MatrixCommonDenominator(R,Q)
-   copy! : (Matrix(R),Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   f01brf
-      :
-      (Integer,Integer,Integer,Integer,DoubleFloat,Boolea
-      n,Boolean,List(Boolean),Matrix(DoubleFloat),Matrix(
-      Integer),Matrix(Integer),Integer)->Result
-      from NagMatrixOperationsPackage
-   f01bsf
-      :
-      (Integer,Integer,Integer,Matrix(Integer),Matrix(Int
-      eger),Matrix(Integer),Matrix(Integer),Boolean,Doubl
-      eFloat,Boolean,Matrix(Integer),Matrix(DoubleFloat),
-      Integer)->Result
-      from NagMatrixOperationsPackage
-   f01maf
-      :
-      (Integer,Integer,Integer,Integer,List(Boolean),Matr
-      ix(DoubleFloat),Matrix(Integer),Matrix(Integer),Dou
-      bleFloat,DoubleFloat,Integer)->Result
-      from NagMatrixOperationsPackage
-   f01mcf
-      :
-      (Integer,Matrix(DoubleFloat),Integer,Matrix(Integer
-      ),Integer)->Result
-      from NagMatrixOperationsPackage
-   f01qcf
-      :
-      (Integer,Integer,Integer,Matrix(DoubleFloat),Intege
-      r)->Result
-      from NagMatrixOperationsPackage
-   f01qdf
-      :
-      (String,String,Integer,Integer,Matrix(DoubleFloat),
-      Integer,Matrix(DoubleFloat),Integer,Integer,Matrix(
-      DoubleFloat),Integer)->Result
-      from NagMatrixOperationsPackage
-   f01qef
-      :
-      (String,Integer,Integer,Integer,Integer,Matrix(Doub
-      leFloat),Matrix(DoubleFloat),Integer)->Result
-      from NagMatrixOperationsPackage
-   f01rcf
-      :
-      (Integer,Integer,Integer,Matrix(Complex(DoubleFloat
-      )),Integer)->Result
-      from NagMatrixOperationsPackage
-   f01rdf
-      :
-      (String,String,Integer,Integer,Matrix(Complex(Doubl
-      eFloat)),Integer,Matrix(Complex(DoubleFloat)),Integ
-      er,Integer,Matrix(Complex(DoubleFloat)),Integer)->R
-      esult
-      from NagMatrixOperationsPackage
-   f01ref
-      :
-      (String,Integer,Integer,Integer,Integer,Matrix(Comp
-      lex(DoubleFloat)),Matrix(Complex(DoubleFloat)),Inte
-      ger)->Result
-      from NagMatrixOperationsPackage
-   hasSolution? : (Matrix(F),Vector(F))->Boolean
-      from LinearSystemMatrixPackage1(F)
-   leftScalarTimes! : (Matrix(R),R,Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   minus! : (Matrix(R),Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   minus! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   particularSolution
-      : (Matrix(F),Vector(F))->Union(Vector(F),"failed")
-      from LinearSystemMatrixPackage1(F)
-   plus! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   power!
-      :
-      (Matrix(R),Matrix(R),Matrix(R),Matrix(R),NonNegativ
-      eInteger)->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   rank : (Matrix(F),Vector(F))->NonNegativeInteger
-      from LinearSystemMatrixPackage1(F)
-   rectangularMatrix : (Matrix(R))->_$
-      from RectangularMatrix(m,n,R) (unexposed)
-   retractIfCan
-      : (Matrix(Expression(Float)))->Union(_$,"failed")
-      from FortranMatrixFunctionCategory
-   retractIfCan
-      : (Matrix(Expression(Integer)))->Union(_$,"failed")
-      from FortranMatrixFunctionCategory
-   retractIfCan
-      :
-      (Matrix(Fraction(Polynomial(Float))))->Union(_$,"fa
-      iled")
-      from FortranMatrixFunctionCategory
-   retractIfCan
-      :
-      (Matrix(Fraction(Polynomial(Integer))))->Union(_$,"
-      failed")
-      from FortranMatrixFunctionCategory
-   retractIfCan
-      : (Matrix(Polynomial(Float)))->Union(_$,"failed")
-      from FortranMatrixFunctionCategory
-   retractIfCan
-      : (Matrix(Polynomial(Integer)))->Union(_$,"failed")
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Expression(Float)))->_$
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Expression(Integer)))->_$
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Fraction(Polynomial(Float))))->_$
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Fraction(Polynomial(Integer))))->_$
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Polynomial(Float)))->_$
-      from FortranMatrixFunctionCategory
-   retract : (Matrix(Polynomial(Integer)))->_$
-      from FortranMatrixFunctionCategory
-   rightScalarTimes! : (Matrix(R),Matrix(R),R)->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-   solve
-      :
-      (Matrix(F),List(Vector(F)))->List(Record(particular
-      :Union(Vector(F),"failed"),basis:List(Vector(F))))
-      from LinearSystemMatrixPackage1(F)
-   solve
-      :
-      (Matrix(F),Vector(F))->Record(particular:Union(Vect
-      or(F),"failed"),basis:List(Vector(F)))
-      from LinearSystemMatrixPackage1(F)
-   splitDenominator
-      : (Matrix(Q))->Record(num:Matrix(R),den:R)
-      from MatrixCommonDenominator(R,Q)
-   squareMatrix : (Matrix(R))->_$
-      from SquareMatrix(ndim,R) (unexposed)
-   times! : (Matrix(R),Matrix(R),Matrix(R))->Matrix(R)
-      from StorageEfficientMatrixOperations(R) (unexposed)
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty14}
-\begin{paste}{ugDomainsExamplesPageEmpty14}{ugDomainsExamplesPagePatch14}
-\pastebutton{ugDomainsExamplesPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{fullDisplay(fm-\%)\bound{x13 }\free{x12 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch15}
-\begin{paste}{ugDomainsExamplesPageFull15}{ugDomainsExamplesPageEmpty15}
-\pastebutton{ugDomainsExamplesPageFull15}{\hidepaste}
-\tab{5}\spadcommand{m := tm+fm\bound{x14 }\free{x10 x11 }}
-\indentrel{3}\begin{verbatim}
-   (15)  499
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty15}
-\begin{paste}{ugDomainsExamplesPageEmpty15}{ugDomainsExamplesPagePatch15}
-\pastebutton{ugDomainsExamplesPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{m := tm+fm\bound{x14 }\free{x10 x11 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch16}
-\begin{paste}{ugDomainsExamplesPageFull16}{ugDomainsExamplesPageEmpty16}
-\pastebutton{ugDomainsExamplesPageFull16}{\hidepaste}
-\tab{5}\spadcommand{fullDisplay(m, 202, 205)\free{x14 }}
-\indentrel{3}\begin{verbatim}
-   elt : (_$,List(Integer),List(Integer))->_$
-      from MatrixCategory(R,Row,Col)
-   elt : (_$,Integer,Integer,R)->R
-      from RectangularMatrixCategory(m,n,R,Row,Col)
-   elt
-      :
-      (_$,NonNegativeInteger,NonNegativeInteger,NonNegati
-      veInteger)->R
-      from ThreeDimensionalMatrix(R)
-   eval
-      :
-      (Matrix(Expression(DoubleFloat)),List(Symbol),Vecto
-      r(Expression(DoubleFloat)))->Matrix(Expression(Doub
-      leFloat))
-      from d02AgentsPackage
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty16}
-\begin{paste}{ugDomainsExamplesPageEmpty16}{ugDomainsExamplesPagePatch16}
-\pastebutton{ugDomainsExamplesPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{fullDisplay(m, 202, 205)\free{x14 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPagePatch17}
-\begin{paste}{ugDomainsExamplesPageFull17}{ugDomainsExamplesPageEmpty17}
-\pastebutton{ugDomainsExamplesPageFull17}{\hidepaste}
-\tab{5}\spadcommand{elt(elt(elt(m,name),unique),count)\free{x14 }}
-\indentrel{3}\begin{verbatim}
-   (17)  317
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsExamplesPageEmpty17}
-\begin{paste}{ugDomainsExamplesPageEmpty17}{ugDomainsExamplesPagePatch17}
-\pastebutton{ugDomainsExamplesPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{elt(elt(elt(m,name),unique),count)\free{x14 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePagePatch1}
-\begin{paste}{ugDomainsQueryLanguagePageFull1}{ugDomainsQueryLanguagePageEmpty1}
-\pastebutton{ugDomainsQueryLanguagePageFull1}{\hidepaste}
-\tab{5}\spadcommand{ops := getDatabase("o")\bound{o1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  6315
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePageEmpty1}
-\begin{paste}{ugDomainsQueryLanguagePageEmpty1}{ugDomainsQueryLanguagePagePatch1}
-\pastebutton{ugDomainsQueryLanguagePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{ops := getDatabase("o")\bound{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePagePatch2}
-\begin{paste}{ugDomainsQueryLanguagePageFull2}{ugDomainsQueryLanguagePageEmpty2}
-\pastebutton{ugDomainsQueryLanguagePageFull2}{\hidepaste}
-\tab{5}\spadcommand{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2 }\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (2)  3
-                               Type: Database IndexCard
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePageEmpty2}
-\begin{paste}{ugDomainsQueryLanguagePageEmpty2}{ugDomainsQueryLanguagePagePatch2}
-\pastebutton{ugDomainsQueryLanguagePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ops.(name="map").(nargs="3").(type="*Stream*")\bound{o2 }\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePagePatch3}
-\begin{paste}{ugDomainsQueryLanguagePageFull3}{ugDomainsQueryLanguagePageEmpty3}
-\pastebutton{ugDomainsQueryLanguagePageFull3}{\hidepaste}
-\tab{5}\spadcommand{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1 }}
-\indentrel{3}\begin{verbatim}
-   (3)
-   ["InnerMatrixLinearAlgebraFunctions",
-    "MatrixCategory", "MatrixLinearAlgebraFunctions",
-    "SquareMatrixCategory"]
-                                  Type: DataList String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsQueryLanguagePageEmpty3}
-\begin{paste}{ugDomainsQueryLanguagePageEmpty3}{ugDomainsQueryLanguagePagePatch3}
-\pastebutton{ugDomainsQueryLanguagePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{elt(elt(elt(elt(ops,name="determinant"),origin),sort),unique)\free{o1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch1}
-\begin{paste}{ugDomainsDemoPageFull1}{ugDomainsDemoPageEmpty1}
-\pastebutton{ugDomainsDemoPageFull1}{\hidepaste}
-\tab{5}\spadcommand{QF := QuadraticForm(2,Fraction Integer)\bound{x2 }\free{x1 }}
-\indentrel{3}\begin{verbatim}
-   (1)  QuadraticForm(2,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty1}
-\begin{paste}{ugDomainsDemoPageEmpty1}{ugDomainsDemoPagePatch1}
-\pastebutton{ugDomainsDemoPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{QF := QuadraticForm(2,Fraction Integer)\bound{x2 }\free{x1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch2}
-\begin{paste}{ugDomainsDemoPageFull2}{ugDomainsDemoPageEmpty2}
-\pastebutton{ugDomainsDemoPageFull2}{\hidepaste}
-\tab{5}\spadcommand{A := matrix [[-1,1/2],[1/2,1]]\bound{x3 }\free{x2 }}
-\indentrel{3}\begin{verbatim}
-        Ú     1¿
-        ³- 1  Ä³
-        ³     2³
-   (2)  ³      ³
-        ³ 1    ³
-        ³ Ä   1³
-        À 2    Ù
-                          Type: Matrix Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty2}
-\begin{paste}{ugDomainsDemoPageEmpty2}{ugDomainsDemoPagePatch2}
-\pastebutton{ugDomainsDemoPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{A := matrix [[-1,1/2],[1/2,1]]\bound{x3 }\free{x2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch3}
-\begin{paste}{ugDomainsDemoPageFull3}{ugDomainsDemoPageEmpty3}
-\pastebutton{ugDomainsDemoPageFull3}{\hidepaste}
-\tab{5}\spadcommand{q : QF := quadraticForm(A)\bound{x4 }\free{x3 }}
-\indentrel{3}\begin{verbatim}
-        Ú     1¿
-        ³- 1  Ä³
-        ³     2³
-   (3)  ³      ³
-        ³ 1    ³
-        ³ Ä   1³
-        À 2    Ù
-                Type: QuadraticForm(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty3}
-\begin{paste}{ugDomainsDemoPageEmpty3}{ugDomainsDemoPagePatch3}
-\pastebutton{ugDomainsDemoPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{q : QF := quadraticForm(A)\bound{x4 }\free{x3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch4}
-\begin{paste}{ugDomainsDemoPageFull4}{ugDomainsDemoPageEmpty4}
-\pastebutton{ugDomainsDemoPageFull4}{\hidepaste}
-\tab{5}\spadcommand{nrows q\free{x3 }}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty4}
-\begin{paste}{ugDomainsDemoPageEmpty4}{ugDomainsDemoPagePatch4}
-\pastebutton{ugDomainsDemoPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{nrows q\free{x3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch5}
-\begin{paste}{ugDomainsDemoPageFull5}{ugDomainsDemoPageEmpty5}
-\pastebutton{ugDomainsDemoPageFull5}{\hidepaste}
-\tab{5}\spadcommand{v := directProduct([2,-1])$DirectProduct(2,Fraction Integer)\bound{x5 }\free{x4 }}
-\indentrel{3}\begin{verbatim}
-   (4)  [2,- 1]
-                Type: DirectProduct(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty5}
-\begin{paste}{ugDomainsDemoPageEmpty5}{ugDomainsDemoPagePatch5}
-\pastebutton{ugDomainsDemoPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{v := directProduct([2,-1])$DirectProduct(2,Fraction Integer)\bound{x5 }\free{x4 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch6}
-\begin{paste}{ugDomainsDemoPageFull6}{ugDomainsDemoPageEmpty6}
-\pastebutton{ugDomainsDemoPageFull6}{\hidepaste}
-\tab{5}\spadcommand{q.v\free{x5 }}
-\indentrel{3}\begin{verbatim}
-   (5)  - 5
-                                 Type: Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty6}
-\begin{paste}{ugDomainsDemoPageEmpty6}{ugDomainsDemoPagePatch6}
-\pastebutton{ugDomainsDemoPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{q.v\free{x5 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPagePatch7}
-\begin{paste}{ugDomainsDemoPageFull7}{ugDomainsDemoPageEmpty7}
-\pastebutton{ugDomainsDemoPageFull7}{\hidepaste}
-\tab{5}\spadcommand{3*q-q+q\free{x4 }}
-\indentrel{3}\begin{verbatim}
-        Ú     3¿
-        ³- 3  Ä³
-        ³     2³
-   (6)  ³      ³
-        ³ 3    ³
-        ³ Ä   3³
-        À 2    Ù
-                Type: QuadraticForm(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugDomainsDemoPageEmpty7}
-\begin{paste}{ugDomainsDemoPageEmpty7}{ugDomainsDemoPagePatch7}
-\pastebutton{ugDomainsDemoPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{3*q-q+q\free{x4 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/ug15.pht b/books/pages/ug15.pht
deleted file mode 100644
index ffe70e4..0000000
--- a/books/pages/ug15.pht
+++ /dev/null
@@ -1,833 +0,0 @@
-\begin{patch}{ugWhatsNewLanguagePagePatch1}
-\begin{paste}{ugWhatsNewLanguagePageFull1}{ugWhatsNewLanguagePageEmpty1}
-\pastebutton{ugWhatsNewLanguagePageFull1}{\hidepaste}
-\tab{5}\spadcommand{set [1,2,3,4]}
-\indentrel{3}\begin{verbatim}
-   (1)  {1,2,3,4}
-                              Type: Set PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ugWhatsNewLanguagePageEmpty1}
-\begin{paste}{ugWhatsNewLanguagePageEmpty1}{ugWhatsNewLanguagePagePatch1}
-\pastebutton{ugWhatsNewLanguagePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{set [1,2,3,4]}
-\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPagePatch1}
-\begin{paste}{aspSectionPageFull1}{aspSectionPageEmpty1}
-\pastebutton{aspSectionPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)display operation c05adf}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPageEmpty1}
-\begin{paste}{aspSectionPageEmpty1}{aspSectionPagePatch1}
-\pastebutton{aspSectionPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)display operation c05adf}
-\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPagePatch2}
-\begin{paste}{aspSectionPageFull2}{aspSectionPageEmpty2}
-\pastebutton{aspSectionPageFull2}{\hidepaste}
-\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
-\indentrel{3}\begin{verbatim}
-   (1)  sin(X) + M
-                  3,1
-          Type: FortranExpression([X],[M],MachineFloat)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPageEmpty2}
-\begin{paste}{aspSectionPageEmpty2}{aspSectionPagePatch2}
-\pastebutton{aspSectionPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(X)+M[3,1]}
-\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPagePatch3}
-\begin{paste}{aspSectionPageFull3}{aspSectionPageEmpty3}
-\pastebutton{aspSectionPageFull3}{\hidepaste}
-\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
-\indentrel{3}\begin{verbatim}
-   sin(M) + Y
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPageEmpty3}
-\begin{paste}{aspSectionPageEmpty3}{aspSectionPagePatch3}
-\pastebutton{aspSectionPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{f : FortranExpression([X],[M],MachineFloat) := sin(M)+Y}
-\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPagePatch4}
-\begin{paste}{aspSectionPageFull4}{aspSectionPageEmpty4}
-\pastebutton{aspSectionPageFull4}{\hidepaste}
-\tab{5}\spadcommand{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result}
-\indentrel{3}\begin{verbatim}
-   (2)  1.0
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{aspSectionPageEmpty4}
-\begin{paste}{aspSectionPageEmpty4}{aspSectionPagePatch4}
-\pastebutton{aspSectionPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{d01ajf(-1.0, 1.0, 0.0, 1.0e-5, 800, 200, -1, cond(LT(X,0), assign(F,-X), assign(F,X))) result}
-\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePagePatch1}
-\begin{paste}{nagLinkUsagePageFull1}{nagLinkUsagePageEmpty1}
-\pastebutton{nagLinkUsagePageFull1}{\hidepaste}
-\tab{5}\spadcommand{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer }}
-\indentrel{3}\begin{verbatim}
-   (1)  [ifail: Integer,x: DoubleFloat]
-                                           Type: Result
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePageEmpty1}
-\begin{paste}{nagLinkUsagePageEmpty1}{nagLinkUsagePagePatch1}
-\pastebutton{nagLinkUsagePageEmpty1}{\showpaste}
-\tab{5}\spadcommand{answer:=c05adf(3.0,4.0,1.0e-5,0.0,-1,sin(X)::ASP1(F))\bound{answer }}
-\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePagePatch2}
-\begin{paste}{nagLinkUsagePageFull2}{nagLinkUsagePageEmpty2}
-\pastebutton{nagLinkUsagePageFull2}{\hidepaste}
-\tab{5}\spadcommand{answer . x\free{answer }}
-\indentrel{3}\begin{verbatim}
-   (2)  3.14159265545896
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePageEmpty2}
-\begin{paste}{nagLinkUsagePageEmpty2}{nagLinkUsagePagePatch2}
-\pastebutton{nagLinkUsagePageEmpty2}{\showpaste}
-\tab{5}\spadcommand{answer . x\free{answer }}
-\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePagePatch3}
-\begin{paste}{nagLinkUsagePageFull3}{nagLinkUsagePageEmpty3}
-\pastebutton{nagLinkUsagePageFull3}{\hidepaste}
-\tab{5}\spadcommand{answer . ifail\free{answer }}
-\indentrel{3}\begin{verbatim}
-   (3)  0
-                                          Type: Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePageEmpty3}
-\begin{paste}{nagLinkUsagePageEmpty3}{nagLinkUsagePagePatch3}
-\pastebutton{nagLinkUsagePageEmpty3}{\showpaste}
-\tab{5}\spadcommand{answer . ifail\free{answer }}
-\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePagePatch4}
-\begin{paste}{nagLinkUsagePageFull4}{nagLinkUsagePageEmpty4}
-\pastebutton{nagLinkUsagePageFull4}{\hidepaste}
-\tab{5}\spadcommand{answer "x"\free{answer }}
-\indentrel{3}\begin{verbatim}
-   (4)  3.14159265545896
-                                      Type: DoubleFloat
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePageEmpty4}
-\begin{paste}{nagLinkUsagePageEmpty4}{nagLinkUsagePagePatch4}
-\pastebutton{nagLinkUsagePageEmpty4}{\showpaste}
-\tab{5}\spadcommand{answer "x"\free{answer }}
-\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePagePatch5}
-\begin{paste}{nagLinkUsagePageFull5}{nagLinkUsagePageEmpty5}
-\pastebutton{nagLinkUsagePageFull5}{\hidepaste}
-\tab{5}\spadcommand{)read c05adf.input}
-\indentrel{3}\begin{verbatim}
-   (1)  true
-                                          Type: Boolean
-   (2)  true
-                                          Type: Boolean
-   (3)  F
-                                           Type: Asp1 F
-   (4)  0.0
-                                      Type: DoubleFloat
-   (5)  1.0
-                                      Type: DoubleFloat
-   (6)  1.0e-05
-                                      Type: DoubleFloat
-   (7)  0.0
-                                      Type: DoubleFloat
-   (8)  [ifail: 0,x: 0.567143306604963]
-                                           Type: Result
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{nagLinkUsagePageEmpty5}
-\begin{paste}{nagLinkUsagePageEmpty5}{nagLinkUsagePagePatch5}
-\pastebutton{nagLinkUsagePageEmpty5}{\showpaste}
-\tab{5}\spadcommand{)read c05adf.input}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch1}
-\begin{paste}{generalFortranPageFull1}{generalFortranPageEmpty1}
-\pastebutton{generalFortranPageFull1}{\hidepaste}
-\tab{5}\spadcommand{)set fortran precision}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty1}
-\begin{paste}{generalFortranPageEmpty1}{generalFortranPagePatch1}
-\pastebutton{generalFortranPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{)set fortran precision}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch2}
-\begin{paste}{generalFortranPageFull2}{generalFortranPageEmpty2}
-\pastebutton{generalFortranPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m := matrix [[1,2,3],[4,5,6]]\bound{m }}
-\indentrel{3}\begin{verbatim}
-        Ú1  2  3¿
-   (1)  ³       ³
-        À4  5  6Ù
-                                   Type: Matrix Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty2}
-\begin{paste}{generalFortranPageEmpty2}{generalFortranPagePatch2}
-\pastebutton{generalFortranPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m := matrix [[1,2,3],[4,5,6]]\bound{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch3}
-\begin{paste}{generalFortranPageFull3}{generalFortranPageEmpty3}
-\pastebutton{generalFortranPageFull3}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteralLine concat ["C      The Matrix has ", nrows(m)::String, " rows and ", ncols(m)::String, " columns"]\free{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty3}
-\begin{paste}{generalFortranPageEmpty3}{generalFortranPagePatch3}
-\pastebutton{generalFortranPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{fortranLiteralLine concat ["C      The Matrix has ", nrows(m)::String, " rows and ", ncols(m)::String, " columns"]\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch4}
-\begin{paste}{generalFortranPageFull4}{generalFortranPageEmpty4}
-\pastebutton{generalFortranPageFull4}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteral "C      The Matrix has "}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty4}
-\begin{paste}{generalFortranPageEmpty4}{generalFortranPagePatch4}
-\pastebutton{generalFortranPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{fortranLiteral "C      The Matrix has "}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch5}
-\begin{paste}{generalFortranPageFull5}{generalFortranPageEmpty5}
-\pastebutton{generalFortranPageFull5}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteral(nrows(m)::String)}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty5}
-\begin{paste}{generalFortranPageEmpty5}{generalFortranPagePatch5}
-\pastebutton{generalFortranPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{fortranLiteral(nrows(m)::String)}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch6}
-\begin{paste}{generalFortranPageFull6}{generalFortranPageEmpty6}
-\pastebutton{generalFortranPageFull6}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteral " rows and "}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty6}
-\begin{paste}{generalFortranPageEmpty6}{generalFortranPagePatch6}
-\pastebutton{generalFortranPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{fortranLiteral " rows and "}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch7}
-\begin{paste}{generalFortranPageFull7}{generalFortranPageEmpty7}
-\pastebutton{generalFortranPageFull7}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteral(ncols(m)::String)\free{m }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty7}
-\begin{paste}{generalFortranPageEmpty7}{generalFortranPagePatch7}
-\pastebutton{generalFortranPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{fortranLiteral(ncols(m)::String)\free{m }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch8}
-\begin{paste}{generalFortranPageFull8}{generalFortranPageEmpty8}
-\pastebutton{generalFortranPageFull8}{\hidepaste}
-\tab{5}\spadcommand{fortranLiteral " columns"}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty8}
-\begin{paste}{generalFortranPageEmpty8}{generalFortranPagePatch8}
-\pastebutton{generalFortranPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{fortranLiteral " columns"}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch9}
-\begin{paste}{generalFortranPageFull9}{generalFortranPageEmpty9}
-\pastebutton{generalFortranPageFull9}{\hidepaste}
-\tab{5}\spadcommand{fortranCarriageReturn()}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty9}
-\begin{paste}{generalFortranPageEmpty9}{generalFortranPagePatch9}
-\pastebutton{generalFortranPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{fortranCarriageReturn()}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch10}
-\begin{paste}{generalFortranPageFull10}{generalFortranPageEmpty10}
-\pastebutton{generalFortranPageFull10}{\hidepaste}
-\tab{5}\spadcommand{topFortranOutputStack()}
-\indentrel{3}\begin{verbatim}
-   (9)  "CONSOLE"
-                                           Type: String
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty10}
-\begin{paste}{generalFortranPageEmpty10}{generalFortranPagePatch10}
-\pastebutton{generalFortranPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{topFortranOutputStack()}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch11}
-\begin{paste}{generalFortranPageFull11}{generalFortranPageEmpty11}
-\pastebutton{generalFortranPageFull11}{\hidepaste}
-\tab{5}\spadcommand{type:=construct(real,[i,10],false)$FortranType}
-\indentrel{3}\begin{verbatim}
-   (10)  REAL
-             (i,10)
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty11}
-\begin{paste}{generalFortranPageEmpty11}{generalFortranPagePatch11}
-\pastebutton{generalFortranPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{type:=construct(real,[i,10],false)$FortranType}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch12}
-\begin{paste}{generalFortranPageFull12}{generalFortranPageEmpty12}
-\pastebutton{generalFortranPageFull12}{\hidepaste}
-\tab{5}\spadcommand{type:=[real,[i,10],false]$FortranType\bound{type }}
-\indentrel{3}\begin{verbatim}
-   (11)  REAL
-             (i,10)
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty12}
-\begin{paste}{generalFortranPageEmpty12}{generalFortranPagePatch12}
-\pastebutton{generalFortranPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{type:=[real,[i,10],false]$FortranType\bound{type }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch13}
-\begin{paste}{generalFortranPageFull13}{generalFortranPageEmpty13}
-\pastebutton{generalFortranPageFull13}{\hidepaste}
-\tab{5}\spadcommand{scalarTypeOf type\free{type }}
-\indentrel{3}\begin{verbatim}
-   (12)  REAL
-                Type: Union(fst: FortranScalarType,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty13}
-\begin{paste}{generalFortranPageEmpty13}{generalFortranPagePatch13}
-\pastebutton{generalFortranPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{scalarTypeOf type\free{type }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch14}
-\begin{paste}{generalFortranPageFull14}{generalFortranPageEmpty14}
-\pastebutton{generalFortranPageFull14}{\hidepaste}
-\tab{5}\spadcommand{dimensionsOf type\free{type }}
-\indentrel{3}\begin{verbatim}
-   (13)  [i,10]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty14}
-\begin{paste}{generalFortranPageEmpty14}{generalFortranPagePatch14}
-\pastebutton{generalFortranPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{dimensionsOf type\free{type }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch15}
-\begin{paste}{generalFortranPageFull15}{generalFortranPageEmpty15}
-\pastebutton{generalFortranPageFull15}{\hidepaste}
-\tab{5}\spadcommand{external? type\free{type }}
-\indentrel{3}\begin{verbatim}
-   (14)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty15}
-\begin{paste}{generalFortranPageEmpty15}{generalFortranPagePatch15}
-\pastebutton{generalFortranPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{external? type\free{type }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch16}
-\begin{paste}{generalFortranPageFull16}{generalFortranPageEmpty16}
-\pastebutton{generalFortranPageFull16}{\hidepaste}
-\tab{5}\spadcommand{fortranLogical()}
-\indentrel{3}\begin{verbatim}
-   (15)  LOGICAL
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty16}
-\begin{paste}{generalFortranPageEmpty16}{generalFortranPagePatch16}
-\pastebutton{generalFortranPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{fortranLogical()}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch17}
-\begin{paste}{generalFortranPageFull17}{generalFortranPageEmpty17}
-\pastebutton{generalFortranPageFull17}{\hidepaste}
-\tab{5}\spadcommand{construct(integer,[],true)$FortranType}
-\indentrel{3}\begin{verbatim}
-   (16)  EXTERNAL INTEGER
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty17}
-\begin{paste}{generalFortranPageEmpty17}{generalFortranPagePatch17}
-\pastebutton{generalFortranPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{construct(integer,[],true)$FortranType}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch18}
-\begin{paste}{generalFortranPageFull18}{generalFortranPageEmpty18}
-\pastebutton{generalFortranPageFull18}{\hidepaste}
-\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
-\indentrel{3}\begin{verbatim}
-   (17)  table()
-                                      Type: SymbolTable
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty18}
-\begin{paste}{generalFortranPageEmpty18}{generalFortranPagePatch18}
-\pastebutton{generalFortranPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch19}
-\begin{paste}{generalFortranPageFull19}{generalFortranPageEmpty19}
-\pastebutton{generalFortranPageFull19}{\hidepaste}
-\tab{5}\spadcommand{declare!(X,fortranReal(),symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (18)  REAL
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty19}
-\begin{paste}{generalFortranPageEmpty19}{generalFortranPagePatch19}
-\pastebutton{generalFortranPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{declare!(X,fortranReal(),symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch20}
-\begin{paste}{generalFortranPageFull20}{generalFortranPageEmpty20}
-\pastebutton{generalFortranPageFull20}{\hidepaste}
-\tab{5}\spadcommand{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (19)  REAL
-             (i,j)
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty20}
-\begin{paste}{generalFortranPageEmpty20}{generalFortranPagePatch20}
-\pastebutton{generalFortranPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{declare!(M,construct(real,[i,j],false)$FortranType,symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch21}
-\begin{paste}{generalFortranPageFull21}{generalFortranPageEmpty21}
-\pastebutton{generalFortranPageFull21}{\hidepaste}
-\tab{5}\spadcommand{declare!([i,j],fortranInteger(),symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (20)  INTEGER
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty21}
-\begin{paste}{generalFortranPageEmpty21}{generalFortranPagePatch21}
-\pastebutton{generalFortranPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{declare!([i,j],fortranInteger(),symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch22}
-\begin{paste}{generalFortranPageFull22}{generalFortranPageEmpty22}
-\pastebutton{generalFortranPageFull22}{\hidepaste}
-\tab{5}\spadcommand{symbols\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   table(X= REAL,M= REAL     ,i= INTEGER,j= INTEGER)
-                        (i,j)
-                                      Type: SymbolTable
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty22}
-\begin{paste}{generalFortranPageEmpty22}{generalFortranPagePatch22}
-\pastebutton{generalFortranPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{symbols\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch23}
-\begin{paste}{generalFortranPageFull23}{generalFortranPageEmpty23}
-\pastebutton{generalFortranPageFull23}{\hidepaste}
-\tab{5}\spadcommand{fortranTypeOf(i,symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (22)  INTEGER
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty23}
-\begin{paste}{generalFortranPageEmpty23}{generalFortranPagePatch23}
-\pastebutton{generalFortranPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{fortranTypeOf(i,symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch24}
-\begin{paste}{generalFortranPageFull24}{generalFortranPageEmpty24}
-\pastebutton{generalFortranPageFull24}{\hidepaste}
-\tab{5}\spadcommand{typeList(real,symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (23)  [X,[M,i,j]]
-Type: List Union(name: Symbol,bounds: List Union(S: Symbol,P: Polynomial Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty24}
-\begin{paste}{generalFortranPageEmpty24}{generalFortranPagePatch24}
-\pastebutton{generalFortranPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{typeList(real,symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch25}
-\begin{paste}{generalFortranPageFull25}{generalFortranPageEmpty25}
-\pastebutton{generalFortranPageFull25}{\hidepaste}
-\tab{5}\spadcommand{printTypes symbols\free{symbols }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty25}
-\begin{paste}{generalFortranPageEmpty25}{generalFortranPagePatch25}
-\pastebutton{generalFortranPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{printTypes symbols\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch26}
-\begin{paste}{generalFortranPageFull26}{generalFortranPageEmpty26}
-\pastebutton{generalFortranPageFull26}{\hidepaste}
-\tab{5}\spadcommand{newSubProgram F}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty26}
-\begin{paste}{generalFortranPageEmpty26}{generalFortranPagePatch26}
-\pastebutton{generalFortranPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{newSubProgram F}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch27}
-\begin{paste}{generalFortranPageFull27}{generalFortranPageEmpty27}
-\pastebutton{generalFortranPageFull27}{\hidepaste}
-\tab{5}\spadcommand{endSubProgram()}
-\indentrel{3}\begin{verbatim}
-   (26)  MAIN
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty27}
-\begin{paste}{generalFortranPageEmpty27}{generalFortranPagePatch27}
-\pastebutton{generalFortranPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{endSubProgram()}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch28}
-\begin{paste}{generalFortranPageFull28}{generalFortranPageEmpty28}
-\pastebutton{generalFortranPageFull28}{\hidepaste}
-\tab{5}\spadcommand{newSubProgram F\bound{forPleasure }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty28}
-\begin{paste}{generalFortranPageEmpty28}{generalFortranPagePatch28}
-\pastebutton{generalFortranPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{newSubProgram F\bound{forPleasure }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch29}
-\begin{paste}{generalFortranPageFull29}{generalFortranPageEmpty29}
-\pastebutton{generalFortranPageFull29}{\hidepaste}
-\tab{5}\spadcommand{argumentList!(F,[X])\free{forPleasure }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty29}
-\begin{paste}{generalFortranPageEmpty29}{generalFortranPagePatch29}
-\pastebutton{generalFortranPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{argumentList!(F,[X])\free{forPleasure }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch30}
-\begin{paste}{generalFortranPageFull30}{generalFortranPageEmpty30}
-\pastebutton{generalFortranPageFull30}{\hidepaste}
-\tab{5}\spadcommand{returnType!(F,real)\free{forPleasure }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty30}
-\begin{paste}{generalFortranPageEmpty30}{generalFortranPagePatch30}
-\pastebutton{generalFortranPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{returnType!(F,real)\free{forPleasure }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch31}
-\begin{paste}{generalFortranPageFull31}{generalFortranPageEmpty31}
-\pastebutton{generalFortranPageFull31}{\hidepaste}
-\tab{5}\spadcommand{declare!(X,fortranReal(),F)\free{forPleasure }}
-\indentrel{3}\begin{verbatim}
-   (30)  REAL
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty31}
-\begin{paste}{generalFortranPageEmpty31}{generalFortranPagePatch31}
-\pastebutton{generalFortranPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{declare!(X,fortranReal(),F)\free{forPleasure }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch32}
-\begin{paste}{generalFortranPageFull32}{generalFortranPageEmpty32}
-\pastebutton{generalFortranPageFull32}{\hidepaste}
-\tab{5}\spadcommand{printHeader F\free{forPleasure }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty32}
-\begin{paste}{generalFortranPageEmpty32}{generalFortranPagePatch32}
-\pastebutton{generalFortranPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{printHeader F\free{forPleasure }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch33}
-\begin{paste}{generalFortranPageFull33}{generalFortranPageEmpty33}
-\pastebutton{generalFortranPageFull33}{\hidepaste}
-\tab{5}\spadcommand{LT(x,y)}
-\indentrel{3}\begin{verbatim}
-   (32)  x < y
-                                           Type: Switch
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty33}
-\begin{paste}{generalFortranPageEmpty33}{generalFortranPagePatch33}
-\pastebutton{generalFortranPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{LT(x,y)}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch34}
-\begin{paste}{generalFortranPageFull34}{generalFortranPageEmpty34}
-\pastebutton{generalFortranPageFull34}{\hidepaste}
-\tab{5}\spadcommand{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (33)  conditional
-                                      Type: FortranCode
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty34}
-\begin{paste}{generalFortranPageEmpty34}{generalFortranPagePatch34}
-\pastebutton{generalFortranPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{c := cond(LT(X,Y),assign(F,X),cond(GT(Y,Z),assign(F,Y),assign(F,Z)))\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch35}
-\begin{paste}{generalFortranPageFull35}{generalFortranPageEmpty35}
-\pastebutton{generalFortranPageFull35}{\hidepaste}
-\tab{5}\spadcommand{printCode c\free{c }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty35}
-\begin{paste}{generalFortranPageEmpty35}{generalFortranPagePatch35}
-\pastebutton{generalFortranPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{printCode c\free{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch36}
-\begin{paste}{generalFortranPageFull36}{generalFortranPageEmpty36}
-\pastebutton{generalFortranPageFull36}{\hidepaste}
-\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
-\indentrel{3}\begin{verbatim}
-   (35)  table()
-                                      Type: SymbolTable
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty36}
-\begin{paste}{generalFortranPageEmpty36}{generalFortranPagePatch36}
-\pastebutton{generalFortranPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{symbols := empty()$SymbolTable\bound{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch37}
-\begin{paste}{generalFortranPageFull37}{generalFortranPageEmpty37}
-\pastebutton{generalFortranPageFull37}{\hidepaste}
-\tab{5}\spadcommand{declare!([X,Y],fortranReal(),symbols)\free{symbols }}
-\indentrel{3}\begin{verbatim}
-   (36)  REAL
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty37}
-\begin{paste}{generalFortranPageEmpty37}{generalFortranPagePatch37}
-\pastebutton{generalFortranPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{declare!([X,Y],fortranReal(),symbols)\free{symbols }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch38}
-\begin{paste}{generalFortranPageFull38}{generalFortranPageEmpty38}
-\pastebutton{generalFortranPageFull38}{\hidepaste}
-\tab{5}\spadcommand{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols }\bound{FP }}
-\indentrel{3}\begin{verbatim}
-   (37)  FortranProgram(F,REAL,[X,Y],table(...,...))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty38}
-\begin{paste}{generalFortranPageEmpty38}{generalFortranPagePatch38}
-\pastebutton{generalFortranPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{FP := FortranProgram(F,real,[X,Y],symbols)\free{symbols }\bound{FP }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch39}
-\begin{paste}{generalFortranPageFull39}{generalFortranPageEmpty39}
-\pastebutton{generalFortranPageFull39}{\hidepaste}
-\tab{5}\spadcommand{asp := X*sin(Y)\bound{asp }}
-\indentrel{3}\begin{verbatim}
-   (38)  X sin(Y)
-                               Type: Expression Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty39}
-\begin{paste}{generalFortranPageEmpty39}{generalFortranPagePatch39}
-\pastebutton{generalFortranPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{asp := X*sin(Y)\bound{asp }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch40}
-\begin{paste}{generalFortranPageFull40}{generalFortranPageEmpty40}
-\pastebutton{generalFortranPageFull40}{\hidepaste}
-\tab{5}\spadcommand{outputAsFortran(asp::FP)\free{FP asp }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty40}
-\begin{paste}{generalFortranPageEmpty40}{generalFortranPagePatch40}
-\pastebutton{generalFortranPageEmpty40}{\showpaste}
-\tab{5}\spadcommand{outputAsFortran(asp::FP)\free{FP asp }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch41}
-\begin{paste}{generalFortranPageFull41}{generalFortranPageEmpty41}
-\pastebutton{generalFortranPageFull41}{\hidepaste}
-\tab{5}\spadcommand{declare!(Z,fortranReal(),symbols)\free{symbols }\bound{Z }}
-\indentrel{3}\begin{verbatim}
-   (40)  REAL
-                                      Type: FortranType
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty41}
-\begin{paste}{generalFortranPageEmpty41}{generalFortranPagePatch41}
-\pastebutton{generalFortranPageEmpty41}{\showpaste}
-\tab{5}\spadcommand{declare!(Z,fortranReal(),symbols)\free{symbols }\bound{Z }}
-\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPagePatch42}
-\begin{paste}{generalFortranPageFull42}{generalFortranPageEmpty42}
-\pastebutton{generalFortranPageFull42}{\hidepaste}
-\tab{5}\spadcommand{outputAsFortran([c,returns()]::FP)\free{FP c Z }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{generalFortranPageEmpty42}
-\begin{paste}{generalFortranPageEmpty42}{generalFortranPagePatch42}
-\pastebutton{generalFortranPageEmpty42}{\showpaste}
-\tab{5}\spadcommand{outputAsFortran([c,returns()]::FP)\free{FP c Z }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/uniseg.pht b/books/pages/uniseg.pht
deleted file mode 100644
index bbaed12..0000000
--- a/books/pages/uniseg.pht
+++ /dev/null
@@ -1,144 +0,0 @@
-\begin{patch}{UniversalSegmentXmpPagePatch1}
-\begin{paste}{UniversalSegmentXmpPageFull1}{UniversalSegmentXmpPageEmpty1}
-\pastebutton{UniversalSegmentXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{pints := 1..\bound{pints }}
-\indentrel{3}\begin{verbatim}
-   (1)  1..
-                 Type: UniversalSegment PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty1}
-\begin{paste}{UniversalSegmentXmpPageEmpty1}{UniversalSegmentXmpPagePatch1}
-\pastebutton{UniversalSegmentXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{pints := 1..\bound{pints }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch2}
-\begin{paste}{UniversalSegmentXmpPageFull2}{UniversalSegmentXmpPageEmpty2}
-\pastebutton{UniversalSegmentXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{nevens := (0..) by -2\bound{nevens }}
-\indentrel{3}\begin{verbatim}
-   (2)  0.. by - 2
-              Type: UniversalSegment NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty2}
-\begin{paste}{UniversalSegmentXmpPageEmpty2}{UniversalSegmentXmpPagePatch2}
-\pastebutton{UniversalSegmentXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{nevens := (0..) by -2\bound{nevens }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch3}
-\begin{paste}{UniversalSegmentXmpPageFull3}{UniversalSegmentXmpPageEmpty3}
-\pastebutton{UniversalSegmentXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{useg: UniversalSegment(Integer) := 3..10\bound{useg }}
-\indentrel{3}\begin{verbatim}
-   (3)  3..10
-                         Type: UniversalSegment Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty3}
-\begin{paste}{UniversalSegmentXmpPageEmpty3}{UniversalSegmentXmpPagePatch3}
-\pastebutton{UniversalSegmentXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{useg: UniversalSegment(Integer) := 3..10\bound{useg }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch4}
-\begin{paste}{UniversalSegmentXmpPageFull4}{UniversalSegmentXmpPageEmpty4}
-\pastebutton{UniversalSegmentXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{hasHi pints\free{pints }}
-\indentrel{3}\begin{verbatim}
-   (4)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty4}
-\begin{paste}{UniversalSegmentXmpPageEmpty4}{UniversalSegmentXmpPagePatch4}
-\pastebutton{UniversalSegmentXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{hasHi pints\free{pints }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch5}
-\begin{paste}{UniversalSegmentXmpPageFull5}{UniversalSegmentXmpPageEmpty5}
-\pastebutton{UniversalSegmentXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{hasHi nevens\free{nevens }}
-\indentrel{3}\begin{verbatim}
-   (5)  false
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty5}
-\begin{paste}{UniversalSegmentXmpPageEmpty5}{UniversalSegmentXmpPagePatch5}
-\pastebutton{UniversalSegmentXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{hasHi nevens\free{nevens }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch6}
-\begin{paste}{UniversalSegmentXmpPageFull6}{UniversalSegmentXmpPageEmpty6}
-\pastebutton{UniversalSegmentXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{hasHi useg\free{useg }}
-\indentrel{3}\begin{verbatim}
-   (6)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty6}
-\begin{paste}{UniversalSegmentXmpPageEmpty6}{UniversalSegmentXmpPagePatch6}
-\pastebutton{UniversalSegmentXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{hasHi useg\free{useg }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch7}
-\begin{paste}{UniversalSegmentXmpPageFull7}{UniversalSegmentXmpPageEmpty7}
-\pastebutton{UniversalSegmentXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{expand pints\free{pints }}
-\indentrel{3}\begin{verbatim}
-   (7)  [1,2,3,4,5,6,7,8,9,10,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty7}
-\begin{paste}{UniversalSegmentXmpPageEmpty7}{UniversalSegmentXmpPagePatch7}
-\pastebutton{UniversalSegmentXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{expand pints\free{pints }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch8}
-\begin{paste}{UniversalSegmentXmpPageFull8}{UniversalSegmentXmpPageEmpty8}
-\pastebutton{UniversalSegmentXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{expand nevens\free{nevens }}
-\indentrel{3}\begin{verbatim}
-   (8)  [0,- 2,- 4,- 6,- 8,- 10,- 12,- 14,- 16,- 18,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty8}
-\begin{paste}{UniversalSegmentXmpPageEmpty8}{UniversalSegmentXmpPagePatch8}
-\pastebutton{UniversalSegmentXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{expand nevens\free{nevens }}
-\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPagePatch9}
-\begin{paste}{UniversalSegmentXmpPageFull9}{UniversalSegmentXmpPageEmpty9}
-\pastebutton{UniversalSegmentXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{expand [1, 3, 10..15, 100..]}
-\indentrel{3}\begin{verbatim}
-   (9)  [1,3,10,11,12,13,14,15,100,101,...]
-                                   Type: Stream Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UniversalSegmentXmpPageEmpty9}
-\begin{paste}{UniversalSegmentXmpPageEmpty9}{UniversalSegmentXmpPagePatch9}
-\pastebutton{UniversalSegmentXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{expand [1, 3, 10..15, 100..]}
-\end{paste}\end{patch}
-
diff --git a/books/pages/up.pht b/books/pages/up.pht
deleted file mode 100644
index 15f6278..0000000
--- a/books/pages/up.pht
+++ /dev/null
@@ -1,612 +0,0 @@
-\begin{patch}{UnivariatePolynomialXmpPagePatch1}
-\begin{paste}{UnivariatePolynomialXmpPageFull1}{UnivariatePolynomialXmpPageEmpty1}
-\pastebutton{UnivariatePolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{(p,q) : UP(x,INT)\bound{pdec }\bound{qdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty1}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty1}{UnivariatePolynomialXmpPagePatch1}
-\pastebutton{UnivariatePolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{(p,q) : UP(x,INT)\bound{pdec }\bound{qdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch2}
-\begin{paste}{UnivariatePolynomialXmpPageFull2}{UnivariatePolynomialXmpPageEmpty2}
-\pastebutton{UnivariatePolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{p := (3*x-1)**2 * (2*x + 8)\free{pdec }\bound{p }}
-\indentrel{3}\begin{verbatim}
-           3      2
-   (2)  18x  + 60x  - 46x + 8
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty2}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty2}{UnivariatePolynomialXmpPagePatch2}
-\pastebutton{UnivariatePolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{p := (3*x-1)**2 * (2*x + 8)\free{pdec }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch3}
-\begin{paste}{UnivariatePolynomialXmpPageFull3}{UnivariatePolynomialXmpPageEmpty3}
-\pastebutton{UnivariatePolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{q := (1 - 6*x + 9*x**2)**2\free{qdec }\bound{q }}
-\indentrel{3}\begin{verbatim}
-           4       3      2
-   (3)  81x  - 108x  + 54x  - 12x + 1
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty3}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty3}{UnivariatePolynomialXmpPagePatch3}
-\pastebutton{UnivariatePolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{q := (1 - 6*x + 9*x**2)**2\free{qdec }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch4}
-\begin{paste}{UnivariatePolynomialXmpPageFull4}{UnivariatePolynomialXmpPageEmpty4}
-\pastebutton{UnivariatePolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{p**2 + p*q\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (4)
-          7        6        5         4        3        2
-     1458x  + 3240x  - 7074x  + 10584x  - 9282x  + 4120x
-   + 
-     - 878x + 72
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty4}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty4}{UnivariatePolynomialXmpPagePatch4}
-\pastebutton{UnivariatePolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{p**2 + p*q\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch5}
-\begin{paste}{UnivariatePolynomialXmpPageFull5}{UnivariatePolynomialXmpPageEmpty5}
-\pastebutton{UnivariatePolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{leadingCoefficient p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (5)  18
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty5}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty5}{UnivariatePolynomialXmpPagePatch5}
-\pastebutton{UnivariatePolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{leadingCoefficient p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch6}
-\begin{paste}{UnivariatePolynomialXmpPageFull6}{UnivariatePolynomialXmpPageEmpty6}
-\pastebutton{UnivariatePolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{degree p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (6)  3
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty6}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty6}{UnivariatePolynomialXmpPagePatch6}
-\pastebutton{UnivariatePolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{degree p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch7}
-\begin{paste}{UnivariatePolynomialXmpPageFull7}{UnivariatePolynomialXmpPageEmpty7}
-\pastebutton{UnivariatePolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{reductum p\free{p }}
-\indentrel{3}\begin{verbatim}
-           2
-   (7)  60x  - 46x + 8
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty7}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty7}{UnivariatePolynomialXmpPagePatch7}
-\pastebutton{UnivariatePolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{reductum p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch8}
-\begin{paste}{UnivariatePolynomialXmpPageFull8}{UnivariatePolynomialXmpPageEmpty8}
-\pastebutton{UnivariatePolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-          2
-   (8)  9x  - 6x + 1
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty8}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty8}{UnivariatePolynomialXmpPagePatch8}
-\pastebutton{UnivariatePolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{gcd(p,q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch9}
-\begin{paste}{UnivariatePolynomialXmpPageFull9}{UnivariatePolynomialXmpPageEmpty9}
-\pastebutton{UnivariatePolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{lcm(p,q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-            5       4       3       2
-   (9)  162x  + 432x  - 756x  + 408x  - 94x + 8
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty9}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty9}{UnivariatePolynomialXmpPagePatch9}
-\pastebutton{UnivariatePolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{lcm(p,q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch10}
-\begin{paste}{UnivariatePolynomialXmpPageFull10}{UnivariatePolynomialXmpPageEmpty10}
-\pastebutton{UnivariatePolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{resultant(p,q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (10)  0
-                               Type: NonNegativeInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty10}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty10}{UnivariatePolynomialXmpPagePatch10}
-\pastebutton{UnivariatePolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{resultant(p,q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch11}
-\begin{paste}{UnivariatePolynomialXmpPageFull11}{UnivariatePolynomialXmpPageEmpty11}
-\pastebutton{UnivariatePolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{D p\free{p }}
-\indentrel{3}\begin{verbatim}
-            2
-   (11)  54x  + 120x - 46
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty11}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty11}{UnivariatePolynomialXmpPagePatch11}
-\pastebutton{UnivariatePolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{D p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch12}
-\begin{paste}{UnivariatePolynomialXmpPageFull12}{UnivariatePolynomialXmpPageEmpty12}
-\pastebutton{UnivariatePolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p(2)\free{p }}
-\indentrel{3}\begin{verbatim}
-   (12)  300
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty12}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty12}{UnivariatePolynomialXmpPagePatch12}
-\pastebutton{UnivariatePolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p(2)\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch13}
-\begin{paste}{UnivariatePolynomialXmpPageFull13}{UnivariatePolynomialXmpPageEmpty13}
-\pastebutton{UnivariatePolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{p(q)\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (13)
-             12            11            10            9
-     9565938x   - 38263752x   + 70150212x   - 77944680x
-   + 
-              8            7            6           5
-     58852170x  - 32227632x  + 13349448x  - 4280688x
-   + 
-             4          3         2
-     1058184x  - 192672x  + 23328x  - 1536x + 40
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty13}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty13}{UnivariatePolynomialXmpPagePatch13}
-\pastebutton{UnivariatePolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{p(q)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch14}
-\begin{paste}{UnivariatePolynomialXmpPageFull14}{UnivariatePolynomialXmpPageEmpty14}
-\pastebutton{UnivariatePolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{q(p)\free{p q }}
-\indentrel{3}\begin{verbatim}
-   (14)
-             12             11             10
-     8503056x   + 113374080x   + 479950272x
-   + 
-               9              8             7
-     404997408x  - 1369516896x  - 626146848x
-   + 
-                6              5              4
-     2939858712x  - 2780728704x  + 1364312160x
-   + 
-                 3            2
-     - 396838872x  + 69205896x  - 6716184x + 279841
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty14}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty14}{UnivariatePolynomialXmpPagePatch14}
-\pastebutton{UnivariatePolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{q(p)\free{p q }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch15}
-\begin{paste}{UnivariatePolynomialXmpPageFull15}{UnivariatePolynomialXmpPageEmpty15}
-\pastebutton{UnivariatePolynomialXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{l := coefficients p\free{p }\bound{l }}
-\indentrel{3}\begin{verbatim}
-   (15)  [18,60,- 46,8]
-                                     Type: List Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty15}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty15}{UnivariatePolynomialXmpPagePatch15}
-\pastebutton{UnivariatePolynomialXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{l := coefficients p\free{p }\bound{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch16}
-\begin{paste}{UnivariatePolynomialXmpPageFull16}{UnivariatePolynomialXmpPageEmpty16}
-\pastebutton{UnivariatePolynomialXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{reduce(gcd,l)\free{l }}
-\indentrel{3}\begin{verbatim}
-   (16)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty16}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty16}{UnivariatePolynomialXmpPagePatch16}
-\pastebutton{UnivariatePolynomialXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{reduce(gcd,l)\free{l }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch17}
-\begin{paste}{UnivariatePolynomialXmpPageFull17}{UnivariatePolynomialXmpPageEmpty17}
-\pastebutton{UnivariatePolynomialXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{content p\free{p }}
-\indentrel{3}\begin{verbatim}
-   (17)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty17}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty17}{UnivariatePolynomialXmpPagePatch17}
-\pastebutton{UnivariatePolynomialXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{content p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch18}
-\begin{paste}{UnivariatePolynomialXmpPageFull18}{UnivariatePolynomialXmpPageEmpty18}
-\pastebutton{UnivariatePolynomialXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{ux := (x**4+2*x+3)::UP(x,INT)\bound{ux }}
-\indentrel{3}\begin{verbatim}
-          4
-   (18)  x  + 2x + 3
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty18}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty18}{UnivariatePolynomialXmpPagePatch18}
-\pastebutton{UnivariatePolynomialXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{ux := (x**4+2*x+3)::UP(x,INT)\bound{ux }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch19}
-\begin{paste}{UnivariatePolynomialXmpPageFull19}{UnivariatePolynomialXmpPageEmpty19}
-\pastebutton{UnivariatePolynomialXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{vectorise(ux,5)\free{ux }}
-\indentrel{3}\begin{verbatim}
-   (19)  [3,2,0,0,1]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty19}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty19}{UnivariatePolynomialXmpPagePatch19}
-\pastebutton{UnivariatePolynomialXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{vectorise(ux,5)\free{ux }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch20}
-\begin{paste}{UnivariatePolynomialXmpPageFull20}{UnivariatePolynomialXmpPageEmpty20}
-\pastebutton{UnivariatePolynomialXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{squareTerms(p) ==
-  reduce(+,[t**2 for t in monomials p])
-\bound{squareTerms }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty20}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty20}{UnivariatePolynomialXmpPagePatch20}
-\pastebutton{UnivariatePolynomialXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{squareTerms(p) ==
-  reduce(+,[t**2 for t in monomials p])
-\bound{squareTerms }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch21}
-\begin{paste}{UnivariatePolynomialXmpPageFull21}{UnivariatePolynomialXmpPageEmpty21}
-\pastebutton{UnivariatePolynomialXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{p\free{p }}
-\indentrel{3}\begin{verbatim}
-            3      2
-   (21)  18x  + 60x  - 46x + 8
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty21}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty21}{UnivariatePolynomialXmpPagePatch21}
-\pastebutton{UnivariatePolynomialXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{p\free{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch22}
-\begin{paste}{UnivariatePolynomialXmpPageFull22}{UnivariatePolynomialXmpPageEmpty22}
-\pastebutton{UnivariatePolynomialXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{squareTerms p\free{p }\free{squareTerms }}
-\indentrel{3}\begin{verbatim}
-             6        4        2
-   (22)  324x  + 3600x  + 2116x  + 64
-                  Type: UnivariatePolynomial(x,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty22}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty22}{UnivariatePolynomialXmpPagePatch22}
-\pastebutton{UnivariatePolynomialXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{squareTerms p\free{p }\free{squareTerms }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch23}
-\begin{paste}{UnivariatePolynomialXmpPageFull23}{UnivariatePolynomialXmpPageEmpty23}
-\pastebutton{UnivariatePolynomialXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{(r,s) : UP(a1,FRAC INT)\bound{rdec }\bound{sdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty23}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty23}{UnivariatePolynomialXmpPagePatch23}
-\pastebutton{UnivariatePolynomialXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{(r,s) : UP(a1,FRAC INT)\bound{rdec }\bound{sdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch24}
-\begin{paste}{UnivariatePolynomialXmpPageFull24}{UnivariatePolynomialXmpPageEmpty24}
-\pastebutton{UnivariatePolynomialXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{r := a1**2 - 2/3\free{rdec }\bound{r }}
-\indentrel{3}\begin{verbatim}
-           2   2
-   (24)  a1  - Ä
-               3
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty24}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty24}{UnivariatePolynomialXmpPagePatch24}
-\pastebutton{UnivariatePolynomialXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{r := a1**2 - 2/3\free{rdec }\bound{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch25}
-\begin{paste}{UnivariatePolynomialXmpPageFull25}{UnivariatePolynomialXmpPageEmpty25}
-\pastebutton{UnivariatePolynomialXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{s := a1 + 4\free{sdec }\bound{s }}
-\indentrel{3}\begin{verbatim}
-   (25)  a1 + 4
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty25}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty25}{UnivariatePolynomialXmpPagePatch25}
-\pastebutton{UnivariatePolynomialXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{s := a1 + 4\free{sdec }\bound{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch26}
-\begin{paste}{UnivariatePolynomialXmpPageFull26}{UnivariatePolynomialXmpPageEmpty26}
-\pastebutton{UnivariatePolynomialXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{r quo s\free{r s }}
-\indentrel{3}\begin{verbatim}
-   (26)  a1 - 4
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty26}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty26}{UnivariatePolynomialXmpPagePatch26}
-\pastebutton{UnivariatePolynomialXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{r quo s\free{r s }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch27}
-\begin{paste}{UnivariatePolynomialXmpPageFull27}{UnivariatePolynomialXmpPageEmpty27}
-\pastebutton{UnivariatePolynomialXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{r rem s\free{r s }}
-\indentrel{3}\begin{verbatim}
-         46
-   (27)  ÄÄ
-          3
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty27}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty27}{UnivariatePolynomialXmpPagePatch27}
-\pastebutton{UnivariatePolynomialXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{r rem s\free{r s }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch28}
-\begin{paste}{UnivariatePolynomialXmpPageFull28}{UnivariatePolynomialXmpPageEmpty28}
-\pastebutton{UnivariatePolynomialXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{d := divide(r, s)\free{r s }\bound{d }}
-\indentrel{3}\begin{verbatim}
-                                      46
-   (28)  [quotient= a1 - 4,remainder= ÄÄ]
-                                       3
-Type: Record(quotient: UnivariatePolynomial(a1,Fraction Integer),remainder: UnivariatePolynomial(a1,Fraction Integer))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty28}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty28}{UnivariatePolynomialXmpPagePatch28}
-\pastebutton{UnivariatePolynomialXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{d := divide(r, s)\free{r s }\bound{d }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch29}
-\begin{paste}{UnivariatePolynomialXmpPageFull29}{UnivariatePolynomialXmpPageEmpty29}
-\pastebutton{UnivariatePolynomialXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{r - (d.quotient * s + d.remainder)\free{r s d }}
-\indentrel{3}\begin{verbatim}
-   (29)  0
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty29}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty29}{UnivariatePolynomialXmpPagePatch29}
-\pastebutton{UnivariatePolynomialXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{r - (d.quotient * s + d.remainder)\free{r s d }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch30}
-\begin{paste}{UnivariatePolynomialXmpPageFull30}{UnivariatePolynomialXmpPageEmpty30}
-\pastebutton{UnivariatePolynomialXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{integrate r\free{r }}
-\indentrel{3}\begin{verbatim}
-         1   3   2
-   (30)  Ä a1  - Ä a1
-         3       3
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty30}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty30}{UnivariatePolynomialXmpPagePatch30}
-\pastebutton{UnivariatePolynomialXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{integrate r\free{r }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch31}
-\begin{paste}{UnivariatePolynomialXmpPageFull31}{UnivariatePolynomialXmpPageEmpty31}
-\pastebutton{UnivariatePolynomialXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{integrate s\free{s }}
-\indentrel{3}\begin{verbatim}
-         1   2
-   (31)  Ä a1  + 4a1
-         2
-        Type: UnivariatePolynomial(a1,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty31}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty31}{UnivariatePolynomialXmpPagePatch31}
-\pastebutton{UnivariatePolynomialXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{integrate s\free{s }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch32}
-\begin{paste}{UnivariatePolynomialXmpPageFull32}{UnivariatePolynomialXmpPageEmpty32}
-\pastebutton{UnivariatePolynomialXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{t : UP(a1,FRAC POLY INT)\bound{tdec }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty32}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty32}{UnivariatePolynomialXmpPagePatch32}
-\pastebutton{UnivariatePolynomialXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{t : UP(a1,FRAC POLY INT)\bound{tdec }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch33}
-\begin{paste}{UnivariatePolynomialXmpPageFull33}{UnivariatePolynomialXmpPageEmpty33}
-\pastebutton{UnivariatePolynomialXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)\free{tdec }\bound{t }}
-\indentrel{3}\begin{verbatim}
-                         2
-           2    1      b1  - b1
-   (33)  a1  - ÄÄ a1 + ÄÄÄÄÄÄÄÄ
-               b2       b2 + 3
-Type: UnivariatePolynomial(a1,Fraction Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty33}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty33}{UnivariatePolynomialXmpPagePatch33}
-\pastebutton{UnivariatePolynomialXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{t := a1**2 - a1/b2 + (b1**2-b1)/(b2+3)\free{tdec }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch34}
-\begin{paste}{UnivariatePolynomialXmpPageFull34}{UnivariatePolynomialXmpPageEmpty34}
-\pastebutton{UnivariatePolynomialXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{u : FRAC POLY INT := t\bound{u }\free{t }}
-\indentrel{3}\begin{verbatim}
-           2  2      2           2
-         a1 b2  + (b1  - b1 + 3a1  - a1)b2 - 3a1
-   (34)  ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
-                          2
-                        b2  + 3b2
-                      Type: Fraction Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty34}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty34}{UnivariatePolynomialXmpPagePatch34}
-\pastebutton{UnivariatePolynomialXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{u : FRAC POLY INT := t\bound{u }\free{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPagePatch35}
-\begin{paste}{UnivariatePolynomialXmpPageFull35}{UnivariatePolynomialXmpPageEmpty35}
-\pastebutton{UnivariatePolynomialXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{u :: UP(b1,?)\free{u }}
-\indentrel{3}\begin{verbatim}
-                                    2
-            1     2      1        a1 b2 - a1
-   (35)  ÄÄÄÄÄÄ b1  - ÄÄÄÄÄÄ b1 + ÄÄÄÄÄÄÄÄÄÄ
-         b2 + 3       b2 + 3          b2
-Type: UnivariatePolynomial(b1,Fraction Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{UnivariatePolynomialXmpPageEmpty35}
-\begin{paste}{UnivariatePolynomialXmpPageEmpty35}{UnivariatePolynomialXmpPagePatch35}
-\pastebutton{UnivariatePolynomialXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{u :: UP(b1,?)\free{u }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/vector.pht b/books/pages/vector.pht
deleted file mode 100644
index 9c8394f..0000000
--- a/books/pages/vector.pht
+++ /dev/null
@@ -1,176 +0,0 @@
-\begin{patch}{VectorXmpPagePatch1}
-\begin{paste}{VectorXmpPageFull1}{VectorXmpPageEmpty1}
-\pastebutton{VectorXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{u : VECTOR INT := new(5,12)\bound{u }}
-\indentrel{3}\begin{verbatim}
-   (1)  [12,12,12,12,12]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty1}
-\begin{paste}{VectorXmpPageEmpty1}{VectorXmpPagePatch1}
-\pastebutton{VectorXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{u : VECTOR INT := new(5,12)\bound{u }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch2}
-\begin{paste}{VectorXmpPageFull2}{VectorXmpPageEmpty2}
-\pastebutton{VectorXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{v : VECTOR INT := vector([1,2,3,4,5])\bound{v }}
-\indentrel{3}\begin{verbatim}
-   (2)  [1,2,3,4,5]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty2}
-\begin{paste}{VectorXmpPageEmpty2}{VectorXmpPagePatch2}
-\pastebutton{VectorXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{v : VECTOR INT := vector([1,2,3,4,5])\bound{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch3}
-\begin{paste}{VectorXmpPageFull3}{VectorXmpPageEmpty3}
-\pastebutton{VectorXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{\#(v)\free{v }}
-\indentrel{3}\begin{verbatim}
-   (3)  5
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty3}
-\begin{paste}{VectorXmpPageEmpty3}{VectorXmpPagePatch3}
-\pastebutton{VectorXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{\#(v)\free{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch4}
-\begin{paste}{VectorXmpPageFull4}{VectorXmpPageEmpty4}
-\pastebutton{VectorXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{v.2\free{v }}
-\indentrel{3}\begin{verbatim}
-   (4)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty4}
-\begin{paste}{VectorXmpPageEmpty4}{VectorXmpPagePatch4}
-\pastebutton{VectorXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{v.2\free{v }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch5}
-\begin{paste}{VectorXmpPageFull5}{VectorXmpPageEmpty5}
-\pastebutton{VectorXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{v.3 := 99\free{v }\bound{vdelta }}
-\indentrel{3}\begin{verbatim}
-   (5)  99
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty5}
-\begin{paste}{VectorXmpPageEmpty5}{VectorXmpPagePatch5}
-\pastebutton{VectorXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{v.3 := 99\free{v }\bound{vdelta }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch6}
-\begin{paste}{VectorXmpPageFull6}{VectorXmpPageEmpty6}
-\pastebutton{VectorXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{v\free{vdelta }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,2,99,4,5]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty6}
-\begin{paste}{VectorXmpPageEmpty6}{VectorXmpPagePatch6}
-\pastebutton{VectorXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{v\free{vdelta }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch7}
-\begin{paste}{VectorXmpPageFull7}{VectorXmpPageEmpty7}
-\pastebutton{VectorXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{5 * v\free{vdelta }}
-\indentrel{3}\begin{verbatim}
-   (7)  [5,10,495,20,25]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty7}
-\begin{paste}{VectorXmpPageEmpty7}{VectorXmpPagePatch7}
-\pastebutton{VectorXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{5 * v\free{vdelta }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch8}
-\begin{paste}{VectorXmpPageFull8}{VectorXmpPageEmpty8}
-\pastebutton{VectorXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{v * 7\free{vdelta }}
-\indentrel{3}\begin{verbatim}
-   (8)  [7,14,693,28,35]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty8}
-\begin{paste}{VectorXmpPageEmpty8}{VectorXmpPagePatch8}
-\pastebutton{VectorXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{v * 7\free{vdelta }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch9}
-\begin{paste}{VectorXmpPageFull9}{VectorXmpPageEmpty9}
-\pastebutton{VectorXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{w : VECTOR INT := vector([2,3,4,5,6])\bound{w }}
-\indentrel{3}\begin{verbatim}
-   (9)  [2,3,4,5,6]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty9}
-\begin{paste}{VectorXmpPageEmpty9}{VectorXmpPagePatch9}
-\pastebutton{VectorXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{w : VECTOR INT := vector([2,3,4,5,6])\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch10}
-\begin{paste}{VectorXmpPageFull10}{VectorXmpPageEmpty10}
-\pastebutton{VectorXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{v + w\free{vdelta w }}
-\indentrel{3}\begin{verbatim}
-   (10)  [3,5,103,9,11]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty10}
-\begin{paste}{VectorXmpPageEmpty10}{VectorXmpPagePatch10}
-\pastebutton{VectorXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{v + w\free{vdelta w }}
-\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPagePatch11}
-\begin{paste}{VectorXmpPageFull11}{VectorXmpPageEmpty11}
-\pastebutton{VectorXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{v - w\free{vdelta w }}
-\indentrel{3}\begin{verbatim}
-   (11)  [- 1,- 1,95,- 1,- 1]
-                                   Type: Vector Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VectorXmpPageEmpty11}
-\begin{paste}{VectorXmpPageEmpty11}{VectorXmpPagePatch11}
-\pastebutton{VectorXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{v - w\free{vdelta w }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/void.pht b/books/pages/void.pht
deleted file mode 100644
index 7603a35..0000000
--- a/books/pages/void.pht
+++ /dev/null
@@ -1,89 +0,0 @@
-\begin{patch}{VoidXmpPagePatch1}
-\begin{paste}{VoidXmpPageFull1}{VoidXmpPageEmpty1}
-\pastebutton{VoidXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a : Integer}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty1}
-\begin{paste}{VoidXmpPageEmpty1}{VoidXmpPagePatch1}
-\pastebutton{VoidXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a : Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPagePatch2}
-\begin{paste}{VoidXmpPageFull2}{VoidXmpPageEmpty2}
-\pastebutton{VoidXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{)set message void on}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty2}
-\begin{paste}{VoidXmpPageEmpty2}{VoidXmpPagePatch2}
-\pastebutton{VoidXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{)set message void on}
-\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPagePatch3}
-\begin{paste}{VoidXmpPageFull3}{VoidXmpPageEmpty3}
-\pastebutton{VoidXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{b : Fraction Integer}
-\indentrel{3}\begin{verbatim}
-   (2)  "()"
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty3}
-\begin{paste}{VoidXmpPageEmpty3}{VoidXmpPagePatch3}
-\pastebutton{VoidXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{b : Fraction Integer}
-\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPagePatch4}
-\begin{paste}{VoidXmpPageFull4}{VoidXmpPageEmpty4}
-\pastebutton{VoidXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{)set message void off}
-\indentrel{3}\begin{verbatim}
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty4}
-\begin{paste}{VoidXmpPageEmpty4}{VoidXmpPagePatch4}
-\pastebutton{VoidXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{)set message void off}
-\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPagePatch5}
-\begin{paste}{VoidXmpPageFull5}{VoidXmpPageEmpty5}
-\pastebutton{VoidXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{3::Void\bound{prev }}
-\indentrel{3}\begin{verbatim}
-                                             Type: Void
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty5}
-\begin{paste}{VoidXmpPageEmpty5}{VoidXmpPagePatch5}
-\pastebutton{VoidXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{3::Void\bound{prev }}
-\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPagePatch6}
-\begin{paste}{VoidXmpPageFull6}{VoidXmpPageEmpty6}
-\pastebutton{VoidXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{\% :: PositiveInteger\free{prev }}
-\indentrel{3}\begin{verbatim}
-   "()"
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{VoidXmpPageEmpty6}
-\begin{paste}{VoidXmpPageEmpty6}{VoidXmpPagePatch6}
-\pastebutton{VoidXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{\% :: PositiveInteger\free{prev }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/wutset.pht b/books/pages/wutset.pht
deleted file mode 100644
index 75ce432..0000000
--- a/books/pages/wutset.pht
+++ /dev/null
@@ -1,280 +0,0 @@
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch1}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull1}{WuWenTsunTriangularSetXmpPageEmpty1}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty1}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty1}{WuWenTsunTriangularSetXmpPagePatch1}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch2}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull2}{WuWenTsunTriangularSetXmpPageEmpty2}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [x,y,z,t]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty2}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty2}{WuWenTsunTriangularSetXmpPagePatch2}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch3}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull3}{WuWenTsunTriangularSetXmpPageEmpty3}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\indentrel{3}\begin{verbatim}
-   (3)  OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty3}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty3}{WuWenTsunTriangularSetXmpPagePatch3}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{V := OVAR(ls)\free{ls }\bound{V }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch4}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull4}{WuWenTsunTriangularSetXmpPageEmpty4}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\indentrel{3}\begin{verbatim}
-   (4)  IndexedExponents OrderedVariableList [x,y,z,t]
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty4}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty4}{WuWenTsunTriangularSetXmpPagePatch4}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{E := IndexedExponents V\free{V }\bound{E }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch5}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull5}{WuWenTsunTriangularSetXmpPageEmpty5}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\indentrel{3}\begin{verbatim}
-   (5)
-  NewSparseMultivariatePolynomial(Integer,OrderedVariable
-  List [x,y,z,t])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty5}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty5}{WuWenTsunTriangularSetXmpPagePatch5}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{P := NSMP(R, V)\free{R }\free{V }\bound{P }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch6}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull6}{WuWenTsunTriangularSetXmpPageEmpty6}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\indentrel{3}\begin{verbatim}
-   (6)  x
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty6}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty6}{WuWenTsunTriangularSetXmpPagePatch6}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{x: P := 'x\free{P }\bound{x }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch7}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull7}{WuWenTsunTriangularSetXmpPageEmpty7}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\indentrel{3}\begin{verbatim}
-   (7)  y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty7}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty7}{WuWenTsunTriangularSetXmpPagePatch7}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{y: P := 'y\free{P }\bound{y }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch8}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull8}{WuWenTsunTriangularSetXmpPageEmpty8}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\indentrel{3}\begin{verbatim}
-   (8)  z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty8}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty8}{WuWenTsunTriangularSetXmpPagePatch8}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{z: P := 'z\free{P }\bound{z }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch9}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull9}{WuWenTsunTriangularSetXmpPageEmpty9}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\indentrel{3}\begin{verbatim}
-   (9)  t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty9}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty9}{WuWenTsunTriangularSetXmpPagePatch9}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{t: P := 't\free{P }\bound{t }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch10}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull10}{WuWenTsunTriangularSetXmpPageEmpty10}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{T := WUTSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\indentrel{3}\begin{verbatim}
-   (10)
-  WuWenTsunTriangularSet(Integer,IndexedExponents Ordered
-  VariableList [x,y,z,t],OrderedVariableList [x,y,z,t],Ne
-  wSparseMultivariatePolynomial(Integer,OrderedVariableLi
-  st [x,y,z,t]))
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty10}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty10}{WuWenTsunTriangularSetXmpPagePatch10}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{T := WUTSET(R,E,V,P)\free{R }\free{E }\free{V }\free{P }\bound{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch11}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull11}{WuWenTsunTriangularSetXmpPageEmpty11}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-          31    6
-   (11)  x   - x  - x - y
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty11}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty11}{WuWenTsunTriangularSetXmpPagePatch11}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{p1 := x ** 31 - x ** 6 - x - y\free{x }\free{y }\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch12}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull12}{WuWenTsunTriangularSetXmpPageEmpty12}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-          8
-   (12)  x  - z
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty12}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty12}{WuWenTsunTriangularSetXmpPagePatch12}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{p2 := x ** 8 - z\free{x }\free{z }\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch13}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull13}{WuWenTsunTriangularSetXmpPageEmpty13}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-          10
-   (13)  x   - t
-Type: NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty13}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty13}{WuWenTsunTriangularSetXmpPagePatch13}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{p3 := x ** 10 - t\free{x }\free{t }\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch14}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull14}{WuWenTsunTriangularSetXmpPageEmpty14}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-           31    6          8      10
-   (14)  [x   - x  - x - y,x  - z,x   - t]
-Type: List NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty14}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty14}{WuWenTsunTriangularSetXmpPagePatch14}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch15}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull15}{WuWenTsunTriangularSetXmpPageEmpty15}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{characteristicSet(lp)$T\free{lp }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (15)
-     5    4   4 2 2     3 4        7     4      6    6
-   {z  - t , t z y  + 2t z y + (- t  + 2t  - t)z  + t z,
-      3      3     3     3
-    (t  - 1)z x - z y - t }
-Type: Union(WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t])),...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty15}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty15}{WuWenTsunTriangularSetXmpPagePatch15}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{characteristicSet(lp)$T\free{lp }\free{T }}
-\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPagePatch16}
-\begin{paste}{WuWenTsunTriangularSetXmpPageFull16}{WuWenTsunTriangularSetXmpPageEmpty16}
-\pastebutton{WuWenTsunTriangularSetXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
-\indentrel{3}\begin{verbatim}
-   (16)
-                 3      5    4  3     3    2
-   [{t,z,y,x}, {t  - 1,z  - t ,z y + t ,z x  - t},
-
-       5    4
-     {z  - t ,
-       4 2 2     3 4        7     4      6    6
-      t z y  + 2t z y + (- t  + 2t  - t)z  + t z,
-        3      3     3     3
-      (t  - 1)z x - z y - t }
-     ]
-Type: List WuWenTsunTriangularSet(Integer,IndexedExponents OrderedVariableList [x,y,z,t],OrderedVariableList [x,y,z,t],NewSparseMultivariatePolynomial(Integer,OrderedVariableList [x,y,z,t]))
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{WuWenTsunTriangularSetXmpPageEmpty16}
-\begin{paste}{WuWenTsunTriangularSetXmpPageEmpty16}{WuWenTsunTriangularSetXmpPagePatch16}
-\pastebutton{WuWenTsunTriangularSetXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{zeroSetSplit(lp)$T\free{lp }\free{T }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/xpbwpoly.pht b/books/pages/xpbwpoly.pht
deleted file mode 100644
index b56a1d9..0000000
--- a/books/pages/xpbwpoly.pht
+++ /dev/null
@@ -1,877 +0,0 @@
-\begin{patch}{XPBWPolynomialXmpPagePatch1}
-\begin{paste}{XPBWPolynomialXmpPageFull1}{XPBWPolynomialXmpPageEmpty1}
-\pastebutton{XPBWPolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
-\indentrel{3}\begin{verbatim}
-   (1)  a
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty1}
-\begin{paste}{XPBWPolynomialXmpPageEmpty1}{XPBWPolynomialXmpPagePatch1}
-\pastebutton{XPBWPolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{a:Symbol := 'a\bound{a }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch2}
-\begin{paste}{XPBWPolynomialXmpPageFull2}{XPBWPolynomialXmpPageEmpty2}
-\pastebutton{XPBWPolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
-\indentrel{3}\begin{verbatim}
-   (2)  b
-                                           Type: Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty2}
-\begin{paste}{XPBWPolynomialXmpPageEmpty2}{XPBWPolynomialXmpPagePatch2}
-\pastebutton{XPBWPolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{b:Symbol := 'b\bound{b }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch3}
-\begin{paste}{XPBWPolynomialXmpPageFull3}{XPBWPolynomialXmpPageEmpty3}
-\pastebutton{XPBWPolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{RN := Fraction(Integer)\bound{RN }}
-\indentrel{3}\begin{verbatim}
-   (3)  Fraction Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty3}
-\begin{paste}{XPBWPolynomialXmpPageEmpty3}{XPBWPolynomialXmpPagePatch3}
-\pastebutton{XPBWPolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{RN := Fraction(Integer)\bound{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch4}
-\begin{paste}{XPBWPolynomialXmpPageFull4}{XPBWPolynomialXmpPageEmpty4}
-\pastebutton{XPBWPolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid Symbol\bound{word }}
-\indentrel{3}\begin{verbatim}
-   (4)  OrderedFreeMonoid Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty4}
-\begin{paste}{XPBWPolynomialXmpPageEmpty4}{XPBWPolynomialXmpPagePatch4}
-\pastebutton{XPBWPolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{word := OrderedFreeMonoid Symbol\bound{word }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch5}
-\begin{paste}{XPBWPolynomialXmpPageFull5}{XPBWPolynomialXmpPageEmpty5}
-\pastebutton{XPBWPolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{lword := LyndonWord(Symbol)\bound{lword }}
-\indentrel{3}\begin{verbatim}
-   (5)  LyndonWord Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty5}
-\begin{paste}{XPBWPolynomialXmpPageEmpty5}{XPBWPolynomialXmpPagePatch5}
-\pastebutton{XPBWPolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{lword := LyndonWord(Symbol)\bound{lword }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch6}
-\begin{paste}{XPBWPolynomialXmpPageFull6}{XPBWPolynomialXmpPageEmpty6}
-\pastebutton{XPBWPolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{base := PoincareBirkhoffWittLyndonBasis Symbol\bound{base }}
-\indentrel{3}\begin{verbatim}
-   (6)  PoincareBirkhoffWittLyndonBasis Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty6}
-\begin{paste}{XPBWPolynomialXmpPageEmpty6}{XPBWPolynomialXmpPagePatch6}
-\pastebutton{XPBWPolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{base := PoincareBirkhoffWittLyndonBasis Symbol\bound{base }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch7}
-\begin{paste}{XPBWPolynomialXmpPageFull7}{XPBWPolynomialXmpPageEmpty7}
-\pastebutton{XPBWPolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{dpoly := XDistributedPolynomial(Symbol, RN)\bound{dpoly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (7)  XDistributedPolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty7}
-\begin{paste}{XPBWPolynomialXmpPageEmpty7}{XPBWPolynomialXmpPagePatch7}
-\pastebutton{XPBWPolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{dpoly := XDistributedPolynomial(Symbol, RN)\bound{dpoly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch8}
-\begin{paste}{XPBWPolynomialXmpPageFull8}{XPBWPolynomialXmpPageEmpty8}
-\pastebutton{XPBWPolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{rpoly := XRecursivePolynomial(Symbol, RN)\bound{rpoly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (8)  XRecursivePolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty8}
-\begin{paste}{XPBWPolynomialXmpPageEmpty8}{XPBWPolynomialXmpPagePatch8}
-\pastebutton{XPBWPolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{rpoly := XRecursivePolynomial(Symbol, RN)\bound{rpoly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch9}
-\begin{paste}{XPBWPolynomialXmpPageFull9}{XPBWPolynomialXmpPageEmpty9}
-\pastebutton{XPBWPolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{lpoly := LiePolynomial(Symbol, RN)\bound{lpoly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (9)  LiePolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty9}
-\begin{paste}{XPBWPolynomialXmpPageEmpty9}{XPBWPolynomialXmpPagePatch9}
-\pastebutton{XPBWPolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{lpoly := LiePolynomial(Symbol, RN)\bound{lpoly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch10}
-\begin{paste}{XPBWPolynomialXmpPageFull10}{XPBWPolynomialXmpPageEmpty10}
-\pastebutton{XPBWPolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{poly := XPBWPolynomial(Symbol, RN)\bound{poly }\free{RN }}
-\indentrel{3}\begin{verbatim}
-   (10)  XPBWPolynomial(Symbol,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty10}
-\begin{paste}{XPBWPolynomialXmpPageEmpty10}{XPBWPolynomialXmpPagePatch10}
-\pastebutton{XPBWPolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{poly := XPBWPolynomial(Symbol, RN)\bound{poly }\free{RN }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch11}
-\begin{paste}{XPBWPolynomialXmpPageFull11}{XPBWPolynomialXmpPageEmpty11}
-\pastebutton{XPBWPolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{liste : List lword := LyndonWordsList([a,b], 6)\bound{liste }\free{lword a b }}
-\indentrel{3}\begin{verbatim}
-   (11)
-                       2        2     3      2 2
-   [[a], [b], [a b], [a b], [a b ], [a b], [a b ],
-        3     4      3 2     2          2 3           2
-    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
-        4     5      4 2     3          3 3     2     2
-    [a b ], [a b], [a b ], [a b a b], [a b ], [a b a b ],
-      2 2        2 4           3       5
-    [a b a b], [a b ], [a b a b ], [a b ]]
-                           Type: List LyndonWord Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty11}
-\begin{paste}{XPBWPolynomialXmpPageEmpty11}{XPBWPolynomialXmpPagePatch11}
-\pastebutton{XPBWPolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{liste : List lword := LyndonWordsList([a,b], 6)\bound{liste }\free{lword a b }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch12}
-\begin{paste}{XPBWPolynomialXmpPageFull12}{XPBWPolynomialXmpPageEmpty12}
-\pastebutton{XPBWPolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{0$poly\free{poly }}
-\indentrel{3}\begin{verbatim}
-   (12)  0
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty12}
-\begin{paste}{XPBWPolynomialXmpPageEmpty12}{XPBWPolynomialXmpPagePatch12}
-\pastebutton{XPBWPolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{0$poly\free{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch13}
-\begin{paste}{XPBWPolynomialXmpPageFull13}{XPBWPolynomialXmpPageEmpty13}
-\pastebutton{XPBWPolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{1$poly\free{poly }}
-\indentrel{3}\begin{verbatim}
-   (13)  1
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty13}
-\begin{paste}{XPBWPolynomialXmpPageEmpty13}{XPBWPolynomialXmpPagePatch13}
-\pastebutton{XPBWPolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{1$poly\free{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch14}
-\begin{paste}{XPBWPolynomialXmpPageFull14}{XPBWPolynomialXmpPageEmpty14}
-\pastebutton{XPBWPolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{p : poly := a\free{a poly }\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (14)  [a]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty14}
-\begin{paste}{XPBWPolynomialXmpPageEmpty14}{XPBWPolynomialXmpPagePatch14}
-\pastebutton{XPBWPolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{p : poly := a\free{a poly }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch15}
-\begin{paste}{XPBWPolynomialXmpPageFull15}{XPBWPolynomialXmpPageEmpty15}
-\pastebutton{XPBWPolynomialXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{q : poly := b\free{b poly }\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (15)  [b]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty15}
-\begin{paste}{XPBWPolynomialXmpPageEmpty15}{XPBWPolynomialXmpPagePatch15}
-\pastebutton{XPBWPolynomialXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{q : poly := b\free{b poly }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch16}
-\begin{paste}{XPBWPolynomialXmpPageFull16}{XPBWPolynomialXmpPageEmpty16}
-\pastebutton{XPBWPolynomialXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{pq: poly := p*q\free{p q poly }\bound{pq }}
-\indentrel{3}\begin{verbatim}
-   (16)  [a b] + [b][a]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty16}
-\begin{paste}{XPBWPolynomialXmpPageEmpty16}{XPBWPolynomialXmpPagePatch16}
-\pastebutton{XPBWPolynomialXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{pq: poly := p*q\free{p q poly }\bound{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch17}
-\begin{paste}{XPBWPolynomialXmpPageFull17}{XPBWPolynomialXmpPageEmpty17}
-\pastebutton{XPBWPolynomialXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{pq :: dpoly\free{pq dpoly }}
-\indentrel{3}\begin{verbatim}
-   (17)  a b
-  Type: XDistributedPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty17}
-\begin{paste}{XPBWPolynomialXmpPageEmpty17}{XPBWPolynomialXmpPagePatch17}
-\pastebutton{XPBWPolynomialXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{pq :: dpoly\free{pq dpoly }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch18}
-\begin{paste}{XPBWPolynomialXmpPageFull18}{XPBWPolynomialXmpPageEmpty18}
-\pastebutton{XPBWPolynomialXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{mirror pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (18)  [b][a]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty18}
-\begin{paste}{XPBWPolynomialXmpPageEmpty18}{XPBWPolynomialXmpPagePatch18}
-\pastebutton{XPBWPolynomialXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{mirror pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch19}
-\begin{paste}{XPBWPolynomialXmpPageFull19}{XPBWPolynomialXmpPageEmpty19}
-\pastebutton{XPBWPolynomialXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{ListOfTerms pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (19)  [[k= [b][a],c= 1],[k= [a b],c= 1]]
-Type: List Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty19}
-\begin{paste}{XPBWPolynomialXmpPageEmpty19}{XPBWPolynomialXmpPagePatch19}
-\pastebutton{XPBWPolynomialXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{ListOfTerms pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch20}
-\begin{paste}{XPBWPolynomialXmpPageFull20}{XPBWPolynomialXmpPageEmpty20}
-\pastebutton{XPBWPolynomialXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{reductum pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (20)  [a b]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty20}
-\begin{paste}{XPBWPolynomialXmpPageEmpty20}{XPBWPolynomialXmpPagePatch20}
-\pastebutton{XPBWPolynomialXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{reductum pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch21}
-\begin{paste}{XPBWPolynomialXmpPageFull21}{XPBWPolynomialXmpPageEmpty21}
-\pastebutton{XPBWPolynomialXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{leadingMonomial pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (21)  [b][a]
-           Type: PoincareBirkhoffWittLyndonBasis Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty21}
-\begin{paste}{XPBWPolynomialXmpPageEmpty21}{XPBWPolynomialXmpPagePatch21}
-\pastebutton{XPBWPolynomialXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{leadingMonomial pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch22}
-\begin{paste}{XPBWPolynomialXmpPageFull22}{XPBWPolynomialXmpPageEmpty22}
-\pastebutton{XPBWPolynomialXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{coefficients pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (22)  [1,1]
-                            Type: List Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty22}
-\begin{paste}{XPBWPolynomialXmpPageEmpty22}{XPBWPolynomialXmpPagePatch22}
-\pastebutton{XPBWPolynomialXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{coefficients pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch23}
-\begin{paste}{XPBWPolynomialXmpPageFull23}{XPBWPolynomialXmpPageEmpty23}
-\pastebutton{XPBWPolynomialXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{leadingTerm pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (23)  [k= [b][a],c= 1]
-Type: Record(k: PoincareBirkhoffWittLyndonBasis Symbol,c: Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty23}
-\begin{paste}{XPBWPolynomialXmpPageEmpty23}{XPBWPolynomialXmpPagePatch23}
-\pastebutton{XPBWPolynomialXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{leadingTerm pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch24}
-\begin{paste}{XPBWPolynomialXmpPageFull24}{XPBWPolynomialXmpPageEmpty24}
-\pastebutton{XPBWPolynomialXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{degree pq\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (24)  2
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty24}
-\begin{paste}{XPBWPolynomialXmpPageEmpty24}{XPBWPolynomialXmpPagePatch24}
-\pastebutton{XPBWPolynomialXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{degree pq\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch25}
-\begin{paste}{XPBWPolynomialXmpPageFull25}{XPBWPolynomialXmpPageEmpty25}
-\pastebutton{XPBWPolynomialXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{pq4:=exp(pq,4)\bound{pq4 }\free{pq }}
-\indentrel{3}\begin{verbatim}
-   (25)
-                          1              1     2
-     1 + [a b] + [b][a] + Ä [a b][a b] + Ä [a b ][a]
-                          2              2
-   + 
-     1      2     3               1
-     Ä [b][a b] + Ä [b][a b][a] + Ä [b][b][a][a]
-     2            2               2
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty25}
-\begin{paste}{XPBWPolynomialXmpPageEmpty25}{XPBWPolynomialXmpPagePatch25}
-\pastebutton{XPBWPolynomialXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{pq4:=exp(pq,4)\bound{pq4 }\free{pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch26}
-\begin{paste}{XPBWPolynomialXmpPageFull26}{XPBWPolynomialXmpPageEmpty26}
-\pastebutton{XPBWPolynomialXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{log(pq4,4) - pq\free{pq4 pq }}
-\indentrel{3}\begin{verbatim}
-   (26)  0
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty26}
-\begin{paste}{XPBWPolynomialXmpPageEmpty26}{XPBWPolynomialXmpPagePatch26}
-\pastebutton{XPBWPolynomialXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{log(pq4,4) - pq\free{pq4 pq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch27}
-\begin{paste}{XPBWPolynomialXmpPageFull27}{XPBWPolynomialXmpPageEmpty27}
-\pastebutton{XPBWPolynomialXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{lp1 :lpoly := LiePoly liste.10\free{liste lpoly }\bound{lp1 }}
-\indentrel{3}\begin{verbatim}
-           3 2
-   (27)  [a b ]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty27}
-\begin{paste}{XPBWPolynomialXmpPageEmpty27}{XPBWPolynomialXmpPagePatch27}
-\pastebutton{XPBWPolynomialXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{lp1 :lpoly := LiePoly liste.10\free{liste lpoly }\bound{lp1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch28}
-\begin{paste}{XPBWPolynomialXmpPageFull28}{XPBWPolynomialXmpPageEmpty28}
-\pastebutton{XPBWPolynomialXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{lp2 :lpoly := LiePoly liste.11\free{liste lpoly }\bound{lp2 }}
-\indentrel{3}\begin{verbatim}
-           2
-   (28)  [a b a b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty28}
-\begin{paste}{XPBWPolynomialXmpPageEmpty28}{XPBWPolynomialXmpPagePatch28}
-\pastebutton{XPBWPolynomialXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{lp2 :lpoly := LiePoly liste.11\free{liste lpoly }\bound{lp2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch29}
-\begin{paste}{XPBWPolynomialXmpPageFull29}{XPBWPolynomialXmpPageEmpty29}
-\pastebutton{XPBWPolynomialXmpPageFull29}{\hidepaste}
-\tab{5}\spadcommand{lp :lpoly := [lp1, lp2]\free{lp1 lp2 lpoly }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-           3 2 2
-   (29)  [a b a b a b]
-           Type: LiePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty29}
-\begin{paste}{XPBWPolynomialXmpPageEmpty29}{XPBWPolynomialXmpPagePatch29}
-\pastebutton{XPBWPolynomialXmpPageEmpty29}{\showpaste}
-\tab{5}\spadcommand{lp :lpoly := [lp1, lp2]\free{lp1 lp2 lpoly }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch30}
-\begin{paste}{XPBWPolynomialXmpPageFull30}{XPBWPolynomialXmpPageEmpty30}
-\pastebutton{XPBWPolynomialXmpPageFull30}{\hidepaste}
-\tab{5}\spadcommand{lpd1: dpoly := lp1\free{lp1 dpoly }\bound{lpd1 }}
-\indentrel{3}\begin{verbatim}
-   (30)
-      3 2     2         2 2                    2 2
-     a b  - 2a b a b - a b a + 4a b a b a - a b a
-   + 
-               2    2 3
-     - 2b a b a  + b a
-  Type: XDistributedPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty30}
-\begin{paste}{XPBWPolynomialXmpPageEmpty30}{XPBWPolynomialXmpPagePatch30}
-\pastebutton{XPBWPolynomialXmpPageEmpty30}{\showpaste}
-\tab{5}\spadcommand{lpd1: dpoly := lp1\free{lp1 dpoly }\bound{lpd1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch31}
-\begin{paste}{XPBWPolynomialXmpPageFull31}{XPBWPolynomialXmpPageEmpty31}
-\pastebutton{XPBWPolynomialXmpPageFull31}{\hidepaste}
-\tab{5}\spadcommand{lpd2: dpoly := lp2\free{lp2 dpoly }\bound{lpd2 }}
-\indentrel{3}\begin{verbatim}
-   (31)
-      2         2 2          2                    2 2
-     a b a b - a b a - 3a b a b + 4a b a b a - a b a
-   + 
-         3        2             2
-     2b a b - 3b a b a + b a b a
-  Type: XDistributedPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty31}
-\begin{paste}{XPBWPolynomialXmpPageEmpty31}{XPBWPolynomialXmpPagePatch31}
-\pastebutton{XPBWPolynomialXmpPageEmpty31}{\showpaste}
-\tab{5}\spadcommand{lpd2: dpoly := lp2\free{lp2 dpoly }\bound{lpd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch32}
-\begin{paste}{XPBWPolynomialXmpPageFull32}{XPBWPolynomialXmpPageEmpty32}
-\pastebutton{XPBWPolynomialXmpPageFull32}{\hidepaste}
-\tab{5}\spadcommand{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1\free{dpoly lpd1 lpd2 }\bound{lpd }}
-\indentrel{3}\begin{verbatim}
-   (32)
-      3 2 2         3 2 2 2      3 2     2
-     a b a b a b - a b a b a - 3a b a b a b
-   + 
-       3 2             3 2   2 2     3 3 3      3 3 2
-     4a b a b a b a - a b a b a  + 2a b a b - 3a b a b a
-   + 
-      3 3     2    2       3 2     2       2 2
-     a b a b a  - a b a b a b  + 3a b a b a b a
-   + 
-       2           2       2
-     6a b a b a b a b - 12a b a b a b a b a
-   + 
-       2         2 2     2     2 3      2     2 2
-     3a b a b a b a  - 4a b a b a b + 6a b a b a b a
-   + 
-        2     3 3    2 2 4 2     2 2 3          2 2 2   2
-     - a b a b a  + a b a b  - 3a b a b a b + 3a b a b a b
-   + 
-         2 2     3      2 2     2        2 2         2
-     - 2a b a b a b + 3a b a b a b a - 3a b a b a b a
-   + 
-      2 2   2 3         2   3 2         2   2
-     a b a b a  + 3a b a b a b  - 6a b a b a b a b
-   + 
-             2   2 2           2
-     - 3a b a b a b a + 12a b a b a b a b a
-   + 
-             2     2 2         2 2     2         2 3 3
-     - 3a b a b a b a  - 6a b a b a b a  + 3a b a b a
-   + 
-                 4 2              3
-     - 4a b a b a b  + 12a b a b a b a b
-   + 
-                  2   2                  3
-     - 12a b a b a b a b + 8a b a b a b a b
-   + 
-                      2                         2
-     - 12a b a b a b a b a + 12a b a b a b a b a
-   + 
-                   2 3      2 5 2       2 4
-     - 4a b a b a b a  + a b a b  - 3a b a b a b
-   + 
-         2 3   2        2 2   3        2 2   2
-     3a b a b a b - 2a b a b a b + 3a b a b a b a
-   + 
-           2 2       2      2 2 2 3       3   3 2
-     - 3a b a b a b a  + a b a b a  - 2b a b a b
-   + 
-         3   2            3   2 2        3
-     4b a b a b a b + 2b a b a b a - 8b a b a b a b a
-   + 
-         3     2 2       3 2     2       3 3 3
-     2b a b a b a  + 4b a b a b a  - 2b a b a
-   + 
-         2   4 2       2   3            2   3 2
-     3b a b a b  - 6b a b a b a b - 3b a b a b a
-   + 
-          2   2              2   2 2 2       2           2
-     12b a b a b a b a - 3b a b a b a  - 6b a b a b a b a
-   + 
-         2     2 3          5 2           4 2
-     3b a b a b a  - b a b a b  + 3b a b a b a
-   + 
-             3   2             3                  3 2 2
-     6b a b a b a b - 12b a b a b a b a + 3b a b a b a
-   + 
-               2   3            2   2             2 2 3
-     - 4b a b a b a b + 6b a b a b a b a - b a b a b a
-   + 
-      2 5         2 5 2      2 4   2      2 4
-     b a b a b - b a b a - 3b a b a b + 4b a b a b a
-   + 
-      2 4 2 2     2 3   3      2 3   2       2 3       2
-   - b a b a  + 2b a b a b - 3b a b a b a + b a b a b a
-  Type: XDistributedPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty32}
-\begin{paste}{XPBWPolynomialXmpPageEmpty32}{XPBWPolynomialXmpPagePatch32}
-\pastebutton{XPBWPolynomialXmpPageEmpty32}{\showpaste}
-\tab{5}\spadcommand{lpd : dpoly := lpd1 * lpd2 - lpd2 * lpd1\free{dpoly lpd1 lpd2 }\bound{lpd }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch33}
-\begin{paste}{XPBWPolynomialXmpPageFull33}{XPBWPolynomialXmpPageEmpty33}
-\pastebutton{XPBWPolynomialXmpPageFull33}{\hidepaste}
-\tab{5}\spadcommand{lp :: dpoly - lpd\free{lpd dpoly lp }}
-\indentrel{3}\begin{verbatim}
-   (33)  0
-  Type: XDistributedPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty33}
-\begin{paste}{XPBWPolynomialXmpPageEmpty33}{XPBWPolynomialXmpPagePatch33}
-\pastebutton{XPBWPolynomialXmpPageEmpty33}{\showpaste}
-\tab{5}\spadcommand{lp :: dpoly - lpd\free{lpd dpoly lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch34}
-\begin{paste}{XPBWPolynomialXmpPageFull34}{XPBWPolynomialXmpPageEmpty34}
-\pastebutton{XPBWPolynomialXmpPageFull34}{\hidepaste}
-\tab{5}\spadcommand{p := 3 * lp\free{lp }\bound{pp }}
-\indentrel{3}\begin{verbatim}
-            3 2 2
-   (34)  3[a b a b a b]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty34}
-\begin{paste}{XPBWPolynomialXmpPageEmpty34}{XPBWPolynomialXmpPagePatch34}
-\pastebutton{XPBWPolynomialXmpPageEmpty34}{\showpaste}
-\tab{5}\spadcommand{p := 3 * lp\free{lp }\bound{pp }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch35}
-\begin{paste}{XPBWPolynomialXmpPageFull35}{XPBWPolynomialXmpPageEmpty35}
-\pastebutton{XPBWPolynomialXmpPageFull35}{\hidepaste}
-\tab{5}\spadcommand{q := lp1\free{lp1 }\bound{qq }}
-\indentrel{3}\begin{verbatim}
-           3 2
-   (35)  [a b ]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty35}
-\begin{paste}{XPBWPolynomialXmpPageEmpty35}{XPBWPolynomialXmpPagePatch35}
-\pastebutton{XPBWPolynomialXmpPageEmpty35}{\showpaste}
-\tab{5}\spadcommand{q := lp1\free{lp1 }\bound{qq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch36}
-\begin{paste}{XPBWPolynomialXmpPageFull36}{XPBWPolynomialXmpPageEmpty36}
-\pastebutton{XPBWPolynomialXmpPageFull36}{\hidepaste}
-\tab{5}\spadcommand{pq:= p * q\free{pp qq }\bound{pqpq }}
-\indentrel{3}\begin{verbatim}
-            3 2 2        3 2
-   (36)  3[a b a b a b][a b ]
-          Type: XPBWPolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty36}
-\begin{paste}{XPBWPolynomialXmpPageEmpty36}{XPBWPolynomialXmpPagePatch36}
-\pastebutton{XPBWPolynomialXmpPageEmpty36}{\showpaste}
-\tab{5}\spadcommand{pq:= p * q\free{pp qq }\bound{pqpq }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch37}
-\begin{paste}{XPBWPolynomialXmpPageFull37}{XPBWPolynomialXmpPageEmpty37}
-\pastebutton{XPBWPolynomialXmpPageFull37}{\hidepaste}
-\tab{5}\spadcommand{pr:rpoly := p :: rpoly\free{rpoly pp }\bound{pr }}
-\indentrel{3}\begin{verbatim}
-   (37)
-       a
-    *
-           a
-        *
-               a b b
-            *
-                   a
-                *
-                     a b(a b 3 + b a(- 3))
-                   + 
-                     b(a(a b(- 9) + b a 12) + b a a(- 3))
-               + 
-                 b a(a(a b 6 + b a(- 9)) + b a a 3)
-           + 
-               b
-            *
-                   a b
-                *
-                       a
-                    *
-                         a(a b b(- 3) + b b a 9)
-                       + 
-                       b(a(a b 18 + b a(- 36)) + b a a 9)
-                   + 
-                       b
-                    *
-                         a a(a b(- 12) + b a 18)
-                       + 
-                         b a a a(- 3)
-               + 
-                   b a
-                *
-                       a
-                    *
-                     (a(a b b 3 + b a b(- 9)) + b a a b 9)
-                   + 
-                       b
-                    *
-                           a
-                        *
-                             a(a b(- 6) + b a 9)
-                           + 
-                             b a a(- 9)
-                       + 
-                         b a a a 3
-       + 
-           b
-        *
-               a
-            *
-                   a b
-                *
-                       a
-                    *
-                           a
-                        *
-                             a b b 9
-                           + 
-                             b(a b(- 18) + b a(- 9))
-                       + 
-                         b(a b a 36 + b a a(- 9))
-                   + 
-                     b(a b a a(- 18) + b a a a 9)
-               + 
-                   b a
-                *
-                       a
-                    *
-                         a(a b b(- 12) + b a b 36)
-                       + 
-                         b a a b(- 36)
-                   + 
-                       b
-                    *
-                           a
-                        *
-                             a(a b 24 + b a(- 36))
-                           + 
-                             b a a 36
-                       + 
-                         b a a a(- 12)
-           + 
-               b a a
-            *
-                 a(a(a b b 3 + b a b(- 9)) + b a a b 9)
-               + 
-                   b
-                *
-                     a(a(a b(- 6) + b a 9) + b a a(- 9))
-                   + 
-                     b a a a 3
-   + 
-       b
-    *
-           a
-        *
-               a
-            *
-                   a b
-                *
-                       a
-                    *
-                         a(a b b(- 6) + b(a b 12 + b a 6))
-                       + 
-                         b(a b a(- 24) + b a a 6)
-                   + 
-                     b(a b a a 12 + b a a a(- 6))
-               + 
-                   b a
-                *
-                       a
-                    *
-                           a
-                        *
-                             a b b 9
-                           + 
-                             b(a b(- 18) + b a(- 9))
-                       + 
-                         b(a b a 36 + b a a(- 9))
-                   + 
-                     b(a b a a(- 18) + b a a a 9)
-           + 
-               b a a
-            *
-                   a
-                *
-                     a(a b b(- 3) + b b a 9)
-                   + 
-                     b(a(a b 18 + b a(- 36)) + b a a 9)
-               + 
-               b(a a(a b(- 12) + b a 18) + b a a a(- 3))
-       + 
-           b a a a
-        *
-               a
-            *
-                 a b(a b 3 + b a(- 3))
-               + 
-                 b(a(a b(- 9) + b a 12) + b a a(- 3))
-           + 
-             b a(a(a b 6 + b a(- 9)) + b a a 3)
-    Type: XRecursivePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty37}
-\begin{paste}{XPBWPolynomialXmpPageEmpty37}{XPBWPolynomialXmpPagePatch37}
-\pastebutton{XPBWPolynomialXmpPageEmpty37}{\showpaste}
-\tab{5}\spadcommand{pr:rpoly := p :: rpoly\free{rpoly pp }\bound{pr }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch38}
-\begin{paste}{XPBWPolynomialXmpPageFull38}{XPBWPolynomialXmpPageEmpty38}
-\pastebutton{XPBWPolynomialXmpPageFull38}{\hidepaste}
-\tab{5}\spadcommand{qr:rpoly := q :: rpoly\free{rpoly qq }\bound{qr }}
-\indentrel{3}\begin{verbatim}
-   (38)
-       a
-    *
-         a(a b b 1 + b(a b(- 2) + b a(- 1)))
-       + 
-         b(a b a 4 + b a a(- 1))
-   + 
-     b(a b a a(- 2) + b a a a 1)
-    Type: XRecursivePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty38}
-\begin{paste}{XPBWPolynomialXmpPageEmpty38}{XPBWPolynomialXmpPagePatch38}
-\pastebutton{XPBWPolynomialXmpPageEmpty38}{\showpaste}
-\tab{5}\spadcommand{qr:rpoly := q :: rpoly\free{rpoly qq }\bound{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPagePatch39}
-\begin{paste}{XPBWPolynomialXmpPageFull39}{XPBWPolynomialXmpPageEmpty39}
-\pastebutton{XPBWPolynomialXmpPageFull39}{\hidepaste}
-\tab{5}\spadcommand{pq :: rpoly - pr*qr\free{pr qr rpoly pqpq }}
-\indentrel{3}\begin{verbatim}
-   (39)  0
-    Type: XRecursivePolynomial(Symbol,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPBWPolynomialXmpPageEmpty39}
-\begin{paste}{XPBWPolynomialXmpPageEmpty39}{XPBWPolynomialXmpPagePatch39}
-\pastebutton{XPBWPolynomialXmpPageEmpty39}{\showpaste}
-\tab{5}\spadcommand{pq :: rpoly - pr*qr\free{pr qr rpoly pqpq }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/xpoly.pht b/books/pages/xpoly.pht
deleted file mode 100644
index 738fc88..0000000
--- a/books/pages/xpoly.pht
+++ /dev/null
@@ -1,245 +0,0 @@
-\begin{patch}{XPolynomialXmpPagePatch1}
-\begin{paste}{XPolynomialXmpPageFull1}{XPolynomialXmpPageEmpty1}
-\pastebutton{XPolynomialXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{poly := XPolynomial(Integer)\bound{poly }}
-\indentrel{3}\begin{verbatim}
-   (1)  XPolynomial Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty1}
-\begin{paste}{XPolynomialXmpPageEmpty1}{XPolynomialXmpPagePatch1}
-\pastebutton{XPolynomialXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{poly := XPolynomial(Integer)\bound{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch2}
-\begin{paste}{XPolynomialXmpPageFull2}{XPolynomialXmpPageEmpty2}
-\pastebutton{XPolynomialXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{pr: poly := 2*x + 3*y-5\free{poly }\bound{pr }}
-\indentrel{3}\begin{verbatim}
-   (2)  - 5 + x 2 + y 3
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty2}
-\begin{paste}{XPolynomialXmpPageEmpty2}{XPolynomialXmpPagePatch2}
-\pastebutton{XPolynomialXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{pr: poly := 2*x + 3*y-5\free{poly }\bound{pr }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch3}
-\begin{paste}{XPolynomialXmpPageFull3}{XPolynomialXmpPageEmpty3}
-\pastebutton{XPolynomialXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{pr2: poly := pr*pr\free{poly }\bound{pr2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  25 + x(- 20 + x 4 + y 6) + y(- 30 + x 6 + y 9)
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty3}
-\begin{paste}{XPolynomialXmpPageEmpty3}{XPolynomialXmpPagePatch3}
-\pastebutton{XPolynomialXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{pr2: poly := pr*pr\free{poly }\bound{pr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch4}
-\begin{paste}{XPolynomialXmpPageFull4}{XPolynomialXmpPageEmpty4}
-\pastebutton{XPolynomialXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{pd := expand pr\free{pr }\bound{pd }}
-\indentrel{3}\begin{verbatim}
-   (4)  - 5 + 2x + 3y
-           Type: XDistributedPolynomial(Symbol,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty4}
-\begin{paste}{XPolynomialXmpPageEmpty4}{XPolynomialXmpPagePatch4}
-\pastebutton{XPolynomialXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{pd := expand pr\free{pr }\bound{pd }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch5}
-\begin{paste}{XPolynomialXmpPageFull5}{XPolynomialXmpPageEmpty5}
-\pastebutton{XPolynomialXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{pd2 := pd*pd\free{pd }\bound{pd2 }}
-\indentrel{3}\begin{verbatim}
-                           2                   2
-   (5)  25 - 20x - 30y + 4x  + 6x y + 6y x + 9y
-           Type: XDistributedPolynomial(Symbol,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty5}
-\begin{paste}{XPolynomialXmpPageEmpty5}{XPolynomialXmpPagePatch5}
-\pastebutton{XPolynomialXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{pd2 := pd*pd\free{pd }\bound{pd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch6}
-\begin{paste}{XPolynomialXmpPageFull6}{XPolynomialXmpPageEmpty6}
-\pastebutton{XPolynomialXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{expand(pr2) - pd2\free{pr2 }\free{pd2 }}
-\indentrel{3}\begin{verbatim}
-   (6)  0
-           Type: XDistributedPolynomial(Symbol,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty6}
-\begin{paste}{XPolynomialXmpPageEmpty6}{XPolynomialXmpPagePatch6}
-\pastebutton{XPolynomialXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{expand(pr2) - pd2\free{pr2 }\free{pd2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch7}
-\begin{paste}{XPolynomialXmpPageFull7}{XPolynomialXmpPageEmpty7}
-\pastebutton{XPolynomialXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{qr := pr**3\free{pr }\bound{qr }}
-\indentrel{3}\begin{verbatim}
-   (7)
-     - 125
-   + 
-     x(150 + x(- 60 + x 8 + y 12) + y(- 90 + x 12 + y 18))
-   + 
-   y(225 + x(- 90 + x 12 + y 18) + y(- 135 + x 18 + y 27))
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty7}
-\begin{paste}{XPolynomialXmpPageEmpty7}{XPolynomialXmpPagePatch7}
-\pastebutton{XPolynomialXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{qr := pr**3\free{pr }\bound{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch8}
-\begin{paste}{XPolynomialXmpPageFull8}{XPolynomialXmpPageEmpty8}
-\pastebutton{XPolynomialXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{qd := pd**3\free{pd }\bound{qd }}
-\indentrel{3}\begin{verbatim}
-   (8)
-                              2                       2
-     - 125 + 150x + 225y - 60x  - 90x y - 90y x - 135y
-   + 
-       3      2                   2        2
-     8x  + 12x y + 12x y x + 18x y  + 12y x  + 18y x y
-   + 
-        2       3
-     18y x + 27y
-           Type: XDistributedPolynomial(Symbol,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty8}
-\begin{paste}{XPolynomialXmpPageEmpty8}{XPolynomialXmpPagePatch8}
-\pastebutton{XPolynomialXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{qd := pd**3\free{pd }\bound{qd }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch9}
-\begin{paste}{XPolynomialXmpPageFull9}{XPolynomialXmpPageEmpty9}
-\pastebutton{XPolynomialXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{ trunc(qd,2)\free{qd }}
-\indentrel{3}\begin{verbatim}
-   (9)
-                            2                       2
-   - 125 + 150x + 225y - 60x  - 90x y - 90y x - 135y
-           Type: XDistributedPolynomial(Symbol,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty9}
-\begin{paste}{XPolynomialXmpPageEmpty9}{XPolynomialXmpPagePatch9}
-\pastebutton{XPolynomialXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{ trunc(qd,2)\free{qd }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch10}
-\begin{paste}{XPolynomialXmpPageFull10}{XPolynomialXmpPageEmpty10}
-\pastebutton{XPolynomialXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{trunc(qr,2)\free{qr }}
-\indentrel{3}\begin{verbatim}
-   (10)
-     - 125 + x(150 + x(- 60) + y(- 90))
-   + 
-     y(225 + x(- 90) + y(- 135))
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty10}
-\begin{paste}{XPolynomialXmpPageEmpty10}{XPolynomialXmpPagePatch10}
-\pastebutton{XPolynomialXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{trunc(qr,2)\free{qr }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch11}
-\begin{paste}{XPolynomialXmpPageFull11}{XPolynomialXmpPageEmpty11}
-\pastebutton{XPolynomialXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{Word := OrderedFreeMonoid Symbol\bound{Word }}
-\indentrel{3}\begin{verbatim}
-   (11)  OrderedFreeMonoid Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty11}
-\begin{paste}{XPolynomialXmpPageEmpty11}{XPolynomialXmpPagePatch11}
-\pastebutton{XPolynomialXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{Word := OrderedFreeMonoid Symbol\bound{Word }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch12}
-\begin{paste}{XPolynomialXmpPageFull12}{XPolynomialXmpPageEmpty12}
-\pastebutton{XPolynomialXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{w: Word := x*y**2\free{Word }\bound{w }}
-\indentrel{3}\begin{verbatim}
-            2
-   (12)  x y
-                         Type: OrderedFreeMonoid Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty12}
-\begin{paste}{XPolynomialXmpPageEmpty12}{XPolynomialXmpPagePatch12}
-\pastebutton{XPolynomialXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{w: Word := x*y**2\free{Word }\bound{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch13}
-\begin{paste}{XPolynomialXmpPageFull13}{XPolynomialXmpPageEmpty13}
-\pastebutton{XPolynomialXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{rquo(qr,w)\free{qr }\free{w }}
-\indentrel{3}\begin{verbatim}
-   (13)  18
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty13}
-\begin{paste}{XPolynomialXmpPageEmpty13}{XPolynomialXmpPagePatch13}
-\pastebutton{XPolynomialXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{rquo(qr,w)\free{qr }\free{w }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPagePatch14}
-\begin{paste}{XPolynomialXmpPageFull14}{XPolynomialXmpPageEmpty14}
-\pastebutton{XPolynomialXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{sh(pr,w::poly)\free{pr }\free{w }}
-\indentrel{3}\begin{verbatim}
-   (14)
-   x(x y y 4 + y(x y 2 + y(- 5 + x 2 + y 9))) + y x y y 3
-                              Type: XPolynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialXmpPageEmpty14}
-\begin{paste}{XPolynomialXmpPageEmpty14}{XPolynomialXmpPagePatch14}
-\pastebutton{XPolynomialXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{sh(pr,w::poly)\free{pr }\free{w }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/xpr.pht b/books/pages/xpr.pht
deleted file mode 100644
index 0d97a8f..0000000
--- a/books/pages/xpr.pht
+++ /dev/null
@@ -1,325 +0,0 @@
-\begin{patch}{XPolynomialRingXmpPagePatch1}
-\begin{paste}{XPolynomialRingXmpPageFull1}{XPolynomialRingXmpPageEmpty1}
-\pastebutton{XPolynomialRingXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{Word := OrderedFreeMonoid(Symbol)\bound{Word }}
-\indentrel{3}\begin{verbatim}
-   (1)  OrderedFreeMonoid Symbol
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty1}
-\begin{paste}{XPolynomialRingXmpPageEmpty1}{XPolynomialRingXmpPagePatch1}
-\pastebutton{XPolynomialRingXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{Word := OrderedFreeMonoid(Symbol)\bound{Word }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch2}
-\begin{paste}{XPolynomialRingXmpPageFull2}{XPolynomialRingXmpPageEmpty2}
-\pastebutton{XPolynomialRingXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{poly:= XPR(Integer,Word)\free{Word }\bound{poly }}
-\indentrel{3}\begin{verbatim}
-   (2)
-   XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty2}
-\begin{paste}{XPolynomialRingXmpPageEmpty2}{XPolynomialRingXmpPagePatch2}
-\pastebutton{XPolynomialRingXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{poly:= XPR(Integer,Word)\free{Word }\bound{poly }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch3}
-\begin{paste}{XPolynomialRingXmpPageFull3}{XPolynomialRingXmpPageEmpty3}
-\pastebutton{XPolynomialRingXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{p:poly := 2 * x - 3 * y + 1\free{poly }\bound{p }}
-\indentrel{3}\begin{verbatim}
-   (3)  1 + 2x - 3y
-Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty3}
-\begin{paste}{XPolynomialRingXmpPageEmpty3}{XPolynomialRingXmpPagePatch3}
-\pastebutton{XPolynomialRingXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{p:poly := 2 * x - 3 * y + 1\free{poly }\bound{p }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch4}
-\begin{paste}{XPolynomialRingXmpPageFull4}{XPolynomialRingXmpPageEmpty4}
-\pastebutton{XPolynomialRingXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{q:poly := 2 * x + 1\free{poly }\bound{q }}
-\indentrel{3}\begin{verbatim}
-   (4)  1 + 2x
-Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty4}
-\begin{paste}{XPolynomialRingXmpPageEmpty4}{XPolynomialRingXmpPagePatch4}
-\pastebutton{XPolynomialRingXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{q:poly := 2 * x + 1\free{poly }\bound{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch5}
-\begin{paste}{XPolynomialRingXmpPageFull5}{XPolynomialRingXmpPageEmpty5}
-\pastebutton{XPolynomialRingXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p + q\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-   (5)  2 + 4x - 3y
-Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty5}
-\begin{paste}{XPolynomialRingXmpPageEmpty5}{XPolynomialRingXmpPagePatch5}
-\pastebutton{XPolynomialRingXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p + q\free{p }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch6}
-\begin{paste}{XPolynomialRingXmpPageFull6}{XPolynomialRingXmpPageEmpty6}
-\pastebutton{XPolynomialRingXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p * q\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-                        2
-   (6)  1 + 4x - 3y + 4x  - 6y x
-Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty6}
-\begin{paste}{XPolynomialRingXmpPageEmpty6}{XPolynomialRingXmpPagePatch6}
-\pastebutton{XPolynomialRingXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p * q\free{p }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch7}
-\begin{paste}{XPolynomialRingXmpPageFull7}{XPolynomialRingXmpPageEmpty7}
-\pastebutton{XPolynomialRingXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{(p +q)^2 -p^2 -q^2 - 2*p*q\free{p }\free{q }}
-\indentrel{3}\begin{verbatim}
-   (7)  - 6x y + 6y x
-Type: XPolynomialRing(Integer,OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty7}
-\begin{paste}{XPolynomialRingXmpPageEmpty7}{XPolynomialRingXmpPagePatch7}
-\pastebutton{XPolynomialRingXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{(p +q)^2 -p^2 -q^2 - 2*p*q\free{p }\free{q }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch8}
-\begin{paste}{XPolynomialRingXmpPageFull8}{XPolynomialRingXmpPageEmpty8}
-\pastebutton{XPolynomialRingXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{M := SquareMatrix(2,Fraction Integer)\bound{M }}
-\indentrel{3}\begin{verbatim}
-   (8)  SquareMatrix(2,Fraction Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty8}
-\begin{paste}{XPolynomialRingXmpPageEmpty8}{XPolynomialRingXmpPagePatch8}
-\pastebutton{XPolynomialRingXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{M := SquareMatrix(2,Fraction Integer)\bound{M }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch9}
-\begin{paste}{XPolynomialRingXmpPageFull9}{XPolynomialRingXmpPageEmpty9}
-\pastebutton{XPolynomialRingXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{poly1:= XPR(M,Word)\free{Word }\free{M }\bound{poly1 }}
-\indentrel{3}\begin{verbatim}
-   (9)
-  XPolynomialRing(SquareMatrix(2,Fraction Integer),Ordere
-  dFreeMonoid Symbol)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty9}
-\begin{paste}{XPolynomialRingXmpPageEmpty9}{XPolynomialRingXmpPagePatch9}
-\pastebutton{XPolynomialRingXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{poly1:= XPR(M,Word)\free{Word }\free{M }\bound{poly1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch10}
-\begin{paste}{XPolynomialRingXmpPageFull10}{XPolynomialRingXmpPageEmpty10}
-\pastebutton{XPolynomialRingXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2]\free{M }\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-         Ú1  2¿
-   (10)  ³    ³
-         À4  8Ù
-                 Type: SquareMatrix(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty10}
-\begin{paste}{XPolynomialRingXmpPageEmpty10}{XPolynomialRingXmpPagePatch10}
-\pastebutton{XPolynomialRingXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{m1:M := matrix [[i*j**2 for i in 1..2] for j in 1..2]\free{M }\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch11}
-\begin{paste}{XPolynomialRingXmpPageFull11}{XPolynomialRingXmpPageEmpty11}
-\pastebutton{XPolynomialRingXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{m2:M := m1 - 5/4\free{M }\free{m1 }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-         Ú  1    ¿
-         ³- Ä  2 ³
-         ³  4    ³
-   (11)  ³       ³
-         ³     27³
-         ³ 4   ÄÄ³
-         À      4Ù
-                 Type: SquareMatrix(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty11}
-\begin{paste}{XPolynomialRingXmpPageEmpty11}{XPolynomialRingXmpPagePatch11}
-\pastebutton{XPolynomialRingXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{m2:M := m1 - 5/4\free{M }\free{m1 }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch12}
-\begin{paste}{XPolynomialRingXmpPageFull12}{XPolynomialRingXmpPageEmpty12}
-\pastebutton{XPolynomialRingXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{m3: M := m2**2\free{M }\free{m2 }\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-         Ú129     ¿
-         ³ÄÄÄ  13 ³
-         ³ 16     ³
-   (12)  ³        ³
-         ³     857³
-         ³26   ÄÄÄ³
-         À      16Ù
-                 Type: SquareMatrix(2,Fraction Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty12}
-\begin{paste}{XPolynomialRingXmpPageEmpty12}{XPolynomialRingXmpPagePatch12}
-\pastebutton{XPolynomialRingXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{m3: M := m2**2\free{M }\free{m2 }\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch13}
-\begin{paste}{XPolynomialRingXmpPageFull13}{XPolynomialRingXmpPageEmpty13}
-\pastebutton{XPolynomialRingXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{pm:poly1 := m1*x + m2*y + m3*z - 2/3\free{poly1 }\free{m1 }\free{m2 }\free{m3 }\bound{pm }}
-\indentrel{3}\begin{verbatim}
-         Ú  2     ¿             Ú  1    ¿    Ú129     ¿
-         ³- Ä   0 ³             ³- Ä  2 ³    ³ÄÄÄ  13 ³
-         ³  3     ³   Ú1  2¿    ³  4    ³    ³ 16     ³
-   (13)  ³        ³ + ³    ³x + ³       ³y + ³        ³z
-         ³       2³   À4  8Ù    ³     27³    ³     857³
-         ³ 0   - Ä³             ³ 4   ÄÄ³    ³26   ÄÄÄ³
-         À       3Ù             À      4Ù    À      16Ù
-Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty13}
-\begin{paste}{XPolynomialRingXmpPageEmpty13}{XPolynomialRingXmpPagePatch13}
-\pastebutton{XPolynomialRingXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{pm:poly1 := m1*x + m2*y + m3*z - 2/3\free{poly1 }\free{m1 }\free{m2 }\free{m3 }\bound{pm }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch14}
-\begin{paste}{XPolynomialRingXmpPageFull14}{XPolynomialRingXmpPageEmpty14}
-\pastebutton{XPolynomialRingXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{qm:poly1 := pm - m1*x\free{m1 }\free{pm }\bound{qm }}
-\indentrel{3}\begin{verbatim}
-         Ú  2     ¿   Ú  1    ¿    Ú129     ¿
-         ³- Ä   0 ³   ³- Ä  2 ³    ³ÄÄÄ  13 ³
-         ³  3     ³   ³  4    ³    ³ 16     ³
-   (14)  ³        ³ + ³       ³y + ³        ³z
-         ³       2³   ³     27³    ³     857³
-         ³ 0   - Ä³   ³ 4   ÄÄ³    ³26   ÄÄÄ³
-         À       3Ù   À      4Ù    À      16Ù
-Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty14}
-\begin{paste}{XPolynomialRingXmpPageEmpty14}{XPolynomialRingXmpPagePatch14}
-\pastebutton{XPolynomialRingXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{qm:poly1 := pm - m1*x\free{m1 }\free{pm }\bound{qm }}
-\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPagePatch15}
-\begin{paste}{XPolynomialRingXmpPageFull15}{XPolynomialRingXmpPageEmpty15}
-\pastebutton{XPolynomialRingXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{qm**3\bound{qm }}
-\indentrel{3}\begin{verbatim}
-   (15)
-     Ú   8      ¿   Ú  1  8¿    Ú43   52 ¿
-     ³- ÄÄ   0  ³   ³- Ä  Ä³    ³ÄÄ   ÄÄ ³
-     ³  27      ³   ³  3  3³    ³ 4    3 ³
-     ³          ³ + ³      ³y + ³        ³z
-     ³         8³   ³16    ³    ³104  857³
-     ³ 0    - ÄÄ³   ³ÄÄ   9³    ³ÄÄÄ  ÄÄÄ³
-     À        27Ù   À 3    Ù    À 3    12Ù
-   + 
-     Ú  129       ¿     Ú  3199     831 ¿
-     ³- ÄÄÄ  - 26 ³     ³- ÄÄÄÄ   - ÄÄÄ ³
-     ³   8        ³ 2   ³   32       4  ³
-     ³            ³y  + ³               ³y z
-     ³         857³     ³  831     26467³
-     ³- 52   - ÄÄÄ³     ³- ÄÄÄ   - ÄÄÄÄÄ³
-     À          8 Ù     À   2        32 Ù
-   + 
-     Ú  3199     831 ¿      Ú  103169     6409 ¿
-     ³- ÄÄÄÄ   - ÄÄÄ ³      ³- ÄÄÄÄÄÄ   - ÄÄÄÄ ³
-     ³   32       4  ³      ³    128        4  ³ 2
-     ³               ³z y + ³                  ³z
-     ³  831     26467³      ³   6409     820977³
-     ³- ÄÄÄ   - ÄÄÄÄÄ³      ³ - ÄÄÄÄ   - ÄÄÄÄÄÄ³
-     À   2        32 Ù      À     2        128 Ù
-   + 
-     Ú3199   831 ¿     Ú103169   6409 ¿
-     ³ÄÄÄÄ   ÄÄÄ ³     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³
-     ³ 64     8  ³ 3   ³  256      8  ³ 2
-     ³           ³y  + ³              ³y z
-     ³831   26467³     ³ 6409   820977³
-     ³ÄÄÄ   ÄÄÄÄÄ³     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³
-     À 4      64 Ù     À   4      256 Ù
-   + 
-     Ú103169   6409 ¿        Ú3178239   795341 ¿
-     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³        ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³
-     ³  256      8  ³        ³  1024      128  ³   2
-     ³              ³y z y + ³                 ³y z
-     ³ 6409   820977³        ³795341   25447787³
-     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³        ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³
-     À   4      256 Ù        À  64       1024  Ù
-   + 
-     Ú103169   6409 ¿       Ú3178239   795341 ¿
-     ³ÄÄÄÄÄÄ   ÄÄÄÄ ³       ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³
-     ³  256      8  ³   2   ³  1024      128  ³
-     ³              ³z y  + ³                 ³z y z
-     ³ 6409   820977³       ³795341   25447787³
-     ³ ÄÄÄÄ   ÄÄÄÄÄÄ³       ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³
-     À   4      256 Ù       À  64       1024  Ù
-   + 
-     Ú3178239   795341 ¿      Ú98625409  12326223 ¿
-     ³ÄÄÄÄÄÄÄ   ÄÄÄÄÄÄ ³      ³ÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄ ³
-     ³  1024      128  ³ 2    ³  4096       256   ³ 3
-     ³                 ³z y + ³                   ³z
-     ³795341   25447787³      ³12326223  788893897³
-     ³ÄÄÄÄÄÄ   ÄÄÄÄÄÄÄÄ³      ³ÄÄÄÄÄÄÄÄ  ÄÄÄÄÄÄÄÄÄ³
-     À  64       1024  Ù      À   128       4096  Ù
-Type: XPolynomialRing(SquareMatrix(2,Fraction Integer),OrderedFreeMonoid Symbol)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{XPolynomialRingXmpPageEmpty15}
-\begin{paste}{XPolynomialRingXmpPageEmpty15}{XPolynomialRingXmpPagePatch15}
-\pastebutton{XPolynomialRingXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{qm**3\bound{qm }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/zdsolve.pht b/books/pages/zdsolve.pht
deleted file mode 100644
index fccef01..0000000
--- a/books/pages/zdsolve.pht
+++ /dev/null
@@ -1,2274 +0,0 @@
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch1}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull1}{ZeroDimensionalSolvePackageXmpPageEmpty1}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\indentrel{3}\begin{verbatim}
-   (1)  Integer
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty1}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty1}{ZeroDimensionalSolvePackageXmpPagePatch1}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{R := Integer\bound{R }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch2}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull2}{ZeroDimensionalSolvePackageXmpPageEmpty2}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\indentrel{3}\begin{verbatim}
-   (2)  [x,y,z,t]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty2}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty2}{ZeroDimensionalSolvePackageXmpPagePatch2}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{ls : List Symbol := [x,y,z,t]\bound{ls }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch3}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull3}{ZeroDimensionalSolvePackageXmpPageEmpty3}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{ls2 : List Symbol := [x,y,z,t,new()$Symbol]\bound{ls2 }}
-\indentrel{3}\begin{verbatim}
-   (3)  [x,y,z,t,%A]
-                                      Type: List Symbol
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty3}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty3}{ZeroDimensionalSolvePackageXmpPagePatch3}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{ls2 : List Symbol := [x,y,z,t,new()$Symbol]\bound{ls2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch4}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull4}{ZeroDimensionalSolvePackageXmpPageEmpty4}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{pack := ZDSOLVE(R,ls,ls2)\free{ls }\free{ls2 }\free{R }\bound{pack }}
-\indentrel{3}\begin{verbatim}
-   (4)
-  ZeroDimensionalSolvePackage(Integer,[x,y,z,t],[x,y,z,t,
-  %A])
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty4}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty4}{ZeroDimensionalSolvePackageXmpPagePatch4}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{pack := ZDSOLVE(R,ls,ls2)\free{ls }\free{ls2 }\free{R }\bound{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch5}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull5}{ZeroDimensionalSolvePackageXmpPageEmpty5}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z\bound{p1 }}
-\indentrel{3}\begin{verbatim}
-             2       2     2
-   (5)  x y z  + (x y  + (x  + x + 1)y + x)z + x y
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty5}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty5}{ZeroDimensionalSolvePackageXmpPagePatch5}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{p1 := x**2*y*z + x*y**2*z + x*y*z**2 + x*y*z + x*y + x*z + y*z\bound{p1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch6}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull6}{ZeroDimensionalSolvePackageXmpPageEmpty6}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z\bound{p2 }}
-\indentrel{3}\begin{verbatim}
-           2 2     2 2     2
-   (6)  x y z  + (x y  + (x  + x + 1)y + 1)z + x
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty6}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty6}{ZeroDimensionalSolvePackageXmpPagePatch6}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{p2 := x**2*y**2*z + x*y**2*z**2 + x**2*y*z + x*y*z + y*z + x + z\bound{p2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch7}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull7}{ZeroDimensionalSolvePackageXmpPageEmpty7}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1\bound{p3 }}
-\indentrel{3}\begin{verbatim}
-         2 2 2      2      2
-   (7)  x y z  + ((x  + x)y  + x y + x + 1)z + 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty7}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty7}{ZeroDimensionalSolvePackageXmpPagePatch7}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{p3 := x**2*y**2*z**2 + x**2*y**2*z + x*y**2*z + x*y*z + x*z + z + 1\bound{p3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch8}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull8}{ZeroDimensionalSolvePackageXmpPageEmpty8}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\indentrel{3}\begin{verbatim}
-   (8)
-         2       2     2
-   [x y z  + (x y  + (x  + x + 1)y + x)z + x y,
-       2 2     2 2     2
-    x y z  + (x y  + (x  + x + 1)y + 1)z + x,
-     2 2 2      2      2
-    x y z  + ((x  + x)y  + x y + x + 1)z + 1]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty8}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty8}{ZeroDimensionalSolvePackageXmpPagePatch8}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{lp := [p1, p2, p3]\free{p1 }\free{p2 }\free{p3 }\bound{lp }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch9}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull9}{ZeroDimensionalSolvePackageXmpPageEmpty9}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull9}{\hidepaste}
-\tab{5}\spadcommand{triangSolve(lp)$pack\free{lp }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (9)
-   [
-     {
-          20     19      18      17       16      15
-         z   - 6z   - 41z   + 71z   + 106z   + 92z
-       + 
-             14       13       12       11       10
-         197z   + 145z   + 257z   + 278z   + 201z
-       + 
-             9       8       7       6      5       4
-         278z  + 257z  + 145z  + 197z  + 92z  + 106z
-       + 
-            3      2
-         71z  - 41z  - 6z + 1
-       ,
-
-                      19            18             17
-             14745844z   + 50357474z   - 130948857z
-           + 
-                         16             15             14
-             - 185261586z   - 180077775z   - 338007307z
-           + 
-                         13             12             11
-             - 275379623z   - 453190404z   - 474597456z
-           + 
-                         10             9             8
-             - 366147695z   - 481433567z  - 430613166z
-           + 
-                         7             6             5
-             - 261878358z  - 326073537z  - 163008796z
-           + 
-                         4             3            2
-             - 177213227z  - 104356755z  + 65241699z
-           + 
-             9237732z - 1567348
-        *
-           y
-       + 
-                 19           18            17
-         1917314z   + 6508991z   - 16973165z
-       + 
-                    16            15            14
-         - 24000259z   - 23349192z   - 43786426z
-       + 
-                    13            12            11
-         - 35696474z   - 58724172z   - 61480792z
-       + 
-                    10            9            8
-         - 47452440z   - 62378085z  - 55776527z
-       + 
-                    7            6            5
-         - 33940618z  - 42233406z  - 21122875z
-       + 
-                    4            3           2
-         - 22958177z  - 13504569z  + 8448317z  + 1195888z
-       + 
-         - 202934
-       ,
-
-               3       2       3    2               2
-             (z  - 2z)y  + (- z  - z  - 2z - 1)y - z  - z
-           + 
-             1
-        *
-           x
-       + 
-          2
-         z  - 1
-       }
-     ]
-             Type: List RegularChain(Integer,[x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty9}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty9}{ZeroDimensionalSolvePackageXmpPagePatch9}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty9}{\showpaste}
-\tab{5}\spadcommand{triangSolve(lp)$pack\free{lp }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch10}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull10}{ZeroDimensionalSolvePackageXmpPageEmpty10}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull10}{\hidepaste}
-\tab{5}\spadcommand{univariateSolve(lp)$pack\free{lp }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (10)
-   [
-     [
-       complexRoots =
-            12      11      10     9     8      7      6
-           ?   - 12?   + 24?   + 4?  - 9?  + 27?  - 21?
-         + 
-              5     4     3      2
-           27?  - 9?  + 4?  + 24?  - 12? + 1
-       ,
-
-       coordinates =
-         [
-                       11        10         9        8
-             63x + 62%A   - 721%A   + 1220%A  + 705%A
-           + 
-                    7         6        5         4       3
-             - 285%A  + 1512%A  - 735%A  + 1401%A  - 21%A
-           + 
-                  2
-             215%A  + 1577%A - 142
-           ,
-
-                       11        10         9        8
-             63y - 75%A   + 890%A   - 1682%A  - 516%A
-           + 
-                  7         6         5         4        3
-             588%A  - 1953%A  + 1323%A  - 1815%A  + 426%A
-           + 
-                    2
-             - 243%A  - 1801%A + 679
-           ,
-          z - %A]
-       ]
-     ,
-
-                     6    5    4    3    2
-     [complexRoots= ?  + ?  + ?  + ?  + ?  + ? + 1,
-                          5       3
-      coordinates= [x - %A ,y - %A ,z - %A]]
-     ,
-
-                     2
-     [complexRoots= ?  + 5? + 1,
-      coordinates= [x - 1,y - 1,z - %A]]
-     ]
-Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty10}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty10}{ZeroDimensionalSolvePackageXmpPagePatch10}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty10}{\showpaste}
-\tab{5}\spadcommand{univariateSolve(lp)$pack\free{lp }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch11}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull11}{ZeroDimensionalSolvePackageXmpPageEmpty11}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull11}{\hidepaste}
-\tab{5}\spadcommand{lr := realSolve(lp)$pack\free{lp }\free{pack }\bound{lr }}
-\indentrel{3}\begin{verbatim}
-   (11)
-   [
-     [%R1,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄ %R1
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄÄ %R1
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄ %R1
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄÄ %R1  + ÄÄÄÄÄÄÄÄ %R1
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R1 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄ %R1   + ÄÄÄÄÄÄÄ %R1
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄ %R1
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R1   - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄ %R1
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄ %R1  - ÄÄÄÄÄÄÄÄ %R1
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R1 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R2,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄ %R2
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄÄ %R2
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄ %R2
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄÄ %R2  + ÄÄÄÄÄÄÄÄ %R2
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R2 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄ %R2   + ÄÄÄÄÄÄÄ %R2
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄ %R2
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R2   - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄ %R2
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄ %R2  - ÄÄÄÄÄÄÄÄ %R2
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R2 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R3,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄ %R3
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄÄ %R3
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄ %R3
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄÄ %R3  + ÄÄÄÄÄÄÄÄ %R3
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R3 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄ %R3   + ÄÄÄÄÄÄÄ %R3
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄ %R3
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R3   - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄ %R3
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄ %R3  - ÄÄÄÄÄÄÄÄ %R3
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R3 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R4,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄ %R4
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄÄ %R4
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄ %R4
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄÄ %R4  + ÄÄÄÄÄÄÄÄ %R4
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R4 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄ %R4   + ÄÄÄÄÄÄÄ %R4
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄ %R4
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R4   - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄ %R4
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄ %R4  - ÄÄÄÄÄÄÄÄ %R4
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R4 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R5,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄ %R5
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄÄ %R5
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄ %R5
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄÄ %R5  + ÄÄÄÄÄÄÄÄ %R5
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R5 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄ %R5   + ÄÄÄÄÄÄÄ %R5
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄ %R5
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R5   - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄ %R5
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄ %R5  - ÄÄÄÄÄÄÄÄ %R5
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R5 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R6,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄ %R6
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄÄ %R6
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄ %R6
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄÄ %R6  + ÄÄÄÄÄÄÄÄ %R6
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R6 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄ %R6   + ÄÄÄÄÄÄÄ %R6
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄ %R6
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R6   - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄ %R6
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄ %R6  - ÄÄÄÄÄÄÄÄ %R6
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R6 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R7,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄ %R7
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄÄ %R7
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄ %R7
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄÄ %R7  + ÄÄÄÄÄÄÄÄ %R7
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R7 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄ %R7   + ÄÄÄÄÄÄÄ %R7
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄ %R7
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R7   - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄ %R7
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄ %R7  - ÄÄÄÄÄÄÄÄ %R7
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R7 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ,
-
-     [%R8,
-
-         1184459    19   2335702    18   5460230    17
-         ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8
-         1645371          548457          182819
-       + 
-         79900378    16   43953929    15   13420192    14
-         ÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8
-          1645371          548457           182819
-       + 
-         553986    13   193381378    12   35978916    11
-         ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄ %R8
-          3731           1645371           182819
-       + 
-         358660781    10   271667666    9   118784873    8
-         ÄÄÄÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄÄ %R8
-          1645371           1645371           548457
-       + 
-         337505020    7   1389370    6   688291    5
-         ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄ %R8
-          1645371          11193          4459
-       + 
-         3378002    4   140671876    3   32325724    2
-         ÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄÄ %R8  + ÄÄÄÄÄÄÄÄ %R8
-          42189          1645371          548457
-       + 
-           8270       9741532
-         - ÄÄÄÄ %R8 - ÄÄÄÄÄÄÄ
-            343       1645371
-       ,
-
-            91729    19   487915    18   4114333    17
-         - ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄ %R8   + ÄÄÄÄÄÄÄ %R8
-           705159         705159          705159
-       + 
-           1276987    16   13243117    15   16292173    14
-         - ÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8
-            235053          705159           705159
-       + 
-           26536060    13   722714    12   5382578    11
-         - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄ %R8
-            705159           18081          100737
-       + 
-           15449995    10   14279770    9   6603890    8
-         - ÄÄÄÄÄÄÄÄ %R8   - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄ %R8
-            235053           235053          100737
-       + 
-           409930    7   37340389    6   34893715    5
-         - ÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8
-            6027          705159          705159
-       + 
-           26686318    4   801511    3   17206178    2
-         - ÄÄÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄ %R8  - ÄÄÄÄÄÄÄÄ %R8
-            705159          26117         705159
-       + 
-           4406102       377534
-         - ÄÄÄÄÄÄÄ %R8 + ÄÄÄÄÄÄ
-            705159       705159
-       ]
-     ]
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty11}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty11}{ZeroDimensionalSolvePackageXmpPagePatch11}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty11}{\showpaste}
-\tab{5}\spadcommand{lr := realSolve(lp)$pack\free{lp }\free{pack }\bound{lr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch12}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull12}{ZeroDimensionalSolvePackageXmpPageEmpty12}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull12}{\hidepaste}
-\tab{5}\spadcommand{\# lr\free{lr }}
-\indentrel{3}\begin{verbatim}
-   (12)  8
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty12}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty12}{ZeroDimensionalSolvePackageXmpPagePatch12}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty12}{\showpaste}
-\tab{5}\spadcommand{\# lr\free{lr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch13}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull13}{ZeroDimensionalSolvePackageXmpPageEmpty13}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull13}{\hidepaste}
-\tab{5}\spadcommand{[[approximate(r,1/1000000) for r in point] for point in lr]\free{lr }}
-\indentrel{3}\begin{verbatim}
-   (13)
-   [
-        10048059
-     [- ÄÄÄÄÄÄÄÄ,
-         2097152
-
-        450305731698538794352439791383896641459673197621_
-         17682193358812083855163140589245671760914236296_
-         95777403099833360761048898228916578137094309838_
-         59733113720258484693913237615701950676035760116_
-         59174549868153820987890948515234203928112931261_
-         41329856546977145464661495487825919941188447041_
-         72244049192156726354215802806143775884436463441_
-         0045253024786561923163288214175
-      /
-        450305728302524548851651180698582663508310069375_
-         73204652805547068656449495775099168672018894380_
-         90408354817931718593862797624551518983570793048_
-         77442429148870882984032418920030143612331486020_
-         08214437337907553112436329198648954217042289495_
-         71290016119498807957023663865443069392027148979_
-         68826671232335604349152343406892427528041733857_
-         4817381189277066143312396681216
-       ,
-
-        210626076882347507389479868048601659624960714869_
-         06855387636837150206396808586496507900558895056_
-         46893309447097099937802187329095325898785247249_
-         02071750498366048207515661873872451468533306001_
-         12029646351663813515432559822002503052839810868_
-         37110614842307026091211297929876896285681830479_
-         05476005638076266490561846205530604781619178201_
-         15887037891389881895
-      /
-        210626060949846419247211380481647417534196295329_
-         64341024139031423687579676852738885855909759652_
-         11778862189872881953943640246297357061959812326_
-         10365979902512686325867656720234210687703171018_
-         42474841814232889218376812370627084702957062184_
-         85928867400771937828499200923760593314168901000_
-         66637389634759811822855673103707202647449677622_
-         83837629939232800768
-       ]
-     ,
-
-        2563013
-     [- ÄÄÄÄÄÄÄ,
-        2097152
-
-       -
-           261134617679192778969861769323775771923825996_
-            30635417819227523304401898996680729283384907_
-            68623593207442125925986733815932243504809294_
-            83752303023733723680666816744617300172727135_
-            3311571242897
-         /
-           116522540050522253058398191600458914375722661_
-            02768589900087901348199149409224137539839713_
-            94019523433320408139928153188829495755455163_
-            96341761930839597754479714023146923426903492_
-            1938055593984
-       ,
-
-        357259455027591722109658872961578827299851705467_
-         56032395781981410060340917352828265906219023044_
-         66963941971038923304526273329316373757450061978_
-         9892286110976997087250466235373
-      /
-        103954826934559893687707124483402605580081455112_
-         01705922005223665917594096594864423391410294529_
-         50265179989960104811875822530205346505131581243_
-         9017247289173865014702966308864
-       ]
-     ,
-
-        1715967
-     [- ÄÄÄÄÄÄÄ,
-        2097152
-
-       -
-           421309353378430352108483951797708239037726150_
-            39695862248289984366060306560763593745648137_
-            73498376603121267822565801436206939519951465_
-            18222580524697287410022543952491
-         /
-           944181414418537445864969203434922405243659747_
-            09662536639306419607958058825854931998401916_
-            99917659443264824641135187383583888147867340_
-            19307857605820364195856822304768
-       ,
-
-        763583334711264422251562542441083122534747566900_
-         85893388341621725019049943763467308768090428452_
-         08919919925302105720971453918982731389072591403_
-         5
-      /
-        262418876408609719978429761047806663393423046789_
-         58516022785809785037845492057884990196406022669_
-         66026891580103543567625039018629887141284916756_
-         48
-       ]
-     ,
-
-         437701
-     [- ÄÄÄÄÄÄÄ,
-        2097152
-
-        168310690863834958832217233265422591356298631318_
-         19510314527501614414974734553281507213648683555_
-         79646781603507777199075077835213366484533654913_
-         83623741304759
-      /
-        168310686809521338900170998270591363896307766873_
-         12261111677851880049074252262986803258878109626_
-         14140298597366984264887998908377068799998454233_
-         81649008099328
-       ,
-
-        496155010983501018642268101342210873595871480100_
-         37606397079680966469128267084728344431172391721_
-         9104249213450966312411133
-      /
-        496154987275773831550919207821020902985289711861_
-         10971262363840408293765926191431317025486746479_
-         2718363492160482442215424
-       ]
-     ,
-
-       222801
-     [ÄÄÄÄÄÄÄ,
-      2097152
-
-       -
-           899488488040242826510759512197069142713604569_
-            25419782755730018652137599215881377166961263_
-            49101655220195142994932299137183241705867672_
-            383477
-         /
-           116788999866502637217776510069188858270896996_
-            02299347696908357524570777794164352094737678_
-            66507769405888942764587718542434255625992456_
-            372224
-       ,
-
-       -
-           238970488813315687832080154437380839561277150_
-            92084910198474529918855095465195254678390166_
-            13593999693886640036283570552321155037871291_
-            458703265
-         /
-           535548727364509632609040328668993190598822544_
-            46854114332215938336811929575628336714686542_
-            90340746993656285925599117602120446183443145_
-            479421952
-       ]
-     ,
-
-       765693
-     [ÄÄÄÄÄÄÄ,
-      2097152
-
-        855896921981671626787324476117819808872469895861_
-         66701402137657543220023032516857861186783308402_
-         03328837654339523418704917749518340772512899000_
-         391009630373148561
-      /
-        294144244553301079097642841137639349981558021594_
-         58569179064525354957230138568189417023302287798_
-         90141296236721138154231997238917322156711965244_
-         4639331719460159488
-       ,
-
-       -
-           205761823058257210124765032486024256111130258_
-            15435888088439236627675493822416593627122907_
-            77612800192921420574408948085193743688582762_
-            2246433251878894899015
-         /
-           267159820332573553809795235350145022057631375_
-            98908350970917225206427101987719026671839489_
-            06289863714759678360292483949204616471537777_
-            775324180661095366656
-       ]
-     ,
-
-      5743879
-     [ÄÄÄÄÄÄÄ,
-      2097152
-
-        107628881696890684795554639477357020817145672494_
-         26186140236631235747689608504342639713980725465_
-         92772662158833449797698617455397887562900072984_
-         76800060834355318980169340872720504761255988923_
-         27575638305286889535354218094827710589175426028_
-         90060941949620874083007858366669453501766248414_
-         88732463225
-      /
-        313176895708031794664846194002355204419037661345_
-         85849862285496319161966016162197817656155325322_
-         94746529648276430583810894079374566460757823146_
-         88858119555602920851521883888320031865840746939_
-         94260632605898286123092315966691297079864813198_
-         51571942927230340622934023923486703042068153044_
-         0845099008
-       ,
-
-       -
-           211328669918575091836412047556545843787017248_
-            98654859943898281353352644446652845575264927_
-            34931691731407872701432935503473348172076098_
-            72054584900878007756416053431789468836611952_
-            97399805029441626685500981279619504962102219_
-            42878089359674925850594427768502251789758706_
-            752831632503615
-         /
-           162761558493798758024290662434710458088914446_
-            61684597180431538394083725255333098080703636_
-            99585502216011211087103263609551026027769414_
-            08739114812622116813978168258743807532259146_
-            61319399754572005223498385689642856344480185_
-            62038272378787354460106106141518010935617205_
-            1706396253618176
-       ]
-     ,
-
-      19739877
-     [ÄÄÄÄÄÄÄÄ,
-       2097152
-
-       -
-           299724993683270330379901580486152094921504038_
-            75007071777012857667201925305794224789535660_
-            24359860143101547801638082771611160372212874_
-            84777803580987284314922548423836585801362934_
-            17053217025823333509180096017899370239859353_
-            04900460493389873837030853410347089908880814_
-            85398113201846458245880061539477074169948729_
-            58759602107502158919488144768548710315309312_
-            95467332190133702671098200902282300510751860_
-            71859284570302778073977965258138627622392869_
-            96106809728023675
-         /
-           230843327485227859072891008119181102390650414_
-            13214326461239367948739333192706089607021381_
-            93417647898360620229519176632937631786851455_
-            01476602720625902225250555174182368889688380_
-            66366025744317604722402920931967294751602472_
-            68834121141893318848728661844434927287285112_
-            89708076755286489505658586403317856591038706_
-            50061128015164035227410373609905560544769495_
-            27059227070809593049491257519554708879259595_
-            52929920110858560812556635485429471554031675_
-            979542656381353984
-       ,
-
-       -
-           512818926354822848909627639786894008060093841_
-            06630804594079663358450092641094905204598253_
-            16250084723010047035024497436523038925818959_
-            28931293158470135392762143543439867426304729_
-            39091228501338519906964902315660943719943337_
-            95070782624011727587749989296611277318372294_
-            62420711653791043655457414608288470130554391_
-            26204193548854107359401577758966028223645758_
-            64611831512943973974715166920465061850603762_
-            87516256195847052412587282839139194642913955
-         /
-           228828193977843933053120879318129047118363109_
-            24553689903863908242435094636442362497730806_
-            47438987739144921607794682653851741189091711_
-            74186814511497833728419182249767586835872948_
-            66447308566225526872092037244118004814057028_
-            37198310642291275676195774614443815996713502_
-            62939174978359004147086012775237299648862774_
-            26724876224800632688088893248918508424949343_
-            47337603075939980268208482904859678177751444_
-            65749979827872616963053217673201717237252096
-       ]
-     ]
-                       Type: List List Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty13}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty13}{ZeroDimensionalSolvePackageXmpPagePatch13}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty13}{\showpaste}
-\tab{5}\spadcommand{[[approximate(r,1/1000000) for r in point] for point in lr]\free{lr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch14}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull14}{ZeroDimensionalSolvePackageXmpPageEmpty14}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull14}{\hidepaste}
-\tab{5}\spadcommand{lpr := positiveSolve(lp)$pack\free{lp }\free{pack }\bound{lpr }}
-\indentrel{3}\begin{verbatim}
-   (14)  []
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty14}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty14}{ZeroDimensionalSolvePackageXmpPagePatch14}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty14}{\showpaste}
-\tab{5}\spadcommand{lpr := positiveSolve(lp)$pack\free{lp }\free{pack }\bound{lpr }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch15}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull15}{ZeroDimensionalSolvePackageXmpPageEmpty15}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull15}{\hidepaste}
-\tab{5}\spadcommand{f0 := x**3 + y + z + t- 1\bound{f0 }}
-\indentrel{3}\begin{verbatim}
-                  3
-   (15)  z + y + x  + t - 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty15}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty15}{ZeroDimensionalSolvePackageXmpPagePatch15}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty15}{\showpaste}
-\tab{5}\spadcommand{f0 := x**3 + y + z + t- 1\bound{f0 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch16}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull16}{ZeroDimensionalSolvePackageXmpPageEmpty16}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull16}{\hidepaste}
-\tab{5}\spadcommand{f1 := x + y**3 + z + t -1\bound{f1 }}
-\indentrel{3}\begin{verbatim}
-              3
-   (16)  z + y  + x + t - 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty16}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty16}{ZeroDimensionalSolvePackageXmpPagePatch16}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty16}{\showpaste}
-\tab{5}\spadcommand{f1 := x + y**3 + z + t -1\bound{f1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch17}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull17}{ZeroDimensionalSolvePackageXmpPageEmpty17}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull17}{\hidepaste}
-\tab{5}\spadcommand{f2 := x + y + z**3 + t-1\bound{f2 }}
-\indentrel{3}\begin{verbatim}
-          3
-   (17)  z  + y + x + t - 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty17}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty17}{ZeroDimensionalSolvePackageXmpPagePatch17}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty17}{\showpaste}
-\tab{5}\spadcommand{f2 := x + y + z**3 + t-1\bound{f2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch18}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull18}{ZeroDimensionalSolvePackageXmpPageEmpty18}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull18}{\hidepaste}
-\tab{5}\spadcommand{f3 := x + y + z + t**3 -1\bound{f3 }}
-\indentrel{3}\begin{verbatim}
-                      3
-   (18)  z + y + x + t  - 1
-                               Type: Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty18}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty18}{ZeroDimensionalSolvePackageXmpPagePatch18}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty18}{\showpaste}
-\tab{5}\spadcommand{f3 := x + y + z + t**3 -1\bound{f3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch19}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull19}{ZeroDimensionalSolvePackageXmpPageEmpty19}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull19}{\hidepaste}
-\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
-\indentrel{3}\begin{verbatim}
-   (19)
-             3               3
-   [z + y + x  + t - 1, z + y  + x + t - 1,
-     3                               3
-    z  + y + x + t - 1, z + y + x + t  - 1]
-                          Type: List Polynomial Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty19}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty19}{ZeroDimensionalSolvePackageXmpPagePatch19}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty19}{\showpaste}
-\tab{5}\spadcommand{lf := [f0, f1, f2, f3]\free{f0 }\free{f1 }\free{f2 }\free{f3 }\bound{lf }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch20}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull20}{ZeroDimensionalSolvePackageXmpPageEmpty20}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull20}{\hidepaste}
-\tab{5}\spadcommand{lts := triangSolve(lf)$pack\free{lf }\free{pack }\bound{lts }}
-\indentrel{3}\begin{verbatim}
-   (20)
-   [
-       2           3        3
-     {t  + t + 1, z  - z - t  + t,
-
-                 3      2
-         (3z + 3t  - 3)y
-       + 
-            2      3           6     3            3      2
-         (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
-       + 
-            6     3          9     6     3
-         (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
-       ,
-      x + y + z}
-     ,
-
-       16     13     10     7      4      2
-     {t   - 6t   + 9t   + 4t  + 15t  - 54t  + 27,
-
-                     15            14             13
-             4907232t   + 40893984t   - 115013088t
-           + 
-                      12            11             10
-             22805712t   + 36330336t   + 162959040t
-           + 
-                         9             8             7
-             - 159859440t  - 156802608t  + 117168768t
-           + 
-                       6             5             4
-             126282384t  - 129351600t  + 306646992t
-           + 
-                       3              2
-             475302816t  - 1006837776t  - 237269088t
-           + 
-             480716208
-        *
-           z
-       + 
-            54       51        48      46         45
-         48t   - 912t   + 8232t   - 72t   - 46848t
-       + 
-              43          42        40          39
-         1152t   + 186324t   - 3780t   - 543144t
-       + 
-                38         37           36         35
-         - 3168t   - 21384t   + 1175251t   + 41184t
-       + 
-                34           33          32           31
-         278003t   - 1843242t   - 301815t   - 1440726t
-       + 
-                 30           29           28          27
-         1912012t   + 1442826t   + 4696262t   - 922481t
-       + 
-                   26            25          24
-         - 4816188t   - 10583524t   - 208751t
-       + 
-                  23            22          21
-         11472138t   + 16762859t   - 857663t
-       + 
-                    20            19           18
-         - 19328175t   - 18270421t   + 4914903t
-       + 
-                  17            16           15
-         22483044t   + 12926517t   - 8605511t
-       + 
-                    14           13           12
-         - 17455518t   - 5014597t   + 8108814t
-       + 
-                 11          10           9           8
-         8465535t   + 190542t   - 4305624t  - 2226123t
-       + 
-                7           6          5          4
-         661905t  + 1169775t  + 226260t  - 209952t
-       + 
-                  3
-         - 141183t  + 27216t
-       ,
-
-                 3      2
-         (3z + 3t  - 3)y
-       + 
-            2      3           6     3            3      2
-         (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
-       + 
-            6     3          9     6     3
-         (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
-       ,
-                   3
-      x + y + z + t  - 1}
-     ,
-              2                       2
-    {t,z - 1,y  - 1,x + y}, {t - 1,z,y  - 1,x + y},
-            2
-    {t - 1,z  - 1,z y + 1,x},
-
-       16     13     10     7      4      2
-     {t   - 6t   + 9t   + 4t  + 15t  - 54t  + 27,
-
-                     29            28             27
-             4907232t   + 40893984t   - 115013088t
-           + 
-                       26             25             24
-             - 1730448t   - 168139584t   + 738024480t
-           + 
-                         23             22              21
-             - 195372288t   + 315849456t   - 2567279232t
-           + 
-                       20              19              18
-             937147968t   + 1026357696t   + 4780488240t
-           + 
-                          17              16
-             - 2893767696t   - 5617160352t
-           + 
-                          15              14
-             - 3427651728t   + 5001100848t
-           + 
-                        13              12             11
-             8720098416t   + 2331732960t   - 499046544t
-           + 
-                           10              9
-             - 16243306272t   - 9748123200t
-           + 
-                        8               7               6
-             3927244320t  + 25257280896t  + 10348032096t
-           + 
-                           5               4             3
-             - 17128672128t  - 14755488768t  + 544086720t
-           + 
-                         2
-             10848188736t  + 1423614528t - 2884297248
-        *
-           z
-       + 
-              68        65         62       60          59
-         - 48t   + 1152t   - 13560t   + 360t   + 103656t
-       + 
-                57          56         54           53
-         - 7560t   - 572820t   + 71316t   + 2414556t
-       + 
-              52          51           50         49
-         2736t   - 402876t   - 7985131t   - 49248t
-       + 
-                 48            47          46           45
-         1431133t   + 20977409t   + 521487t   - 2697635t
-       + 
-                    44           43           42
-         - 43763654t   - 3756573t   - 2093410t
-       + 
-                  41            40            39
-         71546495t   + 19699032t   + 35025028t
-       + 
-                    38            37             36
-         - 89623786t   - 77798760t   - 138654191t
-       + 
-                  35             34             33
-         87596128t   + 235642497t   + 349607642t
-       + 
-                    32             31             30
-         - 93299834t   - 551563167t   - 630995176t
-       + 
-                   29             28             27
-         186818962t   + 995427468t   + 828416204t
-       + 
-                     26              25              24
-         - 393919231t   - 1076617485t   - 1609479791t
-       + 
-                   23              22              21
-         595738126t   + 1198787136t   + 4342832069t
-       + 
-                      20              19              18
-         - 2075938757t   - 4390835799t   - 4822843033t
-       + 
-                    17              16              15
-         6932747678t   + 6172196808t   + 1141517740t
-       + 
-                      14              13              12
-         - 4981677585t   - 9819815280t   - 7404299976t
-       + 
-                     11               10               9
-         - 157295760t   + 29124027630t   + 14856038208t
-       + 
-                       8               7              6
-         - 16184101410t  - 26935440354t  - 3574164258t
-       + 
-                     5               4              3
-         10271338974t  + 11191425264t  + 6869861262t
-       + 
-                      2
-         - 9780477840t  - 3586674168t + 2884297248
-       ,
-
-               3      3      2      6      3           9
-             3z  + (6t  - 6)z  + (6t  - 12t  + 3)z + 2t
-           + 
-                 6    3
-             - 6t  + t  + 3t
-        *
-           y
-       + 
-            3      3      6      3      2
-         (3t  - 3)z  + (6t  - 12t  + 6)z
-       + 
-            9      6      3          12     9     6     3
-         (4t  - 12t  + 11t  - 3)z + t   - 4t  + 5t  - 2t
-       ,
-                   3
-      x + y + z + t  - 1}
-     ,
-            2
-    {t - 1,z  - 1,y,x + z},
-
-       8    7    6     5     4     3      2
-     {t  + t  + t  - 2t  - 2t  - 2t  + 19t  + 19t - 8,
-
-                     7           6           5
-             2395770t  + 3934440t  - 3902067t
-           + 
-                        4           3            2
-             - 10084164t  - 1010448t  + 32386932t
-           + 
-             22413225t - 10432368
-        *
-           z
-       + 
-                  7           6           5           4
-         - 463519t  + 3586833t  + 9494955t  - 8539305t
-       + 
-                    3            2
-         - 33283098t  + 35479377t  + 46263256t - 17419896
-       ,
-
-               4      3      3       6      3      2
-             3z  + (9t  - 9)z  + (12t  - 24t  + 9)z
-           + 
-                    3                    6      4      3
-             (- 152t  + 219t - 67)z - 41t  + 57t  + 25t
-           + 
-             - 57t + 16
-        *
-           y
-       + 
-            3      4      6      3      3
-         (3t  - 3)z  + (9t  - 18t  + 9)z
-       + 
-                3              2
-         (- 181t  + 270t - 89)z
-       + 
-               6       4      3                    7
-         (- 92t  + 135t  + 49t  - 135t + 43)z + 27t
-       + 
-              6      4       3
-         - 27t  - 54t  + 396t  - 486t + 144
-       ,
-                   3
-      x + y + z + t  - 1}
-     ,
-            3
-    {t,z - t  + 1,y - 1,x - 1}, {t - 1,z,y,x},
-    {t,z - 1,y,x}, {t,z,y - 1,x}, {t,z,y,x - 1}]
-             Type: List RegularChain(Integer,[x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty20}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty20}{ZeroDimensionalSolvePackageXmpPagePatch20}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty20}{\showpaste}
-\tab{5}\spadcommand{lts := triangSolve(lf)$pack\free{lf }\free{pack }\bound{lts }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch21}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull21}{ZeroDimensionalSolvePackageXmpPageEmpty21}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull21}{\hidepaste}
-\tab{5}\spadcommand{univariateSolve(lf)$pack\free{lf }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (21)
-   [
-     [complexRoots= ?,
-      coordinates= [x - 1,y - 1,z + 1,t - %A]]
-     ,
-    [complexRoots= ?,coordinates= [x,y - 1,z,t - %A]],
-    [complexRoots= ? - 1,coordinates= [x,y,z,t - %A]],
-    [complexRoots= ?,coordinates= [x - 1,y,z,t - %A]],
-    [complexRoots= ?,coordinates= [x,y,z - 1,t - %A]],
-
-     [complexRoots= ? - 2,
-      coordinates= [x - 1,y + 1,z,t - 1]]
-     ,
-    [complexRoots= ?,coordinates= [x + 1,y - 1,z,t - 1]],
-
-     [complexRoots= ? - 1,
-      coordinates= [x - 1,y + 1,z - 1,t]]
-     ,
-
-     [complexRoots= ? + 1,
-      coordinates= [x + 1,y - 1,z - 1,t]]
-     ,
-
-                     6     3     2
-     [complexRoots= ?  - 2?  + 3?  - 3,
-
-       coordinates =
-                 3                  3
-         [2x + %A  + %A - 1, 2y + %A  + %A - 1, z - %A,
-          t - %A]
-       ]
-     ,
-
-                     5     3     2
-     [complexRoots= ?  + 3?  - 2?  + 3? - 3,
-
-       coordinates =
-                              3
-         [x - %A,y - %A,z + %A  + 2%A - 1,t - %A]
-       ]
-     ,
-
-                     4    3     2
-     [complexRoots= ?  - ?  - 2?  + 3,
-
-       coordinates =
-                3                 3
-         [x + %A  - %A - 1, y + %A  - %A - 1,
-                3
-          z - %A  + 2%A + 1, t - %A]
-       ]
-     ,
-
-     [complexRoots= ? + 1,
-      coordinates= [x - 1,y - 1,z,t - %A]]
-     ,
-
-                     6     3     2
-     [complexRoots= ?  + 2?  + 3?  - 3,
-
-       coordinates =
-                 3                          3
-         [2x - %A  - %A - 1, y + %A, 2z - %A  - %A - 1,
-          t + %A]
-       ]
-     ,
-
-                     6      4      3      2
-     [complexRoots= ?  + 12?  + 20?  - 45?  - 42? - 953,
-
-       coordinates =
-         [
-                          5       4       3        2
-             12609x + 23%A  + 49%A  - 46%A  + 362%A
-           + 
-             - 5015%A - 8239
-           ,
-
-                          5       4       3        2
-             25218y + 23%A  + 49%A  - 46%A  + 362%A
-           + 
-             7594%A - 8239
-           ,
-
-                          5       4       3        2
-             25218z + 23%A  + 49%A  - 46%A  + 362%A
-           + 
-             7594%A - 8239
-           ,
-
-                          5       4       3        2
-             12609t + 23%A  + 49%A  - 46%A  + 362%A
-           + 
-             - 5015%A - 8239
-           ]
-       ]
-     ,
-
-                     5      3      2
-     [complexRoots= ?  + 12?  - 16?  + 48? - 96,
-
-       coordinates =
-                 3
-         [8x + %A  + 8%A - 8,2y - %A,2z - %A,2t - %A]
-       ]
-     ,
-
-                     5    4     3     2
-     [complexRoots= ?  + ?  - 5?  - 3?  + 9? + 3,
-
-       coordinates =
-                 3                   3
-         [2x - %A  + 2%A - 1, 2y + %A  - 4%A + 1,
-                 3                   3
-          2z - %A  + 2%A - 1, 2t - %A  + 2%A - 1]
-       ]
-     ,
-
-                     4     3     2
-     [complexRoots= ?  - 3?  + 4?  - 6? + 13,
-
-       coordinates =
-                  3      2
-         [9x - 2%A  + 4%A  - %A + 2,
-                 3      2
-          9y + %A  - 2%A  + 5%A - 1,
-                 3      2
-          9z + %A  - 2%A  + 5%A - 1,
-                 3      2
-          9t + %A  - 2%A  - 4%A - 1]
-       ]
-     ,
-
-                     4      2
-     [complexRoots= ?  - 11?  + 37,
-
-       coordinates =
-                 2             2                   2
-         [3x - %A  + 7, 6y + %A  + 3%A - 7, 3z - %A  + 7,
-                 2
-          6t + %A  - 3%A - 7]
-       ]
-     ,
-
-     [complexRoots= ? + 1,
-      coordinates= [x - 1,y,z - 1,t + 1]]
-     ,
-
-     [complexRoots= ? + 2,
-      coordinates= [x,y - 1,z - 1,t + 1]]
-     ,
-
-     [complexRoots= ? - 2,
-      coordinates= [x,y - 1,z + 1,t - 1]]
-     ,
-    [complexRoots= ?,coordinates= [x,y + 1,z - 1,t - 1]],
-
-     [complexRoots= ? - 2,
-      coordinates= [x - 1,y,z + 1,t - 1]]
-     ,
-    [complexRoots= ?,coordinates= [x + 1,y,z - 1,t - 1]],
-
-                     4     3      2
-     [complexRoots= ?  + 5?  + 16?  + 30? + 57,
-
-       coordinates =
-                     3       2
-         [151x + 15%A  + 54%A  + 104%A + 93,
-                     3       2
-          151y - 10%A  - 36%A  - 19%A - 62,
-                    3       2
-          151z - 5%A  - 18%A  - 85%A - 31,
-                    3       2
-          151t - 5%A  - 18%A  - 85%A - 31]
-       ]
-     ,
-
-                     4    3     2
-     [complexRoots= ?  - ?  - 2?  + 3,
-
-       coordinates =
-                3                  3
-         [x - %A  + 2%A + 1, y + %A  - %A - 1, z - %A,
-                3
-          t + %A  - %A - 1]
-       ]
-     ,
-
-                     4     3     2
-     [complexRoots= ?  + 2?  - 8?  + 48,
-
-       coordinates =
-                 3
-         [8x - %A  + 4%A - 8, 2y + %A,
-                 3                   3
-          8z + %A  - 8%A + 8, 8t - %A  + 4%A - 8]
-       ]
-     ,
-
-                     5    4     3     2
-     [complexRoots= ?  + ?  - 2?  - 4?  + 5? + 8,
-
-       coordinates =
-                 3            3            3
-         [3x + %A  - 1,3y + %A  - 1,3z + %A  - 1,t - %A]
-       ]
-     ,
-
-                     3
-     [complexRoots= ?  + 3? - 1,
-      coordinates= [x - %A,y - %A,z - %A,t - %A]]
-     ]
-Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty21}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty21}{ZeroDimensionalSolvePackageXmpPagePatch21}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty21}{\showpaste}
-\tab{5}\spadcommand{univariateSolve(lf)$pack\free{lf }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch22}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull22}{ZeroDimensionalSolvePackageXmpPageEmpty22}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull22}{\hidepaste}
-\tab{5}\spadcommand{ts := lts.1\free{lts }\bound{ts }}
-\indentrel{3}\begin{verbatim}
-   (22)
-     2           3        3
-   {t  + t + 1, z  - z - t  + t,
-
-               3      2
-       (3z + 3t  - 3)y
-     + 
-          2      3           6     3            3      2
-       (3z  + (6t  - 6)z + 3t  - 6t  + 3)y + (3t  - 3)z
-     + 
-          6     3          9     6     3
-       (3t  - 6t  + 3)z + t  - 3t  + 5t  - 3t
-     ,
-    x + y + z}
-                  Type: RegularChain(Integer,[x,y,z,t])
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty22}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty22}{ZeroDimensionalSolvePackageXmpPagePatch22}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty22}{\showpaste}
-\tab{5}\spadcommand{ts := lts.1\free{lts }\bound{ts }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch23}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull23}{ZeroDimensionalSolvePackageXmpPageEmpty23}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull23}{\hidepaste}
-\tab{5}\spadcommand{univariateSolve(ts)$pack\free{ts }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (23)
-   [
-                     4     3      2
-     [complexRoots= ?  + 5?  + 16?  + 30? + 57,
-
-       coordinates =
-                     3       2
-         [151x + 15%A  + 54%A  + 104%A + 93,
-                     3       2
-          151y - 10%A  - 36%A  - 19%A - 62,
-                    3       2
-          151z - 5%A  - 18%A  - 85%A - 31,
-                    3       2
-          151t - 5%A  - 18%A  - 85%A - 31]
-       ]
-     ,
-
-                     4    3     2
-     [complexRoots= ?  - ?  - 2?  + 3,
-
-       coordinates =
-                3                  3
-         [x - %A  + 2%A + 1, y + %A  - %A - 1, z - %A,
-                3
-          t + %A  - %A - 1]
-       ]
-     ,
-
-                     4     3     2
-     [complexRoots= ?  + 2?  - 8?  + 48,
-
-       coordinates =
-                 3
-         [8x - %A  + 4%A - 8, 2y + %A,
-                 3                   3
-          8z + %A  - 8%A + 8, 8t - %A  + 4%A - 8]
-       ]
-     ]
-Type: List Record(complexRoots: SparseUnivariatePolynomial Integer,coordinates: List Polynomial Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty23}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty23}{ZeroDimensionalSolvePackageXmpPagePatch23}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty23}{\showpaste}
-\tab{5}\spadcommand{univariateSolve(ts)$pack\free{ts }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch24}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull24}{ZeroDimensionalSolvePackageXmpPageEmpty24}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull24}{\hidepaste}
-\tab{5}\spadcommand{realSolve(ts)$pack\free{ts }\free{pack }}
-\indentrel{3}\begin{verbatim}
-   (24)  []
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty24}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty24}{ZeroDimensionalSolvePackageXmpPagePatch24}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty24}{\showpaste}
-\tab{5}\spadcommand{realSolve(ts)$pack\free{ts }\free{pack }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch25}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull25}{ZeroDimensionalSolvePackageXmpPageEmpty25}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull25}{\hidepaste}
-\tab{5}\spadcommand{lr2 := realSolve(lf)$pack\free{lf }\free{pack }\bound{lr2 }}
-\indentrel{3}\begin{verbatim}
-   (25)
-   [[0,- 1,1,1], [0,0,1,0], [1,0,0,0], [0,0,0,1],
-    [0,1,0,0], [1,0,%R37,- %R37], [1,0,%R38,- %R38],
-    [0,1,%R35,- %R35], [0,1,%R36,- %R36], [- 1,0,1,1],
-
-     [%R32,
-
-          1     15    2     14    1     13    4     12
-         ÄÄ %R32   + ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32
-         27          27          27          27
-       + 
-           11     11    4     10    1     9   14     8
-         - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32  + ÄÄ %R32
-           27          27          27         27
-       + 
-          1     7   2     6   1     5   2     4       3
-         ÄÄ %R32  + Ä %R32  + Ä %R32  + Ä %R32  + %R32
-         27         9         3         9
-       + 
-         4     2
-         Ä %R32  - %R32 - 2
-         3
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R32   - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32  - ÄÄ %R32
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R32  - Ä %R32  - Ä %R32  - Ä %R32  - %R32
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R32  + Ä %R32 + Ä
-           3         2        2
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R32   - ÄÄ %R32   - ÄÄ %R32   + ÄÄ %R32
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R32   + ÄÄ %R32   - ÄÄ %R32  - ÄÄ %R32
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R32  - Ä %R32  - Ä %R32  - Ä %R32  - %R32
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R32  + Ä %R32 + Ä
-           3         2        2
-       ]
-     ,
-
-     [%R33,
-
-          1     15    2     14    1     13    4     12
-         ÄÄ %R33   + ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33
-         27          27          27          27
-       + 
-           11     11    4     10    1     9   14     8
-         - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33  + ÄÄ %R33
-           27          27          27         27
-       + 
-          1     7   2     6   1     5   2     4       3
-         ÄÄ %R33  + Ä %R33  + Ä %R33  + Ä %R33  + %R33
-         27         9         3         9
-       + 
-         4     2
-         Ä %R33  - %R33 - 2
-         3
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R33   - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33  - ÄÄ %R33
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R33  - Ä %R33  - Ä %R33  - Ä %R33  - %R33
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R33  + Ä %R33 + Ä
-           3         2        2
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R33   - ÄÄ %R33   - ÄÄ %R33   + ÄÄ %R33
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R33   + ÄÄ %R33   - ÄÄ %R33  - ÄÄ %R33
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R33  - Ä %R33  - Ä %R33  - Ä %R33  - %R33
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R33  + Ä %R33 + Ä
-           3         2        2
-       ]
-     ,
-
-     [%R34,
-
-          1     15    2     14    1     13    4     12
-         ÄÄ %R34   + ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34
-         27          27          27          27
-       + 
-           11     11    4     10    1     9   14     8
-         - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34  + ÄÄ %R34
-           27          27          27         27
-       + 
-          1     7   2     6   1     5   2     4       3
-         ÄÄ %R34  + Ä %R34  + Ä %R34  + Ä %R34  + %R34
-         27         9         3         9
-       + 
-         4     2
-         Ä %R34  - %R34 - 2
-         3
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R34   - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34  - ÄÄ %R34
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R34  - Ä %R34  - Ä %R34  - Ä %R34  - %R34
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R34  + Ä %R34 + Ä
-           3         2        2
-       ,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R34   - ÄÄ %R34   - ÄÄ %R34   + ÄÄ %R34
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R34   + ÄÄ %R34   - ÄÄ %R34  - ÄÄ %R34
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R34  - Ä %R34  - Ä %R34  - Ä %R34  - %R34
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R34  + Ä %R34 + Ä
-           3         2        2
-       ]
-     ,
-    [- 1,1,0,1], [- 1,1,1,0],
-
-     [%R23,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R23   + ÄÄ %R23   - ÄÄ %R23  - ÄÄ %R23
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R23  - Ä %R23  - Ä %R23  - Ä %R23  - %R23
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R23  + Ä %R23 + Ä
-           3         2        2
-       ,
-      %R30,
-
-                   1     15    1     14    1     13
-         - %R30 + ÄÄ %R23   + ÄÄ %R23   + ÄÄ %R23
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R23  + ÄÄ %R23  + Ä %R23  + Ä %R23  + Ä %R23
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R23  - Ä %R23 - Ä
-         3         2        2
-       ]
-     ,
-
-     [%R23,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R23   + ÄÄ %R23   - ÄÄ %R23  - ÄÄ %R23
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R23  - Ä %R23  - Ä %R23  - Ä %R23  - %R23
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R23  + Ä %R23 + Ä
-           3         2        2
-       ,
-      %R31,
-
-                   1     15    1     14    1     13
-         - %R31 + ÄÄ %R23   + ÄÄ %R23   + ÄÄ %R23
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R23   - ÄÄ %R23   - ÄÄ %R23   + ÄÄ %R23
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R23  + ÄÄ %R23  + Ä %R23  + Ä %R23  + Ä %R23
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R23  - Ä %R23 - Ä
-         3         2        2
-       ]
-     ,
-
-     [%R24,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R24   + ÄÄ %R24   - ÄÄ %R24  - ÄÄ %R24
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R24  - Ä %R24  - Ä %R24  - Ä %R24  - %R24
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R24  + Ä %R24 + Ä
-           3         2        2
-       ,
-      %R28,
-
-                   1     15    1     14    1     13
-         - %R28 + ÄÄ %R24   + ÄÄ %R24   + ÄÄ %R24
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R24  + ÄÄ %R24  + Ä %R24  + Ä %R24  + Ä %R24
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R24  - Ä %R24 - Ä
-         3         2        2
-       ]
-     ,
-
-     [%R24,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R24   + ÄÄ %R24   - ÄÄ %R24  - ÄÄ %R24
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R24  - Ä %R24  - Ä %R24  - Ä %R24  - %R24
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R24  + Ä %R24 + Ä
-           3         2        2
-       ,
-      %R29,
-
-                   1     15    1     14    1     13
-         - %R29 + ÄÄ %R24   + ÄÄ %R24   + ÄÄ %R24
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R24   - ÄÄ %R24   - ÄÄ %R24   + ÄÄ %R24
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R24  + ÄÄ %R24  + Ä %R24  + Ä %R24  + Ä %R24
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R24  - Ä %R24 - Ä
-         3         2        2
-       ]
-     ,
-
-     [%R25,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R25   + ÄÄ %R25   - ÄÄ %R25  - ÄÄ %R25
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R25  - Ä %R25  - Ä %R25  - Ä %R25  - %R25
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R25  + Ä %R25 + Ä
-           3         2        2
-       ,
-      %R26,
-
-                   1     15    1     14    1     13
-         - %R26 + ÄÄ %R25   + ÄÄ %R25   + ÄÄ %R25
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R25  + ÄÄ %R25  + Ä %R25  + Ä %R25  + Ä %R25
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R25  - Ä %R25 - Ä
-         3         2        2
-       ]
-     ,
-
-     [%R25,
-
-            1     15    1     14    1     13    2     12
-         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
-           54          27          54          27
-       + 
-         11     11    2     10    1     9    7     8
-         ÄÄ %R25   + ÄÄ %R25   - ÄÄ %R25  - ÄÄ %R25
-         54          27          54         27
-       + 
-            1     7   1     6   1     5   1     4       3
-         - ÄÄ %R25  - Ä %R25  - Ä %R25  - Ä %R25  - %R25
-           54         9         6         9
-       + 
-           2     2   1        3
-         - Ä %R25  + Ä %R25 + Ä
-           3         2        2
-       ,
-      %R27,
-
-                   1     15    1     14    1     13
-         - %R27 + ÄÄ %R25   + ÄÄ %R25   + ÄÄ %R25
-                  54          27          54
-       + 
-            2     12   11     11    2     10    1     9
-         - ÄÄ %R25   - ÄÄ %R25   - ÄÄ %R25   + ÄÄ %R25
-           27          54          27          54
-       + 
-          7     8    1     7   1     6   1     5   1     4
-         ÄÄ %R25  + ÄÄ %R25  + Ä %R25  + Ä %R25  + Ä %R25
-         27         54         9         6         9
-       + 
-         2     2   1        1
-         Ä %R25  - Ä %R25 - Ä
-         3         2        2
-       ]
-     ,
-    [1,%R21,- %R21,0], [1,%R22,- %R22,0],
-    [1,%R19,0,- %R19], [1,%R20,0,- %R20],
-            1     3   1   1     3   1   1     3   1
-    [%R17,- Ä %R17  + Ä,- Ä %R17  + Ä,- Ä %R17  + Ä],
-            3         3   3         3   3         3
-            1     3   1   1     3   1   1     3   1
-    [%R18,- Ä %R18  + Ä,- Ä %R18  + Ä,- Ä %R18  + Ä]]
-            3         3   3         3   3         3
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty25}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty25}{ZeroDimensionalSolvePackageXmpPagePatch25}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty25}{\showpaste}
-\tab{5}\spadcommand{lr2 := realSolve(lf)$pack\free{lf }\free{pack }\bound{lr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch26}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull26}{ZeroDimensionalSolvePackageXmpPageEmpty26}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull26}{\hidepaste}
-\tab{5}\spadcommand{\#lr2\free{lr2 }}
-\indentrel{3}\begin{verbatim}
-   (26)  27
-                                  Type: PositiveInteger
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty26}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty26}{ZeroDimensionalSolvePackageXmpPagePatch26}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty26}{\showpaste}
-\tab{5}\spadcommand{\#lr2\free{lr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch27}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull27}{ZeroDimensionalSolvePackageXmpPageEmpty27}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull27}{\hidepaste}
-\tab{5}\spadcommand{lpr2 := positiveSolve(lf)$pack\free{lf }\free{pack }\bound{lpr2 }}
-\indentrel{3}\begin{verbatim}
-   (27)
-            1     3   1   1     3   1   1     3   1
-   [[%R40,- Ä %R40  + Ä,- Ä %R40  + Ä,- Ä %R40  + Ä]]
-            3         3   3         3   3         3
-           Type: List List RealClosure Fraction Integer
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty27}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty27}{ZeroDimensionalSolvePackageXmpPagePatch27}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty27}{\showpaste}
-\tab{5}\spadcommand{lpr2 := positiveSolve(lf)$pack\free{lf }\free{pack }\bound{lpr2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPagePatch28}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageFull28}{ZeroDimensionalSolvePackageXmpPageEmpty28}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageFull28}{\hidepaste}
-\tab{5}\spadcommand{[approximate(r,1/10**21)::Float for r in lpr2.1]\free{lpr2 }}
-\indentrel{3}\begin{verbatim}
-   (28)
-   [0.3221853546 2608559291, 0.3221853546 2608559291,
-    0.3221853546 2608559291, 0.3221853546 2608559291]
-                                       Type: List Float
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{ZeroDimensionalSolvePackageXmpPageEmpty28}
-\begin{paste}{ZeroDimensionalSolvePackageXmpPageEmpty28}{ZeroDimensionalSolvePackageXmpPagePatch28}
-\pastebutton{ZeroDimensionalSolvePackageXmpPageEmpty28}{\showpaste}
-\tab{5}\spadcommand{[approximate(r,1/10**21)::Float for r in lpr2.1]\free{lpr2 }}
-\end{paste}\end{patch}
-
diff --git a/books/pages/zlindep.pht b/books/pages/zlindep.pht
deleted file mode 100644
index d60b9a9..0000000
--- a/books/pages/zlindep.pht
+++ /dev/null
@@ -1,138 +0,0 @@
-\begin{patch}{IntegerLinearDependenceXmpPagePatch1}
-\begin{paste}{IntegerLinearDependenceXmpPageFull1}{IntegerLinearDependenceXmpPageEmpty1}
-\pastebutton{IntegerLinearDependenceXmpPageFull1}{\hidepaste}
-\tab{5}\spadcommand{M := SQMATRIX(2,INT)\bound{M }}
-\indentrel{3}\begin{verbatim}
-   (1)  SquareMatrix(2,Integer)
-                                           Type: Domain
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty1}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty1}{IntegerLinearDependenceXmpPagePatch1}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty1}{\showpaste}
-\tab{5}\spadcommand{M := SQMATRIX(2,INT)\bound{M }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch2}
-\begin{paste}{IntegerLinearDependenceXmpPageFull2}{IntegerLinearDependenceXmpPageEmpty2}
-\pastebutton{IntegerLinearDependenceXmpPageFull2}{\hidepaste}
-\tab{5}\spadcommand{m1: M := squareMatrix matrix [[1, 2], [0, -1]]\free{M }\bound{m1 }}
-\indentrel{3}\begin{verbatim}
-        Ú1   2 ¿
-   (2)  ³      ³
-        À0  - 1Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty2}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty2}{IntegerLinearDependenceXmpPagePatch2}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty2}{\showpaste}
-\tab{5}\spadcommand{m1: M := squareMatrix matrix [[1, 2], [0, -1]]\free{M }\bound{m1 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch3}
-\begin{paste}{IntegerLinearDependenceXmpPageFull3}{IntegerLinearDependenceXmpPageEmpty3}
-\pastebutton{IntegerLinearDependenceXmpPageFull3}{\hidepaste}
-\tab{5}\spadcommand{m2: M := squareMatrix matrix [[2, 3], [1, -2]]\free{M }\bound{m2 }}
-\indentrel{3}\begin{verbatim}
-        Ú2   3 ¿
-   (3)  ³      ³
-        À1  - 2Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty3}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty3}{IntegerLinearDependenceXmpPagePatch3}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty3}{\showpaste}
-\tab{5}\spadcommand{m2: M := squareMatrix matrix [[2, 3], [1, -2]]\free{M }\bound{m2 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch4}
-\begin{paste}{IntegerLinearDependenceXmpPageFull4}{IntegerLinearDependenceXmpPageEmpty4}
-\pastebutton{IntegerLinearDependenceXmpPageFull4}{\hidepaste}
-\tab{5}\spadcommand{m3: M := squareMatrix matrix [[3, 4], [2, -3]]\free{M }\bound{m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú3   4 ¿
-   (4)  ³      ³
-        À2  - 3Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty4}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty4}{IntegerLinearDependenceXmpPagePatch4}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty4}{\showpaste}
-\tab{5}\spadcommand{m3: M := squareMatrix matrix [[3, 4], [2, -3]]\free{M }\bound{m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch5}
-\begin{paste}{IntegerLinearDependenceXmpPageFull5}{IntegerLinearDependenceXmpPageEmpty5}
-\pastebutton{IntegerLinearDependenceXmpPageFull5}{\hidepaste}
-\tab{5}\spadcommand{linearlyDependentOverZ? vector [m1, m2, m3]\free{m1 m2 m3 }}
-\indentrel{3}\begin{verbatim}
-   (5)  true
-                                          Type: Boolean
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty5}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty5}{IntegerLinearDependenceXmpPagePatch5}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty5}{\showpaste}
-\tab{5}\spadcommand{linearlyDependentOverZ? vector [m1, m2, m3]\free{m1 m2 m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch6}
-\begin{paste}{IntegerLinearDependenceXmpPageFull6}{IntegerLinearDependenceXmpPageEmpty6}
-\pastebutton{IntegerLinearDependenceXmpPageFull6}{\hidepaste}
-\tab{5}\spadcommand{c := linearDependenceOverZ vector [m1, m2, m3]\free{m1 m2 m3 }\bound{c }}
-\indentrel{3}\begin{verbatim}
-   (6)  [1,- 2,1]
-                        Type: Union(Vector Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty6}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty6}{IntegerLinearDependenceXmpPagePatch6}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty6}{\showpaste}
-\tab{5}\spadcommand{c := linearDependenceOverZ vector [m1, m2, m3]\free{m1 m2 m3 }\bound{c }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch7}
-\begin{paste}{IntegerLinearDependenceXmpPageFull7}{IntegerLinearDependenceXmpPageEmpty7}
-\pastebutton{IntegerLinearDependenceXmpPageFull7}{\hidepaste}
-\tab{5}\spadcommand{c.1 * m1 + c.2 * m2 + c.3 * m3\free{c m1 m2 m3 }}
-\indentrel{3}\begin{verbatim}
-        Ú0  0¿
-   (7)  ³    ³
-        À0  0Ù
-                          Type: SquareMatrix(2,Integer)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty7}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty7}{IntegerLinearDependenceXmpPagePatch7}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty7}{\showpaste}
-\tab{5}\spadcommand{c.1 * m1 + c.2 * m2 + c.3 * m3\free{c m1 m2 m3 }}
-\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPagePatch8}
-\begin{paste}{IntegerLinearDependenceXmpPageFull8}{IntegerLinearDependenceXmpPageEmpty8}
-\pastebutton{IntegerLinearDependenceXmpPageFull8}{\hidepaste}
-\tab{5}\spadcommand{solveLinearlyOverQ(vector [m1, m3], m2)\free{m1 m2 m3 }}
-\indentrel{3}\begin{verbatim}
-         1 1
-   (8)  [Ä,Ä]
-         2 2
-               Type: Union(Vector Fraction Integer,...)
-\end{verbatim}
-\indentrel{-3}\end{paste}\end{patch}
-
-\begin{patch}{IntegerLinearDependenceXmpPageEmpty8}
-\begin{paste}{IntegerLinearDependenceXmpPageEmpty8}{IntegerLinearDependenceXmpPagePatch8}
-\pastebutton{IntegerLinearDependenceXmpPageEmpty8}{\showpaste}
-\tab{5}\spadcommand{solveLinearlyOverQ(vector [m1, m3], m2)\free{m1 m2 m3 }}
-\end{paste}\end{patch}
-
diff --git a/changelog b/changelog
index 8e4e4d7..11a9c9f 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,130 @@
+20080809 tpd books/bookvol7 remove all references to doc/hypertex
+20080809 tpd src/Makefile stop creating the doc/hypertex/pages subdir
+20080809 tpd src/input/Makefile remove reference to hyperdoc/pages
+20080809 tpd src/share/Makefile remove HYPER variable
+20080808 tpd src/Makefile stop creating hypertex/pages
+20080806 tpd books/bookvol7.1 add paste/patch files
+20080806 tpd books/pages/zlindep.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/zdsolve.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/xpr.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/xpoly.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/xpbwpoly.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/wutset.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/void.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/vector.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/up.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/uniseg.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/ug15.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/ug13.pht embed in bookvol7.1, removed
+20080806 tpd books/pages/ug12.pht embed in bookvol7.1, removed
+20080805 tpd books/pages/ug11.pht embed in bookvol7.1, removed
+20080805 tpd books/pages/ug10.pht embed in bookvol7.1, removed
+20080805 tpd books/pages/ug08.pht embed in bookvol7.1, removed
+20080805 tpd books/pages/ug07.pht embed in bookvol7.1, removed
+20080805 tpd books/pages/ug06.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/ug05.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/ug04.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/ug03.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/ug02.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/ug01.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/textfile.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/table.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/symbol.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/strtbl.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/string.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/stream.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/stbl.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/sregset.pht embed in bookvol7.1, removed
+20080804 tpd books/pages/sqmatrix.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/sint.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/set.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/seg.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/segbind.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/roman.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/regset.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/reclos.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/radix.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/quat.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/poly.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/poly1.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/pfr.pht embed in bookvol7.1, removed
+20080803 tpd books/pages/perman.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/ovar.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/op.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/odpol.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/oct.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/numbers.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/none.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/mset.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/mpoly.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/mkfunc.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/matrix.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/mappkg1.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/magma.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lword.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lpoly.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lodo.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lodo2.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lodo1.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/list.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lib.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lextripk.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lexp.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/lazm3pk.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/kernel.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/kafile.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/int.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/intheory.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/hexadec.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/heap.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/gstbl.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/grpthry.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/graphics.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/gbf.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/function.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/fr.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/frac.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/fr2.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/fparfrac.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/fname.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/float.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/file.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/farray.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exsum.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exseries.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/expr.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/explot3d.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/explot2d.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exmatrix.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exlimit.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exlap.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exit.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exint.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/exdiff.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/evalex.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/eqtbl.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/eq.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/dmp.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/dfloat.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/derham.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/decimal.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/cycles.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/coverex.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/contfrac.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/complex.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/clif.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/char.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/cclass.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/carten.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/card.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/bstree.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/bop.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/binary.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/bbtree.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/array2.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/array1.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/anna-es.pht embed in bookvol7.1, removed
+20080802 tpd books/pages/alist.pht embed in bookvol7.1, removed
 20080802 tpd books/bookvol7.1 copy the whole file to pages
 20080802 tpd books/bookvol7 make extendHT accept .pamphlet
 20080802 tpd src/share/Makefile do not copy util.ht
diff --git a/src/Makefile.pamphlet b/src/Makefile.pamphlet
index e65e8cf..3d7a1b2 100644
--- a/src/Makefile.pamphlet
+++ b/src/Makefile.pamphlet
@@ -123,7 +123,6 @@ system.
 <<sharedir>>=
 sharedir: ${SRC}/share/Makefile
 	@echo 9 making ${SRC}/share
-	@mkdir -p ${MNT}/${SYS}/doc/hypertex/pages
 	@mkdir -p ${MNT}/${SYS}/lib
 	@(cd share ; ${ENV} ${MAKE} )
 
@@ -408,8 +407,6 @@ hyperdir: ${SPD}/books/bookvol7.pamphlet ${SPD}/books/bookvol7.1.pamphlet
 	@mkdir -p ${OBJ}/${SYS}/hyper
 	@mkdir -p ${OBJ}/${SYS}/bin
 	@mkdir -p ${OBJ}/${SYS}/lib
-	@mkdir -p ${MNT}/${SYS}/doc/hypertex/bitmaps
-	@mkdir -p ${MNT}/${SYS}/doc/hypertex/pages
 	@mkdir -p ${MNT}/${SYS}/doc/src/hyper
 	@(cd ${INT}/hyper ; \
 	  ${TANGLE} -t8 ${SPD}/books/bookvol7.pamphlet >Makefile ; \
diff --git a/src/input/Makefile.pamphlet b/src/input/Makefile.pamphlet
index 3fc5383..93718ee 100644
--- a/src/input/Makefile.pamphlet
+++ b/src/input/Makefile.pamphlet
@@ -112,8 +112,6 @@ all:
 	@ cp -p ${IN}/*.input ${MID}
 	@ cp -p ${IN}/axiom.test ${MID}/axiom.input
 	@ cp ${IN}/Makefile.int ${MID}/Makefile
-#	Following now done via doc directory, in a different way
-#	@ (cd ${MID} ; ${SPAD}/bin/hypertex -i `echo ${MNT}/${SYS}/doc/hypertex/pages/*.ht`)
 	@ (cd ${MID} ; \
 	   for i in *.input ;do \
 	    if test ! -f `basename $$i .input`.rec  ;then \
diff --git a/src/share/Makefile.pamphlet b/src/share/Makefile.pamphlet
index ba1ccf1..094d4b6 100644
--- a/src/share/Makefile.pamphlet
+++ b/src/share/Makefile.pamphlet
@@ -23,7 +23,6 @@ ${LIB}/command.list: ${IN}/algebra/command.list
 @
 <<*>>=
 IN=${SRC}/share
-HYPER=${MNT}/${SYS}/doc/hypertex/pages
 LIB=${MNT}/${SYS}/lib
 
 FILES=${LIB}/command.list
