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}{LiePolynomialXmpPage