From efd303d35dd5ecb8a9bc57c44d4aa3f6c57044d2 Mon Sep 17 00:00:00 2001
From: Tim Daly <daly@axiom-developer.org>
Date: Fri, 8 May 2015 19:21:55 -0400
Subject: [PATCH] books/bookvol*pamphlet add more test cases

---
 books/bookvol10.2.pamphlet              | 3754 ++++----
 books/bookvol10.3.pamphlet              |15693 ++++++++++++++++++++++---------
 books/bookvol10.4.pamphlet              | 7847 ++++++++++++++--
 books/bookvol10.pamphlet                |    5 +-
 books/bookvol5.pamphlet                 |    1 +
 changelog                               |   16 +
 patch                                   |    8 +-
 src/axiom-website/patches.html          |    2 +
 src/input/Makefile.pamphlet             |    5 +
 src/input/cmds.input.pamphlet           |   13 +-
 src/interp/clam.lisp.pamphlet           |    2 +-
 src/interp/msgdb.lisp.pamphlet          |   81 +-
 src/interp/vmlisp.lisp.pamphlet         |   25 +-
 src/share/algebra/browse.daase          |   34 +-
 src/share/algebra/category.daase        |    2 +-
 src/share/algebra/interp.daase          |   44 +-
 src/share/algebra/operation.daase       | 6341 +++++++-------
 src/share/algebra/users.daase/index.kaf |   12 +-
 18 files changed, 23642 insertions(+), 10243 deletions(-)

diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 7cac65d..03c8a4b 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -127,7 +127,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show AdditiveValuationAttribute
+--R 
+--R AdditiveValuationAttribute  is a category constructor
+--R Abbreviation for AdditiveValuationAttribute is ATADDVA 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATADDVA 
+--R
+--R------------------------------- Operations --------------------------------
+--R AdditiveValuationAttribute is a category constructor.
+--R Abbreviation for AdditiveValuationAttribute is ATADDVA 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATADDVA 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -191,7 +207,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show ApproximateAttribute
+--R 
+--R ApproximateAttribute  is a category constructor
+--R Abbreviation for ApproximateAttribute is ATAPPRO 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATAPPRO 
+--R
+--R------------------------------- Operations --------------------------------
+--R ApproximateAttribute is a category constructor.
+--R Abbreviation for ApproximateAttribute is ATAPPRO 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATAPPRO 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -254,7 +286,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show ArbitraryExponentAttribute
+--R 
+--R ArbitraryExponentAttribute  is a category constructor
+--R Abbreviation for ArbitraryExponentAttribute is ATARBEX 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATARBEX 
+--R
+--R------------------------------- Operations --------------------------------
+--R ArbitraryExponentAttribute is a category constructor.
+--R Abbreviation for ArbitraryExponentAttribute is ATARBEX 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATARBEX 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -317,7 +365,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show ArbitraryPrecisionAttribute
+--R 
+--R ArbitraryPrecisionAttribute  is a category constructor
+--R Abbreviation for ArbitraryPrecisionAttribute is ATARBPR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATARBPR 
+--R
+--R------------------------------- Operations --------------------------------
+--R ArbitraryPrecisionAttribute is a category constructor.
+--R Abbreviation for ArbitraryPrecisionAttribute is ATARBPR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATARBPR 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -383,6 +447,7 @@ digraph pic {
 
 --S 1 of 1
 )show ArcHyperbolicFunctionCategory
+--R 
 --R ArcHyperbolicFunctionCategory  is a category constructor
 --R Abbreviation for ArcHyperbolicFunctionCategory is AHYP 
 --R This constructor is exposed in this frame.
@@ -493,6 +558,7 @@ intermediate test to check that the argument has a reciprocal values.
 
 --S 1 of 1
 )show ArcTrigonometricFunctionCategory
+--R 
 --R ArcTrigonometricFunctionCategory  is a category constructor
 --R Abbreviation for ArcTrigonometricFunctionCategory is ATRIG 
 --R This constructor is exposed in this frame.
@@ -610,6 +676,23 @@ digraph pic {
 
 --S 1 of 1
 )show AttributeRegistry
+--R 
+--R AttributeRegistry  is a category constructor
+--R Abbreviation for AttributeRegistry is ATTREG 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATTREG 
+--R
+--R------------------------------- Operations --------------------------------
+--R AttributeRegistry is a category constructor.
+--R Abbreviation for AttributeRegistry is ATTREG 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATTREG 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
+--R
 --E 1
 
 )spool
@@ -807,6 +890,7 @@ digraph pic {
 
 --S 1 of 1
 )show BasicType
+--R 
 --R BasicType  is a category constructor
 --R Abbreviation for BasicType is BASTYPE 
 --R This constructor is exposed in this frame.
@@ -906,7 +990,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show CanonicalAttribute
+--R 
+--R CanonicalAttribute  is a category constructor
+--R Abbreviation for CanonicalAttribute is ATCANON 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCANON 
+--R
+--R------------------------------- Operations --------------------------------
+--R CanonicalAttribute is a category constructor.
+--R Abbreviation for CanonicalAttribute is ATCANON 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCANON 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -971,7 +1071,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show CanonicalClosedAttribute
+--R 
+--R CanonicalClosedAttribute  is a category constructor
+--R Abbreviation for CanonicalClosedAttribute is ATCANCL 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCANCL 
+--R
+--R------------------------------- Operations --------------------------------
+--R CanonicalClosedAttribute is a category constructor.
+--R Abbreviation for CanonicalClosedAttribute is ATCANCL 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCANCL 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -1035,7 +1151,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show CanonicalUnitNormalAttribute
+--R 
+--R CanonicalUnitNormalAttribute  is a category constructor
+--R Abbreviation for CanonicalUnitNormalAttribute is ATCUNOR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCUNOR 
+--R
+--R------------------------------- Operations --------------------------------
+--R CanonicalUnitNormalAttribute is a category constructor.
+--R Abbreviation for CanonicalUnitNormalAttribute is ATCUNOR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCUNOR 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -1104,7 +1236,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show CentralAttribute
+--R 
+--R CentralAttribute  is a category constructor
+--R Abbreviation for CentralAttribute is ATCENRL 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCENRL 
+--R
+--R------------------------------- Operations --------------------------------
+--R CentralAttribute is a category constructor.
+--R Abbreviation for CentralAttribute is ATCENRL 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCENRL 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -1283,6 +1431,7 @@ digraph pic {
 
 --S 1 of 1
 )show CombinatorialFunctionCategory
+--R 
 --R CombinatorialFunctionCategory  is a category constructor
 --R Abbreviation for CombinatorialFunctionCategory is CFCAT 
 --R This constructor is exposed in this frame.
@@ -1390,7 +1539,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show CommutativeStarAttribute
+--R 
+--R CommutativeStarAttribute  is a category constructor
+--R Abbreviation for CommutativeStarAttribute is ATCS 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCS 
+--R
+--R------------------------------- Operations --------------------------------
+--R CommutativeStarAttribute is a category constructor.
+--R Abbreviation for CommutativeStarAttribute is ATCS 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATCS 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -1619,6 +1784,7 @@ digraph pic {
 
 --S 1 of 1
 )show ElementaryFunctionCategory
+--R 
 --R ElementaryFunctionCategory  is a category constructor
 --R Abbreviation for ElementaryFunctionCategory is ELEMFUN 
 --R This constructor is exposed in this frame.
@@ -1724,6 +1890,7 @@ digraph pic {
 
 --S 1 of 1
 )show Eltable
+--R 
 --R Eltable(S: SetCategory,Index: Type)  is a category constructor
 --R Abbreviation for Eltable is ELTAB 
 --R This constructor is exposed in this frame.
@@ -1837,7 +2004,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show FiniteAggregateAttribute
+--R 
+--R FiniteAggregateAttribute  is a category constructor
+--R Abbreviation for FiniteAggregateAttribute is ATFINAG 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATFINAG 
+--R
+--R------------------------------- Operations --------------------------------
+--R FiniteAggregateAttribute is a category constructor.
+--R Abbreviation for FiniteAggregateAttribute is ATFINAG 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATFINAG 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -1905,6 +2088,7 @@ intermediate test to check that the argument has a reciprocal values.
 
 --S 1 of 1
 )show HyperbolicFunctionCategory
+--R 
 --R HyperbolicFunctionCategory  is a category constructor
 --R Abbreviation for HyperbolicFunctionCategory is HYPCAT 
 --R This constructor is exposed in this frame.
@@ -2164,7 +2348,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show JacobiIdentityAttribute
+--R 
+--R JacobiIdentityAttribute  is a category constructor
+--R Abbreviation for JacobiIdentityAttribute is ATJACID 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATJACID 
+--R
+--R------------------------------- Operations --------------------------------
+--R JacobiIdentityAttribute is a category constructor.
+--R Abbreviation for JacobiIdentityAttribute is ATJACID 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATJACID 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2229,7 +2429,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show LazyRepresentationAttribute
+--R 
+--R LazyRepresentationAttribute  is a category constructor
+--R Abbreviation for LazyRepresentationAttribute is ATLR 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATLR 
+--R
+--R------------------------------- Operations --------------------------------
+--R LazyRepresentationAttribute is a category constructor.
+--R Abbreviation for LazyRepresentationAttribute is ATLR 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATLR 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2292,7 +2508,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show LeftUnitaryAttribute
+--R 
+--R LeftUnitaryAttribute  is a category constructor
+--R Abbreviation for LeftUnitaryAttribute is ATLUNIT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATLUNIT 
+--R
+--R------------------------------- Operations --------------------------------
+--R LeftUnitaryAttribute is a category constructor.
+--R Abbreviation for LeftUnitaryAttribute is ATLUNIT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATLUNIT 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2357,6 +2589,7 @@ digraph pic {
 
 --S 1 of 1
 )show ModularAlgebraicGcdOperations
+--R 
 --R ModularAlgebraicGcdOperations(MPT: Type,MD: Type)  is a category constructor
 --R Abbreviation for ModularAlgebraicGcdOperations is MAGCDOC 
 --R This constructor is exposed in this frame.
@@ -2503,7 +2736,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show MultiplicativeValuationAttribute
+--R 
+--R MultiplicativeValuationAttribute  is a category constructor
+--R Abbreviation for MultiplicativeValuationAttribute is ATMULVA 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATMULVA 
+--R
+--R------------------------------- Operations --------------------------------
+--R MultiplicativeValuationAttribute is a category constructor.
+--R Abbreviation for MultiplicativeValuationAttribute is ATMULVA 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATMULVA 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2568,7 +2817,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show NotherianAttribute
+--R 
+--R NotherianAttribute  is a category constructor
+--R Abbreviation for NotherianAttribute is ATNOTHR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNOTHR 
+--R
+--R------------------------------- Operations --------------------------------
+--R NotherianAttribute is a category constructor.
+--R Abbreviation for NotherianAttribute is ATNOTHR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNOTHR 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2631,7 +2896,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show NoZeroDivisorsAttribute
+--R 
+--R NoZeroDivisorsAttribute  is a category constructor
+--R Abbreviation for NoZeroDivisorsAttribute is ATNZDIV 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNZDIV 
+--R
+--R------------------------------- Operations --------------------------------
+--R NoZeroDivisorsAttribute is a category constructor.
+--R Abbreviation for NoZeroDivisorsAttribute is ATNZDIV 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNZDIV 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2696,7 +2977,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show NullSquareAttribute
+--R 
+--R NullSquareAttribute  is a category constructor
+--R Abbreviation for NullSquareAttribute is ATNULSQ 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNULSQ 
+--R
+--R------------------------------- Operations --------------------------------
+--R NullSquareAttribute is a category constructor.
+--R Abbreviation for NullSquareAttribute is ATNULSQ 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATNULSQ 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2761,6 +3058,7 @@ digraph pic {
 
 --S 1 of 1
 )show OpenMath
+--R 
 --R OpenMath  is a category constructor
 --R Abbreviation for OpenMath is OM 
 --R This constructor is exposed in this frame.
@@ -2868,7 +3166,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show PartiallyOrderedSetAttribute
+--R 
+--R PartiallyOrderedSetAttribute  is a category constructor
+--R Abbreviation for PartiallyOrderedSetAttribute is ATPOSET 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATPOSET 
+--R
+--R------------------------------- Operations --------------------------------
+--R PartiallyOrderedSetAttribute is a category constructor.
+--R Abbreviation for PartiallyOrderedSetAttribute is ATPOSET 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATPOSET 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -2942,9 +3256,12 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for PTRANFN 
 --R
 --R------------------------------- Operations --------------------------------
---R acosIfCan : K -> Union(K,"failed")    acotIfCan : K -> Union(K,"failed")
---R acscIfCan : K -> Union(K,"failed")    asecIfCan : K -> Union(K,"failed")
---R asinIfCan : K -> Union(K,"failed")    atanIfCan : K -> Union(K,"failed")
+--R acosIfCan : K -> Union(K,"failed")    acoshIfCan : K -> Union(K,"failed")
+--R acotIfCan : K -> Union(K,"failed")    acothIfCan : K -> Union(K,"failed")
+--R acscIfCan : K -> Union(K,"failed")    acschIfCan : K -> Union(K,"failed")
+--R asecIfCan : K -> Union(K,"failed")    asechIfCan : K -> Union(K,"failed")
+--R asinIfCan : K -> Union(K,"failed")    asinhIfCan : K -> Union(K,"failed")
+--R atanIfCan : K -> Union(K,"failed")    atanhIfCan : K -> Union(K,"failed")
 --R cosIfCan : K -> Union(K,"failed")     coshIfCan : K -> Union(K,"failed")
 --R cotIfCan : K -> Union(K,"failed")     cothIfCan : K -> Union(K,"failed")
 --R cscIfCan : K -> Union(K,"failed")     cschIfCan : K -> Union(K,"failed")
@@ -2952,12 +3269,6 @@ digraph pic {
 --R secIfCan : K -> Union(K,"failed")     sechIfCan : K -> Union(K,"failed")
 --R sinIfCan : K -> Union(K,"failed")     sinhIfCan : K -> Union(K,"failed")
 --R tanIfCan : K -> Union(K,"failed")     tanhIfCan : K -> Union(K,"failed")
---R acoshIfCan : K -> Union(K,"failed")
---R acothIfCan : K -> Union(K,"failed")
---R acschIfCan : K -> Union(K,"failed")
---R asechIfCan : K -> Union(K,"failed")
---R asinhIfCan : K -> Union(K,"failed")
---R atanhIfCan : K -> Union(K,"failed")
 --R nthRootIfCan : (K,NonNegativeInteger) -> Union(K,"failed")
 --R
 --E 1
@@ -3400,8 +3711,8 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for RADCAT 
 --R
 --R------------------------------- Operations --------------------------------
---R nthRoot : (%,Integer) -> %            sqrt : % -> %
---R ?**? : (%,Fraction(Integer)) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     nthRoot : (%,Integer) -> %
+--R sqrt : % -> %                        
 --R
 --E 1
 
@@ -3687,7 +3998,22 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+--R 
+--R RightUnitaryAttribute  is a category constructor
+--R Abbreviation for RightUnitaryAttribute is ATRUNIT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATRUNIT 
+--R
+--R------------------------------- Operations --------------------------------
+--R RightUnitaryAttribute is a category constructor.
+--R Abbreviation for RightUnitaryAttribute is ATRUNIT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATRUNIT 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -3750,7 +4076,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show ShallowlyMutableAttribute
+--R 
+--R ShallowlyMutableAttribute  is a category constructor
+--R Abbreviation for ShallowlyMutableAttribute is ATSHMUT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATSHMUT 
+--R
+--R------------------------------- Operations --------------------------------
+--R ShallowlyMutableAttribute is a category constructor.
+--R Abbreviation for ShallowlyMutableAttribute is ATSHMUT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATSHMUT 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -3819,6 +4161,7 @@ digraph pic {
 
 --S 1 of 1
 )show SpecialFunctionCategory
+--R 
 --R SpecialFunctionCategory  is a category constructor
 --R Abbreviation for SpecialFunctionCategory is SPFCAT 
 --R This constructor is exposed in this frame.
@@ -3962,6 +4305,7 @@ intermediate test to check that the argument has a reciprocal values.
 
 --S 1 of 1
 )show TrigonometricFunctionCategory
+--R 
 --R TrigonometricFunctionCategory  is a category constructor
 --R Abbreviation for TrigonometricFunctionCategory is TRIGCAT 
 --R This constructor is exposed in this frame.
@@ -4082,6 +4426,22 @@ digraph pic {
 
 --S 1 of 1
 )show Type
+--R 
+--R Type  is a category constructor
+--R Abbreviation for Type is TYPE 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for TYPE 
+--R
+--R------------------------------- Operations --------------------------------
+--R Type is a category constructor.
+--R Abbreviation for Type is TYPE 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for TYPE 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 
 )spool
@@ -4159,7 +4519,23 @@ digraph pic {
 )clear all
 
 --S 1 of 1
-1
+)show UnitsKnownAttribute
+--R 
+--R UnitsKnownAttribute  is a category constructor
+--R Abbreviation for UnitsKnownAttribute is ATUNIKN 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATUNIKN 
+--R
+--R------------------------------- Operations --------------------------------
+--R UnitsKnownAttribute is a category constructor.
+--R Abbreviation for UnitsKnownAttribute is ATUNIKN 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ATUNIKN 
+--R
+--R------------------------------- Operations --------------------------------
+--R
+--R
+--R
 --E 1
 )spool
 )lisp (bye)
@@ -4229,6 +4605,7 @@ digraph pic {
 
 --S 1 of 1
 )show Aggregate
+--R 
 --R Aggregate  is a category constructor
 --R Abbreviation for Aggregate is AGG 
 --R This constructor is exposed in this frame.
@@ -4642,6 +5019,7 @@ digraph pic {
 
 --S 1 of 1
 )show EltableAggregate
+--R 
 --R EltableAggregate(Dom: SetCategory,Im: Type)  is a category constructor
 --R Abbreviation for EltableAggregate is ELTAGG 
 --R This constructor is exposed in this frame.
@@ -4807,9 +5185,8 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for EVALAB 
 --R
 --R------------------------------- Operations --------------------------------
---R eval : (%,Equation(R)) -> %           eval : (%,R,R) -> %
---R eval : (%,List(R),List(R)) -> %      
---R eval : (%,List(Equation(R))) -> %
+--R eval : (%,List(Equation(R))) -> %     eval : (%,Equation(R)) -> %
+--R eval : (%,R,R) -> %                   eval : (%,List(R),List(R)) -> %
 --R
 --E 1
 
@@ -4935,6 +5312,7 @@ digraph pic {
 
 --S 1 of 1
 )show FortranProgramCategory
+--R 
 --R FortranProgramCategory  is a category constructor
 --R Abbreviation for FortranProgramCategory is FORTCAT 
 --R This constructor is exposed in this frame.
@@ -5391,6 +5769,7 @@ digraph pic {
 
 --S 1 of 1
 )show Logic
+--R 
 --R Logic  is a category constructor
 --R Abbreviation for Logic is LOGIC 
 --R This constructor is exposed in this frame.
@@ -5515,10 +5894,9 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for PPCURVE 
 --R
 --R------------------------------- Operations --------------------------------
---R coerce : % -> OutputForm             
+--R coerce : % -> OutputForm              xRange : % -> Segment(DoubleFloat)
+--R yRange : % -> Segment(DoubleFloat)   
 --R listBranches : % -> List(List(Point(DoubleFloat)))
---R xRange : % -> Segment(DoubleFloat)
---R yRange : % -> Segment(DoubleFloat)
 --R
 --E 1
 
@@ -5643,11 +6021,9 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for PSCURVE 
 --R
 --R------------------------------- Operations --------------------------------
---R coerce : % -> OutputForm             
+--R coerce : % -> OutputForm              xRange : % -> Segment(DoubleFloat)
+--R yRange : % -> Segment(DoubleFloat)    zRange : % -> Segment(DoubleFloat)
 --R listBranches : % -> List(List(Point(DoubleFloat)))
---R xRange : % -> Segment(DoubleFloat)
---R yRange : % -> Segment(DoubleFloat)
---R zRange : % -> Segment(DoubleFloat)
 --R
 --E 1
 
@@ -5775,6 +6151,7 @@ digraph pic {
 
 --S 1 of 1
 )show RealConstant
+--R 
 --R RealConstant  is a category constructor
 --R Abbreviation for RealConstant is REAL 
 --R This constructor is exposed in this frame.
@@ -6031,6 +6408,7 @@ digraph pic {
 
 --S 1 of 1
 )show SetCategory
+--R 
 --R SetCategory  is a category constructor
 --R Abbreviation for SetCategory is SETCAT 
 --R This constructor is exposed in this frame.
@@ -6188,6 +6566,7 @@ digraph pic {
 
 --S 1 of 1
 )show TranscendentalFunctionCategory
+--R 
 --R TranscendentalFunctionCategory  is a category constructor
 --R Abbreviation for TranscendentalFunctionCategory is TRANFUN 
 --R This constructor is exposed in this frame.
@@ -6437,6 +6816,7 @@ digraph pic {
 
 --S 1 of 1
 )show AbelianSemiGroup
+--R 
 --R AbelianSemiGroup  is a category constructor
 --R Abbreviation for AbelianSemiGroup is ABELSG 
 --R This constructor is exposed in this frame.
@@ -6754,11 +7134,11 @@ digraph pic {
 --R cyclic? : % -> Boolean                distance : (%,%) -> Integer
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R map : ((S -> S),%) -> %               nodes : % -> List(%)
---R sample : () -> %                      tree : List(S) -> %
---R tree : S -> %                         tree : (S,List(%)) -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 map : ((S -> S),%) -> %
+--R nodes : % -> List(%)                  sample : () -> %
+--R tree : List(S) -> %                   tree : S -> %
+--R tree : (S,List(%)) -> %               value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -6772,7 +7152,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -6993,12 +7372,11 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -7187,9 +7565,9 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Matrix(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Matrix(MachineFloat) -> %
 --R
 --E 1
 
@@ -7520,9 +7898,9 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Vector(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Vector(MachineFloat) -> %
 --R
 --E 1
 
@@ -8016,6 +8394,7 @@ digraph pic {
 
 --S 1 of 1
 )show FileCategory
+--R 
 --R FileCategory(Name: SetCategory,S: SetCategory)  is a category constructor
 --R Abbreviation for FileCategory is FILECAT 
 --R This constructor is exposed in this frame.
@@ -8196,6 +8575,7 @@ digraph pic {
 
 --S 1 of 1
 )show Finite
+--R 
 --R Finite  is a category constructor
 --R Abbreviation for Finite is FINITE 
 --R This constructor is exposed in this frame.
@@ -8364,6 +8744,7 @@ digraph pic {
 
 --S 1 of 1
 )show FileNameCategory
+--R 
 --R FileNameCategory  is a category constructor
 --R Abbreviation for FileNameCategory is FNCAT 
 --R This constructor is exposed in this frame.
@@ -8537,6 +8918,7 @@ digraph pic {
 
 --S 1 of 1
 )show GradedModule
+--R 
 --R GradedModule(R: CommutativeRing,E: AbelianMonoid)  is a category constructor
 --R Abbreviation for GradedModule is GRMOD 
 --R This constructor is exposed in this frame.
@@ -8711,6 +9093,45 @@ digraph pic {
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \pagehead{LeftOreRing}{LORER}
 \pagepic{ps/v102leftorering.eps}{LORER}{1.00}
+\begin{chunk}{LeftOreRing.input}
+)set break resume
+)sys rm -f LeftOreRing.output
+)spool LeftOreRing.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show LeftOreRing
+--R 
+--R LeftOreRing  is a category constructor
+--R Abbreviation for LeftOreRing is LORER 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for LORER 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R characteristic : () -> NonNegativeInteger
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R
+--E 1
+
+)spool
+)lisp (bye)
+\end{chunk}
+
 \begin{chunk}{LeftOreRing.help}
 ====================================================================
 LeftOreRing 
@@ -8788,7 +9209,8 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R copy : % -> %                         empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R map : ((S -> S),%) -> %               sample : () -> %
+--R latex : % -> String if S has SETCAT   map : ((S -> S),%) -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -8801,7 +9223,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -9082,6 +9503,7 @@ digraph pic {
 
 --S 1 of 1
 )show IndexedDirectProductCategory
+--R 
 --R IndexedDirectProductCategory(A: SetCategory,S: OrderedSet)  is a category constructor
 --R Abbreviation for IndexedDirectProductCategory is IDPC 
 --R This constructor is exposed in this frame.
@@ -9490,6 +9912,7 @@ digraph pic {
 
 --S 1 of 1
 )show Monad
+--R 
 --R Monad  is a category constructor
 --R Abbreviation for Monad is MONAD 
 --R This constructor is exposed in this frame.
@@ -10239,6 +10662,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedSet
+--R 
 --R OrderedSet  is a category constructor
 --R Abbreviation for OrderedSet is ORDSET 
 --R This constructor is exposed in this frame.
@@ -10778,11 +11202,10 @@ digraph pic {
 --R ?=? : (%,%) -> Boolean                allRootsOf : ThePols -> List(%)
 --R coerce : % -> OutputForm              definingPolynomial : % -> ThePols
 --R hash : % -> SingleInteger             latex : % -> String
+--R negative? : (ThePols,%) -> Boolean    positive? : (ThePols,%) -> Boolean
 --R sign : (ThePols,%) -> Integer         zero? : (ThePols,%) -> Boolean
 --R ?~=? : (%,%) -> Boolean              
 --R approximate : (ThePols,%,TheField) -> TheField
---R negative? : (ThePols,%) -> Boolean
---R positive? : (ThePols,%) -> Boolean
 --R recip : (ThePols,%) -> Union(ThePols,"failed")
 --R relativeApprox : (ThePols,%,TheField) -> TheField
 --R rootOf : (ThePols,PositiveInteger) -> Union(%,"failed")
@@ -11154,6 +11577,7 @@ operator ``*''. A Semigroup $G(S,*)$ is:
 
 --S 1 of 1
 )show SemiGroup
+--R 
 --R SemiGroup  is a category constructor
 --R Abbreviation for SemiGroup is SGROUP 
 --R This constructor is exposed in this frame.
@@ -11322,6 +11746,7 @@ digraph pic {
 
 --S 1 of 1
 )show SetCategoryWithDegree
+--R 
 --R SetCategoryWithDegree  is a category constructor
 --R Abbreviation for SetCategoryWithDegree is SETCATD 
 --R This constructor is exposed in this frame.
@@ -11694,6 +12119,7 @@ digraph pic {
 
 --S 1 of 1
 )show StepThrough
+--R 
 --R StepThrough  is a category constructor
 --R Abbreviation for StepThrough is STEP 
 --R This constructor is exposed in this frame.
@@ -11702,8 +12128,8 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
 --R hash : % -> SingleInteger             init : () -> %
---R latex : % -> String                   ?~=? : (%,%) -> Boolean
---R nextItem : % -> Union(%,"failed")
+--R latex : % -> String                   nextItem : % -> Union(%,"failed")
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -11864,8 +12290,9 @@ digraph pic {
 --R point : Point(R) -> %                 point : (%,List(R)) -> %
 --R point : (%,Point(R)) -> %             point? : % -> Boolean
 --R polygon : % -> List(Point(R))         polygon : List(Point(R)) -> %
---R polygon : (%,List(List(R))) -> %      polygon? : % -> Boolean
---R subspace : % -> SubSpace(3,R)         ?~=? : (%,%) -> Boolean
+--R polygon : (%,List(List(R))) -> %      polygon : (%,List(Point(R))) -> %
+--R polygon? : % -> Boolean               subspace : % -> SubSpace(3,R)
+--R ?~=? : (%,%) -> Boolean              
 --R closedCurve : (%,List(List(R))) -> %
 --R closedCurve : (%,List(Point(R))) -> %
 --R enterPointData : (%,List(Point(R))) -> NonNegativeInteger
@@ -11883,7 +12310,6 @@ digraph pic {
 --R numberOfComposites : % -> NonNegativeInteger
 --R objects : % -> Record(points: NonNegativeInteger,curves: NonNegativeInteger,polygons: NonNegativeInteger,constructs: NonNegativeInteger)
 --R point : (%,NonNegativeInteger) -> %
---R polygon : (%,List(Point(R))) -> %
 --R
 --E 1
 
@@ -12405,18 +12831,19 @@ digraph pic {
 
 --S 1 of 1
 )show AbelianMonoid
+--R 
 --R AbelianMonoid  is a category constructor
 --R Abbreviation for AbelianMonoid is ABELMON 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for ABELMON 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -12825,7 +13252,8 @@ digraph pic {
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                extract! : % -> S
 --R insert! : (S,%) -> %                  inspect : % -> S
---R map : ((S -> S),%) -> %               sample : () -> %
+--R latex : % -> String if S has SETCAT   map : ((S -> S),%) -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -12838,7 +13266,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -13047,6 +13474,7 @@ digraph pic {
 
 --S 1 of 1
 )show CachableSet
+--R 
 --R CachableSet  is a category constructor
 --R Abbreviation for CachableSet is CACHSET 
 --R This constructor is exposed in this frame.
@@ -13058,8 +13486,7 @@ digraph pic {
 --R ?>=? : (%,%) -> Boolean               coerce : % -> OutputForm
 --R hash : % -> SingleInteger             latex : % -> String
 --R max : (%,%) -> %                      min : (%,%) -> %
---R ?~=? : (%,%) -> Boolean              
---R position : % -> NonNegativeInteger
+--R position : % -> NonNegativeInteger    ?~=? : (%,%) -> Boolean
 --R setPosition : (%,NonNegativeInteger) -> Void
 --R
 --E 1
@@ -13202,8 +13629,8 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R construct : List(S) -> %              copy : % -> %
 --R empty : () -> %                       empty? : % -> Boolean
---R eq? : (%,%) -> Boolean                map : ((S -> S),%) -> %
---R sample : () -> %                     
+--R eq? : (%,%) -> Boolean                latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               sample : () -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -13218,7 +13645,6 @@ digraph pic {
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -13845,37 +14271,33 @@ digraph pic {
 --R box : List(%) -> %                    box : % -> %
 --R coerce : Kernel(%) -> %               coerce : % -> OutputForm
 --R distribute : (%,%) -> %               distribute : % -> %
+--R elt : (BasicOperator,List(%)) -> %    elt : (BasicOperator,%,%,%) -> %
 --R elt : (BasicOperator,%,%) -> %        elt : (BasicOperator,%) -> %
+--R eval : (%,Symbol,(% -> %)) -> %       eval : (%,List(%),List(%)) -> %
 --R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
---R eval : (%,Kernel(%),%) -> %           freeOf? : (%,Symbol) -> Boolean
---R freeOf? : (%,%) -> Boolean            hash : % -> SingleInteger
---R height : % -> NonNegativeInteger      is? : (%,Symbol) -> Boolean
+--R eval : (%,List(Equation(%))) -> %     eval : (%,Kernel(%),%) -> %
+--R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
+--R hash : % -> SingleInteger             height : % -> NonNegativeInteger
+--R is? : (%,Symbol) -> Boolean           is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,%) -> %       kernels : % -> List(Kernel(%))
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      paren : List(%) -> %
---R paren : % -> %                        retract : % -> Kernel(%)
---R subst : (%,Equation(%)) -> %          tower : % -> List(Kernel(%))
---R ?~=? : (%,%) -> Boolean              
+--R latex : % -> String                   map : ((% -> %),Kernel(%)) -> %
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R paren : List(%) -> %                  paren : % -> %
+--R retract : % -> Kernel(%)              subst : (%,Equation(%)) -> %
+--R tower : % -> List(Kernel(%))          ?~=? : (%,%) -> Boolean
 --R definingPolynomial : % -> % if $ has RING
---R elt : (BasicOperator,List(%)) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,%,%,%) -> %
 --R eval : (%,BasicOperator,(% -> %)) -> %
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R eval : (%,List(Kernel(%)),List(%)) -> %
 --R even? : % -> Boolean if $ has RETRACT(INT)
---R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R odd? : % -> Boolean if $ has RETRACT(INT)
 --R operator : BasicOperator -> BasicOperator
@@ -14438,6 +14860,7 @@ digraph pic {
 
 --S 1 of 1
 )show GradedAlgebra
+--R 
 --R GradedAlgebra(R: CommutativeRing,E: AbelianMonoid)  is a category constructor
 --R Abbreviation for GradedAlgebra is GRALG 
 --R This constructor is exposed in this frame.
@@ -14990,21 +15413,21 @@ digraph pic {
 
 --S 1 of 1
 )show MonadWithUnit
+--R 
 --R MonadWithUnit  is a category constructor
 --R Abbreviation for MonadWithUnit is MONADWU 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for MONADWU 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (%,%) -> %                      ?**? : (%,PositiveInteger) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
+--R ?*? : (%,%) -> %                      ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leftRecip : % -> Union(%,"failed")    one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
 --R leftPower : (%,NonNegativeInteger) -> %
 --R leftPower : (%,PositiveInteger) -> %
---R leftRecip : % -> Union(%,"failed")
 --R rightPower : (%,NonNegativeInteger) -> %
 --R rightPower : (%,PositiveInteger) -> %
 --R rightRecip : % -> Union(%,"failed")
@@ -15231,20 +15654,20 @@ digraph pic {
 
 --S 1 of 1
 )show Monoid
+--R 
 --R Monoid  is a category constructor
 --R Abbreviation for Monoid is MONOID 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for MONOID 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (%,%) -> %                      ?**? : (%,PositiveInteger) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
+--R ?*? : (%,%) -> %                      ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coerce : % -> OutputForm
 --R hash : % -> SingleInteger             latex : % -> String
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R
 --E 1
 
@@ -15429,6 +15852,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedFinite
+--R 
 --R OrderedFinite  is a category constructor
 --R Abbreviation for OrderedFinite is ORDFIN 
 --R This constructor is exposed in this frame.
@@ -16061,9 +16485,10 @@ digraph pic {
 --R cyclic? : % -> Boolean                distance : (%,%) -> Integer
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R map : ((S -> S),%) -> %               nodes : % -> List(%)
---R sample : () -> %                      value : % -> S
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 map : ((S -> S),%) -> %
+--R nodes : % -> List(%)                  sample : () -> %
+--R value : % -> S                       
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -16077,7 +16502,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -16360,14 +16784,15 @@ first column in an array and vice versa.
 --R elt : (%,Integer,Integer,R) -> R      elt : (%,Integer,Integer) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                fill! : (%,R) -> %
---R map : (((R,R) -> R),%,%,R) -> %       map : (((R,R) -> R),%,%) -> %
---R map : ((R -> R),%) -> %               map! : ((R -> R),%) -> %
---R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
---R minColIndex : % -> Integer            minRowIndex : % -> Integer
---R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
---R parts : % -> List(R)                  qelt : (%,Integer,Integer) -> R
---R row : (%,Integer) -> Row              sample : () -> %
---R setRow! : (%,Integer,Row) -> %       
+--R latex : % -> String if R has SETCAT   map : (((R,R) -> R),%,%,R) -> %
+--R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R map! : ((R -> R),%) -> %              maxColIndex : % -> Integer
+--R maxRowIndex : % -> Integer            minColIndex : % -> Integer
+--R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
+--R nrows : % -> NonNegativeInteger       parts : % -> List(R)
+--R qelt : (%,Integer,Integer) -> R       row : (%,Integer) -> Row
+--R sample : () -> %                      setColumn! : (%,Integer,Col) -> %
+--R setRow! : (%,Integer,Row) -> %        setelt : (%,Integer,Integer,R) -> R
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if R has SETCAT
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -16380,15 +16805,12 @@ first column in an array and vice versa.
 --R eval : (%,List(Equation(R))) -> % if R has EVALAB(R) and R has SETCAT
 --R every? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R member? : (R,%) -> Boolean if R has SETCAT and $ has finiteAggregate
 --R members : % -> List(R) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R new : (NonNegativeInteger,NonNegativeInteger,R) -> %
 --R qsetelt! : (%,Integer,Integer,R) -> R
---R setColumn! : (%,Integer,Col) -> %
---R setelt : (%,Integer,Integer,R) -> R
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R ?~=? : (%,%) -> Boolean if R has SETCAT
 --R
@@ -16971,10 +17393,11 @@ digraph pic {
 --R ?.right : (%,right) -> %              ?.left : (%,left) -> %
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R left : % -> %                         map : ((S -> S),%) -> %
---R nodes : % -> List(%)                  right : % -> %
---R sample : () -> %                      value : % -> S
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 left : % -> %
+--R map : ((S -> S),%) -> %               nodes : % -> List(%)
+--R right : % -> %                        sample : () -> %
+--R value : % -> S                       
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -16988,7 +17411,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -17322,18 +17744,19 @@ digraph pic {
 
 --S 1 of 1
 )show CancellationAbelianMonoid
+--R 
 --R CancellationAbelianMonoid  is a category constructor
 --R Abbreviation for CancellationAbelianMonoid is CABMON 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for CABMON 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -17494,8 +17917,8 @@ digraph pic {
 --R dictionary : () -> %                  empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
 --R extract! : % -> S                     insert! : (S,%) -> %
---R inspect : % -> S                      map : ((S -> S),%) -> %
---R sample : () -> %                     
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               sample : () -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -17510,7 +17933,6 @@ digraph pic {
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -17801,11 +18223,11 @@ digraph pic {
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
 --R head : % -> %                         last : % -> S
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R map : ((S -> S),%) -> %               next : % -> %
---R nodes : % -> List(%)                  previous : % -> %
---R sample : () -> %                      tail : % -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 map : ((S -> S),%) -> %
+--R next : % -> %                         nodes : % -> List(%)
+--R previous : % -> %                     sample : () -> %
+--R tail : % -> %                         value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -17820,7 +18242,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -18077,6 +18498,7 @@ digraph pic {
 
 --S 1 of 1
 )show Group
+--R 
 --R Group  is a category constructor
 --R Abbreviation for Group is GROUP 
 --R This constructor is exposed in this frame.
@@ -18084,16 +18506,15 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?/? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R coerce : % -> OutputForm              commutator : (%,%) -> %
 --R conjugate : (%,%) -> %                hash : % -> SingleInteger
 --R inv : % -> %                          latex : % -> String
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R
 --E 1
 
@@ -18309,9 +18730,10 @@ digraph pic {
 --R empty? : % -> Boolean                 entries : % -> List(S)
 --R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R insert : (S,%,Integer) -> %           map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
---R qelt : (%,Integer) -> S               sample : () -> %
+--R insert : (S,%,Integer) -> %           latex : % -> String if S has SETCAT
+--R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R new : (NonNegativeInteger,S) -> %     qelt : (%,Integer) -> S
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -18331,7 +18753,6 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R maxIndex : % -> Integer if Integer has ORDSET
@@ -19503,30 +19924,31 @@ inverse matrix [[j**i for i in 0..4] for j in 1..5]
 --R ?*? : (Row,%) -> Row                  ?*? : (%,Col) -> Col
 --R ?*? : (Integer,%) -> %                ?*? : (%,R) -> %
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      antisymmetric? : % -> Boolean
+--R ?**? : (%,NonNegativeInteger) -> %    ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R ?/? : (%,R) -> % if R has FIELD       antisymmetric? : % -> Boolean
 --R coerce : Col -> %                     column : (%,Integer) -> Col
 --R copy : % -> %                         diagonal? : % -> Boolean
 --R diagonalMatrix : List(%) -> %         diagonalMatrix : List(R) -> %
 --R elt : (%,Integer,Integer,R) -> R      elt : (%,Integer,Integer) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                fill! : (%,R) -> %
---R horizConcat : (%,%) -> %              listOfLists : % -> List(List(R))
---R map : (((R,R) -> R),%,%,R) -> %       map : (((R,R) -> R),%,%) -> %
---R map : ((R -> R),%) -> %               map! : ((R -> R),%) -> %
---R matrix : List(List(R)) -> %           maxColIndex : % -> Integer
---R maxRowIndex : % -> Integer            minColIndex : % -> Integer
---R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
---R nrows : % -> NonNegativeInteger       parts : % -> List(R)
+--R horizConcat : (%,%) -> %              latex : % -> String if R has SETCAT
+--R listOfLists : % -> List(List(R))      map : (((R,R) -> R),%,%,R) -> %
+--R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R map! : ((R -> R),%) -> %              matrix : List(List(R)) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R parts : % -> List(R)                  pfaffian : % -> R if R has COMRING
 --R qelt : (%,Integer,Integer) -> R       row : (%,Integer) -> Row
---R sample : () -> %                      setRow! : (%,Integer,Row) -> %
+--R sample : () -> %                      setColumn! : (%,Integer,Col) -> %
+--R setRow! : (%,Integer,Row) -> %        setelt : (%,Integer,Integer,R) -> R
 --R square? : % -> Boolean                squareTop : % -> %
 --R symmetric? : % -> Boolean             transpose : % -> %
 --R transpose : Row -> %                  vertConcat : (%,%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?**? : (%,Integer) -> % if R has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?=? : (%,%) -> Boolean if R has SETCAT
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R coerce : % -> OutputForm if R has SETCAT
@@ -19543,7 +19965,6 @@ inverse matrix [[j**i for i in 0..4] for j in 1..5]
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R hash : % -> SingleInteger if R has SETCAT
 --R inverse : % -> Union(%,"failed") if R has FIELD
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R matrix : (NonNegativeInteger,NonNegativeInteger,((Integer,Integer) -> R)) -> %
 --R member? : (R,%) -> Boolean if R has SETCAT and $ has finiteAggregate
@@ -19553,14 +19974,11 @@ inverse matrix [[j**i for i in 0..4] for j in 1..5]
 --R new : (NonNegativeInteger,NonNegativeInteger,R) -> %
 --R nullSpace : % -> List(Col) if R has INTDOM
 --R nullity : % -> NonNegativeInteger if R has INTDOM
---R pfaffian : % -> R if R has COMRING
 --R qsetelt! : (%,Integer,Integer,R) -> R
 --R rank : % -> NonNegativeInteger if R has INTDOM
 --R rowEchelon : % -> % if R has EUCDOM
 --R scalarMatrix : (NonNegativeInteger,R) -> %
---R setColumn! : (%,Integer,Col) -> %
 --R setelt : (%,List(Integer),List(Integer),%) -> %
---R setelt : (%,Integer,Integer,R) -> R
 --R setsubMatrix! : (%,Integer,Integer,%) -> %
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subMatrix : (%,Integer,Integer,Integer,Integer) -> %
@@ -21093,6 +21511,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedMonoid
+--R 
 --R OrderedMonoid  is a category constructor
 --R Abbreviation for OrderedMonoid is ORDMON 
 --R This constructor is exposed in this frame.
@@ -21100,16 +21519,15 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?**? : (%,PositiveInteger) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               1 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : % -> OutputForm
+--R ?**? : (%,NonNegativeInteger) -> %    ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,PositiveInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     coerce : % -> OutputForm
 --R hash : % -> SingleInteger             latex : % -> String
 --R max : (%,%) -> %                      min : (%,%) -> %
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R
 --E 1
 
@@ -21976,9 +22394,9 @@ digraph pic {
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                extract! : % -> S
 --R insert! : (S,%) -> %                  inspect : % -> S
---R map : ((S -> S),%) -> %               max : % -> S
---R merge : (%,%) -> %                    merge! : (%,%) -> %
---R sample : () -> %                     
+--R latex : % -> String if S has SETCAT   map : ((S -> S),%) -> %
+--R max : % -> S                          merge : (%,%) -> %
+--R merge! : (%,%) -> %                   sample : () -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -21991,7 +22409,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -22212,8 +22629,9 @@ digraph pic {
 --R enqueue! : (S,%) -> S                 eq? : (%,%) -> Boolean
 --R extract! : % -> S                     front : % -> S
 --R insert! : (S,%) -> %                  inspect : % -> S
---R length : % -> NonNegativeInteger      map : ((S -> S),%) -> %
---R rotate! : % -> %                      sample : () -> %
+--R latex : % -> String if S has SETCAT   length : % -> NonNegativeInteger
+--R map : ((S -> S),%) -> %               rotate! : % -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -22226,7 +22644,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -22463,8 +22880,9 @@ digraph pic {
 --R latex : % -> String                   map : ((S -> S),%) -> %
 --R sample : () -> %                      set : List(S) -> %
 --R set : () -> %                         subset? : (%,%) -> Boolean
---R union : (S,%) -> %                    union : (%,S) -> %
---R union : (%,%) -> %                    ?~=? : (%,%) -> Boolean
+--R symmetricDifference : (%,%) -> %      union : (S,%) -> %
+--R union : (%,S) -> %                    union : (%,%) -> %
+--R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R convert : % -> InputForm if S has KONVERT(INFORM)
@@ -22490,7 +22908,6 @@ digraph pic {
 --R removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
---R symmetricDifference : (%,%) -> %
 --R
 --E 1
 
@@ -22817,9 +23234,10 @@ digraph pic {
 --R depth : % -> NonNegativeInteger       empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
 --R extract! : % -> S                     insert! : (S,%) -> %
---R inspect : % -> S                      map : ((S -> S),%) -> %
---R pop! : % -> S                         push! : (S,%) -> S
---R sample : () -> %                      top : % -> S
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               pop! : % -> S
+--R push! : (S,%) -> S                    sample : () -> %
+--R top : % -> S                         
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -22832,7 +23250,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -23073,12 +23490,13 @@ digraph pic {
 --R ?.first : (%,first) -> S              ?.value : (%,value) -> S
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                first : % -> S
---R last : % -> S                         leaf? : % -> Boolean
+--R last : (%,NonNegativeInteger) -> %    last : % -> S
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
 --R leaves : % -> List(S)                 map : ((S -> S),%) -> %
---R nodes : % -> List(%)                  rest : % -> %
---R sample : () -> %                      second : % -> S
---R tail : % -> %                         third : % -> S
---R value : % -> S                       
+--R nodes : % -> List(%)                  rest : (%,NonNegativeInteger) -> %
+--R rest : % -> %                         sample : () -> %
+--R second : % -> S                       tail : % -> %
+--R third : % -> S                        value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -23097,8 +23515,6 @@ digraph pic {
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -23106,7 +23522,6 @@ digraph pic {
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R node? : (%,%) -> Boolean if S has SETCAT
 --R parts : % -> List(S) if $ has finiteAggregate
---R rest : (%,NonNegativeInteger) -> %
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,last,S) -> S if $ has shallowlyMutable
 --R setelt : (%,rest,%) -> % if $ has shallowlyMutable
@@ -23621,20 +24036,20 @@ digraph pic {
 
 --S 1 of 1
 )show AbelianGroup
+--R 
 --R AbelianGroup  is a category constructor
 --R Abbreviation for AbelianGroup is ABELGRP 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for ABELGRP 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -23820,11 +24235,11 @@ digraph pic {
 --R ?.right : (%,right) -> %              ?.left : (%,left) -> %
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R left : % -> %                         map : ((S -> S),%) -> %
---R node : (%,S,%) -> %                   nodes : % -> List(%)
---R right : % -> %                        sample : () -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 left : % -> %
+--R map : ((S -> S),%) -> %               node : (%,S,%) -> %
+--R nodes : % -> List(%)                  right : % -> %
+--R sample : () -> %                      value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -23838,7 +24253,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -24116,8 +24530,8 @@ digraph pic {
 --R dictionary : () -> %                  empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
 --R extract! : % -> S                     insert! : (S,%) -> %
---R inspect : % -> S                      map : ((S -> S),%) -> %
---R sample : () -> %                     
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               sample : () -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -24132,7 +24546,6 @@ digraph pic {
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -24424,11 +24837,12 @@ digraph pic {
 --R extractTop! : % -> S                  front : % -> S
 --R height : % -> NonNegativeInteger      insert! : (S,%) -> %
 --R insertBottom! : (S,%) -> S            insertTop! : (S,%) -> S
---R inspect : % -> S                      length : % -> NonNegativeInteger
---R map : ((S -> S),%) -> %               pop! : % -> S
---R push! : (S,%) -> S                    reverse! : % -> %
---R rotate! : % -> %                      sample : () -> %
---R top : % -> S                          top! : % -> S
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R length : % -> NonNegativeInteger      map : ((S -> S),%) -> %
+--R pop! : % -> S                         push! : (S,%) -> S
+--R reverse! : % -> %                     rotate! : % -> %
+--R sample : () -> %                      top : % -> S
+--R top! : % -> S                        
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -24441,7 +24855,6 @@ digraph pic {
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -24727,9 +25140,10 @@ digraph pic {
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
 --R insert : (%,%,Integer) -> %           insert : (S,%,Integer) -> %
 --R insert! : (%,%,Integer) -> %          insert! : (S,%,Integer) -> %
---R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
---R new : (NonNegativeInteger,S) -> %     qelt : (%,Integer) -> S
---R sample : () -> %                     
+--R latex : % -> String if S has SETCAT   map : (((S,S) -> S),%,%) -> %
+--R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
+--R qelt : (%,Integer) -> S               remove! : ((S -> Boolean),%) -> %
+--R sample : () -> %                      select! : ((S -> Boolean),%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -24750,7 +25164,6 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R maxIndex : % -> Integer if Integer has ORDSET
@@ -24768,11 +25181,9 @@ digraph pic {
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
 --R remove! : (S,%) -> % if S has SETCAT
---R remove! : ((S -> Boolean),%) -> %
 --R removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
 --R removeDuplicates! : % -> % if S has SETCAT
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R select! : ((S -> Boolean),%) -> %
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
@@ -25118,10 +25529,12 @@ digraph pic {
 --R empty? : % -> Boolean                 entries : % -> List(S)
 --R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R insert : (S,%,Integer) -> %           map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
---R qelt : (%,Integer) -> S               reverse : % -> %
---R sample : () -> %                     
+--R insert : (S,%,Integer) -> %           latex : % -> String if S has SETCAT
+--R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
+--R new : (NonNegativeInteger,S) -> %     qelt : (%,Integer) -> S
+--R reverse : % -> %                      sample : () -> %
+--R sort : % -> % if S has ORDSET         sort : (((S,S) -> Boolean),%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -25146,16 +25559,13 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
 --R members : % -> List(S) if $ has finiteAggregate
 --R merge : (%,%) -> % if S has ORDSET
 --R merge : (((S,S) -> Boolean),%,%) -> %
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(S) if $ has finiteAggregate
@@ -25174,8 +25584,6 @@ digraph pic {
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if S has ORDSET
---R sort : (((S,S) -> Boolean),%) -> %
 --R sort! : % -> % if S has ORDSET and $ has shallowlyMutable
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if S has ORDSET
@@ -25561,17 +25969,17 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for FAMONC 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (E,S) -> %                      ?*? : (PositiveInteger,%) -> %
---R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (S,%) -> E              coerce : S -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   mapCoef : ((E -> E),%) -> %
---R mapGen : ((S -> S),%) -> %            nthCoef : (%,Integer) -> E
---R nthFactor : (%,Integer) -> S          retract : % -> S
---R sample : () -> %                      size : % -> NonNegativeInteger
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (E,S) -> %                      ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (S,%) -> E
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R mapCoef : ((E -> E),%) -> %           mapGen : ((S -> S),%) -> %
+--R nthCoef : (%,Integer) -> E            nthFactor : (%,Integer) -> S
+--R retract : % -> S                      sample : () -> %
+--R size : % -> NonNegativeInteger        zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R highCommonTerms : (%,%) -> % if E has OAMON
 --R retractIfCan : % -> Union(S,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -25804,8 +26212,9 @@ digraph pic {
 --R dictionary : () -> %                  empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
 --R extract! : % -> S                     insert! : (S,%) -> %
---R inspect : % -> S                      map : ((S -> S),%) -> %
---R removeDuplicates! : % -> %            sample : () -> %
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               removeDuplicates! : % -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -25822,7 +26231,6 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R hash : % -> SingleInteger if S has SETCAT
 --R insert! : (S,%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
@@ -26071,21 +26479,22 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedAbelianMonoid
+--R 
 --R OrderedAbelianMonoid  is a category constructor
 --R Abbreviation for OrderedAbelianMonoid is OAMON 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for OAMON 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -26226,9 +26635,10 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?/? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?=? : (%,%) -> Boolean
---R 1 : () -> %                           ?^? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coerce : % -> OutputForm
 --R commutator : (%,%) -> %               conjugate : (%,%) -> %
 --R cycle : List(S) -> %                  cycles : List(List(S)) -> %
@@ -26237,11 +26647,9 @@ digraph pic {
 --R latex : % -> String                   one? : % -> Boolean
 --R orbit : (%,S) -> Set(S)               recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?<=? : (%,%) -> Boolean if S has ORDSET or S has FINITE
 --R ?>? : (%,%) -> Boolean if S has ORDSET or S has FINITE
 --R ?>=? : (%,%) -> Boolean if S has ORDSET or S has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R max : (%,%) -> % if S has ORDSET or S has FINITE
 --R min : (%,%) -> % if S has ORDSET or S has FINITE
 --R
@@ -26493,14 +26901,15 @@ digraph pic {
 --R explicitlyFinite? : % -> Boolean      first : % -> S
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
 --R insert : (S,%,Integer) -> %           insert : (%,%,Integer) -> %
---R last : % -> S                         leaf? : % -> Boolean
+--R last : (%,NonNegativeInteger) -> %    last : % -> S
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
 --R leaves : % -> List(S)                 map : (((S,S) -> S),%,%) -> %
 --R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
 --R nodes : % -> List(%)                  possiblyInfinite? : % -> Boolean
---R qelt : (%,Integer) -> S               rest : % -> %
---R sample : () -> %                      second : % -> S
---R tail : % -> %                         third : % -> S
---R value : % -> S                       
+--R qelt : (%,Integer) -> S               rest : (%,NonNegativeInteger) -> %
+--R rest : % -> %                         sample : () -> %
+--R second : % -> S                       tail : % -> %
+--R third : % -> S                        value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -26525,8 +26934,6 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R maxIndex : % -> Integer if Integer has ORDSET
@@ -26543,7 +26950,6 @@ digraph pic {
 --R remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
---R rest : (%,NonNegativeInteger) -> %
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
@@ -27010,7 +27416,8 @@ digraph pic {
 --R normalized? : (P,%) -> Boolean        reduceByQuasiMonic : (P,%) -> P
 --R removeZero : (P,%) -> P               rest : % -> Union(%,"failed")
 --R retract : List(P) -> %                sample : () -> %
---R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R select : (%,V) -> Union(P,"failed")   stronglyReduce : (P,%) -> P
+--R stronglyReduced? : % -> Boolean       stronglyReduced? : (P,%) -> Boolean
 --R trivialIdeal? : % -> Boolean          variables : % -> List(V)
 --R zeroSetSplit : List(P) -> List(%)     ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -27055,11 +27462,9 @@ digraph pic {
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
 --R
@@ -27925,20 +28330,19 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for FDIVCAT 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R divisor : (R,UP,UP,UP,F) -> %         divisor : (F,F,Integer) -> %
---R divisor : (F,F) -> %                  divisor : R -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              divisor : (R,UP,UP,UP,F) -> %
+--R divisor : (F,F,Integer) -> %          divisor : (F,F) -> %
+--R divisor : R -> %                      generator : % -> Union(R,"failed")
 --R hash : % -> SingleInteger             latex : % -> String
 --R principal? : % -> Boolean             reduce : % -> %
 --R sample : () -> %                      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
 --R decompose : % -> Record(id: FractionalIdeal(UP,Fraction(UP),UPUP,R),principalPart: R)
 --R divisor : FractionalIdeal(UP,Fraction(UP),UPUP,R) -> %
---R generator : % -> Union(R,"failed")
 --R ideal : % -> FractionalIdeal(UP,Fraction(UP),UPUP,R)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -28144,6 +28548,7 @@ digraph pic {
 
 --S 1 of 1
 )show FiniteSetAggregate
+--R 
 --R FiniteSetAggregate(S: SetCategory)  is a category constructor
 --R Abbreviation for FiniteSetAggregate is FSAGG 
 --R This constructor is exposed in this frame.
@@ -28162,10 +28567,12 @@ digraph pic {
 --R inspect : % -> S                      intersect : (%,%) -> %
 --R latex : % -> String                   map : ((S -> S),%) -> %
 --R max : % -> S if S has ORDSET          min : % -> S if S has ORDSET
---R sample : () -> %                      set : () -> %
---R set : List(S) -> %                    subset? : (%,%) -> Boolean
+--R random : () -> % if S has FINITE      sample : () -> %
+--R set : () -> %                         set : List(S) -> %
+--R subset? : (%,%) -> Boolean            symmetricDifference : (%,%) -> %
 --R union : (%,%) -> %                    union : (%,S) -> %
---R union : (S,%) -> %                    ?~=? : (%,%) -> Boolean
+--R union : (S,%) -> %                    universe : () -> % if S has FINITE
+--R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R cardinality : % -> NonNegativeInteger
@@ -28188,7 +28595,6 @@ digraph pic {
 --R members : % -> List(S) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(S) if $ has finiteAggregate
---R random : () -> % if S has FINITE
 --R reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
 --R reduce : (((S,S) -> S),%,S) -> S if $ has finiteAggregate
 --R reduce : (((S,S) -> S),%,S,S) -> S if S has SETCAT and $ has finiteAggregate
@@ -28201,8 +28607,6 @@ digraph pic {
 --R select! : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R size : () -> NonNegativeInteger if S has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
---R symmetricDifference : (%,%) -> %
---R universe : () -> % if S has FINITE
 --R
 --E 1
 
@@ -28898,17 +29302,18 @@ digraph pic {
 --R extend : (%,Integer) -> %             first : % -> S
 --R frst : % -> S                         index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (S,%,Integer) -> %
---R insert : (%,%,Integer) -> %           last : % -> S
+--R insert : (%,%,Integer) -> %           last : (%,NonNegativeInteger) -> %
+--R last : % -> S                         latex : % -> String if S has SETCAT
 --R lazy? : % -> Boolean                  lazyEvaluate : % -> %
 --R leaf? : % -> Boolean                  leaves : % -> List(S)
 --R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
 --R new : (NonNegativeInteger,S) -> %     nodes : % -> List(%)
 --R possiblyInfinite? : % -> Boolean      qelt : (%,Integer) -> S
---R remove : ((S -> Boolean),%) -> %      rest : % -> %
---R rst : % -> %                          sample : () -> %
---R second : % -> S                       select : ((S -> Boolean),%) -> %
---R tail : % -> %                         third : % -> S
---R value : % -> S                       
+--R remove : ((S -> Boolean),%) -> %      rest : (%,NonNegativeInteger) -> %
+--R rest : % -> %                         rst : % -> %
+--R sample : () -> %                      second : % -> S
+--R select : ((S -> Boolean),%) -> %      tail : % -> %
+--R third : % -> S                        value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -28933,8 +29338,6 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R maxIndex : % -> Integer if Integer has ORDSET
@@ -28951,7 +29354,6 @@ digraph pic {
 --R reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
 --R remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
 --R removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
---R rest : (%,NonNegativeInteger) -> %
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
@@ -29828,13 +30230,13 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -30003,15 +30405,20 @@ digraph pic {
 --R first : % -> S                        index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (S,%,Integer) -> %
 --R insert : (%,%,Integer) -> %           insert! : (S,%,Integer) -> %
---R insert! : (%,%,Integer) -> %          last : % -> S
+--R insert! : (%,%,Integer) -> %          last : (%,NonNegativeInteger) -> %
+--R last : % -> S                         latex : % -> String if S has SETCAT
 --R leaf? : % -> Boolean                  leaves : % -> List(S)
 --R list : S -> %                         map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
+--R map : ((S -> S),%) -> %               max : (%,%) -> % if S has ORDSET
+--R min : (%,%) -> % if S has ORDSET      new : (NonNegativeInteger,S) -> %
 --R nodes : % -> List(%)                  possiblyInfinite? : % -> Boolean
---R qelt : (%,Integer) -> S               rest : % -> %
+--R qelt : (%,Integer) -> S               remove! : ((S -> Boolean),%) -> %
+--R rest : (%,NonNegativeInteger) -> %    rest : % -> %
 --R reverse : % -> %                      sample : () -> %
---R second : % -> S                       tail : % -> %
---R third : % -> S                        value : % -> S
+--R second : % -> S                       select! : ((S -> Boolean),%) -> %
+--R sort : (((S,S) -> Boolean),%) -> %    sort : % -> % if S has ORDSET
+--R tail : % -> %                         third : % -> S
+--R value : % -> S                       
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -30040,11 +30447,8 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
 --R members : % -> List(S) if $ has finiteAggregate
@@ -30052,7 +30456,6 @@ digraph pic {
 --R merge : (%,%) -> % if S has ORDSET
 --R merge! : (((S,S) -> Boolean),%,%) -> %
 --R merge! : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R node? : (%,%) -> Boolean if S has SETCAT
@@ -30066,14 +30469,11 @@ digraph pic {
 --R reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
 --R remove : (S,%) -> % if S has SETCAT and $ has finiteAggregate
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R remove! : ((S -> Boolean),%) -> %
 --R remove! : (S,%) -> % if S has SETCAT
 --R removeDuplicates : % -> % if S has SETCAT and $ has finiteAggregate
 --R removeDuplicates! : % -> % if S has SETCAT
---R rest : (%,NonNegativeInteger) -> %
 --R reverse! : % -> % if $ has shallowlyMutable
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R select! : ((S -> Boolean),%) -> %
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
@@ -30086,8 +30486,6 @@ digraph pic {
 --R setrest! : (%,%) -> % if $ has shallowlyMutable
 --R setvalue! : (%,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : (((S,S) -> Boolean),%) -> %
---R sort : % -> % if S has ORDSET
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sort! : % -> % if S has ORDSET and $ has shallowlyMutable
 --R sorted? : (((S,S) -> Boolean),%) -> Boolean
@@ -30715,9 +31113,9 @@ digraph pic {
 --R latex : % -> String                   map : ((S -> S),%) -> %
 --R removeDuplicates! : % -> %            sample : () -> %
 --R set : () -> %                         set : List(S) -> %
---R subset? : (%,%) -> Boolean            union : (%,%) -> %
---R union : (%,S) -> %                    union : (S,%) -> %
---R ?~=? : (%,%) -> Boolean              
+--R subset? : (%,%) -> Boolean            symmetricDifference : (%,%) -> %
+--R union : (%,%) -> %                    union : (%,S) -> %
+--R union : (S,%) -> %                    ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R convert : % -> InputForm if S has KONVERT(INFORM)
@@ -30748,7 +31146,6 @@ digraph pic {
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R select! : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
---R symmetricDifference : (%,%) -> %
 --R
 --E 1
 
@@ -30987,6 +31384,7 @@ digraph pic {
 
 --S 1 of 1
 )show NonAssociativeRng
+--R 
 --R NonAssociativeRng  is a category constructor
 --R Abbreviation for NonAssociativeRng is NARNG 
 --R This constructor is exposed in this frame.
@@ -30994,15 +31392,15 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           antiCommutator : (%,%) -> %
---R associator : (%,%,%) -> %             coerce : % -> OutputForm
---R commutator : (%,%) -> %               hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
+--R coerce : % -> OutputForm              commutator : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R leftPower : (%,PositiveInteger) -> %
 --R rightPower : (%,PositiveInteger) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -31204,10 +31602,12 @@ digraph pic {
 --R empty? : % -> Boolean                 entries : % -> List(S)
 --R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R insert : (S,%,Integer) -> %           map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
---R qelt : (%,Integer) -> S               reverse : % -> %
---R sample : () -> %                     
+--R insert : (S,%,Integer) -> %           latex : % -> String if S has SETCAT
+--R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
+--R new : (NonNegativeInteger,S) -> %     qelt : (%,Integer) -> S
+--R reverse : % -> %                      sample : () -> %
+--R sort : % -> % if S has ORDSET         sort : (((S,S) -> Boolean),%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -31232,16 +31632,13 @@ digraph pic {
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if S has SETCAT and $ has finiteAggregate
 --R members : % -> List(S) if $ has finiteAggregate
 --R merge : (%,%) -> % if S has ORDSET
 --R merge : (((S,S) -> Boolean),%,%) -> %
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(S) if $ has finiteAggregate
@@ -31260,8 +31657,6 @@ digraph pic {
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if S has ORDSET
---R sort : (((S,S) -> Boolean),%) -> %
 --R sort! : % -> % if S has ORDSET and $ has shallowlyMutable
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if S has ORDSET
@@ -31807,21 +32202,22 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedCancellationAbelianMonoid
+--R 
 --R OrderedCancellationAbelianMonoid  is a category constructor
 --R Abbreviation for OrderedCancellationAbelianMonoid is OCAMON 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for OCAMON 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -31988,17 +32384,20 @@ digraph pic {
 --R headReduce : (P,%) -> P               headReduced? : % -> Boolean
 --R headReduced? : (P,%) -> Boolean       infRittWu? : (%,%) -> Boolean
 --R initiallyReduce : (P,%) -> P          initiallyReduced? : % -> Boolean
---R initials : % -> List(P)               internalAugment : (P,%) -> %
---R intersect : (P,%) -> List(%)          invertible? : (P,%) -> Boolean
---R invertibleSet : (P,%) -> List(%)      last : % -> Union(P,"failed")
---R latex : % -> String                   mainVariable? : (V,%) -> Boolean
---R mainVariables : % -> List(V)          map : ((P -> P),%) -> %
---R mvar : % -> V                         normalized? : % -> Boolean
---R normalized? : (P,%) -> Boolean        purelyAlgebraic? : % -> Boolean
+--R initials : % -> List(P)               internalAugment : (List(P),%) -> %
+--R internalAugment : (P,%) -> %          intersect : (P,List(%)) -> List(%)
+--R intersect : (List(P),%) -> List(%)    intersect : (P,%) -> List(%)
+--R invertible? : (P,%) -> Boolean        invertibleSet : (P,%) -> List(%)
+--R last : % -> Union(P,"failed")         latex : % -> String
+--R mainVariable? : (V,%) -> Boolean      mainVariables : % -> List(V)
+--R map : ((P -> P),%) -> %               mvar : % -> V
+--R normalized? : % -> Boolean            normalized? : (P,%) -> Boolean
+--R purelyAlgebraic? : % -> Boolean       purelyAlgebraic? : (P,%) -> Boolean
 --R reduceByQuasiMonic : (P,%) -> P       removeZero : (P,%) -> P
 --R rest : % -> Union(%,"failed")         retract : List(P) -> %
---R sample : () -> %                      stronglyReduce : (P,%) -> P
---R stronglyReduced? : % -> Boolean       trivialIdeal? : % -> Boolean
+--R sample : () -> %                      select : (%,V) -> Union(P,"failed")
+--R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R stronglyReduced? : (P,%) -> Boolean   trivialIdeal? : % -> Boolean
 --R variables : % -> List(V)              zeroSetSplit : List(P) -> List(%)
 --R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -32022,10 +32421,7 @@ digraph pic {
 --R find : ((P -> Boolean),%) -> Union(P,"failed")
 --R headRemainder : (P,%) -> Record(num: P,den: R) if R has INTDOM
 --R initiallyReduced? : (P,%) -> Boolean
---R internalAugment : (List(P),%) -> %
---R intersect : (P,List(%)) -> List(%)
 --R intersect : (List(P),List(%)) -> List(%)
---R intersect : (List(P),%) -> List(%)
 --R invertible? : (P,%) -> List(Record(val: Boolean,tower: %))
 --R invertibleElseSplit? : (P,%) -> Union(Boolean,List(%))
 --R lastSubResultant : (P,P,%) -> List(Record(val: P,tower: %))
@@ -32036,7 +32432,6 @@ digraph pic {
 --R members : % -> List(P) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(P) if $ has finiteAggregate
---R purelyAlgebraic? : (P,%) -> Boolean
 --R purelyAlgebraicLeadingMonomial? : (P,%) -> Boolean
 --R purelyTranscendental? : (P,%) -> Boolean
 --R quasiComponent : % -> Record(close: List(P),open: List(P))
@@ -32057,12 +32452,10 @@ digraph pic {
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
 --R squareFreePart : (P,%) -> List(Record(val: P,tower: %))
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplit : (List(P),Boolean) -> List(%)
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
@@ -32795,13 +33188,13 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -32945,6 +33338,7 @@ Rng is a Ring that does not necessarily have a unit.
 
 --S 1 of 1
 )show Rng
+--R 
 --R Rng  is a category constructor
 --R Abbreviation for Rng is RNG 
 --R This constructor is exposed in this frame.
@@ -32952,14 +33346,14 @@ Rng is a Ring that does not necessarily have a unit.
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R ?^? : (%,PositiveInteger) -> %        coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -33118,6 +33512,7 @@ digraph pic {
 
 --S 1 of 1
 )show BiModule
+--R 
 --R BiModule(R: Ring,S: Ring)  is a category constructor
 --R Abbreviation for BiModule is BMODULE 
 --R This constructor is exposed in this frame.
@@ -33125,14 +33520,13 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,S) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -33328,14 +33722,14 @@ digraph pic {
 --R empty : () -> %                       empty? : % -> Boolean
 --R entries : % -> List(Boolean)          eq? : (%,%) -> Boolean
 --R hash : % -> SingleInteger             index? : (Integer,%) -> Boolean
---R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      nand : (%,%) -> %
---R nor : (%,%) -> %                      not? : % -> %
---R ?or? : (%,%) -> %                     qelt : (%,Integer) -> Boolean
---R reverse : % -> %                      sample : () -> %
---R xor : (%,%) -> %                      ~? : % -> %
---R ?~=? : (%,%) -> Boolean              
+--R indices : % -> List(Integer)          insert : (Boolean,%,Integer) -> %
+--R insert : (%,%,Integer) -> %           latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R nand : (%,%) -> %                     nor : (%,%) -> %
+--R not? : % -> %                         ?or? : (%,%) -> %
+--R qelt : (%,Integer) -> Boolean         reverse : % -> %
+--R sample : () -> %                      xor : (%,%) -> %
+--R ~? : % -> %                           ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((Boolean -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R convert : % -> InputForm if Boolean has KONVERT(INFORM)
@@ -33354,7 +33748,6 @@ digraph pic {
 --R fill! : (%,Boolean) -> % if $ has shallowlyMutable
 --R find : ((Boolean -> Boolean),%) -> Union(Boolean,"failed")
 --R first : % -> Boolean if Integer has ORDSET
---R insert : (Boolean,%,Integer) -> %
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : ((Boolean -> Boolean),%) -> %
 --R map : (((Boolean,Boolean) -> Boolean),%,%) -> %
@@ -33768,6 +34161,7 @@ digraph pic {
 
 --S 1 of 1
 )show NonAssociativeRing
+--R 
 --R NonAssociativeRing  is a category constructor
 --R Abbreviation for NonAssociativeRing is NASRING 
 --R This constructor is exposed in this frame.
@@ -33775,22 +34169,21 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
 --R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R commutator : (%,%) -> %               hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R latex : % -> String                   leftRecip : % -> Union(%,"failed")
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R leftPower : (%,NonNegativeInteger) -> %
 --R leftPower : (%,PositiveInteger) -> %
---R leftRecip : % -> Union(%,"failed")
 --R rightPower : (%,NonNegativeInteger) -> %
 --R rightPower : (%,PositiveInteger) -> %
 --R rightRecip : % -> Union(%,"failed")
@@ -34011,17 +34404,20 @@ digraph pic {
 --R headReduce : (P,%) -> P               headReduced? : % -> Boolean
 --R headReduced? : (P,%) -> Boolean       infRittWu? : (%,%) -> Boolean
 --R initiallyReduce : (P,%) -> P          initiallyReduced? : % -> Boolean
---R initials : % -> List(P)               internalAugment : (P,%) -> %
---R intersect : (P,%) -> List(%)          invertible? : (P,%) -> Boolean
---R invertibleSet : (P,%) -> List(%)      last : % -> Union(P,"failed")
---R latex : % -> String                   mainVariable? : (V,%) -> Boolean
---R mainVariables : % -> List(V)          map : ((P -> P),%) -> %
---R mvar : % -> V                         normalized? : % -> Boolean
---R normalized? : (P,%) -> Boolean        purelyAlgebraic? : % -> Boolean
+--R initials : % -> List(P)               internalAugment : (List(P),%) -> %
+--R internalAugment : (P,%) -> %          intersect : (P,List(%)) -> List(%)
+--R intersect : (List(P),%) -> List(%)    intersect : (P,%) -> List(%)
+--R invertible? : (P,%) -> Boolean        invertibleSet : (P,%) -> List(%)
+--R last : % -> Union(P,"failed")         latex : % -> String
+--R mainVariable? : (V,%) -> Boolean      mainVariables : % -> List(V)
+--R map : ((P -> P),%) -> %               mvar : % -> V
+--R normalized? : % -> Boolean            normalized? : (P,%) -> Boolean
+--R purelyAlgebraic? : % -> Boolean       purelyAlgebraic? : (P,%) -> Boolean
 --R reduceByQuasiMonic : (P,%) -> P       removeZero : (P,%) -> P
 --R rest : % -> Union(%,"failed")         retract : List(P) -> %
---R sample : () -> %                      stronglyReduce : (P,%) -> P
---R stronglyReduced? : % -> Boolean       trivialIdeal? : % -> Boolean
+--R sample : () -> %                      select : (%,V) -> Union(P,"failed")
+--R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R stronglyReduced? : (P,%) -> Boolean   trivialIdeal? : % -> Boolean
 --R variables : % -> List(V)              zeroSetSplit : List(P) -> List(%)
 --R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -34045,10 +34441,7 @@ digraph pic {
 --R find : ((P -> Boolean),%) -> Union(P,"failed")
 --R headRemainder : (P,%) -> Record(num: P,den: R) if R has INTDOM
 --R initiallyReduced? : (P,%) -> Boolean
---R internalAugment : (List(P),%) -> %
---R intersect : (P,List(%)) -> List(%)
 --R intersect : (List(P),List(%)) -> List(%)
---R intersect : (List(P),%) -> List(%)
 --R invertible? : (P,%) -> List(Record(val: Boolean,tower: %))
 --R invertibleElseSplit? : (P,%) -> Union(Boolean,List(%))
 --R lastSubResultant : (P,P,%) -> List(Record(val: P,tower: %))
@@ -34059,7 +34452,6 @@ digraph pic {
 --R members : % -> List(P) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(P) if $ has finiteAggregate
---R purelyAlgebraic? : (P,%) -> Boolean
 --R purelyAlgebraicLeadingMonomial? : (P,%) -> Boolean
 --R purelyTranscendental? : (P,%) -> Boolean
 --R quasiComponent : % -> Record(close: List(P),open: List(P))
@@ -34080,12 +34472,10 @@ digraph pic {
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
 --R squareFreePart : (P,%) -> List(Record(val: P,tower: %))
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplit : (List(P),Boolean) -> List(%)
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
@@ -34470,23 +34860,23 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedAbelianGroup
+--R 
 --R OrderedAbelianGroup  is a category constructor
 --R Abbreviation for OrderedAbelianGroup is OAGROUP 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for OAGROUP 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R max : (%,%) -> %                      min : (%,%) -> %
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -34627,22 +35017,22 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedAbelianMonoidSup
+--R 
 --R OrderedAbelianMonoidSup  is a category constructor
 --R Abbreviation for OrderedAbelianMonoidSup is OAMONS 
 --R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for OAMONS 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      sample : () -> %
---R sup : (%,%) -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R sample : () -> %                      sup : (%,%) -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -34828,9 +35218,9 @@ digraph pic {
 --R merge! : (%,%) -> %                   min : % -> S
 --R removeDuplicates! : % -> %            sample : () -> %
 --R set : () -> %                         set : List(S) -> %
---R subset? : (%,%) -> Boolean            union : (%,%) -> %
---R union : (%,S) -> %                    union : (S,%) -> %
---R ?~=? : (%,%) -> Boolean              
+--R subset? : (%,%) -> Boolean            symmetricDifference : (%,%) -> %
+--R union : (%,%) -> %                    union : (%,S) -> %
+--R union : (S,%) -> %                    ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R convert : % -> InputForm if S has KONVERT(INFORM)
@@ -34861,7 +35251,6 @@ digraph pic {
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R select! : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
---R symmetricDifference : (%,%) -> %
 --R
 --E 1
 
@@ -35140,6 +35529,7 @@ digraph pic {
 
 --S 1 of 1
 )show Ring
+--R 
 --R Ring  is a category constructor
 --R Abbreviation for Ring is RING 
 --R This constructor is exposed in this frame.
@@ -35147,18 +35537,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -35427,17 +35816,20 @@ digraph pic {
 --R headReduce : (P,%) -> P               headReduced? : % -> Boolean
 --R headReduced? : (P,%) -> Boolean       infRittWu? : (%,%) -> Boolean
 --R initiallyReduce : (P,%) -> P          initiallyReduced? : % -> Boolean
---R initials : % -> List(P)               internalAugment : (P,%) -> %
---R intersect : (P,%) -> List(%)          invertible? : (P,%) -> Boolean
---R invertibleSet : (P,%) -> List(%)      last : % -> Union(P,"failed")
---R latex : % -> String                   mainVariable? : (V,%) -> Boolean
---R mainVariables : % -> List(V)          map : ((P -> P),%) -> %
---R mvar : % -> V                         normalized? : % -> Boolean
---R normalized? : (P,%) -> Boolean        purelyAlgebraic? : % -> Boolean
+--R initials : % -> List(P)               internalAugment : (List(P),%) -> %
+--R internalAugment : (P,%) -> %          intersect : (P,List(%)) -> List(%)
+--R intersect : (List(P),%) -> List(%)    intersect : (P,%) -> List(%)
+--R invertible? : (P,%) -> Boolean        invertibleSet : (P,%) -> List(%)
+--R last : % -> Union(P,"failed")         latex : % -> String
+--R mainVariable? : (V,%) -> Boolean      mainVariables : % -> List(V)
+--R map : ((P -> P),%) -> %               mvar : % -> V
+--R normalized? : % -> Boolean            normalized? : (P,%) -> Boolean
+--R purelyAlgebraic? : % -> Boolean       purelyAlgebraic? : (P,%) -> Boolean
 --R reduceByQuasiMonic : (P,%) -> P       removeZero : (P,%) -> P
 --R rest : % -> Union(%,"failed")         retract : List(P) -> %
---R sample : () -> %                      stronglyReduce : (P,%) -> P
---R stronglyReduced? : % -> Boolean       trivialIdeal? : % -> Boolean
+--R sample : () -> %                      select : (%,V) -> Union(P,"failed")
+--R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R stronglyReduced? : (P,%) -> Boolean   trivialIdeal? : % -> Boolean
 --R variables : % -> List(V)              zeroSetSplit : List(P) -> List(%)
 --R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -35461,10 +35853,7 @@ digraph pic {
 --R find : ((P -> Boolean),%) -> Union(P,"failed")
 --R headRemainder : (P,%) -> Record(num: P,den: R) if R has INTDOM
 --R initiallyReduced? : (P,%) -> Boolean
---R internalAugment : (List(P),%) -> %
---R intersect : (P,List(%)) -> List(%)
 --R intersect : (List(P),List(%)) -> List(%)
---R intersect : (List(P),%) -> List(%)
 --R invertible? : (P,%) -> List(Record(val: Boolean,tower: %))
 --R invertibleElseSplit? : (P,%) -> Union(Boolean,List(%))
 --R lastSubResultant : (P,P,%) -> List(Record(val: P,tower: %))
@@ -35475,7 +35864,6 @@ digraph pic {
 --R members : % -> List(P) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(P) if $ has finiteAggregate
---R purelyAlgebraic? : (P,%) -> Boolean
 --R purelyAlgebraicLeadingMonomial? : (P,%) -> Boolean
 --R purelyTranscendental? : (P,%) -> Boolean
 --R quasiComponent : % -> Record(close: List(P),open: List(P))
@@ -35496,12 +35884,10 @@ digraph pic {
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
 --R squareFreePart : (P,%) -> List(Record(val: P,tower: %))
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplit : (List(P),Boolean) -> List(%)
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
@@ -35893,14 +36279,14 @@ digraph pic {
 --R empty : () -> %                       empty? : % -> Boolean
 --R entries : % -> List(Character)        eq? : (%,%) -> Boolean
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R insert : (%,%,Integer) -> %           leftTrim : (%,Character) -> %
---R lowerCase : % -> %                    lowerCase! : % -> %
---R prefix? : (%,%) -> Boolean            qelt : (%,Integer) -> Character
---R reverse : % -> %                      rightTrim : (%,Character) -> %
---R sample : () -> %                      split : (%,Character) -> List(%)
---R suffix? : (%,%) -> Boolean            trim : (%,CharacterClass) -> %
---R trim : (%,Character) -> %             upperCase : % -> %
---R upperCase! : % -> %                  
+--R insert : (%,%,Integer) -> %           leftTrim : (%,CharacterClass) -> %
+--R leftTrim : (%,Character) -> %         lowerCase : % -> %
+--R lowerCase! : % -> %                   prefix? : (%,%) -> Boolean
+--R qelt : (%,Integer) -> Character       reverse : % -> %
+--R rightTrim : (%,Character) -> %        sample : () -> %
+--R split : (%,Character) -> List(%)      suffix? : (%,%) -> Boolean
+--R trim : (%,CharacterClass) -> %        trim : (%,Character) -> %
+--R upperCase : % -> %                    upperCase! : % -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if Character has ORDSET
 --R ?<=? : (%,%) -> Boolean if Character has ORDSET
@@ -35928,7 +36314,6 @@ digraph pic {
 --R hash : % -> SingleInteger if Character has SETCAT
 --R insert : (Character,%,Integer) -> %
 --R latex : % -> String if Character has SETCAT
---R leftTrim : (%,CharacterClass) -> %
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : (((Character,Character) -> Character),%,%) -> %
 --R map : ((Character -> Character),%) -> %
@@ -36973,24 +37358,26 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for VECTCAT 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> % if R has MONOID      ?*? : (R,%) -> % if R has MONOID
+--R ?+? : (%,%) -> % if R has ABELSG      ?-? : (%,%) -> % if R has ABELGRP
 --R -? : % -> % if R has ABELGRP          concat : List(%) -> %
 --R concat : (%,%) -> %                   concat : (R,%) -> %
 --R concat : (%,R) -> %                   construct : List(R) -> %
---R copy : % -> %                         delete : (%,Integer) -> %
+--R copy : % -> %                         cross : (%,%) -> % if R has RING
+--R delete : (%,Integer) -> %             dot : (%,%) -> R if R has RING
 --R ?.? : (%,Integer) -> R                elt : (%,Integer,R) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R entries : % -> List(R)                eq? : (%,%) -> Boolean
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
 --R insert : (%,%,Integer) -> %           insert : (R,%,Integer) -> %
---R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
---R new : (NonNegativeInteger,R) -> %     qelt : (%,Integer) -> R
---R reverse : % -> %                      sample : () -> %
+--R latex : % -> String if R has SETCAT   map : (((R,R) -> R),%,%) -> %
+--R map : ((R -> R),%) -> %               max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      new : (NonNegativeInteger,R) -> %
+--R qelt : (%,Integer) -> R               reverse : % -> %
+--R sample : () -> %                      sort : % -> % if R has ORDSET
+--R sort : (((R,R) -> Boolean),%) -> %   
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
---R ?*? : (%,R) -> % if R has MONOID
---R ?*? : (R,%) -> % if R has MONOID
 --R ?*? : (Integer,%) -> % if R has ABELGRP
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has ABELGRP
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?=? : (%,%) -> Boolean if R has SETCAT
@@ -37002,9 +37389,7 @@ digraph pic {
 --R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
 --R count : (R,%) -> NonNegativeInteger if R has SETCAT and $ has finiteAggregate
 --R count : ((R -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
---R cross : (%,%) -> % if R has RING
 --R delete : (%,UniversalSegment(Integer)) -> %
---R dot : (%,%) -> R if R has RING
 --R ?.? : (%,UniversalSegment(Integer)) -> %
 --R entry? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -37016,18 +37401,15 @@ digraph pic {
 --R find : ((R -> Boolean),%) -> Union(R,"failed")
 --R first : % -> R if Integer has ORDSET
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R length : % -> R if R has RING and R has RADCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R magnitude : % -> R if R has RING and R has RADCAT
 --R map! : ((R -> R),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if R has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (R,%) -> Boolean if R has SETCAT and $ has finiteAggregate
 --R members : % -> List(R) if $ has finiteAggregate
 --R merge : (%,%) -> % if R has ORDSET
 --R merge : (((R,R) -> Boolean),%,%) -> %
---R min : (%,%) -> % if R has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R outerProduct : (%,%) -> Matrix(R) if R has RING
@@ -37047,8 +37429,6 @@ digraph pic {
 --R setelt : (%,UniversalSegment(Integer),R) -> R if $ has shallowlyMutable
 --R setelt : (%,Integer,R) -> R if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if R has ORDSET
---R sort : (((R,R) -> Boolean),%) -> %
 --R sort! : % -> % if R has ORDSET and $ has shallowlyMutable
 --R sort! : (((R,R) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if R has ORDSET
@@ -37468,9 +37848,10 @@ digraph pic {
 --R indices : % -> List(Integer)          indices : % -> List(Key)
 --R insert : (%,%,Integer) -> %           insert! : (%,%,Integer) -> %
 --R key? : (Key,%) -> Boolean             keys : % -> List(Key)
---R leaf? : % -> Boolean                  map : ((Entry -> Entry),%) -> %
---R nodes : % -> List(%)                  possiblyInfinite? : % -> Boolean
---R qelt : (%,Key) -> Entry               rest : % -> %
+--R last : (%,NonNegativeInteger) -> %    leaf? : % -> Boolean
+--R map : ((Entry -> Entry),%) -> %       nodes : % -> List(%)
+--R possiblyInfinite? : % -> Boolean      qelt : (%,Key) -> Entry
+--R rest : % -> %                         rest : (%,NonNegativeInteger) -> %
 --R reverse : % -> %                      sample : () -> %
 --R setelt : (%,Key,Entry) -> Entry       table : () -> %
 --R tail : % -> %                        
@@ -37543,7 +37924,6 @@ digraph pic {
 --R insert! : (Record(key: Key,entry: Entry),%) -> %
 --R inspect : % -> Record(key: Key,entry: Entry)
 --R last : % -> Record(key: Key,entry: Entry)
---R last : (%,NonNegativeInteger) -> %
 --R latex : % -> String if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT or Record(key: Key,entry: Entry) has SETCAT
 --R leaves : % -> List(Record(key: Key,entry: Entry))
 --R less? : (%,NonNegativeInteger) -> Boolean
@@ -37600,7 +37980,6 @@ digraph pic {
 --R remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
 --R removeDuplicates : % -> % if Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate or Record(key: Key,entry: Entry) has SETCAT and $ has finiteAggregate
 --R removeDuplicates! : % -> % if Record(key: Key,entry: Entry) has SETCAT
---R rest : (%,NonNegativeInteger) -> %
 --R reverse! : % -> % if $ has shallowlyMutable
 --R search : (Key,%) -> Union(Entry,"failed")
 --R second : % -> Record(key: Key,entry: Entry)
@@ -38172,6 +38551,7 @@ digraph pic {
 
 --S 1 of 1
 )show CharacteristicNonZero
+--R 
 --R CharacteristicNonZero  is a category constructor
 --R Abbreviation for CharacteristicNonZero is CHARNZ 
 --R This constructor is exposed in this frame.
@@ -38179,18 +38559,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -38365,6 +38744,7 @@ digraph pic {
 
 --S 1 of 1
 )show CharacteristicZero
+--R 
 --R CharacteristicZero  is a category constructor
 --R Abbreviation for CharacteristicZero is CHARZ 
 --R This constructor is exposed in this frame.
@@ -38372,18 +38752,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -38551,6 +38930,7 @@ digraph pic {
 
 --S 1 of 1
 )show CommutativeRing
+--R 
 --R CommutativeRing  is a category constructor
 --R Abbreviation for CommutativeRing is COMRING 
 --R This constructor is exposed in this frame.
@@ -38558,18 +38938,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -38765,6 +39144,7 @@ digraph pic {
 
 --S 1 of 1
 )show DifferentialRing
+--R 
 --R DifferentialRing  is a category constructor
 --R Abbreviation for DifferentialRing is DIFRING 
 --R This constructor is exposed in this frame.
@@ -38772,20 +39152,18 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R D : (%,NonNegativeInteger) -> %       D : % -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              differentiate : % -> %
---R hash : % -> SingleInteger             latex : % -> String
---R one? : % -> Boolean                   recip : % -> Union(%,"failed")
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R differentiate : % -> %                hash : % -> SingleInteger
+--R latex : % -> String                   one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R differentiate : (%,NonNegativeInteger) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -38992,6 +39370,7 @@ digraph pic {
 
 --S 1 of 1
 )show EntireRing
+--R 
 --R EntireRing  is a category constructor
 --R Abbreviation for EntireRing is ENTIRER 
 --R This constructor is exposed in this frame.
@@ -38999,18 +39378,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -39210,19 +39588,18 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,Basis) -> %                  ?*? : (%,R) -> %
 --R ?*? : (R,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (%,Basis) -> R          coefficients : % -> List(R)
---R coerce : Basis -> %                   coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R leadingCoefficient : % -> R           leadingMonomial : % -> Basis
---R map : ((R -> R),%) -> %               monom : (Basis,R) -> %
---R monomial? : % -> Boolean              monomials : % -> List(%)
---R reductum : % -> %                     retract : % -> Basis
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (%,Basis) -> R
+--R coefficients : % -> List(R)           coerce : Basis -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   leadingCoefficient : % -> R
+--R leadingMonomial : % -> Basis          map : ((R -> R),%) -> %
+--R monom : (Basis,R) -> %                monomial? : % -> Boolean
+--R monomials : % -> List(%)              reductum : % -> %
+--R retract : % -> Basis                  sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R leadingTerm : % -> Record(k: Basis,c: R)
 --R listOfTerms : % -> List(Record(k: Basis,c: R))
 --R numberOfMonomials : % -> NonNegativeInteger
@@ -39481,19 +39858,18 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -39673,18 +40049,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
 --R reducedSystem : Matrix(%) -> Matrix(R)
@@ -39880,14 +40255,13 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -40052,6 +40426,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedRing
+--R 
 --R OrderedRing  is a category constructor
 --R Abbreviation for OrderedRing is ORDRING 
 --R This constructor is exposed in this frame.
@@ -40059,23 +40434,22 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?**? : (%,NonNegativeInteger) -> %
 --R ?+? : (%,%) -> %                      -? : % -> %
 --R ?-? : (%,%) -> %                      ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R max : (%,%) -> %                      min : (%,%) -> %
---R negative? : % -> Boolean              one? : % -> Boolean
---R positive? : % -> Boolean              recip : % -> Union(%,"failed")
---R sample : () -> %                      sign : % -> Integer
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        ?^? : (%,NonNegativeInteger) -> %
+--R abs : % -> %                          coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      negative? : % -> Boolean
+--R one? : % -> Boolean                   positive? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R sign : % -> Integer                   zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -40314,22 +40688,20 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,List(S)) -> %                  D : (%,S) -> %
---R 1 : () -> %                           0 : () -> %
+--R D : (%,S,NonNegativeInteger) -> %     D : (%,List(S)) -> %
+--R D : (%,S) -> %                        1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
 --R coerce : % -> OutputForm              differentiate : (%,List(S)) -> %
 --R differentiate : (%,S) -> %            hash : % -> SingleInteger
 --R latex : % -> String                   one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R D : (%,List(S),List(NonNegativeInteger)) -> %
---R D : (%,S,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R differentiate : (%,List(S),List(NonNegativeInteger)) -> %
 --R differentiate : (%,S,NonNegativeInteger) -> %
@@ -40592,27 +40964,28 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for PTCAT 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> % if R has MONOID      ?*? : (R,%) -> % if R has MONOID
+--R ?+? : (%,%) -> % if R has ABELSG      ?-? : (%,%) -> % if R has ABELGRP
 --R -? : % -> % if R has ABELGRP          concat : List(%) -> %
 --R concat : (%,%) -> %                   concat : (R,%) -> %
 --R concat : (%,R) -> %                   construct : List(R) -> %
 --R convert : List(R) -> %                copy : % -> %
 --R cross : (%,%) -> %                    delete : (%,Integer) -> %
---R dimension : % -> PositiveInteger      ?.? : (%,Integer) -> R
---R elt : (%,Integer,R) -> R              empty : () -> %
---R empty? : % -> Boolean                 entries : % -> List(R)
---R eq? : (%,%) -> Boolean                extend : (%,List(R)) -> %
---R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R insert : (%,%,Integer) -> %           insert : (R,%,Integer) -> %
+--R dimension : % -> PositiveInteger      dot : (%,%) -> R if R has RING
+--R ?.? : (%,Integer) -> R                elt : (%,Integer,R) -> R
+--R empty : () -> %                       empty? : % -> Boolean
+--R entries : % -> List(R)                eq? : (%,%) -> Boolean
+--R extend : (%,List(R)) -> %             index? : (Integer,%) -> Boolean
+--R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
+--R insert : (R,%,Integer) -> %           latex : % -> String if R has SETCAT
 --R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
 --R new : (NonNegativeInteger,R) -> %     point : List(R) -> %
 --R qelt : (%,Integer) -> R               reverse : % -> %
---R sample : () -> %                     
+--R sample : () -> %                      sort : % -> % if R has ORDSET
+--R sort : (((R,R) -> Boolean),%) -> %   
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
---R ?*? : (%,R) -> % if R has MONOID
---R ?*? : (R,%) -> % if R has MONOID
 --R ?*? : (Integer,%) -> % if R has ABELGRP
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has ABELGRP
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?=? : (%,%) -> Boolean if R has SETCAT
@@ -40625,7 +40998,6 @@ digraph pic {
 --R count : (R,%) -> NonNegativeInteger if R has SETCAT and $ has finiteAggregate
 --R count : ((R -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
 --R delete : (%,UniversalSegment(Integer)) -> %
---R dot : (%,%) -> R if R has RING
 --R ?.? : (%,UniversalSegment(Integer)) -> %
 --R entry? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -40637,18 +41009,15 @@ digraph pic {
 --R find : ((R -> Boolean),%) -> Union(R,"failed")
 --R first : % -> R if Integer has ORDSET
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R length : % -> R if R has RING and R has RADCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R magnitude : % -> R if R has RING and R has RADCAT
 --R map! : ((R -> R),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if R has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (R,%) -> Boolean if R has SETCAT and $ has finiteAggregate
 --R members : % -> List(R) if $ has finiteAggregate
 --R merge : (%,%) -> % if R has ORDSET
 --R merge : (((R,R) -> Boolean),%,%) -> %
---R min : (%,%) -> % if R has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R outerProduct : (%,%) -> Matrix(R) if R has RING
@@ -40668,8 +41037,6 @@ digraph pic {
 --R setelt : (%,UniversalSegment(Integer),R) -> R if $ has shallowlyMutable
 --R setelt : (%,Integer,R) -> R if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if R has ORDSET
---R sort : (((R,R) -> Boolean),%) -> %
 --R sort! : % -> % if R has ORDSET and $ has shallowlyMutable
 --R sort! : (((R,R) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if R has ORDSET
@@ -41004,9 +41371,10 @@ The RectangularMatrix domain is matrices of fixed dimension.
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,R) -> % if R has FIELD       ?=? : (%,%) -> Boolean
 --R 0 : () -> %                           antisymmetric? : % -> Boolean
 --R coerce : % -> OutputForm              column : (%,Integer) -> Col
 --R copy : % -> %                         diagonal? : % -> Boolean
@@ -41023,8 +41391,6 @@ The RectangularMatrix domain is matrices of fixed dimension.
 --R square? : % -> Boolean                symmetric? : % -> Boolean
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
---R ?*? : (NonNegativeInteger,%) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R count : ((R -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
 --R count : (R,%) -> NonNegativeInteger if R has SETCAT and $ has finiteAggregate
@@ -41486,17 +41852,20 @@ digraph pic {
 --R headReduce : (P,%) -> P               headReduced? : % -> Boolean
 --R headReduced? : (P,%) -> Boolean       infRittWu? : (%,%) -> Boolean
 --R initiallyReduce : (P,%) -> P          initiallyReduced? : % -> Boolean
---R initials : % -> List(P)               internalAugment : (P,%) -> %
---R intersect : (P,%) -> List(%)          invertible? : (P,%) -> Boolean
---R invertibleSet : (P,%) -> List(%)      last : % -> Union(P,"failed")
---R latex : % -> String                   mainVariable? : (V,%) -> Boolean
---R mainVariables : % -> List(V)          map : ((P -> P),%) -> %
---R mvar : % -> V                         normalized? : % -> Boolean
---R normalized? : (P,%) -> Boolean        purelyAlgebraic? : % -> Boolean
+--R initials : % -> List(P)               internalAugment : (List(P),%) -> %
+--R internalAugment : (P,%) -> %          intersect : (P,List(%)) -> List(%)
+--R intersect : (List(P),%) -> List(%)    intersect : (P,%) -> List(%)
+--R invertible? : (P,%) -> Boolean        invertibleSet : (P,%) -> List(%)
+--R last : % -> Union(P,"failed")         latex : % -> String
+--R mainVariable? : (V,%) -> Boolean      mainVariables : % -> List(V)
+--R map : ((P -> P),%) -> %               mvar : % -> V
+--R normalized? : % -> Boolean            normalized? : (P,%) -> Boolean
+--R purelyAlgebraic? : % -> Boolean       purelyAlgebraic? : (P,%) -> Boolean
 --R reduceByQuasiMonic : (P,%) -> P       removeZero : (P,%) -> P
 --R rest : % -> Union(%,"failed")         retract : List(P) -> %
---R sample : () -> %                      stronglyReduce : (P,%) -> P
---R stronglyReduced? : % -> Boolean       trivialIdeal? : % -> Boolean
+--R sample : () -> %                      select : (%,V) -> Union(P,"failed")
+--R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R stronglyReduced? : (P,%) -> Boolean   trivialIdeal? : % -> Boolean
 --R variables : % -> List(V)              zeroSetSplit : List(P) -> List(%)
 --R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -41520,10 +41889,7 @@ digraph pic {
 --R find : ((P -> Boolean),%) -> Union(P,"failed")
 --R headRemainder : (P,%) -> Record(num: P,den: R) if R has INTDOM
 --R initiallyReduced? : (P,%) -> Boolean
---R internalAugment : (List(P),%) -> %
---R intersect : (P,List(%)) -> List(%)
 --R intersect : (List(P),List(%)) -> List(%)
---R intersect : (List(P),%) -> List(%)
 --R invertible? : (P,%) -> List(Record(val: Boolean,tower: %))
 --R invertibleElseSplit? : (P,%) -> Union(Boolean,List(%))
 --R lastSubResultant : (P,P,%) -> List(Record(val: P,tower: %))
@@ -41534,7 +41900,6 @@ digraph pic {
 --R members : % -> List(P) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(P) if $ has finiteAggregate
---R purelyAlgebraic? : (P,%) -> Boolean
 --R purelyAlgebraicLeadingMonomial? : (P,%) -> Boolean
 --R purelyTranscendental? : (P,%) -> Boolean
 --R quasiComponent : % -> Record(close: List(P),open: List(P))
@@ -41555,12 +41920,10 @@ digraph pic {
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
 --R squareFreePart : (P,%) -> List(Record(val: P,tower: %))
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplit : (List(P),Boolean) -> List(%)
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
@@ -41927,15 +42290,15 @@ digraph pic {
 --R entries : % -> List(Character)        eq? : (%,%) -> Boolean
 --R hash : % -> SingleInteger             index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R latex : % -> String                   leftTrim : (%,Character) -> %
---R lowerCase : % -> %                    lowerCase! : % -> %
---R prefix? : (%,%) -> Boolean            qelt : (%,Integer) -> Character
---R reverse : % -> %                      rightTrim : (%,Character) -> %
---R sample : () -> %                      split : (%,Character) -> List(%)
---R string : Integer -> %                 suffix? : (%,%) -> Boolean
---R trim : (%,CharacterClass) -> %        trim : (%,Character) -> %
---R upperCase : % -> %                    upperCase! : % -> %
---R ?~=? : (%,%) -> Boolean              
+--R latex : % -> String                   leftTrim : (%,CharacterClass) -> %
+--R leftTrim : (%,Character) -> %         lowerCase : % -> %
+--R lowerCase! : % -> %                   prefix? : (%,%) -> Boolean
+--R qelt : (%,Integer) -> Character       reverse : % -> %
+--R rightTrim : (%,Character) -> %        sample : () -> %
+--R split : (%,Character) -> List(%)      string : Integer -> %
+--R suffix? : (%,%) -> Boolean            trim : (%,CharacterClass) -> %
+--R trim : (%,Character) -> %             upperCase : % -> %
+--R upperCase! : % -> %                   ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if Character has ORDSET
 --R ?<=? : (%,%) -> Boolean if Character has ORDSET
@@ -41961,7 +42324,6 @@ digraph pic {
 --R find : ((Character -> Boolean),%) -> Union(Character,"failed")
 --R first : % -> Character if Integer has ORDSET
 --R insert : (Character,%,Integer) -> %
---R leftTrim : (%,CharacterClass) -> %
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : (((Character,Character) -> Character),%,%) -> %
 --R map : ((Character -> Character),%) -> %
@@ -42384,26 +42746,24 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        apply : (%,R,R) -> R
---R coefficients : % -> List(R)           coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R apply : (%,R,R) -> R                  coefficients : % -> List(R)
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
 --R degree : % -> NonNegativeInteger      hash : % -> SingleInteger
 --R latex : % -> String                   leadingCoefficient : % -> R
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R reductum : % -> %                     retract : % -> R
 --R sample : () -> %                      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R coefficient : (%,NonNegativeInteger) -> R
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT))
---R content : % -> R if R has GCDDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R leftDivide : (%,%) -> Record(quotient: %,remainder: %) if R has FIELD
 --R leftExactQuotient : (%,%) -> Union(%,"failed") if R has FIELD
@@ -42966,19 +43326,17 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R one? : % -> Boolean                   recip : % -> Union(%,"failed")
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -43189,19 +43547,17 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R one? : % -> Boolean                   recip : % -> Union(%,"failed")
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -43449,25 +43805,24 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R D : % -> % if R has DIFRING           D : (%,(R -> R)) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R differentiate : (%,(R -> R)) -> %     hash : % -> SingleInteger
 --R latex : % -> String                   one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R D : (%,NonNegativeInteger) -> % if R has DIFRING
 --R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
 --R D : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
 --R D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R D : (%,(R -> R),NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R differentiate : % -> % if R has DIFRING
 --R differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
@@ -43476,7 +43831,6 @@ digraph pic {
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
---R differentiate : (%,(R -> R)) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -43738,18 +44092,17 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
@@ -43975,15 +44328,14 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,R) -> % if R has FIELD       ?=? : (%,%) -> Boolean
 --R 0 : () -> %                           coerce : % -> OutputForm
 --R construct : (%,%) -> %                hash : % -> SingleInteger
 --R latex : % -> String                   sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -44169,27 +44521,25 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (A,%) -> %                      ?*? : (%,A) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R D : () -> %                           1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R adjoint : % -> %                      apply : (%,A,A) -> A
---R coefficients : % -> List(A)           coerce : A -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        adjoint : % -> %
+--R apply : (%,A,A) -> A                  coefficients : % -> List(A)
+--R coerce : A -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              content : % -> A if A has GCDDOM
 --R degree : % -> NonNegativeInteger      ?.? : (%,A) -> A
 --R hash : % -> SingleInteger             latex : % -> String
 --R leadingCoefficient : % -> A           one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        reductum : % -> %
 --R retract : % -> A                      sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R coefficient : (%,NonNegativeInteger) -> A
 --R coerce : Fraction(Integer) -> % if A has RETRACT(FRAC(INT))
---R content : % -> A if A has GCDDOM
 --R directSum : (%,%) -> % if A has FIELD
 --R exquo : (%,A) -> Union(%,"failed") if A has INTDOM
 --R leftDivide : (%,%) -> Record(quotient: %,remainder: %) if A has FIELD
@@ -44591,15 +44941,15 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           antiCommutator : (%,%) -> %
---R associator : (%,%,%) -> %             coerce : % -> OutputForm
---R commutator : (%,%) -> %               hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
+--R coerce : % -> OutputForm              commutator : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R leftPower : (%,PositiveInteger) -> %
 --R plenaryPower : (%,PositiveInteger) -> %
 --R rightPower : (%,PositiveInteger) -> %
@@ -44813,15 +45163,14 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,S) -> %                      ?*? : (S,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?/? : (%,S) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              dimension : () -> CardinalNumber
---R hash : % -> SingleInteger             latex : % -> String
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,S) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R dimension : () -> CardinalNumber      hash : % -> SingleInteger
+--R latex : % -> String                   sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -44992,38 +45341,35 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (vl,%) -> %                     ?*? : (%,R) -> %
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coef : (%,%) -> R                     coerce : vl -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coef : (%,%) -> R
+--R coerce : vl -> %                      coerce : OrderedFreeMonoid(vl) -> %
 --R coerce : R -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              constant : % -> R
 --R constant? : % -> Boolean              hash : % -> SingleInteger
 --R latex : % -> String                   lquo : (%,%) -> %
 --R lquo : (%,vl) -> %                    map : ((R -> R),%) -> %
---R mirror : % -> %                       monomial? : % -> Boolean
---R one? : % -> Boolean                   quasiRegular : % -> %
---R quasiRegular? : % -> Boolean          recip : % -> Union(%,"failed")
---R rquo : (%,%) -> %                     rquo : (%,vl) -> %
---R sample : () -> %                      varList : % -> List(vl)
+--R mindeg : % -> OrderedFreeMonoid(vl)   mirror : % -> %
+--R monomial? : % -> Boolean              one? : % -> Boolean
+--R quasiRegular : % -> %                 quasiRegular? : % -> Boolean
+--R recip : % -> Union(%,"failed")        rquo : (%,%) -> %
+--R rquo : (%,vl) -> %                    sample : () -> %
+--R sh : (%,%) -> % if R has COMRING      varList : % -> List(vl)
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R coef : (%,OrderedFreeMonoid(vl)) -> R
---R coerce : OrderedFreeMonoid(vl) -> %
 --R lquo : (%,OrderedFreeMonoid(vl)) -> %
---R mindeg : % -> OrderedFreeMonoid(vl)
 --R mindegTerm : % -> Record(k: OrderedFreeMonoid(vl),c: R)
 --R monom : (OrderedFreeMonoid(vl),R) -> %
 --R retract : % -> OrderedFreeMonoid(vl)
 --R retractIfCan : % -> Union(OrderedFreeMonoid(vl),"failed")
 --R rquo : (%,OrderedFreeMonoid(vl)) -> %
 --R sh : (%,NonNegativeInteger) -> % if R has COMRING
---R sh : (%,%) -> % if R has COMRING
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -45375,27 +45721,28 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for DIRPCAT 
 --R
 --R------------------------------- Operations --------------------------------
---R -? : % -> % if R has RING             1 : () -> % if R has MONOID
---R 0 : () -> % if R has CABMON           coerce : % -> Vector(R)
+--R ?*? : (R,%) -> % if R has MONOID      ?*? : (%,R) -> % if R has MONOID
+--R ?*? : (%,%) -> % if R has MONOID      ?+? : (%,%) -> % if R has ABELSG
+--R -? : % -> % if R has RING             ?-? : (%,%) -> % if R has RING
+--R ?/? : (%,R) -> % if R has FIELD       1 : () -> % if R has MONOID
+--R 0 : () -> % if R has CABMON           abs : % -> % if R has ORDRING
+--R coerce : R -> % if R has SETCAT       coerce : % -> Vector(R)
 --R copy : % -> %                         directProduct : Vector(R) -> %
---R ?.? : (%,Integer) -> R                elt : (%,Integer,R) -> R
---R empty : () -> %                       empty? : % -> Boolean
---R entries : % -> List(R)                eq? : (%,%) -> Boolean
---R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R map : ((R -> R),%) -> %               qelt : (%,Integer) -> R
---R sample : () -> %                     
+--R dot : (%,%) -> R if R has RING        ?.? : (%,Integer) -> R
+--R elt : (%,Integer,R) -> R              empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(R)
+--R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
+--R indices : % -> List(Integer)          latex : % -> String if R has SETCAT
+--R map : ((R -> R),%) -> %               one? : % -> Boolean if R has MONOID
+--R qelt : (%,Integer) -> R               random : () -> % if R has FINITE
+--R retract : % -> R if R has SETCAT      sample : () -> %
+--R sup : (%,%) -> % if R has OAMONS     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (PositiveInteger,%) -> % if R has ABELSG
 --R ?*? : (NonNegativeInteger,%) -> % if R has CABMON
---R ?*? : (R,%) -> % if R has MONOID
---R ?*? : (%,R) -> % if R has MONOID
---R ?*? : (%,%) -> % if R has MONOID
 --R ?*? : (Integer,%) -> % if R has RING
 --R ?**? : (%,PositiveInteger) -> % if R has MONOID
 --R ?**? : (%,NonNegativeInteger) -> % if R has MONOID
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has RING
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDRING or R has OAMONS
 --R ?<=? : (%,%) -> Boolean if R has ORDRING or R has OAMONS
 --R ?=? : (%,%) -> Boolean if R has SETCAT
@@ -45411,10 +45758,8 @@ digraph pic {
 --R D : % -> % if and(has(R,DifferentialRing),has(R,Ring))
 --R ?^? : (%,PositiveInteger) -> % if R has MONOID
 --R ?^? : (%,NonNegativeInteger) -> % if R has MONOID
---R abs : % -> % if R has ORDRING
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger if R has RING
---R coerce : R -> % if R has SETCAT
 --R coerce : Fraction(Integer) -> % if and(has(R,RetractableTo(Fraction(Integer))),has(R,SetCategory))
 --R coerce : Integer -> % if and(has(R,RetractableTo(Integer)),has(R,SetCategory)) or R has RING
 --R coerce : % -> OutputForm if R has SETCAT
@@ -45429,7 +45774,6 @@ digraph pic {
 --R differentiate : (%,NonNegativeInteger) -> % if and(has(R,DifferentialRing),has(R,Ring))
 --R differentiate : % -> % if and(has(R,DifferentialRing),has(R,Ring))
 --R dimension : () -> CardinalNumber if R has FIELD
---R dot : (%,%) -> R if R has RING
 --R entry? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R enumerate : () -> List(%) if R has FINITE
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -45441,7 +45785,6 @@ digraph pic {
 --R first : % -> R if Integer has ORDSET
 --R hash : % -> SingleInteger if R has SETCAT
 --R index : PositiveInteger -> % if R has FINITE
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R lookup : % -> PositiveInteger if R has FINITE
 --R map! : ((R -> R),%) -> % if $ has shallowlyMutable
@@ -45453,17 +45796,14 @@ digraph pic {
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R negative? : % -> Boolean if R has ORDRING
---R one? : % -> Boolean if R has MONOID
 --R parts : % -> List(R) if $ has finiteAggregate
 --R positive? : % -> Boolean if R has ORDRING
 --R qsetelt! : (%,Integer,R) -> R if $ has shallowlyMutable
---R random : () -> % if R has FINITE
 --R recip : % -> Union(%,"failed") if R has MONOID
 --R reducedSystem : Matrix(%) -> Matrix(R) if R has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R)) if R has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if and(has(R,LinearlyExplicitRingOver(Integer)),has(R,Ring))
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if and(has(R,LinearlyExplicitRingOver(Integer)),has(R,Ring))
---R retract : % -> R if R has SETCAT
 --R retract : % -> Fraction(Integer) if and(has(R,RetractableTo(Fraction(Integer))),has(R,SetCategory))
 --R retract : % -> Integer if and(has(R,RetractableTo(Integer)),has(R,SetCategory))
 --R retractIfCan : % -> Union(R,"failed") if R has SETCAT
@@ -45474,7 +45814,6 @@ digraph pic {
 --R size : () -> NonNegativeInteger if R has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed") if R has CABMON
---R sup : (%,%) -> % if R has OAMONS
 --R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
 --R unitVector : PositiveInteger -> % if R has RING
 --R zero? : % -> Boolean if R has CABMON
@@ -46010,20 +46349,19 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Fraction(Integer) -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Fraction(Integer) -> %       coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R inv : % -> %                          latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -46253,26 +46591,26 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           alternative? : () -> Boolean
---R antiAssociative? : () -> Boolean      antiCommutative? : () -> Boolean
---R antiCommutator : (%,%) -> %           associative? : () -> Boolean
---R associator : (%,%,%) -> %             coerce : % -> OutputForm
---R commutative? : () -> Boolean          commutator : (%,%) -> %
---R flexible? : () -> Boolean             hash : % -> SingleInteger
---R jacobiIdentity? : () -> Boolean       jordanAdmissible? : () -> Boolean
---R jordanAlgebra? : () -> Boolean        latex : % -> String
---R leftAlternative? : () -> Boolean      leftDiscriminant : Vector(%) -> R
---R leftNorm : % -> R                     leftTrace : % -> R
---R lieAdmissible? : () -> Boolean        lieAlgebra? : () -> Boolean
---R powerAssociative? : () -> Boolean     rank : () -> PositiveInteger
---R rightAlternative? : () -> Boolean     rightNorm : % -> R
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R alternative? : () -> Boolean          antiAssociative? : () -> Boolean
+--R antiCommutative? : () -> Boolean      antiCommutator : (%,%) -> %
+--R associative? : () -> Boolean          associator : (%,%,%) -> %
+--R coerce : % -> OutputForm              commutative? : () -> Boolean
+--R commutator : (%,%) -> %               flexible? : () -> Boolean
+--R hash : % -> SingleInteger             jacobiIdentity? : () -> Boolean
+--R jordanAdmissible? : () -> Boolean     jordanAlgebra? : () -> Boolean
+--R latex : % -> String                   leftAlternative? : () -> Boolean
+--R leftDiscriminant : Vector(%) -> R     leftNorm : % -> R
+--R leftTrace : % -> R                    lieAdmissible? : () -> Boolean
+--R lieAlgebra? : () -> Boolean           powerAssociative? : () -> Boolean
+--R rank : () -> PositiveInteger          rightAlternative? : () -> Boolean
+--R rightDiscriminant : Vector(%) -> R    rightNorm : % -> R
 --R rightTrace : % -> R                   sample : () -> %
 --R someBasis : () -> Vector(%)           zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
 --R associatorDependence : () -> List(Vector(R)) if R has INTDOM
 --R conditionsForIdempotents : Vector(%) -> List(Polynomial(R))
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
@@ -46290,7 +46628,6 @@ digraph pic {
 --R recip : % -> Union(%,"failed") if R has INTDOM
 --R represents : (Vector(R),Vector(%)) -> %
 --R rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
---R rightDiscriminant : Vector(%) -> R
 --R rightMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
 --R rightPower : (%,PositiveInteger) -> %
 --R rightRecip : % -> Union(%,"failed") if R has INTDOM
@@ -47280,9 +47617,10 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,R) -> % if R has FIELD       ?=? : (%,%) -> Boolean
 --R LiePoly : LyndonWord(VarSet) -> %     0 : () -> %
 --R coerce : VarSet -> %                  coerce : % -> OutputForm
 --R construct : (%,%) -> %                degree : % -> NonNegativeInteger
@@ -47290,8 +47628,6 @@ digraph pic {
 --R latex : % -> String                   mirror : % -> %
 --R sample : () -> %                      varList : % -> List(VarSet)
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R coef : (XRecursivePolynomial(VarSet,R),%) -> R
 --R coerce : % -> XRecursivePolynomial(VarSet,R)
 --R coerce : % -> XDistributedPolynomial(VarSet,R)
@@ -47532,6 +47868,7 @@ digraph pic {
 
 --S 1 of 1
 )show IntegralDomain
+--R 
 --R IntegralDomain  is a category constructor
 --R Abbreviation for IntegralDomain is INTDOM 
 --R This constructor is exposed in this frame.
@@ -47539,20 +47876,19 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -47844,23 +48180,21 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : R -> % if R has COMRING      coerce : Integer -> %
 --R coerce : % -> OutputForm              degree : % -> NonNegativeInteger
 --R hash : % -> SingleInteger             latex : % -> String
 --R leadingCoefficient : % -> R           one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        reductum : % -> %
 --R sample : () -> %                      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R coefficient : (%,NonNegativeInteger) -> R
---R coerce : R -> % if R has COMRING
 --R minimumDegree : % -> NonNegativeInteger
 --R monomial : (R,NonNegativeInteger) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -48129,6 +48463,7 @@ digraph pic {
 
 --S 1 of 1
 )show OctonionCategory
+--R 
 --R OctonionCategory(R: CommutativeRing)  is a category constructor
 --R Abbreviation for OctonionCategory is OC 
 --R This constructor is exposed in this frame.
@@ -48137,30 +48472,30 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> R if R has RNS
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              conjugate : % -> %
---R hash : % -> SingleInteger             imagE : % -> R
---R imagI : % -> R                        imagJ : % -> R
---R imagK : % -> R                        imagi : % -> R
---R imagj : % -> R                        imagk : % -> R
---R inv : % -> % if R has FIELD           latex : % -> String
---R map : ((R -> R),%) -> %               norm : % -> R
---R octon : (R,R,R,R,R,R,R,R) -> %        one? : % -> Boolean
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> R if R has RNS             coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R conjugate : % -> %                    hash : % -> SingleInteger
+--R imagE : % -> R                        imagI : % -> R
+--R imagJ : % -> R                        imagK : % -> R
+--R imagi : % -> R                        imagj : % -> R
+--R imagk : % -> R                        inv : % -> % if R has FIELD
+--R latex : % -> String                   map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
+--R norm : % -> R                         octon : (R,R,R,R,R,R,R,R) -> %
+--R one? : % -> Boolean                   random : () -> % if R has FINITE
 --R real : % -> R                         recip : % -> Union(%,"failed")
 --R retract : % -> R                      sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
 --R ?>=? : (%,%) -> Boolean if R has ORDSET
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT))
@@ -48175,9 +48510,6 @@ digraph pic {
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R)
 --R index : PositiveInteger -> % if R has FINITE
 --R lookup : % -> PositiveInteger if R has FINITE
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
---R random : () -> % if R has FINITE
 --R rational : % -> Fraction(Integer) if R has INS
 --R rational? : % -> Boolean if R has INS
 --R rationalIfCan : % -> Union(Fraction(Integer),"failed") if R has INS
@@ -48708,27 +49040,28 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> R if R has RNS
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              conjugate : % -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> R if R has RNS             coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R conjugate : % -> %                    differentiate : (%,(R -> R)) -> %
 --R hash : % -> SingleInteger             imagI : % -> R
 --R imagJ : % -> R                        imagK : % -> R
 --R inv : % -> % if R has FIELD           latex : % -> String
---R map : ((R -> R),%) -> %               norm : % -> R
+--R map : ((R -> R),%) -> %               max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      norm : % -> R
 --R one? : % -> Boolean                   quatern : (R,R,R,R) -> %
 --R real : % -> R                         recip : % -> Union(%,"failed")
 --R retract : % -> R                      sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has FIELD
 --R ?*? : (%,Fraction(Integer)) -> % if R has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if R has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
@@ -48740,12 +49073,10 @@ digraph pic {
 --R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if R has DIFRING
 --R ?^? : (%,Integer) -> % if R has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : Fraction(Integer) -> % if R has FIELD or R has RETRACT(FRAC(INT))
 --R convert : % -> InputForm if R has KONVERT(INFORM)
---R differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
@@ -48760,8 +49091,6 @@ digraph pic {
 --R eval : (%,Equation(R)) -> % if R has EVALAB(R)
 --R eval : (%,R,R) -> % if R has EVALAB(R)
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R)
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R rational : % -> Fraction(Integer) if R has INS
 --R rational? : % -> Boolean if R has INS
 --R rationalIfCan : % -> Union(Fraction(Integer),"failed") if R has INS
@@ -49274,43 +49603,42 @@ The SquareMatrix domain is for square matrices of fixed dimension.
 --R ?*? : (Row,%) -> Row                  ?*? : (%,Col) -> Col
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : % -> % if R has DIFRING           D : (%,(R -> R)) -> %
---R 1 : () -> %                           0 : () -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : % -> % if R has DIFRING
+--R D : (%,(R -> R)) -> %                 1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        antisymmetric? : % -> Boolean
 --R coerce : R -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              column : (%,Integer) -> Col
 --R copy : % -> %                         diagonal : % -> Row
 --R diagonal? : % -> Boolean              diagonalMatrix : List(R) -> %
---R diagonalProduct : % -> R              elt : (%,Integer,Integer) -> R
---R elt : (%,Integer,Integer,R) -> R      empty : () -> %
---R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R hash : % -> SingleInteger             latex : % -> String
---R listOfLists : % -> List(List(R))      map : ((R -> R),%) -> %
---R map : (((R,R) -> R),%,%) -> %         matrix : List(List(R)) -> %
---R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
---R minColIndex : % -> Integer            minRowIndex : % -> Integer
---R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
---R one? : % -> Boolean                   qelt : (%,Integer,Integer) -> R
---R recip : % -> Union(%,"failed")        retract : % -> R
---R row : (%,Integer) -> Row              sample : () -> %
---R scalarMatrix : R -> %                 square? : % -> Boolean
---R symmetric? : % -> Boolean             trace : % -> R
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R diagonalProduct : % -> R              differentiate : (%,(R -> R)) -> %
+--R elt : (%,Integer,Integer) -> R        elt : (%,Integer,Integer,R) -> R
+--R empty : () -> %                       empty? : % -> Boolean
+--R eq? : (%,%) -> Boolean                hash : % -> SingleInteger
+--R latex : % -> String                   listOfLists : % -> List(List(R))
+--R map : ((R -> R),%) -> %               map : (((R,R) -> R),%,%) -> %
+--R matrix : List(List(R)) -> %           maxColIndex : % -> Integer
+--R maxRowIndex : % -> Integer            minColIndex : % -> Integer
+--R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
+--R nrows : % -> NonNegativeInteger       one? : % -> Boolean
+--R qelt : (%,Integer,Integer) -> R       recip : % -> Union(%,"failed")
+--R retract : % -> R                      row : (%,Integer) -> Row
+--R sample : () -> %                      scalarMatrix : R -> %
+--R square? : % -> Boolean                symmetric? : % -> Boolean
+--R trace : % -> R                        zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if R has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R D : (%,NonNegativeInteger) -> % if R has DIFRING
 --R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
 --R D : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
 --R D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R D : (%,(R -> R),NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT))
@@ -49324,7 +49652,6 @@ The SquareMatrix domain is for square matrices of fixed dimension.
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
---R differentiate : (%,(R -> R)) -> %
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
 --R eval : (%,R,R) -> % if R has EVALAB(R) and R has SETCAT
 --R eval : (%,Equation(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -49898,40 +50225,36 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (vl,%) -> %                     ?*? : (%,R) -> %
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coef : (%,%) -> R                     coerce : vl -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coef : (%,%) -> R
+--R coerce : vl -> %                      coerce : OrderedFreeMonoid(vl) -> %
 --R coerce : R -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              constant : % -> R
 --R constant? : % -> Boolean              degree : % -> NonNegativeInteger
 --R hash : % -> SingleInteger             latex : % -> String
 --R lquo : (%,%) -> %                     lquo : (%,vl) -> %
---R map : ((R -> R),%) -> %               mirror : % -> %
+--R map : ((R -> R),%) -> %               maxdeg : % -> OrderedFreeMonoid(vl)
+--R mindeg : % -> OrderedFreeMonoid(vl)   mirror : % -> %
 --R monomial? : % -> Boolean              one? : % -> Boolean
 --R quasiRegular : % -> %                 quasiRegular? : % -> Boolean
 --R recip : % -> Union(%,"failed")        rquo : (%,%) -> %
 --R rquo : (%,vl) -> %                    sample : () -> %
---R varList : % -> List(vl)               zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R sh : (%,%) -> % if R has COMRING      varList : % -> List(vl)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R coef : (%,OrderedFreeMonoid(vl)) -> R
---R coerce : OrderedFreeMonoid(vl) -> %
 --R lquo : (%,OrderedFreeMonoid(vl)) -> %
---R maxdeg : % -> OrderedFreeMonoid(vl)
---R mindeg : % -> OrderedFreeMonoid(vl)
 --R mindegTerm : % -> Record(k: OrderedFreeMonoid(vl),c: R)
 --R monom : (OrderedFreeMonoid(vl),R) -> %
 --R retract : % -> OrderedFreeMonoid(vl)
 --R retractIfCan : % -> Union(OrderedFreeMonoid(vl),"failed")
 --R rquo : (%,OrderedFreeMonoid(vl)) -> %
 --R sh : (%,NonNegativeInteger) -> % if R has COMRING
---R sh : (%,%) -> % if R has COMRING
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R trunc : (%,NonNegativeInteger) -> %
 --R
@@ -50222,11 +50545,14 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
+--R coerce : R -> % if R has COMRING      coerce : % -> % if R has INTDOM
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R degree : % -> E                       hash : % -> SingleInteger
 --R latex : % -> String                   leadingCoefficient : % -> R
@@ -50237,15 +50563,9 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
---R coerce : R -> % if R has COMRING
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Integer) -> % if R has ALGEBRA(FRAC(INT))
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -50573,6 +50893,7 @@ digraph pic {
 
 --S 1 of 1
 )show FortranMachineTypeCategory
+--R 
 --R FortranMachineTypeCategory  is a category constructor
 --R Abbreviation for FortranMachineTypeCategory is FMTC 
 --R This constructor is exposed in this frame.
@@ -50580,24 +50901,23 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : Integer -> %                 coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R max : (%,%) -> %                      min : (%,%) -> %
---R one? : % -> Boolean                   recip : % -> Union(%,"failed")
---R retract : % -> Integer                sample : () -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : Integer -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        retract : % -> Integer
+--R sample : () -> %                      unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R retractIfCan : % -> Union(Integer,"failed")
@@ -50852,31 +51172,31 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           alternative? : () -> Boolean
---R antiAssociative? : () -> Boolean      antiCommutative? : () -> Boolean
---R antiCommutator : (%,%) -> %           apply : (Matrix(R),%) -> %
---R associative? : () -> Boolean          associator : (%,%,%) -> %
---R basis : () -> Vector(%)               coerce : % -> OutputForm
---R commutative? : () -> Boolean          commutator : (%,%) -> %
---R convert : Vector(R) -> %              convert : % -> Vector(R)
---R coordinates : % -> Vector(R)          ?.? : (%,Integer) -> R
---R flexible? : () -> Boolean             hash : % -> SingleInteger
---R jacobiIdentity? : () -> Boolean       jordanAdmissible? : () -> Boolean
---R jordanAlgebra? : () -> Boolean        latex : % -> String
---R leftAlternative? : () -> Boolean      leftDiscriminant : () -> R
---R leftDiscriminant : Vector(%) -> R     leftNorm : % -> R
---R leftTrace : % -> R                    leftTraceMatrix : () -> Matrix(R)
---R lieAdmissible? : () -> Boolean        lieAlgebra? : () -> Boolean
---R powerAssociative? : () -> Boolean     rank : () -> PositiveInteger
---R represents : Vector(R) -> %           rightAlternative? : () -> Boolean
---R rightDiscriminant : () -> R           rightNorm : % -> R
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R alternative? : () -> Boolean          antiAssociative? : () -> Boolean
+--R antiCommutative? : () -> Boolean      antiCommutator : (%,%) -> %
+--R apply : (Matrix(R),%) -> %            associative? : () -> Boolean
+--R associator : (%,%,%) -> %             basis : () -> Vector(%)
+--R coerce : % -> OutputForm              commutative? : () -> Boolean
+--R commutator : (%,%) -> %               convert : Vector(R) -> %
+--R convert : % -> Vector(R)              coordinates : % -> Vector(R)
+--R ?.? : (%,Integer) -> R                flexible? : () -> Boolean
+--R hash : % -> SingleInteger             jacobiIdentity? : () -> Boolean
+--R jordanAdmissible? : () -> Boolean     jordanAlgebra? : () -> Boolean
+--R latex : % -> String                   leftAlternative? : () -> Boolean
+--R leftDiscriminant : () -> R            leftDiscriminant : Vector(%) -> R
+--R leftNorm : % -> R                     leftTrace : % -> R
+--R leftTraceMatrix : () -> Matrix(R)     lieAdmissible? : () -> Boolean
+--R lieAlgebra? : () -> Boolean           powerAssociative? : () -> Boolean
+--R rank : () -> PositiveInteger          represents : Vector(R) -> %
+--R rightAlternative? : () -> Boolean     rightDiscriminant : () -> R
+--R rightDiscriminant : Vector(%) -> R    rightNorm : % -> R
 --R rightTrace : % -> R                   rightTraceMatrix : () -> Matrix(R)
 --R sample : () -> %                      someBasis : () -> Vector(%)
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
 --R associatorDependence : () -> List(Vector(R)) if R has INTDOM
 --R conditionsForIdempotents : () -> List(Polynomial(R))
 --R conditionsForIdempotents : Vector(%) -> List(Polynomial(R))
@@ -50898,7 +51218,6 @@ digraph pic {
 --R recip : % -> Union(%,"failed") if R has INTDOM
 --R represents : (Vector(R),Vector(%)) -> %
 --R rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
---R rightDiscriminant : Vector(%) -> R
 --R rightMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
 --R rightPower : (%,PositiveInteger) -> %
 --R rightRankPolynomial : () -> SparseUnivariatePolynomial(Polynomial(R)) if R has FIELD
@@ -51539,22 +51858,21 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
@@ -51823,6 +52141,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedIntegralDomain
+--R 
 --R OrderedIntegralDomain  is a category constructor
 --R Abbreviation for OrderedIntegralDomain is OINTDOM 
 --R This constructor is exposed in this frame.
@@ -51830,25 +52149,24 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> %
---R associates? : (%,%) -> Boolean        coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R max : (%,%) -> %                      min : (%,%) -> %
---R negative? : % -> Boolean              one? : % -> Boolean
---R positive? : % -> Boolean              recip : % -> Union(%,"failed")
---R sample : () -> %                      sign : % -> Integer
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> %                          associates? : (%,%) -> Boolean
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      negative? : % -> Boolean
+--R one? : % -> Boolean                   positive? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R sign : % -> Integer                   unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -52080,13 +52398,16 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
 --R coefficients : % -> List(R)           coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
+--R coerce : % -> % if R has INTDOM       coerce : Integer -> %
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
 --R degree : % -> E                       ground : % -> R
 --R ground? : % -> Boolean                hash : % -> SingleInteger
 --R latex : % -> String                   leadingCoefficient : % -> R
@@ -52099,17 +52420,11 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) or R has ALGEBRA(FRAC(INT))
---R coerce : % -> % if R has INTDOM
---R content : % -> R if R has GCDDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R numberOfMonomials : % -> NonNegativeInteger
@@ -52528,13 +52843,15 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,%) -> %
---R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R acos : % -> %                         acosh : % -> %
 --R acot : % -> %                         acoth : % -> %
 --R acsc : % -> %                         acsch : % -> %
@@ -52565,10 +52882,6 @@ digraph pic {
 --R tanh : % -> %                         unit? : % -> Boolean
 --R unitCanonical : % -> %                width : % -> R
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
@@ -52957,11 +53270,13 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coefficient : (%,Expon) -> Coef
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coefficient : (%,Expon) -> Coef       coerce : % -> % if Coef has INTDOM
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R complete : % -> %                     degree : % -> Expon
 --R hash : % -> SingleInteger             latex : % -> String
@@ -52974,15 +53289,11 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Coef) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if Coef has INTDOM
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coerce : Coef -> % if Coef has COMRING
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R exquo : (%,%) -> Union(%,"failed") if Coef has INTDOM
 --R monomial : (%,List(Var),List(Expon)) -> %
@@ -53299,22 +53610,21 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -53550,24 +53860,23 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R one? : % -> Boolean                   prime? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      one? : % -> Boolean
+--R prime? : % -> Boolean                 recip : % -> Union(%,"failed")
+--R sample : () -> %                      squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
@@ -53817,23 +54126,23 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,S) -> %                ?*? : (Integer,%) -> %
 --R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (S,%) -> Integer        coerce : S -> %
---R coerce : % -> OutputForm              collect : % -> %
---R concat : (%,%) -> %                   degree : % -> Integer
---R divOfPole : % -> %                    divOfZero : % -> %
---R effective? : % -> Boolean             hash : % -> SingleInteger
---R incr : % -> %                         latex : % -> String
---R mapGen : ((S -> S),%) -> %            nthCoef : (%,Integer) -> Integer
---R nthFactor : (%,Integer) -> S          retract : % -> S
---R sample : () -> %                      size : % -> NonNegativeInteger
---R split : % -> List(%)                  supp : % -> List(S)
---R suppOfPole : % -> List(S)             suppOfZero : % -> List(S)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (S,%) -> Integer
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R collect : % -> %                      concat : (%,%) -> %
+--R degree : % -> Integer                 divOfPole : % -> %
+--R divOfZero : % -> %                    effective? : % -> Boolean
+--R hash : % -> SingleInteger             incr : % -> %
+--R latex : % -> String                   mapGen : ((S -> S),%) -> %
+--R nthCoef : (%,Integer) -> Integer      nthFactor : (%,Integer) -> S
+--R retract : % -> S                      sample : () -> %
+--R size : % -> NonNegativeInteger        split : % -> List(%)
+--R supp : % -> List(S)                   suppOfPole : % -> List(S)
+--R suppOfZero : % -> List(S)             zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R highCommonTerms : (%,%) -> % if Integer has OAMON
 --R mapCoef : ((Integer -> Integer),%) -> %
 --R retractIfCan : % -> Union(S,"failed")
@@ -54074,24 +54383,22 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      one? : % -> Boolean
---R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    sample : () -> %
---R sizeLess? : (%,%) -> Boolean          unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R one? : % -> Boolean                   ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
 --R euclideanSize : % -> NonNegativeInteger
@@ -54486,32 +54793,34 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,Coef) -> %                   ?*? : (Coef,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R D : (%,List(Var)) -> %                D : (%,Var) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
---R differentiate : (%,Var) -> %          eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           eval : (%,Var,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R leadingCoefficient : % -> Coef        leadingMonomial : % -> %
---R map : ((Coef -> Coef),%) -> %         monomial? : % -> Boolean
---R one? : % -> Boolean                   pole? : % -> Boolean
---R recip : % -> Union(%,"failed")        reductum : % -> %
---R sample : () -> %                      variables : % -> List(Var)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R degree : % -> IndexedExponents(Var)   differentiate : (%,List(Var)) -> %
+--R differentiate : (%,Var) -> %          eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     eval : (%,List(Var),List(%)) -> %
+--R eval : (%,Var,%) -> %                 hash : % -> SingleInteger
+--R latex : % -> String                   leadingCoefficient : % -> Coef
+--R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
+--R monomial? : % -> Boolean              one? : % -> Boolean
+--R pole? : % -> Boolean                  recip : % -> Union(%,"failed")
+--R reductum : % -> %                     sample : () -> %
+--R variables : % -> List(Var)            zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : (%,List(Var),List(NonNegativeInteger)) -> %
 --R D : (%,Var,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -54531,7 +54840,6 @@ digraph pic {
 --R coefficient : (%,Var,NonNegativeInteger) -> %
 --R coefficient : (%,IndexedExponents(Var)) -> Coef
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Coef -> % if Coef has COMRING
 --R cos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R cosh : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -54539,13 +54847,8 @@ digraph pic {
 --R coth : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R csc : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R csch : % -> % if Coef has ALGEBRA(FRAC(INT))
---R degree : % -> IndexedExponents(Var)
 --R differentiate : (%,List(Var),List(NonNegativeInteger)) -> %
 --R differentiate : (%,Var,NonNegativeInteger) -> %
---R differentiate : (%,List(Var)) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
---R eval : (%,List(Var),List(%)) -> %
 --R exp : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R exquo : (%,%) -> Union(%,"failed") if Coef has INTDOM
 --R extend : (%,NonNegativeInteger) -> %
@@ -54956,24 +55259,23 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R one? : % -> Boolean                   prime? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      one? : % -> Boolean
+--R prime? : % -> Boolean                 recip : % -> Union(%,"failed")
+--R sample : () -> %                      squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if $ has CHARNZ
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ
@@ -55293,12 +55595,14 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
---R coefficient : (%,Expon) -> Coef       coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coefficient : (%,Expon) -> Coef
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
 --R degree : % -> Expon                   ?.? : (%,Expon) -> Coef
 --R extend : (%,Expon) -> %               hash : % -> SingleInteger
@@ -55313,8 +55617,6 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Expon,Coef) -> Coef
 --R D : (%,NonNegativeInteger) -> % if Coef has *: (Expon,Coef) -> Coef
@@ -55322,13 +55624,11 @@ digraph pic {
 --R D : (%,List(Symbol)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Expon,Coef) -> Coef
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Expon,Coef) -> Coef
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Expon,Coef) -> Coef
---R ?^? : (%,NonNegativeInteger) -> %
 --R approximate : (%,Expon) -> Coef if Coef has **: (Coef,Expon) -> Coef and Coef has coerce: Symbol -> Coef
 --R associates? : (%,%) -> Boolean if Coef has INTDOM
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coerce : Coef -> % if Coef has COMRING
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R differentiate : % -> % if Coef has *: (Expon,Coef) -> Coef
 --R differentiate : (%,NonNegativeInteger) -> % if Coef has *: (Expon,Coef) -> Coef
@@ -55790,28 +56090,27 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
 --R euclideanSize : % -> NonNegativeInteger
@@ -56128,32 +56427,34 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R D : % -> %                            D : (%,NonNegativeInteger) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> %
---R addmod : (%,%,%) -> %                 associates? : (%,%) -> Boolean
---R base : () -> %                        binomial : (%,%) -> %
---R bit? : (%,%) -> Boolean               coerce : Integer -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              convert : % -> DoubleFloat
---R convert : % -> Float                  convert : % -> Pattern(Integer)
---R convert : % -> InputForm              convert : % -> Integer
---R copy : % -> %                         dec : % -> %
---R differentiate : % -> %                even? : % -> Boolean
---R factor : % -> Factored(%)             factorial : % -> %
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> %                         hash : % -> SingleInteger
---R inc : % -> %                          init : () -> %
---R invmod : (%,%) -> %                   latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R length : % -> %                       mask : % -> %
---R max : (%,%) -> %                      min : (%,%) -> %
---R mulmod : (%,%,%) -> %                 negative? : % -> Boolean
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> %                          addmod : (%,%,%) -> %
+--R associates? : (%,%) -> Boolean        base : () -> %
+--R binomial : (%,%) -> %                 bit? : (%,%) -> Boolean
+--R coerce : Integer -> %                 coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R convert : % -> DoubleFloat            convert : % -> Float
+--R convert : % -> Pattern(Integer)       convert : % -> InputForm
+--R convert : % -> Integer                copy : % -> %
+--R dec : % -> %                          differentiate : % -> %
+--R even? : % -> Boolean                  factor : % -> Factored(%)
+--R factorial : % -> %                    gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> %
+--R hash : % -> SingleInteger             inc : % -> %
+--R init : () -> %                        invmod : (%,%) -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      length : % -> %
+--R mask : % -> %                         max : (%,%) -> %
+--R min : (%,%) -> %                      mulmod : (%,%,%) -> %
+--R negative? : % -> Boolean              nextItem : % -> Union(%,"failed")
 --R odd? : % -> Boolean                   one? : % -> Boolean
 --R permutation : (%,%) -> %              positive? : % -> Boolean
 --R positiveRemainder : (%,%) -> %        powmod : (%,%,%) -> %
@@ -56168,9 +56469,6 @@ digraph pic {
 --R symmetricRemainder : (%,%) -> %       unit? : % -> Boolean
 --R unitCanonical : % -> %                zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R differentiate : (%,NonNegativeInteger) -> %
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
@@ -56182,7 +56480,6 @@ digraph pic {
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
---R nextItem : % -> Union(%,"failed")
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%)
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
 --R rationalIfCan : % -> Union(Fraction(Integer),"failed")
@@ -56744,57 +57041,54 @@ digraph pic {
 --R ?*? : (%,K) -> %                      ?*? : (K,%) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?/? : (%,K) -> % if K has FIELD       ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R associates? : (%,%) -> Boolean        center : % -> K
 --R coefOfFirstNonZeroTerm : % -> K       coefficient : (%,Integer) -> K
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R complete : % -> %                     degree : % -> Integer
---R delay : (() -> %) -> %                ?.? : (%,Integer) -> K
---R extend : (%,Integer) -> %             factor : % -> Factored(%)
---R filterUpTo : (%,Integer) -> %         findCoef : (%,Integer) -> K
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      leadingCoefficient : % -> K
---R leadingMonomial : % -> %              map : ((K -> K),%) -> %
---R monomial : (K,Integer) -> %           monomial? : % -> Boolean
---R one? : % -> Boolean                   order : % -> Integer
---R order : % -> Integer                  order : (%,Integer) -> Integer
---R pole? : % -> Boolean                  posExpnPart : % -> %
---R prime? : % -> Boolean                 printInfo : () -> Boolean
---R printInfo : Boolean -> Boolean        ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        reductum : % -> %
---R ?rem? : (%,%) -> %                    removeFirstZeroes : % -> %
---R removeZeroes : % -> %                 removeZeroes : (Integer,%) -> %
---R sample : () -> %                      sbt : (%,%) -> %
---R series : (Integer,K,%) -> %           shift : (%,Integer) -> %
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               truncate : (%,Integer) -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R variable : % -> Symbol                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,K) -> % if K has FIELD
+--R coerce : K -> % if K has COMRING      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              complete : % -> %
+--R degree : % -> Integer                 delay : (() -> %) -> %
+--R ?.? : (%,Integer) -> K                extend : (%,Integer) -> %
+--R factor : % -> Factored(%)             filterUpTo : (%,Integer) -> %
+--R findCoef : (%,Integer) -> K           gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R leadingCoefficient : % -> K           leadingMonomial : % -> %
+--R map : ((K -> K),%) -> %               monomial : (K,Integer) -> %
+--R monomial? : % -> Boolean              one? : % -> Boolean
+--R order : % -> Integer                  order : % -> Integer
+--R order : (%,Integer) -> Integer        pole? : % -> Boolean
+--R posExpnPart : % -> %                  prime? : % -> Boolean
+--R printInfo : () -> Boolean             printInfo : Boolean -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R reductum : % -> %                     ?rem? : (%,%) -> %
+--R removeFirstZeroes : % -> %            removeZeroes : % -> %
+--R removeZeroes : (Integer,%) -> %       sample : () -> %
+--R sbt : (%,%) -> %                      series : (Integer,K,%) -> %
+--R shift : (%,Integer) -> %              sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R truncate : (%,Integer) -> %           unit? : % -> Boolean
+--R unitCanonical : % -> %                variable : % -> Symbol
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R D : (%,Symbol,NonNegativeInteger) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R D : (%,List(Symbol)) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R D : (%,Symbol) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R D : (%,NonNegativeInteger) -> % if K has *: (Integer,K) -> K
 --R D : % -> % if K has *: (Integer,K) -> K
---R ?^? : (%,NonNegativeInteger) -> %
 --R approximate : (%,Integer) -> K if K has **: (K,Integer) -> K and K has coerce: Symbol -> K
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if K has CHARNZ
 --R coerce : % -> Stream(Record(k: Integer,c: K))
 --R coerce : Stream(Record(k: Integer,c: K)) -> %
---R coerce : K -> % if K has COMRING
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
 --R differentiate : (%,List(Symbol)) -> % if K has PDRING(SYMBOL) and K has *: (Integer,K) -> K
@@ -57212,28 +57506,26 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              complete : % -> %
---R digits : % -> Stream(Integer)         extend : (%,Integer) -> %
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R moduloP : % -> Integer                modulus : () -> Integer
---R one? : % -> Boolean                   order : % -> NonNegativeInteger
---R ?quo? : (%,%) -> %                    quotientByP : % -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R sqrt : (%,Integer) -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complete : % -> %                     digits : % -> Stream(Integer)
+--R extend : (%,Integer) -> %             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      moduloP : % -> Integer
+--R modulus : () -> Integer               one? : % -> Boolean
+--R order : % -> NonNegativeInteger       ?quo? : (%,%) -> %
+--R quotientByP : % -> %                  recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          sqrt : (%,Integer) -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R approximate : (%,Integer) -> Integer
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
@@ -57534,41 +57826,44 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,List(VarSet)) -> %             D : (%,VarSet) -> %
---R 1 : () -> %                           0 : () -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,List(VarSet)) -> %
+--R D : (%,VarSet) -> %                   1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
---R coefficients : % -> List(R)           coerce : VarSet -> %
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              degree : % -> E
+--R coefficients : % -> List(R)           coerce : % -> % if R has INTDOM
+--R coerce : VarSet -> %                  coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R content : % -> R if R has GCDDOM      degree : % -> E
 --R differentiate : (%,VarSet) -> %       eval : (%,VarSet,%) -> %
---R eval : (%,VarSet,R) -> %              eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           ground : % -> R
+--R eval : (%,VarSet,R) -> %              eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
 --R ground? : % -> Boolean                hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> R
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leadingCoefficient : % -> R
 --R leadingMonomial : % -> %              map : ((R -> R),%) -> %
---R mapExponents : ((E -> E),%) -> %      minimumDegree : % -> E
+--R mapExponents : ((E -> E),%) -> %      max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      minimumDegree : % -> E
 --R monomial : (R,E) -> %                 monomial? : % -> Boolean
 --R monomials : % -> List(%)              one? : % -> Boolean
---R pomopo! : (%,R,E,%) -> %              recip : % -> Union(%,"failed")
---R reductum : % -> %                     retract : % -> VarSet
---R retract : % -> R                      sample : () -> %
---R variables : % -> List(VarSet)         zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R pomopo! : (%,R,E,%) -> %              primitiveMonomials : % -> List(%)
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R retract : % -> VarSet                 retract : % -> R
+--R sample : () -> %                      variables : % -> List(VarSet)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
 --R ?>=? : (%,%) -> Boolean if R has ORDSET
 --R D : (%,List(VarSet),List(NonNegativeInteger)) -> %
 --R D : (%,VarSet,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
@@ -57576,10 +57871,8 @@ digraph pic {
 --R coefficient : (%,List(VarSet),List(NonNegativeInteger)) -> %
 --R coefficient : (%,VarSet,NonNegativeInteger) -> %
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) or R has ALGEBRA(FRAC(INT))
---R coerce : % -> % if R has INTDOM
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit))
 --R content : (%,VarSet) -> % if R has GCDDOM
---R content : % -> R if R has GCDDOM
 --R convert : % -> InputForm if VarSet has KONVERT(INFORM) and R has KONVERT(INFORM)
 --R convert : % -> Pattern(Integer) if VarSet has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
 --R convert : % -> Pattern(Float) if VarSet has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
@@ -57591,25 +57884,17 @@ digraph pic {
 --R discriminant : (%,VarSet) -> % if R has COMRING
 --R eval : (%,List(VarSet),List(%)) -> %
 --R eval : (%,List(VarSet),List(R)) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R factor : % -> Factored(%) if R has PFECAT
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
---R gcd : (%,%) -> % if R has GCDDOM
---R gcd : List(%) -> % if R has GCDDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
 --R isExpt : % -> Union(Record(var: VarSet,exponent: NonNegativeInteger),"failed")
 --R isPlus : % -> Union(List(%),"failed")
 --R isTimes : % -> Union(List(%),"failed")
---R lcm : (%,%) -> % if R has GCDDOM
---R lcm : List(%) -> % if R has GCDDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(VarSet,"failed")
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimumDegree : (%,List(VarSet)) -> List(NonNegativeInteger)
 --R minimumDegree : (%,VarSet) -> NonNegativeInteger
 --R monicDivide : (%,%,VarSet) -> Record(quotient: %,remainder: %)
@@ -57621,7 +57906,6 @@ digraph pic {
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if VarSet has PATMAB(INT) and R has PATMAB(INT)
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if VarSet has PATMAB(FLOAT) and R has PATMAB(FLOAT)
 --R prime? : % -> Boolean if R has PFECAT
---R primitiveMonomials : % -> List(%)
 --R primitivePart : (%,VarSet) -> % if R has GCDDOM
 --R primitivePart : % -> % if R has GCDDOM
 --R reducedSystem : Matrix(%) -> Matrix(R)
@@ -58593,12 +58877,14 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
---R coefficients : % -> Stream(Coef)      coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coefficients : % -> Stream(Coef)
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
 --R degree : % -> NonNegativeInteger      hash : % -> SingleInteger
 --R latex : % -> String                   leadingCoefficient : % -> Coef
@@ -58611,11 +58897,9 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Coef) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
 --R D : (%,NonNegativeInteger) -> % if Coef has *: (NonNegativeInteger,Coef) -> Coef
@@ -58623,7 +58907,6 @@ digraph pic {
 --R D : (%,List(Symbol)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (NonNegativeInteger,Coef) -> Coef
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has PDRING(SYMBOL) and Coef has *: (NonNegativeInteger,Coef) -> Coef
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (NonNegativeInteger,Coef) -> Coef
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -58642,7 +58925,6 @@ digraph pic {
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coefficient : (%,NonNegativeInteger) -> Coef
 --R coerce : Coef -> % if Coef has COMRING
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R cos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R cosh : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -59365,7 +59647,7 @@ digraph pic {
 )set message auto off
 )clear all
 
---S 1 of 14
+--S 1 of 15
 pi:Polynomial(Integer):=-3*x^3+2*x+13
 --R 
 --R
@@ -59374,7 +59656,7 @@ pi:Polynomial(Integer):=-3*x^3+2*x+13
 --R                                                    Type: Polynomial(Integer)
 --E 1
 
---S 2 of 14
+--S 2 of 15
 rootOf(pi)
 --R 
 --R
@@ -59382,7 +59664,7 @@ rootOf(pi)
 --R                                                        Type: AlgebraicNumber
 --E 2
 
---S 3 of 14
+--S 3 of 15
 rootsOf(pi)
 --R 
 --R
@@ -59390,7 +59672,7 @@ rootsOf(pi)
 --R                                                  Type: List(AlgebraicNumber)
 --E 3
 
---S 4 of 14
+--S 4 of 15
 zeroOf(pi)
 --R 
 --R
@@ -59398,7 +59680,7 @@ zeroOf(pi)
 --R                                                        Type: AlgebraicNumber
 --E 4
 
---S 5 of 14
+--S 5 of 15
 zerosOf(pi)
 --R 
 --R
@@ -59410,7 +59692,7 @@ zerosOf(pi)
 --R                                                  Type: List(AlgebraicNumber)
 --E 5
 
---S 6 of 14
+--S 6 of 15
 sup:SparseUnivariatePolynomial(Integer):=-3*x^3+2*x+13
 --R 
 --R
@@ -59419,7 +59701,7 @@ sup:SparseUnivariatePolynomial(Integer):=-3*x^3+2*x+13
 --R                                    Type: SparseUnivariatePolynomial(Integer)
 --E 6
 
---S 7 of 14
+--S 7 of 15
 rootOf(sup)
 --R 
 --R
@@ -59427,7 +59709,7 @@ rootOf(sup)
 --R                                                        Type: AlgebraicNumber
 --E 7
 
---S 8 of 14
+--S 8 of 15
 rootOf(sup,x)
 --R 
 --R
@@ -59435,7 +59717,7 @@ rootOf(sup,x)
 --R                                                        Type: AlgebraicNumber
 --E 8
 
---S 9 of 14
+--S 9 of 15
 rootsOf(sup)
 --R 
 --R
@@ -59443,7 +59725,7 @@ rootsOf(sup)
 --R                                                  Type: List(AlgebraicNumber)
 --E 9
 
---S 10 of 14
+--S 10 of 15
 rootsOf(sup,x)
 --R 
 --R
@@ -59451,7 +59733,7 @@ rootsOf(sup,x)
 --R                                                  Type: List(AlgebraicNumber)
 --E 10
 
---S 11 of 14
+--S 11 of 15
 zeroOf(sup)
 --R 
 --R
@@ -59459,7 +59741,7 @@ zeroOf(sup)
 --R                                                        Type: AlgebraicNumber
 --E 11
 
---S 12 of 14
+--S 12 of 15
 zeroOf(sup,x)
 --R 
 --R
@@ -59467,7 +59749,7 @@ zeroOf(sup,x)
 --R                                                        Type: AlgebraicNumber
 --E 12
 
---S 13 of 14
+--S 13 of 15
 zerosOf(sup)
 --R 
 --R
@@ -59479,7 +59761,7 @@ zerosOf(sup)
 --R                                                  Type: List(AlgebraicNumber)
 --E 13
 
---S 14 of 14
+--S 14 of 15
 zerosOf(sup,x)
 --R 
 --R
@@ -59491,6 +59773,65 @@ zerosOf(sup,x)
 --R                                                  Type: List(AlgebraicNumber)
 --E 14
 
+--S 15 of 15
+)show AlgebraicallyClosedField
+--R 
+--R AlgebraicallyClosedField  is a category constructor
+--R Abbreviation for AlgebraicallyClosedField is ACF 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for ACF 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              factor : % -> Factored(%)
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      nthRoot : (%,Integer) -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    rootOf : Polynomial(%) -> %
+--R rootsOf : Polynomial(%) -> List(%)    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          sqrt : % -> %
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  zeroOf : Polynomial(%) -> %
+--R zerosOf : Polynomial(%) -> List(%)    ?~=? : (%,%) -> Boolean
+--R characteristic : () -> NonNegativeInteger
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R euclideanSize : % -> NonNegativeInteger
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R rootOf : (SparseUnivariatePolynomial(%),Symbol) -> %
+--R rootOf : SparseUnivariatePolynomial(%) -> %
+--R rootsOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
+--R rootsOf : SparseUnivariatePolynomial(%) -> List(%)
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R zeroOf : (SparseUnivariatePolynomial(%),Symbol) -> %
+--R zeroOf : SparseUnivariatePolynomial(%) -> %
+--R zerosOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
+--R zerosOf : SparseUnivariatePolynomial(%) -> List(%)
+--R
+--E 15
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -60027,30 +60368,39 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,(R -> R)) -> %
+--R D : % -> % if R has DIFRING           D : (%,V,NonNegativeInteger) -> %
 --R D : (%,List(V)) -> %                  D : (%,V) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
---R coefficients : % -> List(R)           coerce : S -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coefficient : (%,E) -> R              coefficients : % -> List(R)
+--R coerce : % -> % if R has INTDOM       coerce : S -> %
 --R coerce : V -> %                       coerce : R -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
---R degree : % -> E                       differentiate : (%,List(V)) -> %
+--R content : % -> R if R has GCDDOM      degree : % -> E
+--R differentiate : (%,(R -> R)) -> %     differentiate : (%,List(V)) -> %
 --R differentiate : (%,V) -> %            eval : (%,List(V),List(%)) -> %
 --R eval : (%,V,%) -> %                   eval : (%,List(V),List(R)) -> %
---R eval : (%,V,R) -> %                   eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           ground : % -> R
+--R eval : (%,V,R) -> %                   eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
 --R ground? : % -> Boolean                hash : % -> SingleInteger
 --R initial : % -> %                      isobaric? : % -> Boolean
---R latex : % -> String                   leader : % -> V
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leader : % -> V
 --R leadingCoefficient : % -> R           leadingMonomial : % -> %
 --R map : ((R -> R),%) -> %               mapExponents : ((E -> E),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
 --R minimumDegree : % -> E                monomial : (R,E) -> %
 --R monomial? : % -> Boolean              monomials : % -> List(%)
 --R one? : % -> Boolean                   order : % -> NonNegativeInteger
---R pomopo! : (%,R,E,%) -> %              recip : % -> Union(%,"failed")
+--R order : (%,S) -> NonNegativeInteger   pomopo! : (%,R,E,%) -> %
+--R primitiveMonomials : % -> List(%)     recip : % -> Union(%,"failed")
 --R reductum : % -> %                     retract : % -> S
 --R retract : % -> V                      retract : % -> R
 --R sample : () -> %                      separant : % -> %
@@ -60058,9 +60408,6 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
@@ -60072,19 +60419,15 @@ digraph pic {
 --R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if R has DIFRING
 --R D : (%,List(V),List(NonNegativeInteger)) -> %
---R D : (%,V,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit)) or R has CHARNZ
 --R coefficient : (%,List(V),List(NonNegativeInteger)) -> %
 --R coefficient : (%,V,NonNegativeInteger) -> %
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) or R has ALGEBRA(FRAC(INT))
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit))
 --R content : (%,V) -> % if R has GCDDOM
---R content : % -> R if R has GCDDOM
 --R convert : % -> InputForm if V has KONVERT(INFORM) and R has KONVERT(INFORM)
 --R convert : % -> Pattern(Integer) if V has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
 --R convert : % -> Pattern(Float) if V has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
@@ -60092,7 +60435,6 @@ digraph pic {
 --R degree : (%,List(V)) -> List(NonNegativeInteger)
 --R degree : (%,V) -> NonNegativeInteger
 --R differentialVariables : % -> List(S)
---R differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
@@ -60107,27 +60449,19 @@ digraph pic {
 --R eval : (%,S,R) -> % if R has DIFRING
 --R eval : (%,List(S),List(%)) -> % if R has DIFRING
 --R eval : (%,S,%) -> % if R has DIFRING
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R factor : % -> Factored(%) if R has PFECAT
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
---R gcd : (%,%) -> % if R has GCDDOM
---R gcd : List(%) -> % if R has GCDDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
 --R isExpt : % -> Union(Record(var: V,exponent: NonNegativeInteger),"failed")
 --R isPlus : % -> Union(List(%),"failed")
 --R isTimes : % -> Union(List(%),"failed")
---R lcm : (%,%) -> % if R has GCDDOM
---R lcm : List(%) -> % if R has GCDDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(V,"failed")
 --R makeVariable : % -> (NonNegativeInteger -> %) if R has DIFRING
 --R makeVariable : S -> (NonNegativeInteger -> %)
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimumDegree : (%,List(V)) -> List(NonNegativeInteger)
 --R minimumDegree : (%,V) -> NonNegativeInteger
 --R monicDivide : (%,%,V) -> Record(quotient: %,remainder: %)
@@ -60136,11 +60470,9 @@ digraph pic {
 --R multivariate : (SparseUnivariatePolynomial(%),V) -> %
 --R multivariate : (SparseUnivariatePolynomial(R),V) -> %
 --R numberOfMonomials : % -> NonNegativeInteger
---R order : (%,S) -> NonNegativeInteger
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if V has PATMAB(INT) and R has PATMAB(INT)
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if V has PATMAB(FLOAT) and R has PATMAB(FLOAT)
 --R prime? : % -> Boolean if R has PFECAT
---R primitiveMonomials : % -> List(%)
 --R primitivePart : (%,V) -> % if R has GCDDOM
 --R primitivePart : % -> % if R has GCDDOM
 --R reducedSystem : Matrix(%) -> Matrix(R)
@@ -60932,29 +61264,27 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      one? : % -> Boolean
---R prime? : % -> Boolean                 primeFrobenius : % -> %
---R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    sample : () -> %
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R primeFrobenius : % -> %               ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed")
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed")
@@ -61251,11 +61581,13 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : R -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R characteristicPolynomial : % -> UP    coerce : R -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R discriminant : Vector(%) -> R         hash : % -> SingleInteger
 --R latex : % -> String                   norm : % -> R
@@ -61263,11 +61595,7 @@ digraph pic {
 --R recip : % -> Union(%,"failed")        sample : () -> %
 --R trace : % -> R                        zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
---R characteristicPolynomial : % -> UP
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
 --R coordinates : (%,Vector(%)) -> Vector(R)
@@ -61565,61 +61893,63 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for FS 
 --R
 --R------------------------------- Operations --------------------------------
---R -? : % -> % if R has ABELGRP          ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R ?*? : (%,%) -> % if R has SGROUP      ?*? : (%,R) -> % if R has COMRING
+--R ?*? : (R,%) -> % if R has COMRING     ?+? : (%,%) -> % if R has ABELSG
+--R -? : % -> % if R has ABELGRP          ?-? : (%,%) -> % if R has ABELGRP
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               D : (%,Symbol) -> % if R has RING
 --R 1 : () -> % if R has SGROUP           0 : () -> % if R has ABELSG
+--R applyQuote : (Symbol,List(%)) -> %    applyQuote : (Symbol,%,%,%) -> %
 --R applyQuote : (Symbol,%,%) -> %        applyQuote : (Symbol,%) -> %
 --R belong? : BasicOperator -> Boolean    box : List(%) -> %
---R box : % -> %                          coerce : R -> %
---R coerce : Symbol -> %                  coerce : Kernel(%) -> %
---R coerce : % -> OutputForm              distribute : (%,%) -> %
---R distribute : % -> %                   elt : (BasicOperator,%,%) -> %
---R elt : (BasicOperator,%) -> %          eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           eval : (%,Kernel(%),%) -> %
+--R box : % -> %                          coerce : % -> % if R has INTDOM
+--R coerce : R -> %                       coerce : Symbol -> %
+--R coerce : Kernel(%) -> %               coerce : % -> OutputForm
+--R distribute : (%,%) -> %               distribute : % -> %
+--R elt : (BasicOperator,List(%)) -> %    elt : (BasicOperator,%,%,%) -> %
+--R elt : (BasicOperator,%,%) -> %        elt : (BasicOperator,%) -> %
+--R eval : (%,Symbol,(% -> %)) -> %       eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     eval : (%,Kernel(%),%) -> %
 --R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
+--R gcd : (%,%) -> % if R has INTDOM      gcd : List(%) -> % if R has INTDOM
 --R ground : % -> R                       ground? : % -> Boolean
 --R hash : % -> SingleInteger             height : % -> NonNegativeInteger
---R is? : (%,Symbol) -> Boolean           kernel : (BasicOperator,%) -> %
---R kernels : % -> List(Kernel(%))        latex : % -> String
+--R is? : (%,Symbol) -> Boolean           is? : (%,BasicOperator) -> Boolean
+--R kernel : (BasicOperator,%) -> %       kernels : % -> List(Kernel(%))
+--R latex : % -> String                   lcm : (%,%) -> % if R has INTDOM
+--R lcm : List(%) -> % if R has INTDOM    map : ((% -> %),Kernel(%)) -> %
 --R max : (%,%) -> %                      min : (%,%) -> %
+--R numerator : % -> % if R has RING      one? : % -> Boolean if R has SGROUP
 --R paren : List(%) -> %                  paren : % -> %
 --R retract : % -> R                      retract : % -> Symbol
 --R retract : % -> Kernel(%)              subst : (%,Equation(%)) -> %
 --R tower : % -> List(Kernel(%))          variables : % -> List(Symbol)
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (%,%) -> % if R has SGROUP
 --R ?*? : (PositiveInteger,%) -> % if R has ABELSG
 --R ?*? : (NonNegativeInteger,%) -> % if R has ABELSG
 --R ?*? : (Integer,%) -> % if R has ABELGRP
---R ?*? : (%,R) -> % if R has COMRING
---R ?*? : (R,%) -> % if R has COMRING
 --R ?*? : (%,Fraction(Integer)) -> % if R has INTDOM
 --R ?*? : (Fraction(Integer),%) -> % if R has INTDOM
 --R ?**? : (%,PositiveInteger) -> % if R has SGROUP
 --R ?**? : (%,NonNegativeInteger) -> % if R has SGROUP
 --R ?**? : (%,Integer) -> % if R has GROUP or R has INTDOM
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has ABELGRP
 --R ?/? : (%,%) -> % if R has GROUP or R has INTDOM
 --R ?/? : (SparseMultivariatePolynomial(R,Kernel(%)),SparseMultivariatePolynomial(R,Kernel(%))) -> % if R has INTDOM
---R D : (%,Symbol) -> % if R has RING
 --R D : (%,List(Symbol)) -> % if R has RING
 --R D : (%,Symbol,NonNegativeInteger) -> % if R has RING
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has RING
 --R ?^? : (%,PositiveInteger) -> % if R has SGROUP
 --R ?^? : (%,NonNegativeInteger) -> % if R has SGROUP
 --R ?^? : (%,Integer) -> % if R has GROUP or R has INTDOM
---R applyQuote : (Symbol,List(%)) -> %
 --R applyQuote : (Symbol,%,%,%,%) -> %
---R applyQuote : (Symbol,%,%,%) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R characteristic : () -> NonNegativeInteger if R has RING
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : Integer -> % if R has RING or R has RETRACT(INT)
 --R coerce : Fraction(Integer) -> % if R has INTDOM or R has RETRACT(INT) and R has INTDOM or R has RETRACT(FRAC(INT))
 --R coerce : Polynomial(R) -> % if R has RING
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Polynomial(R)) -> % if R has INTDOM
 --R coerce : Fraction(Polynomial(Fraction(R))) -> % if R has INTDOM
 --R coerce : Polynomial(Fraction(R)) -> % if R has INTDOM
@@ -61639,9 +61969,7 @@ digraph pic {
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has RING
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has RING
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if R has INTDOM
---R elt : (BasicOperator,List(%)) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,%,%,%) -> %
 --R euclideanSize : % -> NonNegativeInteger if R has INTDOM
 --R eval : (%,Symbol,NonNegativeInteger,(% -> %)) -> % if R has RING
 --R eval : (%,Symbol,NonNegativeInteger,(List(%) -> %)) -> % if R has RING
@@ -61656,12 +61984,9 @@ digraph pic {
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R eval : (%,List(Kernel(%)),List(%)) -> %
 --R even? : % -> Boolean if $ has RETRACT(INT)
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has INTDOM
@@ -61669,11 +61994,8 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) if R has INTDOM
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") if R has INTDOM
 --R factor : % -> Factored(%) if R has INTDOM
---R gcd : (%,%) -> % if R has INTDOM
---R gcd : List(%) -> % if R has INTDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has INTDOM
 --R inv : % -> % if R has GROUP or R has INTDOM
---R is? : (%,BasicOperator) -> Boolean
 --R isExpt : (%,Symbol) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
 --R isExpt : (%,BasicOperator) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
 --R isExpt : % -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has SGROUP
@@ -61682,17 +62004,12 @@ digraph pic {
 --R isPower : % -> Union(Record(val: %,exponent: Integer),"failed") if R has RING
 --R isTimes : % -> Union(List(%),"failed") if R has SGROUP
 --R kernel : (BasicOperator,List(%)) -> %
---R lcm : (%,%) -> % if R has INTDOM
---R lcm : List(%) -> % if R has INTDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has INTDOM
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has INTDOM
 --R numer : % -> SparseMultivariatePolynomial(R,Kernel(%)) if R has RING
---R numerator : % -> % if R has RING
 --R odd? : % -> Boolean if $ has RETRACT(INT)
---R one? : % -> Boolean if R has SGROUP
 --R operator : BasicOperator -> BasicOperator
 --R operators : % -> List(BasicOperator)
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if R has PATMAB(FLOAT)
@@ -63018,6 +63335,7 @@ digraph pic {
 
 --S 1 of 1
 )show InfinitlyClosePointCategory
+--R 
 --I InfinitlyClosePointCategory(K: Field,
 --I symb: List Symbol,
 --I PolyRing: PolynomialCategory(t#1,t#4,OrderedVariableList t#2),
@@ -63285,32 +63603,31 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              conjugate : % -> %
---R extDegree : % -> PositiveInteger      factor : % -> Factored(%)
---R fullOutput : % -> OutputForm          gcd : List(%) -> %
---R gcd : (%,%) -> %                      ground? : % -> Boolean
---R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      maxTower : List(%) -> %
---R one? : % -> Boolean                   previousTower : % -> %
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      setTower! : % -> Void
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                vectorise : (%,%) -> Vector(%)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R conjugate : % -> %                    extDegree : % -> PositiveInteger
+--R factor : % -> Factored(%)             fullOutput : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R maxTower : List(%) -> %               one? : % -> Boolean
+--R previousTower : % -> %                prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R setTower! : % -> Void                 sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R definingPolynomial : % -> SparseUnivariatePolynomial(%)
 --R definingPolynomial : () -> SparseUnivariatePolynomial(%)
@@ -63664,24 +63981,28 @@ digraph pic {
 --R ?*? : (%,S) -> %                      ?*? : (S,%) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (S,S) -> %                      ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : (%,(S -> S)) -> %
 --R D : % -> % if S has DIFRING           1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> % if S has OINTDOM         associates? : (%,%) -> Boolean
 --R ceiling : % -> S if S has INS         coerce : S -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
---R denom : % -> S                        denominator : % -> %
+--R convert : % -> Float if S has REAL    denom : % -> S
+--R denominator : % -> %                  differentiate : (%,(S -> S)) -> %
 --R factor : % -> Factored(%)             floor : % -> S if S has INS
 --R gcd : List(%) -> %                    gcd : (%,%) -> %
 --R hash : % -> SingleInteger             init : () -> % if S has STEP
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
---R map : ((S -> S),%) -> %               numer : % -> S
+--R map : ((S -> S),%) -> %               max : (%,%) -> % if S has ORDSET
+--R min : (%,%) -> % if S has ORDSET      numer : % -> S
 --R numerator : % -> %                    one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
 --R random : () -> % if S has INS         recip : % -> Union(%,"failed")
@@ -63689,9 +64010,8 @@ digraph pic {
 --R sample : () -> %                      sizeLess? : (%,%) -> Boolean
 --R squareFree : % -> Factored(%)         squareFreePart : % -> %
 --R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R wholePart : % -> S if S has EUCDOM    zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
 --R ?>? : (%,%) -> Boolean if S has ORDSET
@@ -63702,18 +64022,14 @@ digraph pic {
 --R D : (%,List(Symbol)) -> % if S has PDRING(SYMBOL)
 --R D : (%,Symbol) -> % if S has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if S has DIFRING
---R ?^? : (%,NonNegativeInteger) -> %
---R abs : % -> % if S has OINTDOM
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if S has CHARNZ or and(has($,CharacteristicNonZero),has(S,PolynomialFactorizationExplicit))
 --R coerce : Symbol -> % if S has RETRACT(SYMBOL)
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if and(has($,CharacteristicNonZero),has(S,PolynomialFactorizationExplicit))
 --R convert : % -> DoubleFloat if S has REAL
---R convert : % -> Float if S has REAL
 --R convert : % -> InputForm if S has KONVERT(INFORM)
 --R convert : % -> Pattern(Float) if S has KONVERT(PATTERN(FLOAT))
 --R convert : % -> Pattern(Integer) if S has KONVERT(PATTERN(INT))
---R differentiate : (%,(S -> S)) -> %
 --R differentiate : (%,(S -> S),NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if S has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if S has PDRING(SYMBOL)
@@ -63739,8 +64055,6 @@ digraph pic {
 --R fractionPart : % -> % if S has EUCDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
---R max : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R negative? : % -> Boolean if S has OINTDOM
 --R nextItem : % -> Union(%,"failed") if S has STEP
@@ -63764,7 +64078,6 @@ digraph pic {
 --R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if S has PFECAT
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
---R wholePart : % -> S if S has EUCDOM
 --R
 --E 1
 
@@ -64366,14 +64679,16 @@ digraph pic {
 --R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
 --R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R abs : % -> %                          associates? : (%,%) -> Boolean
 --R coerce : Fraction(Integer) -> %       coerce : Integer -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
@@ -64391,14 +64706,11 @@ digraph pic {
 --R rename! : (%,OutputForm) -> %         retract : % -> Fraction(Integer)
 --R sample : () -> %                      sign : % -> Integer
 --R sizeLess? : (%,%) -> Boolean          sqrt : Integer -> %
---R sqrt : Fraction(Integer) -> %         sqrt : % -> %
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R sqrt : Fraction(Integer) -> %         sqrt : (%,NonNegativeInteger) -> %
+--R sqrt : % -> %                         squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R allRootsOf : Polynomial(Integer) -> List(%)
 --R allRootsOf : Polynomial(Fraction(Integer)) -> List(%)
 --R allRootsOf : Polynomial(%) -> List(%)
@@ -64427,7 +64739,6 @@ digraph pic {
 --R retractIfCan : % -> Union(Integer,"failed") if Fraction(Integer) has RETRACT(INT)
 --R rootOf : (SparseUnivariatePolynomial(%),PositiveInteger) -> Union(%,"failed")
 --R rootOf : (SparseUnivariatePolynomial(%),PositiveInteger,OutputForm) -> Union(%,"failed")
---R sqrt : (%,NonNegativeInteger) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
 --R
@@ -64915,14 +65226,16 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R abs : % -> %                          associates? : (%,%) -> Boolean
 --R ceiling : % -> %                      coerce : Fraction(Integer) -> %
 --R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
@@ -64947,10 +65260,6 @@ digraph pic {
 --R truncate : % -> %                     unit? : % -> Boolean
 --R unitCanonical : % -> %                wholePart : % -> Integer
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
 --R euclideanSize : % -> NonNegativeInteger
@@ -65351,20 +65660,26 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,V,NonNegativeInteger) -> %
 --R D : (%,List(V)) -> %                  D : (%,V) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
---R coefficients : % -> List(R)           coerce : V -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coefficient : (%,E) -> R              coefficients : % -> List(R)
+--R coerce : % -> % if R has INTDOM       coerce : V -> %
 --R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              deepestInitial : % -> %
---R deepestTail : % -> %                  degree : % -> E
---R differentiate : (%,List(V)) -> %      differentiate : (%,V) -> %
---R eval : (%,List(V),List(%)) -> %       eval : (%,V,%) -> %
---R eval : (%,List(V),List(R)) -> %       eval : (%,V,R) -> %
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
+--R deepestInitial : % -> %               deepestTail : % -> %
+--R degree : % -> E                       differentiate : (%,List(V)) -> %
+--R differentiate : (%,V) -> %            eval : (%,List(V),List(%)) -> %
+--R eval : (%,V,%) -> %                   eval : (%,List(V),List(R)) -> %
+--R eval : (%,V,R) -> %                   eval : (%,List(%),List(%)) -> %
 --R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    gcd : (R,%) -> R if R has GCDDOM
 --R ground : % -> R                       ground? : % -> Boolean
 --R hash : % -> SingleInteger             head : % -> %
 --R headReduce : (%,%) -> %               headReduced? : (%,%) -> Boolean
@@ -65372,20 +65687,23 @@ digraph pic {
 --R initiallyReduce : (%,%) -> %          iteratedInitials : % -> List(%)
 --R latex : % -> String                   lazyPquo : (%,%,V) -> %
 --R lazyPquo : (%,%) -> %                 lazyPrem : (%,%,V) -> %
---R lazyPrem : (%,%) -> %                 leadingCoefficient : (%,V) -> %
+--R lazyPrem : (%,%) -> %                 lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leadingCoefficient : (%,V) -> %
 --R leadingCoefficient : % -> R           leadingMonomial : % -> %
 --R leastMonomial : % -> %                mainCoefficients : % -> List(%)
 --R mainMonomial : % -> %                 mainMonomials : % -> List(%)
 --R map : ((R -> R),%) -> %               mapExponents : ((E -> E),%) -> %
---R mdeg : % -> NonNegativeInteger        minimumDegree : % -> E
+--R max : (%,%) -> % if R has ORDSET      mdeg : % -> NonNegativeInteger
+--R min : (%,%) -> % if R has ORDSET      minimumDegree : % -> E
 --R monic? : % -> Boolean                 monicModulo : (%,%) -> %
 --R monomial : (R,E) -> %                 monomial? : % -> Boolean
 --R monomials : % -> List(%)              mvar : % -> V
 --R normalized? : (%,%) -> Boolean        one? : % -> Boolean
 --R pomopo! : (%,R,E,%) -> %              pquo : (%,%,V) -> %
 --R pquo : (%,%) -> %                     prem : (%,%,V) -> %
---R prem : (%,%) -> %                     quasiMonic? : % -> Boolean
---R recip : % -> Union(%,"failed")        reduced? : (%,%) -> Boolean
+--R prem : (%,%) -> %                     primitiveMonomials : % -> List(%)
+--R quasiMonic? : % -> Boolean            recip : % -> Union(%,"failed")
+--R reduced? : (%,List(%)) -> Boolean     reduced? : (%,%) -> Boolean
 --R reductum : (%,V) -> %                 reductum : % -> %
 --R retract : % -> V                      retract : % -> R
 --R sample : () -> %                      supRittWu? : (%,%) -> Boolean
@@ -65393,31 +65711,24 @@ digraph pic {
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
 --R ?>=? : (%,%) -> Boolean if R has ORDSET
 --R D : (%,List(V),List(NonNegativeInteger)) -> %
---R D : (%,V,NonNegativeInteger) -> %
 --R LazardQuotient : (%,%,NonNegativeInteger) -> % if R has INTDOM
 --R LazardQuotient2 : (%,%,%,NonNegativeInteger) -> % if R has INTDOM
 --R RittWuCompare : (%,%) -> Union(Boolean,"failed")
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit)) or R has CHARNZ
 --R coefficient : (%,List(V),List(NonNegativeInteger)) -> %
 --R coefficient : (%,V,NonNegativeInteger) -> %
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) or R has ALGEBRA(FRAC(INT))
 --R coerce : % -> Polynomial(R) if V has KONVERT(SYMBOL)
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit))
 --R content : (%,V) -> % if R has GCDDOM
---R content : % -> R if R has GCDDOM
 --R convert : % -> Polynomial(R) if V has KONVERT(SYMBOL)
 --R convert : % -> String if R has RETRACT(INT) and V has KONVERT(SYMBOL)
 --R convert : Polynomial(R) -> % if V has KONVERT(SYMBOL)
@@ -65431,8 +65742,6 @@ digraph pic {
 --R differentiate : (%,List(V),List(NonNegativeInteger)) -> %
 --R differentiate : (%,V,NonNegativeInteger) -> %
 --R discriminant : (%,V) -> % if R has COMRING
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R exactQuotient : (%,%) -> % if R has INTDOM
 --R exactQuotient : (%,R) -> % if R has INTDOM
 --R exactQuotient! : (%,%) -> % if R has INTDOM
@@ -65443,9 +65752,6 @@ digraph pic {
 --R factor : % -> Factored(%) if R has PFECAT
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
---R gcd : (%,%) -> % if R has GCDDOM
---R gcd : List(%) -> % if R has GCDDOM
---R gcd : (R,%) -> R if R has GCDDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
 --R halfExtendedSubResultantGcd1 : (%,%) -> Record(gcd: %,coef1: %) if R has INTDOM
 --R halfExtendedSubResultantGcd2 : (%,%) -> Record(gcd: %,coef2: %) if R has INTDOM
@@ -65461,15 +65767,11 @@ digraph pic {
 --R lazyPseudoDivide : (%,%,V) -> Record(coef: %,gap: NonNegativeInteger,quotient: %,remainder: %)
 --R lazyPseudoDivide : (%,%) -> Record(coef: %,gap: NonNegativeInteger,quotient: %,remainder: %)
 --R lazyResidueClass : (%,%) -> Record(polnum: %,polden: %,power: NonNegativeInteger)
---R lcm : (%,%) -> % if R has GCDDOM
---R lcm : List(%) -> % if R has GCDDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainContent : % -> % if R has GCDDOM
 --R mainPrimitivePart : % -> % if R has GCDDOM
 --R mainSquareFreePart : % -> % if R has GCDDOM
 --R mainVariable : % -> Union(V,"failed")
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimumDegree : (%,List(V)) -> List(NonNegativeInteger)
 --R minimumDegree : (%,V) -> NonNegativeInteger
 --R monicDivide : (%,%,V) -> Record(quotient: %,remainder: %)
@@ -65485,12 +65787,10 @@ digraph pic {
 --R primPartElseUnitCanonical : % -> % if R has INTDOM
 --R primPartElseUnitCanonical! : % -> % if R has INTDOM
 --R prime? : % -> Boolean if R has PFECAT
---R primitiveMonomials : % -> List(%)
 --R primitivePart : (%,V) -> % if R has GCDDOM
 --R primitivePart : % -> % if R has GCDDOM
 --R primitivePart! : % -> % if R has GCDDOM
 --R pseudoDivide : (%,%) -> Record(quotient: %,remainder: %)
---R reduced? : (%,List(%)) -> Boolean
 --R reducedSystem : Matrix(%) -> Matrix(R)
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
@@ -67333,31 +67633,31 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
---R coefficient : (%,Integer) -> Coef     coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coefficient : (%,Integer) -> Coef
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
 --R degree : % -> Integer                 ?.? : (%,Integer) -> Coef
 --R extend : (%,Integer) -> %             hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> Coef
---R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
---R monomial : (Coef,Integer) -> %        monomial? : % -> Boolean
---R one? : % -> Boolean                   order : (%,Integer) -> Integer
---R order : % -> Integer                  pole? : % -> Boolean
---R recip : % -> Union(%,"failed")        reductum : % -> %
---R sample : () -> %                      truncate : (%,Integer) -> %
---R variable : % -> Symbol                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R inv : % -> % if Coef has FIELD        latex : % -> String
+--R leadingCoefficient : % -> Coef        leadingMonomial : % -> %
+--R map : ((Coef -> Coef),%) -> %         monomial : (Coef,Integer) -> %
+--R monomial? : % -> Boolean              one? : % -> Boolean
+--R order : (%,Integer) -> Integer        order : % -> Integer
+--R pole? : % -> Boolean                  recip : % -> Union(%,"failed")
+--R reductum : % -> %                     sample : () -> %
+--R truncate : (%,Integer) -> %           variable : % -> Symbol
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Coef has FIELD
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Integer,Coef) -> Coef
@@ -67367,7 +67667,6 @@ digraph pic {
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Integer,Coef) -> Coef
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Integer,Coef) -> Coef
 --R ?^? : (%,Integer) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -67384,7 +67683,6 @@ digraph pic {
 --R atanh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R coerce : Coef -> % if Coef has COMRING
 --R cos : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -67414,7 +67712,6 @@ digraph pic {
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if Coef has FIELD
 --R integrate : (%,Symbol) -> % if Coef has ACFS(INT) and Coef has PRIMCAT and Coef has TRANFUN and Coef has ALGEBRA(FRAC(INT)) or Coef has variables: Coef -> List(Symbol) and Coef has integrate: (Coef,Symbol) -> Coef and Coef has ALGEBRA(FRAC(INT))
 --R integrate : % -> % if Coef has ALGEBRA(FRAC(INT))
---R inv : % -> % if Coef has FIELD
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Coef has FIELD
@@ -67988,14 +68285,17 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coerce : % -> % if Coef has INTDOM
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R complete : % -> %                     degree : % -> Fraction(Integer)
---R hash : % -> SingleInteger             latex : % -> String
+--R ?.? : (%,Fraction(Integer)) -> Coef   hash : % -> SingleInteger
+--R inv : % -> % if Coef has FIELD        latex : % -> String
 --R leadingCoefficient : % -> Coef        leadingMonomial : % -> %
 --R map : ((Coef -> Coef),%) -> %         monomial? : % -> Boolean
 --R one? : % -> Boolean                   order : % -> Fraction(Integer)
@@ -68005,11 +68305,9 @@ digraph pic {
 --R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Coef has FIELD
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Fraction(Integer),Coef) -> Coef
@@ -68019,7 +68317,6 @@ digraph pic {
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R ?^? : (%,Integer) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -68037,7 +68334,6 @@ digraph pic {
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coefficient : (%,Fraction(Integer)) -> Coef
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R coerce : Coef -> % if Coef has COMRING
 --R cos : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -68054,7 +68350,6 @@ digraph pic {
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if Coef has FIELD
 --R ?.? : (%,%) -> % if Fraction(Integer) has SGROUP
---R ?.? : (%,Fraction(Integer)) -> Coef
 --R euclideanSize : % -> NonNegativeInteger if Coef has FIELD
 --R eval : (%,Coef) -> Stream(Coef) if Coef has **: (Coef,Fraction(Integer)) -> Coef
 --R exp : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -68069,7 +68364,6 @@ digraph pic {
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if Coef has FIELD
 --R integrate : (%,Symbol) -> % if Coef has ACFS(INT) and Coef has PRIMCAT and Coef has TRANFUN and Coef has ALGEBRA(FRAC(INT)) or Coef has variables: Coef -> List(Symbol) and Coef has integrate: (Coef,Symbol) -> Coef and Coef has ALGEBRA(FRAC(INT))
 --R integrate : % -> % if Coef has ALGEBRA(FRAC(INT))
---R inv : % -> % if Coef has FIELD
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Coef has FIELD
@@ -68602,32 +68896,39 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,(R -> R)) -> %                 D : % -> %
---R D : (%,NonNegativeInteger) -> %       1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coefficients : % -> List(R)           coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R degree : % -> NonNegativeInteger      differentiate : % -> %
---R ?.? : (%,%) -> %                      ?.? : (%,R) -> R
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,(R -> R)) -> %
+--R D : % -> %                            D : (%,NonNegativeInteger) -> %
+--R D : (%,SingletonAsOrderedSet) -> %    1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficients : % -> List(R)
+--R coerce : % -> % if R has INTDOM       coerce : SingletonAsOrderedSet -> %
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
+--R degree : % -> NonNegativeInteger      differentiate : (%,(R -> R)) -> %
+--R differentiate : % -> %                ?.? : (%,%) -> %
+--R ?.? : (%,R) -> R                      eval : (%,List(%),List(%)) -> %
 --R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
---R ground : % -> R                       ground? : % -> Boolean
---R hash : % -> SingleInteger             init : () -> % if R has STEP
---R latex : % -> String                   leadingCoefficient : % -> R
---R leadingMonomial : % -> %              map : ((R -> R),%) -> %
---R monomial? : % -> Boolean              monomials : % -> List(%)
---R one? : % -> Boolean                   pseudoRemainder : (%,%) -> %
---R recip : % -> Union(%,"failed")        reductum : % -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R init : () -> % if R has STEP          latex : % -> String
+--R lcm : (%,%) -> % if R has GCDDOM      lcm : List(%) -> % if R has GCDDOM
+--R leadingCoefficient : % -> R           leadingMonomial : % -> %
+--R map : ((R -> R),%) -> %               max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      monomial? : % -> Boolean
+--R monomials : % -> List(%)              one? : % -> Boolean
+--R primitiveMonomials : % -> List(%)     pseudoRemainder : (%,%) -> %
+--R ?quo? : (%,%) -> % if R has FIELD     recip : % -> Union(%,"failed")
+--R reductum : % -> %                     ?rem? : (%,%) -> % if R has FIELD
 --R retract : % -> R                      sample : () -> %
 --R unvectorise : Vector(R) -> %          zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
@@ -68640,8 +68941,6 @@ digraph pic {
 --R D : (%,List(SingletonAsOrderedSet),List(NonNegativeInteger)) -> %
 --R D : (%,SingletonAsOrderedSet,NonNegativeInteger) -> %
 --R D : (%,List(SingletonAsOrderedSet)) -> %
---R D : (%,SingletonAsOrderedSet) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
@@ -68649,21 +68948,17 @@ digraph pic {
 --R coefficient : (%,List(SingletonAsOrderedSet),List(NonNegativeInteger)) -> %
 --R coefficient : (%,SingletonAsOrderedSet,NonNegativeInteger) -> %
 --R coefficient : (%,NonNegativeInteger) -> R
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) or R has ALGEBRA(FRAC(INT))
---R coerce : SingletonAsOrderedSet -> %
 --R composite : (Fraction(%),%) -> Union(Fraction(%),"failed") if R has INTDOM
 --R composite : (%,%) -> Union(%,"failed") if R has INTDOM
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if and(has($,CharacteristicNonZero),has(R,PolynomialFactorizationExplicit))
 --R content : (%,SingletonAsOrderedSet) -> % if R has GCDDOM
---R content : % -> R if R has GCDDOM
 --R convert : % -> InputForm if SingletonAsOrderedSet has KONVERT(INFORM) and R has KONVERT(INFORM)
 --R convert : % -> Pattern(Integer) if SingletonAsOrderedSet has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
 --R convert : % -> Pattern(Float) if SingletonAsOrderedSet has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
 --R degree : (%,List(SingletonAsOrderedSet)) -> List(NonNegativeInteger)
 --R degree : (%,SingletonAsOrderedSet) -> NonNegativeInteger
 --R differentiate : (%,(R -> R),%) -> %
---R differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
@@ -68686,8 +68981,6 @@ digraph pic {
 --R eval : (%,SingletonAsOrderedSet,%) -> %
 --R eval : (%,List(SingletonAsOrderedSet),List(R)) -> %
 --R eval : (%,SingletonAsOrderedSet,R) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has FIELD
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
@@ -68696,22 +68989,16 @@ digraph pic {
 --R factor : % -> Factored(%) if R has PFECAT
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
---R gcd : (%,%) -> % if R has GCDDOM
---R gcd : List(%) -> % if R has GCDDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
 --R integrate : % -> % if R has ALGEBRA(FRAC(INT))
 --R isExpt : % -> Union(Record(var: SingletonAsOrderedSet,exponent: NonNegativeInteger),"failed")
 --R isPlus : % -> Union(List(%),"failed")
 --R isTimes : % -> Union(List(%),"failed")
 --R karatsubaDivide : (%,NonNegativeInteger) -> Record(quotient: %,remainder: %)
---R lcm : (%,%) -> % if R has GCDDOM
---R lcm : List(%) -> % if R has GCDDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
 --R mapExponents : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimumDegree : (%,List(SingletonAsOrderedSet)) -> List(NonNegativeInteger)
 --R minimumDegree : (%,SingletonAsOrderedSet) -> NonNegativeInteger
 --R minimumDegree : % -> NonNegativeInteger
@@ -68731,18 +69018,15 @@ digraph pic {
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if SingletonAsOrderedSet has PATMAB(FLOAT) and R has PATMAB(FLOAT)
 --R pomopo! : (%,R,NonNegativeInteger,%) -> %
 --R prime? : % -> Boolean if R has PFECAT
---R primitiveMonomials : % -> List(%)
 --R primitivePart : (%,SingletonAsOrderedSet) -> % if R has GCDDOM
 --R primitivePart : % -> % if R has GCDDOM
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has FIELD
 --R pseudoDivide : (%,%) -> Record(coef: R,quotient: %,remainder: %) if R has INTDOM
 --R pseudoQuotient : (%,%) -> % if R has INTDOM
---R ?quo? : (%,%) -> % if R has FIELD
 --R reducedSystem : Matrix(%) -> Matrix(R)
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
---R ?rem? : (%,%) -> % if R has FIELD
 --R resultant : (%,%) -> R if R has COMRING
 --R resultant : (%,%,SingletonAsOrderedSet) -> % if R has COMRING
 --R retract : % -> SingletonAsOrderedSet
@@ -69823,43 +70107,52 @@ digraph pic {
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for ACFS 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (R,%) -> % if R has COMRING     ?*? : (%,R) -> % if R has COMRING
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               D : (%,Symbol) -> % if R has RING
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R applyQuote : (Symbol,%) -> %          applyQuote : (Symbol,%,%) -> %
---R associates? : (%,%) -> Boolean        belong? : BasicOperator -> Boolean
---R box : % -> %                          box : List(%) -> %
---R coerce : Kernel(%) -> %               coerce : Symbol -> %
---R coerce : R -> %                       coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              distribute : % -> %
---R distribute : (%,%) -> %               elt : (BasicOperator,%) -> %
---R elt : (BasicOperator,%,%) -> %        eval : (%,Kernel(%),%) -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        applyQuote : (Symbol,%) -> %
+--R applyQuote : (Symbol,%,%) -> %        applyQuote : (Symbol,%,%,%) -> %
+--R applyQuote : (Symbol,List(%)) -> %    associates? : (%,%) -> Boolean
+--R belong? : BasicOperator -> Boolean    box : % -> %
+--R box : List(%) -> %                    coerce : Kernel(%) -> %
+--R coerce : Symbol -> %                  coerce : R -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R distribute : % -> %                   distribute : (%,%) -> %
+--R elt : (BasicOperator,%) -> %          elt : (BasicOperator,%,%) -> %
+--R elt : (BasicOperator,%,%,%) -> %      elt : (BasicOperator,List(%)) -> %
+--R eval : (%,Kernel(%),%) -> %           eval : (%,List(Equation(%))) -> %
 --R eval : (%,Equation(%)) -> %           eval : (%,%,%) -> %
+--R eval : (%,List(%),List(%)) -> %       eval : (%,Symbol,(% -> %)) -> %
 --R factor : % -> Factored(%)             freeOf? : (%,%) -> Boolean
 --R freeOf? : (%,Symbol) -> Boolean       gcd : List(%) -> %
 --R gcd : (%,%) -> %                      ground : % -> R
 --R ground? : % -> Boolean                hash : % -> SingleInteger
 --R height : % -> NonNegativeInteger      inv : % -> %
---R is? : (%,Symbol) -> Boolean           kernel : (BasicOperator,%) -> %
---R kernels : % -> List(Kernel(%))        latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R is? : (%,BasicOperator) -> Boolean    is? : (%,Symbol) -> Boolean
+--R kernel : (BasicOperator,%) -> %       kernels : % -> List(Kernel(%))
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      map : ((% -> %),Kernel(%)) -> %
 --R max : (%,%) -> %                      min : (%,%) -> %
---R nthRoot : (%,Integer) -> %            one? : % -> Boolean
---R paren : % -> %                        paren : List(%) -> %
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R retract : % -> Kernel(%)              retract : % -> Symbol
---R retract : % -> R                      rootOf : (%,Symbol) -> %
---R rootOf : % -> %                       rootOf : Polynomial(%) -> %
---R rootsOf : (%,Symbol) -> List(%)       rootsOf : % -> List(%)
+--R nthRoot : (%,Integer) -> %            numerator : % -> % if R has RING
+--R one? : % -> Boolean                   paren : % -> %
+--R paren : List(%) -> %                  prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> Kernel(%)
+--R retract : % -> Symbol                 retract : % -> R
+--R rootOf : (%,Symbol) -> %              rootOf : % -> %
+--R rootOf : Polynomial(%) -> %           rootsOf : (%,Symbol) -> List(%)
+--R rootsOf : % -> List(%)                rootsOf : Polynomial(%) -> List(%)
 --R sample : () -> %                      sizeLess? : (%,%) -> Boolean
 --R sqrt : % -> %                         squareFree : % -> Factored(%)
 --R squareFreePart : % -> %               subst : (%,Equation(%)) -> %
@@ -69868,21 +70161,12 @@ digraph pic {
 --R zero? : % -> Boolean                  zeroOf : (%,Symbol) -> %
 --R zeroOf : % -> %                       zeroOf : Polynomial(%) -> %
 --R zerosOf : (%,Symbol) -> List(%)       zerosOf : % -> List(%)
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (R,%) -> % if R has COMRING
---R ?*? : (%,R) -> % if R has COMRING
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R zerosOf : Polynomial(%) -> List(%)    ?~=? : (%,%) -> Boolean
 --R ?/? : (SparseMultivariatePolynomial(R,Kernel(%)),SparseMultivariatePolynomial(R,Kernel(%))) -> % if R has INTDOM
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has RING
 --R D : (%,Symbol,NonNegativeInteger) -> % if R has RING
 --R D : (%,List(Symbol)) -> % if R has RING
---R D : (%,Symbol) -> % if R has RING
---R ?^? : (%,NonNegativeInteger) -> %
---R applyQuote : (Symbol,%,%,%) -> %
 --R applyQuote : (Symbol,%,%,%,%) -> %
---R applyQuote : (Symbol,List(%)) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : SparseMultivariatePolynomial(R,Kernel(%)) -> % if R has RING
@@ -69905,17 +70189,12 @@ digraph pic {
 --R differentiate : (%,List(Symbol)) -> % if R has RING
 --R differentiate : (%,Symbol) -> % if R has RING
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
---R elt : (BasicOperator,%,%,%) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,List(%)) -> %
 --R euclideanSize : % -> NonNegativeInteger
 --R eval : (%,List(Kernel(%)),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
---R eval : (%,List(%),List(%)) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
@@ -69935,7 +70214,6 @@ digraph pic {
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
---R is? : (%,BasicOperator) -> Boolean
 --R isExpt : % -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has SGROUP
 --R isExpt : (%,BasicOperator) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
 --R isExpt : (%,Symbol) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
@@ -69946,11 +70224,9 @@ digraph pic {
 --R kernel : (BasicOperator,List(%)) -> %
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R numer : % -> SparseMultivariatePolynomial(R,Kernel(%)) if R has RING
---R numerator : % -> % if R has RING
 --R odd? : % -> Boolean if $ has RETRACT(INT)
 --R operator : BasicOperator -> BasicOperator
 --R operators : % -> List(BasicOperator)
@@ -69976,7 +70252,6 @@ digraph pic {
 --R rootOf : SparseUnivariatePolynomial(%) -> %
 --R rootsOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R rootsOf : SparseUnivariatePolynomial(%) -> List(%)
---R rootsOf : Polynomial(%) -> List(%)
 --R subst : (%,List(Equation(%))) -> %
 --R subst : (%,List(Kernel(%)),List(%)) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -69986,7 +70261,6 @@ digraph pic {
 --R zeroOf : SparseUnivariatePolynomial(%) -> %
 --R zerosOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R zerosOf : SparseUnivariatePolynomial(%) -> List(%)
---R zerosOf : Polynomial(%) -> List(%)
 --R
 --E 1
 
@@ -70601,12 +70875,14 @@ digraph pic {
 --R ?*? : (F,%) -> %                      ?*? : (%,F) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,F) -> %                      ?/? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?=? : (%,%) -> Boolean                Frobenius : % -> % if F has FINITE
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
 --R associates? : (%,%) -> Boolean        coerce : F -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
@@ -70624,11 +70900,7 @@ digraph pic {
 --R transcendent? : % -> Boolean          unit? : % -> Boolean
 --R unitCanonical : % -> %                zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R Frobenius : (%,NonNegativeInteger) -> % if F has FINITE
---R Frobenius : % -> % if F has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if F has CHARNZ or F has FINITE
 --R degree : % -> OnePointCompletion(PositiveInteger)
@@ -71009,23 +71281,25 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R D : % -> %                            D : (%,NonNegativeInteger) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        charthRoot : % -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R createPrimitiveElement : () -> %      differentiate : % -> %
---R enumerate : () -> List(%)             factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             index : PositiveInteger -> %
---R init : () -> %                        inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R charthRoot : % -> %                   coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              createPrimitiveElement : () -> %
+--R differentiate : % -> %                enumerate : () -> List(%)
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R index : PositiveInteger -> %          init : () -> %
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R lookup : % -> PositiveInteger         nextItem : % -> Union(%,"failed")
 --R one? : % -> Boolean                   order : % -> PositiveInteger
 --R prime? : % -> Boolean                 primeFrobenius : % -> %
 --R primitive? : % -> Boolean             primitiveElement : () -> %
@@ -71036,9 +71310,6 @@ digraph pic {
 --R squareFreePart : % -> %               unit? : % -> Boolean
 --R unitCanonical : % -> %                zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed")
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed")
@@ -71055,7 +71326,6 @@ digraph pic {
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
---R nextItem : % -> Union(%,"failed")
 --R order : % -> OnePointCompletion(PositiveInteger)
 --R primeFrobenius : (%,NonNegativeInteger) -> %
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
@@ -71595,14 +71865,16 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Fraction(Integer)) -> %     ?**? : (%,Integer) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R abs : % -> %                          associates? : (%,%) -> Boolean
 --R base : () -> PositiveInteger          bits : () -> PositiveInteger
 --R ceiling : % -> %                      coerce : Fraction(Integer) -> %
@@ -71631,10 +71903,6 @@ digraph pic {
 --R truncate : % -> %                     unit? : % -> Boolean
 --R unitCanonical : % -> %                wholePart : % -> Integer
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R bits : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
 --R characteristic : () -> NonNegativeInteger
 --R decreasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
@@ -72086,11 +72354,13 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        basis : () -> Vector(%)
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R basis : () -> Vector(%)               characteristicPolynomial : % -> UP
 --R coerce : R -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              convert : Vector(R) -> %
 --R convert : % -> Vector(R)              coordinates : % -> Vector(R)
@@ -72101,11 +72371,7 @@ digraph pic {
 --R represents : Vector(R) -> %           sample : () -> %
 --R trace : % -> R                        traceMatrix : () -> Matrix(R)
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
---R characteristicPolynomial : % -> UP
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coordinates : Vector(%) -> Matrix(R)
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
@@ -72411,26 +72677,28 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R D : % -> %                            D : (%,NonNegativeInteger) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        charthRoot : % -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R conjugate : % -> %                    createPrimitiveElement : () -> %
---R differentiate : % -> %                enumerate : () -> List(%)
---R extDegree : % -> PositiveInteger      factor : % -> Factored(%)
---R fullOutput : % -> OutputForm          gcd : List(%) -> %
---R gcd : (%,%) -> %                      ground? : % -> Boolean
---R hash : % -> SingleInteger             index : PositiveInteger -> %
---R init : () -> %                        inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
---R maxTower : List(%) -> %               one? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R charthRoot : % -> %                   coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              conjugate : % -> %
+--R createPrimitiveElement : () -> %      differentiate : % -> %
+--R enumerate : () -> List(%)             extDegree : % -> PositiveInteger
+--R factor : % -> Factored(%)             fullOutput : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R index : PositiveInteger -> %          init : () -> %
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R lookup : % -> PositiveInteger         maxTower : List(%) -> %
+--R nextItem : % -> Union(%,"failed")     one? : % -> Boolean
 --R order : % -> PositiveInteger          previousTower : % -> %
 --R prime? : % -> Boolean                 primeFrobenius : % -> %
 --R primitive? : % -> Boolean             primitiveElement : () -> %
@@ -72442,9 +72710,6 @@ digraph pic {
 --R unit? : % -> Boolean                  unitCanonical : % -> %
 --R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed")
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed")
@@ -72468,7 +72733,6 @@ digraph pic {
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R newElement : (SparseUnivariatePolynomial(%),%,Symbol) -> %
 --R newElement : (SparseUnivariatePolynomial(%),Symbol) -> %
---R nextItem : % -> Union(%,"failed")
 --R order : % -> OnePointCompletion(PositiveInteger)
 --R primeFrobenius : (%,NonNegativeInteger) -> %
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
@@ -72806,36 +73070,38 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
---R coefficient : (%,Integer) -> Coef     coerce : UTS -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coefficient : (%,Integer) -> Coef
+--R coerce : % -> % if Coef has INTDOM    coerce : UTS -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R complete : % -> %                     degree : % -> Integer
---R ?.? : (%,Integer) -> Coef             extend : (%,Integer) -> %
---R hash : % -> SingleInteger             latex : % -> String
+--R denom : % -> UTS if Coef has FIELD    ?.? : (%,Integer) -> Coef
+--R extend : (%,Integer) -> %             hash : % -> SingleInteger
+--R inv : % -> % if Coef has FIELD        latex : % -> String
 --R laurent : (Integer,UTS) -> %          leadingCoefficient : % -> Coef
 --R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
 --R monomial : (Coef,Integer) -> %        monomial? : % -> Boolean
---R one? : % -> Boolean                   order : (%,Integer) -> Integer
---R order : % -> Integer                  pole? : % -> Boolean
---R recip : % -> Union(%,"failed")        reductum : % -> %
---R removeZeroes : (Integer,%) -> %       removeZeroes : % -> %
---R retract : % -> UTS                    sample : () -> %
---R taylor : % -> UTS                     taylorRep : % -> UTS
---R truncate : (%,Integer) -> %           variable : % -> Symbol
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R numer : % -> UTS if Coef has FIELD    one? : % -> Boolean
+--R order : (%,Integer) -> Integer        order : % -> Integer
+--R pole? : % -> Boolean                  recip : % -> Union(%,"failed")
+--R reductum : % -> %                     removeZeroes : (Integer,%) -> %
+--R removeZeroes : % -> %                 retract : % -> UTS
+--R sample : () -> %                      taylor : % -> UTS
+--R taylorRep : % -> UTS                  truncate : (%,Integer) -> %
+--R variable : % -> Symbol                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (UTS,%) -> % if Coef has FIELD
 --R ?*? : (%,UTS) -> % if Coef has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (UTS,UTS) -> % if Coef has FIELD
 --R ?/? : (%,%) -> % if Coef has FIELD
 --R ?/? : (%,Coef) -> % if Coef has FIELD
@@ -72852,7 +73118,6 @@ digraph pic {
 --R D : (%,(UTS -> UTS),NonNegativeInteger) -> % if Coef has FIELD
 --R D : (%,(UTS -> UTS)) -> % if Coef has FIELD
 --R ?^? : (%,Integer) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R abs : % -> % if and(has(UTS,OrderedIntegralDomain),has(Coef,Field))
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -72871,7 +73136,6 @@ digraph pic {
 --R ceiling : % -> UTS if and(has(UTS,IntegerNumberSystem),has(Coef,Field))
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if and(OR(has(UTS,CharacteristicNonZero),and(has($,CharacteristicNonZero),has(UTS,PolynomialFactorizationExplicit))),has(Coef,Field)) or Coef has CHARNZ
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R coerce : Symbol -> % if and(has(UTS,RetractableTo(Symbol)),has(Coef,Field))
 --R coerce : Coef -> % if Coef has COMRING
@@ -72887,7 +73151,6 @@ digraph pic {
 --R coth : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R csc : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R csch : % -> % if Coef has ALGEBRA(FRAC(INT))
---R denom : % -> UTS if Coef has FIELD
 --R denominator : % -> % if Coef has FIELD
 --R differentiate : (%,Symbol) -> % if and(has(UTS,PartialDifferentialRing(Symbol)),has(Coef,Field)) or Coef has PDRING(SYMBOL) and Coef has *: (Integer,Coef) -> Coef
 --R differentiate : (%,List(Symbol)) -> % if and(has(UTS,PartialDifferentialRing(Symbol)),has(Coef,Field)) or Coef has PDRING(SYMBOL) and Coef has *: (Integer,Coef) -> Coef
@@ -72924,7 +73187,6 @@ digraph pic {
 --R init : () -> % if and(has(UTS,StepThrough),has(Coef,Field))
 --R integrate : (%,Symbol) -> % if Coef has ACFS(INT) and Coef has PRIMCAT and Coef has TRANFUN and Coef has ALGEBRA(FRAC(INT)) or Coef has variables: Coef -> List(Symbol) and Coef has integrate: (Coef,Symbol) -> Coef and Coef has ALGEBRA(FRAC(INT))
 --R integrate : % -> % if Coef has ALGEBRA(FRAC(INT))
---R inv : % -> % if Coef has FIELD
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Coef has FIELD
@@ -72940,7 +73202,6 @@ digraph pic {
 --R negative? : % -> Boolean if and(has(UTS,OrderedIntegralDomain),has(Coef,Field))
 --R nextItem : % -> Union(%,"failed") if and(has(UTS,StepThrough),has(Coef,Field))
 --R nthRoot : (%,Integer) -> % if Coef has ALGEBRA(FRAC(INT))
---R numer : % -> UTS if Coef has FIELD
 --R numerator : % -> % if Coef has FIELD
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if and(has(UTS,PatternMatchable(Integer)),has(Coef,Field))
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if and(has(UTS,PatternMatchable(Float)),has(Coef,Field))
@@ -73673,14 +73934,17 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coerce : % -> % if Coef has INTDOM
 --R coerce : ULS -> %                     coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
---R degree : % -> Fraction(Integer)       hash : % -> SingleInteger
+--R degree : % -> Fraction(Integer)       ?.? : (%,Fraction(Integer)) -> Coef
+--R hash : % -> SingleInteger             inv : % -> % if Coef has FIELD
 --R latex : % -> String                   laurent : % -> ULS
 --R laurentRep : % -> ULS                 leadingCoefficient : % -> Coef
 --R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
@@ -73692,11 +73956,9 @@ digraph pic {
 --R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Coef has FIELD
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Fraction(Integer),Coef) -> Coef
@@ -73706,7 +73968,6 @@ digraph pic {
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R ?^? : (%,Integer) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -73724,7 +73985,6 @@ digraph pic {
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coefficient : (%,Fraction(Integer)) -> Coef
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R coerce : Coef -> % if Coef has COMRING
 --R cos : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -73741,7 +74001,6 @@ digraph pic {
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has PDRING(SYMBOL) and Coef has *: (Fraction(Integer),Coef) -> Coef
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if Coef has FIELD
 --R ?.? : (%,%) -> % if Fraction(Integer) has SGROUP
---R ?.? : (%,Fraction(Integer)) -> Coef
 --R euclideanSize : % -> NonNegativeInteger if Coef has FIELD
 --R eval : (%,Coef) -> Stream(Coef) if Coef has **: (Coef,Fraction(Integer)) -> Coef
 --R exp : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -73756,7 +74015,6 @@ digraph pic {
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if Coef has FIELD
 --R integrate : (%,Symbol) -> % if Coef has ACFS(INT) and Coef has PRIMCAT and Coef has TRANFUN and Coef has ALGEBRA(FRAC(INT)) or Coef has variables: Coef -> List(Symbol) and Coef has integrate: (Coef,Symbol) -> Coef and Coef has ALGEBRA(FRAC(INT))
 --R integrate : % -> % if Coef has ALGEBRA(FRAC(INT))
---R inv : % -> % if Coef has FIELD
 --R laurentIfCan : % -> Union(ULS,"failed")
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
@@ -74295,13 +74553,15 @@ digraph pic {
 --R ?*? : (F,%) -> %                      ?*? : (%,F) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,F) -> %                      ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if F has FINITE
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R Frobenius : % -> % if F has FINITE    1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
 --R basis : () -> Vector(%)               coerce : F -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
@@ -74309,24 +74569,22 @@ digraph pic {
 --R coordinates : % -> Vector(F)          degree : % -> PositiveInteger
 --R dimension : () -> CardinalNumber      factor : % -> Factored(%)
 --R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R generator : () -> % if F has FINITE   hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if F has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> F                         one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(F) -> %           retract : % -> F
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> F                        transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if F has FINITE      recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(F) -> %
+--R retract : % -> F                      sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> F
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if F has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if F has FINITE
---R Frobenius : % -> % if F has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if F has CHARNZ or F has FINITE
@@ -74352,9 +74610,7 @@ digraph pic {
 --R extensionDegree : () -> OnePointCompletion(PositiveInteger)
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer)) if F has FINITE
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
---R generator : () -> % if F has FINITE
 --R index : PositiveInteger -> % if F has FINITE
---R init : () -> % if F has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(F)) -> % if F has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(F),"failed") if F has FINITE
@@ -74375,7 +74631,6 @@ digraph pic {
 --R primitive? : % -> Boolean if F has FINITE
 --R primitiveElement : () -> % if F has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if F has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if F has FINITE
 --R retractIfCan : % -> Union(F,"failed")
 --R size : () -> NonNegativeInteger if F has FINITE
@@ -75110,31 +75365,36 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
+--R -? : % -> %                           ?/? : (%,%) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        basis : () -> Vector(%)
+--R characteristicPolynomial : % -> UP    coerce : % -> % if R has FIELD
 --R coerce : R -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              convert : UP -> %
 --R convert : % -> UP                     convert : Vector(R) -> %
 --R convert : % -> Vector(R)              coordinates : % -> Vector(R)
 --R definingPolynomial : () -> UP         discriminant : () -> R
---R discriminant : Vector(%) -> R         generator : () -> %
---R hash : % -> SingleInteger             inv : % -> % if R has FIELD
---R latex : % -> String                   lift : % -> UP
---R norm : % -> R                         one? : % -> Boolean
---R rank : () -> PositiveInteger          recip : % -> Union(%,"failed")
---R reduce : UP -> %                      represents : Vector(R) -> %
+--R discriminant : Vector(%) -> R         gcd : (%,%) -> % if R has FIELD
+--R gcd : List(%) -> % if R has FIELD     generator : () -> %
+--R hash : % -> SingleInteger             init : () -> % if R has FFIELDC
+--R inv : % -> % if R has FIELD           latex : % -> String
+--R lcm : (%,%) -> % if R has FIELD       lcm : List(%) -> % if R has FIELD
+--R lift : % -> UP                        norm : % -> R
+--R one? : % -> Boolean                   ?quo? : (%,%) -> % if R has FIELD
+--R random : () -> % if R has FINITE      rank : () -> PositiveInteger
+--R recip : % -> Union(%,"failed")        reduce : UP -> %
+--R ?rem? : (%,%) -> % if R has FIELD     represents : Vector(R) -> %
 --R retract : % -> R                      sample : () -> %
 --R trace : % -> R                        traceMatrix : () -> Matrix(R)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R unit? : % -> Boolean if R has FIELD   zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if R has FIELD
 --R ?*? : (Fraction(Integer),%) -> % if R has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if R has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,%) -> % if R has FIELD
 --R D : (%,(R -> R)) -> % if R has FIELD
 --R D : (%,(R -> R),NonNegativeInteger) -> % if R has FIELD
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if and(has(R,PartialDifferentialRing(Symbol)),has(R,Field))
@@ -75144,14 +75404,11 @@ digraph pic {
 --R D : (%,NonNegativeInteger) -> % if and(has(R,DifferentialRing),has(R,Field)) or R has FFIELDC
 --R D : % -> % if and(has(R,DifferentialRing),has(R,Field)) or R has FFIELDC
 --R ?^? : (%,Integer) -> % if R has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has FIELD
 --R characteristic : () -> NonNegativeInteger
---R characteristicPolynomial : % -> UP
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R charthRoot : % -> % if R has FFIELDC
 --R coerce : Fraction(Integer) -> % if R has FIELD or R has RETRACT(FRAC(INT))
---R coerce : % -> % if R has FIELD
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if R has FFIELDC
 --R coordinates : Vector(%) -> Matrix(R)
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
@@ -75177,13 +75434,8 @@ digraph pic {
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") if R has FIELD
 --R factor : % -> Factored(%) if R has FIELD
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer)) if R has FFIELDC
---R gcd : (%,%) -> % if R has FIELD
---R gcd : List(%) -> % if R has FIELD
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has FIELD
 --R index : PositiveInteger -> % if R has FINITE
---R init : () -> % if R has FFIELDC
---R lcm : (%,%) -> % if R has FIELD
---R lcm : List(%) -> % if R has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has FIELD
 --R lookup : % -> PositiveInteger if R has FINITE
 --R minimalPolynomial : % -> UP if R has FIELD
@@ -75197,8 +75449,6 @@ digraph pic {
 --R primitive? : % -> Boolean if R has FFIELDC
 --R primitiveElement : () -> % if R has FFIELDC
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has FIELD
---R ?quo? : (%,%) -> % if R has FIELD
---R random : () -> % if R has FINITE
 --R reduce : Fraction(UP) -> Union(%,"failed") if R has FIELD
 --R reducedSystem : Matrix(%) -> Matrix(R)
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
@@ -75206,7 +75456,6 @@ digraph pic {
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
 --R regularRepresentation : % -> Matrix(R)
 --R regularRepresentation : (%,Vector(%)) -> Matrix(R)
---R ?rem? : (%,%) -> % if R has FIELD
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if R has FFIELDC
 --R represents : (Vector(R),Vector(%)) -> %
 --R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
@@ -75221,7 +75470,6 @@ digraph pic {
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R tableForDiscreteLogarithm : Integer -> Table(PositiveInteger,NonNegativeInteger) if R has FFIELDC
 --R traceMatrix : Vector(%) -> Matrix(R)
---R unit? : % -> Boolean if R has FIELD
 --R unitCanonical : % -> % if R has FIELD
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has FIELD
 --R
@@ -75750,40 +75998,38 @@ digraph pic {
 --R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,Fraction(Integer)) -> %      ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : Fraction(Integer) -> %       coerce : Integer -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R conjugate : % -> %                    dimension : () -> CardinalNumber
---R extDegree : % -> PositiveInteger      factor : % -> Factored(%)
---R fullOutput : % -> OutputForm          gcd : List(%) -> %
---R gcd : (%,%) -> %                      ground? : % -> Boolean
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R maxTower : List(%) -> %               one? : % -> Boolean
---R previousTower : % -> %                prime? : % -> Boolean
---R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    retract : % -> Fraction(Integer)
---R retract : % -> Fraction(Integer)      retract : % -> Integer
---R sample : () -> %                      setTower! : % -> Void
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : Fraction(Integer) -> %
+--R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              conjugate : % -> %
+--R dimension : () -> CardinalNumber      extDegree : % -> PositiveInteger
+--R factor : % -> Factored(%)             fullOutput : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      maxTower : List(%) -> %
+--R one? : % -> Boolean                   previousTower : % -> %
+--R prime? : % -> Boolean                 ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Fraction(Integer)
+--R retract : % -> Integer                sample : () -> %
+--R setTower! : % -> Void                 sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                vectorise : (%,%) -> Vector(%)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R Frobenius : % -> % if Fraction(Integer) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if Fraction(Integer) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Fraction(Integer) has CHARNZ or Fraction(Integer) has FINITE
 --R definingPolynomial : % -> SparseUnivariatePolynomial(%)
@@ -76150,35 +76396,50 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,(R -> R)) -> %                 1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R abs : % -> % if R has RNS             basis : () -> Vector(%)
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              complex : (R,R) -> %
---R conjugate : % -> %                    convert : Vector(R) -> %
---R convert : % -> Vector(R)              coordinates : % -> Vector(R)
+--R -? : % -> %                           ?/? : (%,%) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,(R -> R)) -> %
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> % if R has RNS             acos : % -> % if R has TRANFUN
+--R acosh : % -> % if R has TRANFUN       acot : % -> % if R has TRANFUN
+--R acoth : % -> % if R has TRANFUN       acsc : % -> % if R has TRANFUN
+--R acsch : % -> % if R has TRANFUN       argument : % -> R if R has TRANFUN
+--R asec : % -> % if R has TRANFUN        asech : % -> % if R has TRANFUN
+--R asin : % -> % if R has TRANFUN        asinh : % -> % if R has TRANFUN
+--R atan : % -> % if R has TRANFUN        atanh : % -> % if R has TRANFUN
+--R basis : () -> Vector(%)               coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complex : (R,R) -> %                  conjugate : % -> %
+--R convert : Vector(R) -> %              convert : % -> Vector(R)
+--R coordinates : % -> Vector(R)          cos : % -> % if R has TRANFUN
+--R cosh : % -> % if R has TRANFUN        cot : % -> % if R has TRANFUN
+--R coth : % -> % if R has TRANFUN        csc : % -> % if R has TRANFUN
+--R csch : % -> % if R has TRANFUN        differentiate : (%,(R -> R)) -> %
 --R discriminant : () -> R                discriminant : Vector(%) -> R
---R generator : () -> %                   hash : % -> SingleInteger
---R imag : % -> R                         imaginary : () -> %
+--R exp : % -> % if R has TRANFUN         generator : () -> %
+--R hash : % -> SingleInteger             imag : % -> R
+--R imaginary : () -> %                   init : () -> % if R has FFIELDC
 --R inv : % -> % if R has FIELD           latex : % -> String
---R map : ((R -> R),%) -> %               norm : % -> R
---R one? : % -> Boolean                   pi : () -> % if R has TRANFUN
+--R log : % -> % if R has TRANFUN         map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
+--R norm : % -> R                         one? : % -> Boolean
+--R pi : () -> % if R has TRANFUN         random : () -> % if R has FINITE
 --R rank : () -> PositiveInteger          real : % -> R
 --R recip : % -> Union(%,"failed")        represents : Vector(R) -> %
 --R retract : % -> R                      sample : () -> %
+--R sec : % -> % if R has TRANFUN         sech : % -> % if R has TRANFUN
+--R sin : % -> % if R has TRANFUN         sinh : % -> % if R has TRANFUN
+--R tan : % -> % if R has TRANFUN         tanh : % -> % if R has TRANFUN
 --R trace : % -> R                        traceMatrix : () -> Matrix(R)
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if R has FIELD
 --R ?*? : (Fraction(Integer),%) -> % if R has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if R has FIELD
 --R ?**? : (%,%) -> % if R has TRANFUN
 --R ?**? : (%,Fraction(Integer)) -> % if R has RADCAT and R has TRANFUN
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,%) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
@@ -76191,21 +76452,7 @@ digraph pic {
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R D : (%,(R -> R),NonNegativeInteger) -> %
 --R ?^? : (%,Integer) -> % if R has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
---R acos : % -> % if R has TRANFUN
---R acosh : % -> % if R has TRANFUN
---R acot : % -> % if R has TRANFUN
---R acoth : % -> % if R has TRANFUN
---R acsc : % -> % if R has TRANFUN
---R acsch : % -> % if R has TRANFUN
---R argument : % -> R if R has TRANFUN
---R asec : % -> % if R has TRANFUN
---R asech : % -> % if R has TRANFUN
---R asin : % -> % if R has TRANFUN
---R asinh : % -> % if R has TRANFUN
 --R associates? : (%,%) -> Boolean if R has INTDOM or R has EUCDOM and R has PFECAT
---R atan : % -> % if R has TRANFUN
---R atanh : % -> % if R has TRANFUN
 --R characteristic : () -> NonNegativeInteger
 --R characteristicPolynomial : % -> SparseUnivariatePolynomial(R)
 --R charthRoot : % -> Union(%,"failed") if and(has($,CharacteristicNonZero),AND(has(R,EuclideanDomain),has(R,PolynomialFactorizationExplicit))) or R has CHARNZ
@@ -76223,13 +76470,7 @@ digraph pic {
 --R coordinates : Vector(%) -> Matrix(R)
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
 --R coordinates : (%,Vector(%)) -> Vector(R)
---R cos : % -> % if R has TRANFUN
---R cosh : % -> % if R has TRANFUN
---R cot : % -> % if R has TRANFUN
---R coth : % -> % if R has TRANFUN
 --R createPrimitiveElement : () -> % if R has FFIELDC
---R csc : % -> % if R has TRANFUN
---R csch : % -> % if R has TRANFUN
 --R definingPolynomial : () -> SparseUnivariatePolynomial(R)
 --R derivationCoordinates : (Vector(%),(R -> R)) -> Matrix(R) if R has FIELD
 --R differentiate : % -> % if and(has(R,Field),has(R,DifferentialRing)) or R has DIFRING or and(has(R,DifferentialRing),has(R,Field))
@@ -76238,7 +76479,6 @@ digraph pic {
 --R differentiate : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
---R differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if R has FFIELDC
 --R discreteLog : % -> NonNegativeInteger if R has FFIELDC
@@ -76252,7 +76492,6 @@ digraph pic {
 --R eval : (%,Equation(R)) -> % if R has EVALAB(R)
 --R eval : (%,R,R) -> % if R has EVALAB(R)
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R)
---R exp : % -> % if R has TRANFUN
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has EUCDOM
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM or R has EUCDOM and R has PFECAT
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
@@ -76266,15 +76505,11 @@ digraph pic {
 --R gcd : List(%) -> % if R has EUCDOM or R has EUCDOM and R has PFECAT
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has EUCDOM or R has EUCDOM and R has PFECAT
 --R index : PositiveInteger -> % if R has FINITE
---R init : () -> % if R has FFIELDC
 --R lcm : (%,%) -> % if R has EUCDOM or R has EUCDOM and R has PFECAT
 --R lcm : List(%) -> % if R has EUCDOM or R has EUCDOM and R has PFECAT
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has EUCDOM or R has EUCDOM and R has PFECAT
 --R lift : % -> SparseUnivariatePolynomial(R)
---R log : % -> % if R has TRANFUN
 --R lookup : % -> PositiveInteger if R has FINITE
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has FIELD
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has EUCDOM
 --R nextItem : % -> Union(%,"failed") if R has FFIELDC
@@ -76291,7 +76526,6 @@ digraph pic {
 --R primitiveElement : () -> % if R has FFIELDC
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has EUCDOM
 --R ?quo? : (%,%) -> % if R has EUCDOM
---R random : () -> % if R has FINITE
 --R rational : % -> Fraction(Integer) if R has INS
 --R rational? : % -> Boolean if R has INS
 --R rationalIfCan : % -> Union(Fraction(Integer),"failed") if R has INS
@@ -76311,10 +76545,6 @@ digraph pic {
 --R retractIfCan : % -> Union(R,"failed")
 --R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
 --R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
---R sec : % -> % if R has TRANFUN
---R sech : % -> % if R has TRANFUN
---R sin : % -> % if R has TRANFUN
---R sinh : % -> % if R has TRANFUN
 --R size : () -> NonNegativeInteger if R has FINITE
 --R sizeLess? : (%,%) -> Boolean if R has EUCDOM
 --R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if R has EUCDOM and R has PFECAT
@@ -76324,8 +76554,6 @@ digraph pic {
 --R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has EUCDOM and R has PFECAT
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R tableForDiscreteLogarithm : Integer -> Table(PositiveInteger,NonNegativeInteger) if R has FFIELDC
---R tan : % -> % if R has TRANFUN
---R tanh : % -> % if R has TRANFUN
 --R traceMatrix : Vector(%) -> Matrix(R)
 --R unit? : % -> Boolean if R has INTDOM or R has EUCDOM and R has PFECAT
 --R unitCanonical : % -> % if R has INTDOM or R has EUCDOM and R has PFECAT
@@ -77295,34 +77523,37 @@ digraph pic {
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(UP),%) -> %           ?*? : (%,Fraction(UP)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        basis : () -> Vector(%)
---R branchPoint? : UP -> Boolean          branchPoint? : F -> Boolean
---R coerce : Fraction(UP) -> %            coerce : Integer -> %
---R coerce : % -> OutputForm              convert : UPUP -> %
---R convert : % -> UPUP                   definingPolynomial : () -> UPUP
---R discriminant : () -> Fraction(UP)     elt : (%,F,F) -> F
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R basis : () -> Vector(%)               branchPoint? : UP -> Boolean
+--R branchPoint? : F -> Boolean           coerce : Fraction(UP) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R convert : UPUP -> %                   convert : % -> UPUP
+--R convert : Vector(Fraction(UP)) -> %   convert : % -> Vector(Fraction(UP))
+--R definingPolynomial : () -> UPUP       discriminant : () -> Fraction(UP)
+--R elliptic : () -> Union(UP,"failed")   elt : (%,F,F) -> F
 --R generator : () -> %                   genus : () -> NonNegativeInteger
 --R hash : % -> SingleInteger             integral? : (%,UP) -> Boolean
 --R integral? : (%,F) -> Boolean          integral? : % -> Boolean
---R integralBasis : () -> Vector(%)       latex : % -> String
---R lift : % -> UPUP                      norm : % -> Fraction(UP)
---R one? : % -> Boolean                   primitivePart : % -> %
---R ramified? : UP -> Boolean             ramified? : F -> Boolean
+--R integralAtInfinity? : % -> Boolean    integralBasis : () -> Vector(%)
+--R latex : % -> String                   lift : % -> UPUP
+--R norm : % -> Fraction(UP)              one? : % -> Boolean
+--R primitivePart : % -> %                ramified? : UP -> Boolean
+--R ramified? : F -> Boolean              ramifiedAtInfinity? : () -> Boolean
 --R rank : () -> PositiveInteger          rationalPoint? : (F,F) -> Boolean
 --R recip : % -> Union(%,"failed")        reduce : UPUP -> %
 --R represents : (Vector(UP),UP) -> %     retract : % -> Fraction(UP)
 --R sample : () -> %                      singular? : UP -> Boolean
---R singular? : F -> Boolean              trace : % -> Fraction(UP)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R singular? : F -> Boolean              singularAtInfinity? : () -> Boolean
+--R trace : % -> Fraction(UP)             zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Fraction(UP) has FIELD
 --R ?*? : (Fraction(Integer),%) -> % if Fraction(UP) has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if Fraction(UP) has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Fraction(UP) has FIELD
 --R D : % -> % if and(has(Fraction(UP),Field),has(Fraction(UP),DifferentialRing)) or and(has(Fraction(UP),DifferentialRing),has(Fraction(UP),Field)) or Fraction(UP) has FFIELDC
 --R D : (%,NonNegativeInteger) -> % if and(has(Fraction(UP),Field),has(Fraction(UP),DifferentialRing)) or and(has(Fraction(UP),DifferentialRing),has(Fraction(UP),Field)) or Fraction(UP) has FFIELDC
@@ -77333,7 +77564,6 @@ digraph pic {
 --R D : (%,(Fraction(UP) -> Fraction(UP))) -> % if Fraction(UP) has FIELD
 --R D : (%,(Fraction(UP) -> Fraction(UP)),NonNegativeInteger) -> % if Fraction(UP) has FIELD
 --R ?^? : (%,Integer) -> % if Fraction(UP) has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R absolutelyIrreducible? : () -> Boolean
 --R algSplitSimple : (%,(UP -> UP)) -> Record(num: %,den: UP,derivden: UP,gd: UP)
 --R associates? : (%,%) -> Boolean if Fraction(UP) has FIELD
@@ -77346,8 +77576,6 @@ digraph pic {
 --R coerce : Fraction(Integer) -> % if Fraction(UP) has FIELD or Fraction(UP) has RETRACT(FRAC(INT))
 --R complementaryBasis : Vector(%) -> Vector(%)
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if Fraction(UP) has FFIELDC
---R convert : Vector(Fraction(UP)) -> %
---R convert : % -> Vector(Fraction(UP))
 --R coordinates : Vector(%) -> Matrix(Fraction(UP))
 --R coordinates : % -> Vector(Fraction(UP))
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(Fraction(UP))
@@ -77367,7 +77595,6 @@ digraph pic {
 --R discreteLog : % -> NonNegativeInteger if Fraction(UP) has FFIELDC
 --R discriminant : Vector(%) -> Fraction(UP)
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if Fraction(UP) has FIELD
---R elliptic : () -> Union(UP,"failed")
 --R enumerate : () -> List(%) if Fraction(UP) has FINITE
 --R euclideanSize : % -> NonNegativeInteger if Fraction(UP) has FIELD
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if Fraction(UP) has FIELD
@@ -77382,7 +77609,6 @@ digraph pic {
 --R hyperelliptic : () -> Union(UP,"failed")
 --R index : PositiveInteger -> % if Fraction(UP) has FINITE
 --R init : () -> % if Fraction(UP) has FFIELDC
---R integralAtInfinity? : % -> Boolean
 --R integralBasisAtInfinity : () -> Vector(%)
 --R integralCoordinates : % -> Record(num: Vector(UP),den: UP)
 --R integralDerivationMatrix : (UP -> UP) -> Record(num: Matrix(UP),den: UP)
@@ -77411,7 +77637,6 @@ digraph pic {
 --R primitiveElement : () -> % if Fraction(UP) has FFIELDC
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if Fraction(UP) has FIELD
 --R ?quo? : (%,%) -> % if Fraction(UP) has FIELD
---R ramifiedAtInfinity? : () -> Boolean
 --R random : () -> % if Fraction(UP) has FINITE
 --R rationalPoints : () -> List(List(F)) if F has FINITE
 --R reduce : Fraction(UPUP) -> Union(%,"failed") if Fraction(UP) has FIELD
@@ -77431,7 +77656,6 @@ digraph pic {
 --R retractIfCan : % -> Union(Fraction(UP),"failed")
 --R retractIfCan : % -> Union(Fraction(Integer),"failed") if Fraction(UP) has RETRACT(FRAC(INT))
 --R retractIfCan : % -> Union(Integer,"failed") if Fraction(UP) has RETRACT(INT)
---R singularAtInfinity? : () -> Boolean
 --R size : () -> NonNegativeInteger if Fraction(UP) has FINITE
 --R sizeLess? : (%,%) -> Boolean if Fraction(UP) has FIELD
 --R squareFree : % -> Factored(%) if Fraction(UP) has FIELD
@@ -78507,43 +78731,41 @@ digraph pic {
 --R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,Fraction(Integer)) -> %      ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : Fraction(Integer) -> %       coerce : Integer -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R conjugate : % -> %                    dimension : () -> CardinalNumber
---R extDegree : % -> PositiveInteger      factor : % -> Factored(%)
---R fullOutput : % -> OutputForm          gcd : List(%) -> %
---R gcd : (%,%) -> %                      ground? : % -> Boolean
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R maxTower : List(%) -> %               one? : % -> Boolean
---R previousTower : % -> %                prime? : % -> Boolean
---R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    retract : % -> Fraction(Integer)
---R retract : % -> Fraction(Integer)      retract : % -> Integer
---R sample : () -> %                      setTower! : % -> Void
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : Fraction(Integer) -> %
+--R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              conjugate : % -> %
+--R dimension : () -> CardinalNumber      extDegree : % -> PositiveInteger
+--R factor : % -> Factored(%)             fullOutput : % -> OutputForm
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      maxTower : List(%) -> %
+--R one? : % -> Boolean                   previousTower : % -> %
+--R prime? : % -> Boolean                 ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Fraction(Integer)
+--R retract : % -> Integer                sample : () -> %
+--R setTower! : % -> Void                 sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                vectorise : (%,%) -> Vector(%)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,PseudoAlgebraicClosureOfRationalNumber) -> %
 --R ?*? : (PseudoAlgebraicClosureOfRationalNumber,%) -> %
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,PseudoAlgebraicClosureOfRationalNumber) -> %
 --R Frobenius : % -> % if PseudoAlgebraicClosureOfRationalNumber has FINITE or Fraction(Integer) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if PseudoAlgebraicClosureOfRationalNumber has FINITE or Fraction(Integer) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if PseudoAlgebraicClosureOfRationalNumber has CHARNZ or PseudoAlgebraicClosureOfRationalNumber has FINITE or Fraction(Integer) has CHARNZ or Fraction(Integer) has FINITE
 --R coerce : PseudoAlgebraicClosureOfRationalNumber -> %
diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index 0585c7f..5329aa3 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -445,7 +445,7 @@ A Gonshor genetic algebra ([WB], p. 41-42) of dimension 4:
 
 The coefficient ring:
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 1 of 98
+--S 1 of 99
 R := FRAC POLY INT
 --R 
 --R
@@ -457,7 +457,7 @@ R := FRAC POLY INT
 The following multiplication constants may be chosen arbitrarily
 (notice that we write ckij for $c_(i,j)^k$):
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 2 of 98
+--S 2 of 99
 (c100, c101, _
 c200, c201, c202, c211, _
 c300, c301, c302, c303, c311, c312, c322) : R
@@ -465,14 +465,14 @@ c300, c301, c302, c303, c311, c312, c322) : R
 --R                                                                   Type: Void
 --E 2
 
---S 3 of 98
+--S 3 of 99
 c100 :=  1 ;     c101 := -1 ;
 --R 
 --R
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 3
 
---S 4 of 98
+--S 4 of 99
 c200 :=  0 ;     c201 :=  1 ;     c202 := -1 ;
                  c211 :=  2 ;
 --R 
@@ -480,7 +480,7 @@ c200 :=  0 ;     c201 :=  1 ;     c202 := -1 ;
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 4
 
---S 5 of 98
+--S 5 of 99
 c300 :=  1 ;     c301 :=  0 ;     c302 := -1 ;     c303 :=  1 ;
                  c311 :=  1 ;     c312 :=  0 ;
                                   c322 :=  2 ;
@@ -492,7 +492,7 @@ c300 :=  1 ;     c301 :=  0 ;     c302 := -1 ;     c303 :=  1 ;
 \end{chunk}
 The matrices of the multiplication constants:
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 6 of 98
+--S 6 of 99
 gonshor : List SquareMatrix(4,R) :=
   [matrix [ [1, 0, 0, 0], [0, 0, 0, 0],_
             [0, 0, 0, 0], [0, 0, 0, 0] ],_
@@ -507,7 +507,7 @@ gonshor : List SquareMatrix(4,R) :=
 --R                    Type: List(SquareMatrix(4,Fraction(Polynomial(Integer))))
 --E 6
 
---S 7 of 98
+--S 7 of 99
 basisSymbols : List Symbol := [subscript(e,[i]) for i in 0..3]
 --R 
 --R
@@ -516,7 +516,7 @@ basisSymbols : List Symbol := [subscript(e,[i]) for i in 0..3]
 --R                                                           Type: List(Symbol)
 --E 7
 
---S 8 of 98
+--S 8 of 99
 GonshorGenetic := ALGSC(R, 4, basisSymbols, gonshor)
 --R 
 --R
@@ -526,7 +526,7 @@ GonshorGenetic := ALGSC(R, 4, basisSymbols, gonshor)
 --R                                                                 Type: Domain
 --E 8
 
---S 9 of 98
+--S 9 of 99
 commutative?()$GonshorGenetic
 --R 
 --R   algebra is commutative
@@ -535,7 +535,7 @@ commutative?()$GonshorGenetic
 --R                                                                Type: Boolean
 --E 9
 
---S 10 of 98
+--S 10 of 99
 associative?()$GonshorGenetic
 --R 
 --R   algebra is not associative
@@ -547,28 +547,28 @@ associative?()$GonshorGenetic
 \end{chunk}
 The canonical basis:
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 11 of 98
+--S 11 of 99
 e0 : GonshorGenetic := [1, 0, 0, 0] :: Vector R ;
 --R 
 --R
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 11
 
---S 12 of 98
+--S 12 of 99
 e1 : GonshorGenetic := [0, 1, 0, 0] :: Vector R ;
 --R 
 --R
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 12
 
---S 13 of 98
+--S 13 of 99
 e2 : GonshorGenetic := [0, 0, 1, 0] :: Vector R ;
 --R 
 --R
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 13
 
---S 14 of 98
+--S 14 of 99
 e3 : GonshorGenetic := [0, 0, 0, 1] :: Vector R ;
 --R 
 --R
@@ -578,7 +578,7 @@ e3 : GonshorGenetic := [0, 0, 0, 1] :: Vector R ;
 \end{chunk}
 A generic element of the algebra:
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 15 of 98
+--S 15 of 99
 x  : GonshorGenetic := x0*e0 + x1*e1 + x2*e2 + x3*e3
 --R 
 --R
@@ -590,7 +590,7 @@ x  : GonshorGenetic := x0*e0 + x1*e1 + x2*e2 + x3*e3
 \end{chunk}
 The matrix of the left multiplication with x :
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 16 of 98
+--S 16 of 99
 Lx := leftRegularRepresentation x
 --R 
 --R
@@ -611,7 +611,7 @@ defined by 8(e0) := 1 and 8(ei) := 0 for i = 1,2,3 .
 The coefficients of the characteristic polynomial
 of Lx depend only on 8(x) = x0 :
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 17 of 98
+--S 17 of 99
 p := characteristicPolynomial(Lx,Y)
 --R 
 --R
@@ -623,7 +623,7 @@ p := characteristicPolynomial(Lx,Y)
 \end{chunk}
 The left minimal polynomial of x divides Y * p(Y) :
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 18 of 98
+--S 18 of 99
 leftMinimalPolynomial x
 --R 
 --R
@@ -634,7 +634,7 @@ leftMinimalPolynomial x
 
 )clear prop A a b c r s
  
---S 19 of 98
+--S 19 of 99
 A := GonshorGenetic
 --R 
 --R
@@ -644,7 +644,7 @@ A := GonshorGenetic
 --R                                                                 Type: Domain
 --E 19
 
---S 20 of 98
+--S 20 of 99
 a := x
 --R 
 --R
@@ -653,7 +653,7 @@ a := x
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 20
 
---S 21 of 98
+--S 21 of 99
 b := (1/4)*e1 + (1/5)*e2 + (3/20)*e3 + (2/5)*e0
 --R 
 --R
@@ -663,7 +663,7 @@ b := (1/4)*e1 + (1/5)*e2 + (3/20)*e3 + (2/5)*e0
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 21
 
---S 22 of 98
+--S 22 of 99
 c := (1/3)*e1 + (1/7)*e2 + (8/21)*e3 + (1/7)*e0
 --R 
 --R
@@ -673,7 +673,7 @@ c := (1/3)*e1 + (1/7)*e2 + (8/21)*e3 + (1/7)*e0
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 22
 
---S 23 of 98
+--S 23 of 99
 r  : R := r
 --R 
 --R
@@ -681,7 +681,7 @@ r  : R := r
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 23
 
---S 24 of 98
+--S 24 of 99
 s  : R := s
 --R 
 --R
@@ -689,7 +689,7 @@ s  : R := s
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 24
 
---S 25 of 98
+--S 25 of 99
 b*c
 --R 
 --R
@@ -699,7 +699,7 @@ b*c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 25
 
---S 26 of 98
+--S 26 of 99
 (b*c)*b
 --R 
 --R
@@ -709,7 +709,7 @@ b*c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 26
 
---S 27 of 98
+--S 27 of 99
 b*(c*b)
 --R 
 --R
@@ -726,7 +726,7 @@ r,s : R
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
 
 )clear prop AP
---S 28 of 98
+--S 28 of 99
 AP := ALGPKG(R,A)
 --R 
 --R
@@ -737,7 +737,7 @@ AP := ALGPKG(R,A)
 --R                                                                 Type: Domain
 --E 28
 
---S 29 of 98
+--S 29 of 99
 r*a
 --R 
 --R
@@ -746,7 +746,7 @@ r*a
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 29
 
---S 30 of 98
+--S 30 of 99
 a*r
 --R 
 --R
@@ -755,7 +755,7 @@ a*r
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 30
 
---S 31 of 98
+--S 31 of 99
 a*b
 --R 
 --R
@@ -765,7 +765,7 @@ a*b
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 31
 
---S 32 of 98
+--S 32 of 99
 b*c
 --R 
 --R
@@ -775,7 +775,7 @@ b*c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 32
 
---S 33 of 98
+--S 33 of 99
 12 * c
 --R 
 --R
@@ -785,7 +785,7 @@ b*c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 32
 
---S 34 of 98
+--S 34 of 99
 (-3) * a
 --R 
 --R
@@ -794,7 +794,7 @@ b*c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 34
 
---S 35 of 98
+--S 35 of 99
 d  :=  a ** 12
 --R 
 --R
@@ -814,7 +814,7 @@ d  :=  a ** 12
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 35
 
---S 36 of 98
+--S 36 of 99
 -d
 --R 
 --R
@@ -834,7 +834,7 @@ d  :=  a ** 12
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 36
 
---S 37 of 98
+--S 37 of 99
 a + b
 --R 
 --R
@@ -844,7 +844,7 @@ a + b
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 37
 
---S 38 of 98
+--S 38 of 99
 d-c
 --R 
 --R
@@ -872,7 +872,7 @@ d-c
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 38
 
---S 39 of 98
+--S 39 of 99
 (a*(a*a) = leftPower(a,3)) :: Boolean
 --R 
 --R
@@ -880,7 +880,7 @@ d-c
 --R                                                                Type: Boolean
 --E 39
 
---S 40 of 98
+--S 40 of 99
 (a ** 11 =  (a**8 * a**2) * a) :: Boolean
 --R 
 --R
@@ -888,7 +888,7 @@ d-c
 --R                                                                Type: Boolean
 --E 40
 
---S 41 of 98
+--S 41 of 99
 (a ** 11 =  a**8 * (a**2 * a)) :: Boolean
 --R 
 --R
@@ -896,7 +896,7 @@ d-c
 --R                                                                Type: Boolean
 --E 41
 
---S 42 of 98
+--S 42 of 99
 zero := 0$A
 --R 
 --R
@@ -904,7 +904,7 @@ zero := 0$A
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 42
 
---S 43 of 98
+--S 43 of 99
 zero : A := 0
 --R 
 --R
@@ -912,7 +912,7 @@ zero : A := 0
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 43
 
---S 44 of 98
+--S 44 of 99
 alternative?()$A
 --R 
 --R   algebra is not left alternative
@@ -921,7 +921,7 @@ alternative?()$A
 --R                                                                Type: Boolean
 --E 44
 
---S 45 of 98
+--S 45 of 99
 antiCommutative?()$A
 --R 
 --R   algebra is not anti-commutative
@@ -930,7 +930,7 @@ antiCommutative?()$A
 --R                                                                Type: Boolean
 --E 45
 
---S 46 of 98
+--S 46 of 99
 associative?()$A
 --R 
 --R   algebra is not associative
@@ -939,7 +939,7 @@ associative?()$A
 --R                                                                Type: Boolean
 --E 46
 
---S 47 of 98
+--S 47 of 99
 commutative?()$A
 --R 
 --R   algebra is commutative
@@ -948,7 +948,7 @@ commutative?()$A
 --R                                                                Type: Boolean
 --E 47
 
---S 48 of 98
+--S 48 of 99
 commutator(a,b)
 --R 
 --R
@@ -956,7 +956,7 @@ commutator(a,b)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 48
 
---S 49 of 98
+--S 49 of 99
 antiCommutator(a,b)
 --R 
 --R
@@ -966,7 +966,7 @@ antiCommutator(a,b)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 49
 
---S 50 of 98
+--S 50 of 99
 associator(a,b,c)
 --R 
 --R
@@ -976,7 +976,7 @@ associator(a,b,c)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 50
 
---S 51 of 98
+--S 51 of 99
 basis()$A
 --R 
 --R
@@ -985,7 +985,7 @@ basis()$A
 --RType: Vector(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 51
 
---S 52 of 98
+--S 52 of 99
 n := rank()$A
 --R 
 --R
@@ -993,7 +993,7 @@ n := rank()$A
 --R                                                        Type: PositiveInteger
 --E 52
 
---S 53 of 98
+--S 53 of 99
 v : Vector R := [i for i in 1..n]
 --R 
 --R
@@ -1001,7 +1001,7 @@ v : Vector R := [i for i in 1..n]
 --R                                  Type: Vector(Fraction(Polynomial(Integer)))
 --E 53
 
---S 54 of 98
+--S 54 of 99
 g : A := represents  v
 --R 
 --R
@@ -1010,7 +1010,7 @@ g : A := represents  v
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 54
 
---S 55 of 98
+--S 55 of 99
 coordinates a
 --R 
 --R
@@ -1018,7 +1018,7 @@ coordinates a
 --R                                  Type: Vector(Fraction(Polynomial(Integer)))
 --E 55
 
---S 56 of 98
+--S 56 of 99
 coordinates [a,b]
 --R 
 --R
@@ -1030,7 +1030,7 @@ coordinates [a,b]
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 56
 
---S 57 of 98
+--S 57 of 99
 a.3
 --R 
 --R
@@ -1038,7 +1038,7 @@ a.3
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 57
 
---S 58 of 98
+--S 58 of 99
 flexible?()$A
 --R 
 --R   algebra is flexible
@@ -1047,7 +1047,7 @@ flexible?()$A
 --R                                                                Type: Boolean
 --E 58
 
---S 59 of 98
+--S 59 of 99
 leftAlternative?()$A
 --R 
 --R   algebra is not left alternative
@@ -1056,7 +1056,7 @@ leftAlternative?()$A
 --R                                                                Type: Boolean
 --E 59
 
---S 60 of 98
+--S 60 of 99
 rightAlternative?()$A
 --R 
 --R   algebra is not right alternative
@@ -1065,7 +1065,7 @@ rightAlternative?()$A
 --R                                                                Type: Boolean
 --E 60
 
---S 61 of 98
+--S 61 of 99
 sB := someBasis()$A
 --R 
 --R
@@ -1074,7 +1074,7 @@ sB := someBasis()$A
 --RType: Vector(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 61
 
---S 62 of 98
+--S 62 of 99
 zero? a
 --R 
 --R
@@ -1082,7 +1082,7 @@ zero? a
 --R                                                                Type: Boolean
 --E 62
 
---S 63 of 98
+--S 63 of 99
 associatorDependence()$A
 --R 
 --R
@@ -1093,7 +1093,7 @@ associatorDependence()$A
 \end{chunk}
 ConditionsForIdempotents()\$A
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 64 of 98
+--S 64 of 99
 jacobiIdentity?()$A
 --R 
 --R   Jacobi identity does not hold
@@ -1102,7 +1102,7 @@ jacobiIdentity?()$A
 --R                                                                Type: Boolean
 --E 64
 
---S 65 of 98
+--S 65 of 99
 jordanAlgebra?()$A
 --R 
 --R   algebra is commutative
@@ -1112,7 +1112,7 @@ jordanAlgebra?()$A
 --R                                                                Type: Boolean
 --E 65
 
---S 66 of 98
+--S 66 of 99
 jordanAdmissible?()$A
 --R 
 --R   algebra is not Jordan admissible
@@ -1121,7 +1121,7 @@ jordanAdmissible?()$A
 --R                                                                Type: Boolean
 --E 66
 
---S 67 of 98
+--S 67 of 99
 lieAdmissible?()$A
 --R 
 --R   algebra is Lie admissible
@@ -1133,7 +1133,7 @@ lieAdmissible?()$A
 \end{chunk}
 ConditionsForIdempotents 
 \begin{chunk}{AlgebraGivenByStructuralConstants.input}
---S 68 of 98
+--S 68 of 99
 b2 := [reduce(+,[sB.i for i in 1..k]) for k in 1..n]
 --R 
 --R
@@ -1142,7 +1142,7 @@ b2 := [reduce(+,[sB.i for i in 1..k]) for k in 1..n]
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 68
 
---S 69 of 98
+--S 69 of 99
 coordinates  (a ,b2 :: Vector A)
 --R 
 --R
@@ -1150,7 +1150,7 @@ coordinates  (a ,b2 :: Vector A)
 --R                                  Type: Vector(Fraction(Polynomial(Integer)))
 --E 69
 
---S 70 of 98
+--S 70 of 99
 coordinates  ([a,b] ,bb := (b2 :: Vector A))
 --R 
 --R
@@ -1162,7 +1162,7 @@ coordinates  ([a,b] ,bb := (b2 :: Vector A))
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 70
 
---S 71 of 98
+--S 71 of 99
 leftMinimalPolynomial a
 --R 
 --R
@@ -1171,7 +1171,7 @@ leftMinimalPolynomial a
 --R              Type: SparseUnivariatePolynomial(Fraction(Polynomial(Integer)))
 --E 71
 
---S 72 of 98
+--S 72 of 99
 leftPower (a,10)
 --R 
 --R
@@ -1186,7 +1186,7 @@ leftPower (a,10)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 72
 
---S 73 of 98
+--S 73 of 99
 rightPower(a,10)
 --R 
 --R
@@ -1201,7 +1201,7 @@ rightPower(a,10)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 73
 
---S 74 of 98
+--S 74 of 99
 leftRegularRepresentation a
 --R 
 --R
@@ -1215,7 +1215,7 @@ leftRegularRepresentation a
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 74
 
---S 75 of 98
+--S 75 of 99
 leftRegularRepresentation (a,bb)
 --R 
 --R
@@ -1229,7 +1229,7 @@ leftRegularRepresentation (a,bb)
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 75
 
---S 76 of 98
+--S 76 of 99
 leftUnit()$A
 --R 
 --R   this algebra has no left unit
@@ -1238,7 +1238,7 @@ leftUnit()$A
 --R                                                    Type: Union("failed",...)
 --E 76
 
---S 77 of 98
+--S 77 of 99
 represents (v,bb)
 --R 
 --R
@@ -1247,7 +1247,7 @@ represents (v,bb)
 --RType: AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX])
 --E 77
 
---S 78 of 98
+--S 78 of 99
 rightMinimalPolynomial a
 --R 
 --R
@@ -1256,7 +1256,7 @@ rightMinimalPolynomial a
 --R              Type: SparseUnivariatePolynomial(Fraction(Polynomial(Integer)))
 --E 78
 
---S 79 of 98
+--S 79 of 99
 rightRegularRepresentation a
 --R 
 --R
@@ -1270,7 +1270,7 @@ rightRegularRepresentation a
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 79
 
---S 80 of 98
+--S 80 of 99
 rightRegularRepresentation (a,bb)
 --R 
 --R
@@ -1284,7 +1284,7 @@ rightRegularRepresentation (a,bb)
 --R                                  Type: Matrix(Fraction(Polynomial(Integer)))
 --E 80
 
---S 81 of 98
+--S 81 of 99
 rightUnit()$A
 --R 
 --R   this algebra has no right unit
@@ -1293,7 +1293,7 @@ rightUnit()$A
 --R                                                    Type: Union("failed",...)
 --E 81
 
---S 82 of 98
+--S 82 of 99
 structuralConstants()$A
 --R 
 --R
@@ -1307,7 +1307,7 @@ structuralConstants()$A
 --R                          Type: Vector(Matrix(Fraction(Polynomial(Integer))))
 --E 82
 
---S 83 of 98
+--S 83 of 99
 structuralConstants(bb)
 --R 
 --R
@@ -1321,7 +1321,7 @@ structuralConstants(bb)
 --R                          Type: Vector(Matrix(Fraction(Polynomial(Integer))))
 --E 83
 
---S 84 of 98
+--S 84 of 99
 unit()$A
 --R 
 --R   this algebra has no unit
@@ -1330,7 +1330,7 @@ unit()$A
 --R                                                    Type: Union("failed",...)
 --E 84
 
---S 85 of 98
+--S 85 of 99
 biRank  a
 --R 
 --R
@@ -1338,7 +1338,7 @@ biRank  a
 --R                                                        Type: PositiveInteger
 --E 85
 
---S 86 of 98
+--S 86 of 99
 leftRank a
 --R 
 --R
@@ -1346,7 +1346,7 @@ leftRank a
 --R                                                        Type: PositiveInteger
 --E 86
 
---S 87 of 98
+--S 87 of 99
 doubleRank a
 --R 
 --R
@@ -1354,7 +1354,7 @@ doubleRank a
 --R                                                        Type: PositiveInteger
 --E 87
 
---S 88 of 98
+--S 88 of 99
 rightRank a
 --R 
 --R
@@ -1362,7 +1362,7 @@ rightRank a
 --R                                                        Type: PositiveInteger
 --E 88
 
---S 89 of 98
+--S 89 of 99
 weakBiRank a
 --R 
 --R
@@ -1370,7 +1370,7 @@ weakBiRank a
 --R                                                        Type: PositiveInteger
 --E 89
 
---S 90 of 98
+--S 90 of 99
 basisOfCenter()$AP
 --R 
 --R
@@ -1379,7 +1379,7 @@ basisOfCenter()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 90
 
---S 91 of 98
+--S 91 of 99
 basisOfLeftNucleus()$AP
 --R 
 --R
@@ -1388,7 +1388,7 @@ basisOfLeftNucleus()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 91
 
---S 92 of 98
+--S 92 of 99
 basisOfNucleus()$AP
 --R 
 --R
@@ -1397,7 +1397,7 @@ basisOfNucleus()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 92
 
---S 93 of 98
+--S 93 of 99
 basisOfRightNucleus()$AP
 --R 
 --R
@@ -1406,7 +1406,7 @@ basisOfRightNucleus()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 93
 
---S 94 of 98
+--S 94 of 99
 basisOfCentroid()$AP
 --R 
 --R
@@ -1420,7 +1420,7 @@ basisOfCentroid()$AP
 --R                            Type: List(Matrix(Fraction(Polynomial(Integer))))
 --E 94
 
---S 95 of 98
+--S 95 of 99
 basisOfCommutingElements()$AP
 --R 
 --R
@@ -1429,7 +1429,7 @@ basisOfCommutingElements()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 95
 
---S 96 of 98
+--S 96 of 99
 basisOfLeftNucloid()$AP
 --R 
 --R
@@ -1443,7 +1443,7 @@ basisOfLeftNucloid()$AP
 --R                            Type: List(Matrix(Fraction(Polynomial(Integer))))
 --E 96
 
---S 97 of 98
+--S 97 of 99
 basisOfMiddleNucleus()$AP
 --R 
 --R
@@ -1452,7 +1452,7 @@ basisOfMiddleNucleus()$AP
 --RType: List(AlgebraGivenByStructuralConstants(Fraction(Polynomial(Integer)),4,[*01e0,*01e1,*01e2,*01e3],[MATRIX,MATRIX,MATRIX,MATRIX]))
 --E 97
 
---S 98 of 98
+--S 98 of 99
 basisOfRightNucloid()$AP
 --R 
 --R
@@ -1466,6 +1466,80 @@ basisOfRightNucloid()$AP
 --R                            Type: List(Matrix(Fraction(Polynomial(Integer))))
 --E 98
 
+--S 99 of 99
+)show AlgebraGivenByStructuralConstants
+--R 
+--R AlgebraGivenByStructuralConstants(R: Field,n: PositiveInteger,ls: List(Symbol),gamma: Vector(Matrix(R)))  is a domain constructor
+--R Abbreviation for AlgebraGivenByStructuralConstants is ALGSC 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for ALGSC 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (SquareMatrix(n,R),%) -> %      ?*? : (R,%) -> %
+--R ?*? : (%,R) -> %                      ?*? : (%,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           alternative? : () -> Boolean
+--R antiAssociative? : () -> Boolean      antiCommutative? : () -> Boolean
+--R antiCommutator : (%,%) -> %           apply : (Matrix(R),%) -> %
+--R associative? : () -> Boolean          associator : (%,%,%) -> %
+--R basis : () -> Vector(%)               coerce : Vector(R) -> %
+--R coerce : % -> OutputForm              commutative? : () -> Boolean
+--R commutator : (%,%) -> %               convert : Vector(R) -> %
+--R convert : % -> Vector(R)              coordinates : % -> Vector(R)
+--R ?.? : (%,Integer) -> R                flexible? : () -> Boolean
+--R hash : % -> SingleInteger             jacobiIdentity? : () -> Boolean
+--R jordanAdmissible? : () -> Boolean     jordanAlgebra? : () -> Boolean
+--R latex : % -> String                   leftAlternative? : () -> Boolean
+--R leftDiscriminant : () -> R            leftDiscriminant : Vector(%) -> R
+--R leftNorm : % -> R                     leftTrace : % -> R
+--R leftTraceMatrix : () -> Matrix(R)     lieAdmissible? : () -> Boolean
+--R lieAlgebra? : () -> Boolean           powerAssociative? : () -> Boolean
+--R rank : () -> PositiveInteger          represents : Vector(R) -> %
+--R rightAlternative? : () -> Boolean     rightDiscriminant : () -> R
+--R rightDiscriminant : Vector(%) -> R    rightNorm : % -> R
+--R rightTrace : % -> R                   rightTraceMatrix : () -> Matrix(R)
+--R sample : () -> %                      someBasis : () -> Vector(%)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R associatorDependence : () -> List(Vector(R)) if R has INTDOM
+--R conditionsForIdempotents : () -> List(Polynomial(R))
+--R conditionsForIdempotents : Vector(%) -> List(Polynomial(R))
+--R coordinates : Vector(%) -> Matrix(R)
+--R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
+--R coordinates : (%,Vector(%)) -> Vector(R)
+--R leftCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
+--R leftMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
+--R leftPower : (%,PositiveInteger) -> %
+--R leftRankPolynomial : () -> SparseUnivariatePolynomial(Polynomial(R)) if R has FIELD
+--R leftRecip : % -> Union(%,"failed") if R has INTDOM
+--R leftRegularRepresentation : % -> Matrix(R)
+--R leftRegularRepresentation : (%,Vector(%)) -> Matrix(R)
+--R leftTraceMatrix : Vector(%) -> Matrix(R)
+--R leftUnit : () -> Union(%,"failed") if R has INTDOM
+--R leftUnits : () -> Union(Record(particular: %,basis: List(%)),"failed") if R has INTDOM
+--R noncommutativeJordanAlgebra? : () -> Boolean
+--R plenaryPower : (%,PositiveInteger) -> %
+--R recip : % -> Union(%,"failed") if R has INTDOM
+--R represents : (Vector(R),Vector(%)) -> %
+--R rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial(R)
+--R rightMinimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has INTDOM
+--R rightPower : (%,PositiveInteger) -> %
+--R rightRankPolynomial : () -> SparseUnivariatePolynomial(Polynomial(R)) if R has FIELD
+--R rightRecip : % -> Union(%,"failed") if R has INTDOM
+--R rightRegularRepresentation : % -> Matrix(R)
+--R rightRegularRepresentation : (%,Vector(%)) -> Matrix(R)
+--R rightTraceMatrix : Vector(%) -> Matrix(R)
+--R rightUnit : () -> Union(%,"failed") if R has INTDOM
+--R rightUnits : () -> Union(Record(particular: %,basis: List(%)),"failed") if R has INTDOM
+--R structuralConstants : () -> Vector(Matrix(R))
+--R structuralConstants : Vector(%) -> Vector(Matrix(R))
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unit : () -> Union(%,"failed") if R has INTDOM
+--R
+--E 99
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -2616,34 +2690,37 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(UP),%) -> %           ?*? : (%,Fraction(UP)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        basis : () -> Vector(%)
---R branchPoint? : UP -> Boolean          branchPoint? : F -> Boolean
---R coerce : Fraction(UP) -> %            coerce : Integer -> %
---R coerce : % -> OutputForm              convert : UPUP -> %
---R convert : % -> UPUP                   definingPolynomial : () -> UPUP
---R discriminant : () -> Fraction(UP)     elt : (%,F,F) -> F
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R basis : () -> Vector(%)               branchPoint? : UP -> Boolean
+--R branchPoint? : F -> Boolean           coerce : Fraction(UP) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R convert : UPUP -> %                   convert : % -> UPUP
+--R convert : Vector(Fraction(UP)) -> %   convert : % -> Vector(Fraction(UP))
+--R definingPolynomial : () -> UPUP       discriminant : () -> Fraction(UP)
+--R elliptic : () -> Union(UP,"failed")   elt : (%,F,F) -> F
 --R generator : () -> %                   genus : () -> NonNegativeInteger
 --R hash : % -> SingleInteger             integral? : (%,UP) -> Boolean
 --R integral? : (%,F) -> Boolean          integral? : % -> Boolean
---R integralBasis : () -> Vector(%)       latex : % -> String
---R lift : % -> UPUP                      norm : % -> Fraction(UP)
---R one? : % -> Boolean                   primitivePart : % -> %
---R ramified? : UP -> Boolean             ramified? : F -> Boolean
+--R integralAtInfinity? : % -> Boolean    integralBasis : () -> Vector(%)
+--R latex : % -> String                   lift : % -> UPUP
+--R norm : % -> Fraction(UP)              one? : % -> Boolean
+--R primitivePart : % -> %                ramified? : UP -> Boolean
+--R ramified? : F -> Boolean              ramifiedAtInfinity? : () -> Boolean
 --R rank : () -> PositiveInteger          rationalPoint? : (F,F) -> Boolean
 --R recip : % -> Union(%,"failed")        reduce : UPUP -> %
 --R represents : (Vector(UP),UP) -> %     retract : % -> Fraction(UP)
 --R sample : () -> %                      singular? : UP -> Boolean
---R singular? : F -> Boolean              trace : % -> Fraction(UP)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R singular? : F -> Boolean              singularAtInfinity? : () -> Boolean
+--R trace : % -> Fraction(UP)             zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Fraction(UP) has FIELD
 --R ?*? : (Fraction(Integer),%) -> % if Fraction(UP) has FIELD
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Integer) -> % if Fraction(UP) has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Fraction(UP) has FIELD
 --R D : % -> % if Fraction(UP) has DIFRING and Fraction(UP) has FIELD or Fraction(UP) has FFIELDC
 --R D : (%,NonNegativeInteger) -> % if Fraction(UP) has DIFRING and Fraction(UP) has FIELD or Fraction(UP) has FFIELDC
@@ -2654,7 +2731,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R D : (%,(Fraction(UP) -> Fraction(UP))) -> % if Fraction(UP) has FIELD
 --R D : (%,(Fraction(UP) -> Fraction(UP)),NonNegativeInteger) -> % if Fraction(UP) has FIELD
 --R ?^? : (%,Integer) -> % if Fraction(UP) has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R absolutelyIrreducible? : () -> Boolean
 --R algSplitSimple : (%,(UP -> UP)) -> Record(num: %,den: UP,derivden: UP,gd: UP)
 --R associates? : (%,%) -> Boolean if Fraction(UP) has FIELD
@@ -2667,8 +2743,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R coerce : Fraction(Integer) -> % if Fraction(UP) has FIELD or Fraction(UP) has RETRACT(FRAC(INT))
 --R complementaryBasis : Vector(%) -> Vector(%)
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if Fraction(UP) has FFIELDC
---R convert : Vector(Fraction(UP)) -> %
---R convert : % -> Vector(Fraction(UP))
 --R coordinates : Vector(%) -> Matrix(Fraction(UP))
 --R coordinates : % -> Vector(Fraction(UP))
 --R coordinates : (Vector(%),Vector(%)) -> Matrix(Fraction(UP))
@@ -2688,7 +2762,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R discreteLog : % -> NonNegativeInteger if Fraction(UP) has FFIELDC
 --R discriminant : Vector(%) -> Fraction(UP)
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if Fraction(UP) has FIELD
---R elliptic : () -> Union(UP,"failed")
 --R enumerate : () -> List(%) if Fraction(UP) has FINITE
 --R euclideanSize : % -> NonNegativeInteger if Fraction(UP) has FIELD
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if Fraction(UP) has FIELD
@@ -2703,7 +2776,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R hyperelliptic : () -> Union(UP,"failed")
 --R index : PositiveInteger -> % if Fraction(UP) has FINITE
 --R init : () -> % if Fraction(UP) has FFIELDC
---R integralAtInfinity? : % -> Boolean
 --R integralBasisAtInfinity : () -> Vector(%)
 --R integralCoordinates : % -> Record(num: Vector(UP),den: UP)
 --R integralDerivationMatrix : (UP -> UP) -> Record(num: Matrix(UP),den: UP)
@@ -2733,7 +2805,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R primitiveElement : () -> % if Fraction(UP) has FFIELDC
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if Fraction(UP) has FIELD
 --R ?quo? : (%,%) -> % if Fraction(UP) has FIELD
---R ramifiedAtInfinity? : () -> Boolean
 --R random : () -> % if Fraction(UP) has FINITE
 --R rationalPoints : () -> List(List(F)) if F has FINITE
 --R reduce : Fraction(UPUP) -> Union(%,"failed") if Fraction(UP) has FIELD
@@ -2753,7 +2824,6 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R retractIfCan : % -> Union(Fraction(UP),"failed")
 --R retractIfCan : % -> Union(Fraction(Integer),"failed") if Fraction(UP) has RETRACT(FRAC(INT))
 --R retractIfCan : % -> Union(Integer,"failed") if Fraction(UP) has RETRACT(INT)
---R singularAtInfinity? : () -> Boolean
 --R size : () -> NonNegativeInteger if Fraction(UP) has FINITE
 --R sizeLess? : (%,%) -> Boolean if Fraction(UP) has FIELD
 --R squareFree : % -> Factored(%) if Fraction(UP) has FIELD
@@ -3151,17 +3221,19 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for AN 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?*? : (Integer,%) -> %
---R ?*? : (%,%) -> %                      ?*? : (%,Fraction(Integer)) -> %
---R ?*? : (Fraction(Integer),%) -> %      ?**? : (%,PositiveInteger) -> %
---R ?**? : (%,Integer) -> %               ?+? : (%,%) -> %
---R -? : % -> %                           ?-? : (%,%) -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R D : % -> %                            D : (%,NonNegativeInteger) -> %
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        ?^? : (%,Integer) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (%,%) -> %
+--R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,Fraction(Integer)) -> %
+--R ?+? : (%,%) -> %                      -? : % -> %
+--R ?-? : (%,%) -> %                      ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               D : % -> %
+--R D : (%,NonNegativeInteger) -> %       1 : () -> %
+--R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,Integer) -> %
 --R associates? : (%,%) -> Boolean        belong? : BasicOperator -> Boolean
 --R box : List(%) -> %                    box : % -> %
 --R coerce : Integer -> %                 coerce : % -> %
@@ -3169,55 +3241,50 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R coerce : % -> OutputForm              convert : % -> Complex(Float)
 --R convert : % -> DoubleFloat            convert : % -> Float
 --R differentiate : % -> %                distribute : (%,%) -> %
---R distribute : % -> %                   elt : (BasicOperator,%,%) -> %
---R elt : (BasicOperator,%) -> %          eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           eval : (%,Kernel(%),%) -> %
---R factor : % -> Factored(%)             freeOf? : (%,Symbol) -> Boolean
---R freeOf? : (%,%) -> Boolean            gcd : (%,%) -> %
---R gcd : List(%) -> %                    hash : % -> SingleInteger
---R height : % -> NonNegativeInteger      inv : % -> %
---R is? : (%,Symbol) -> Boolean           kernel : (BasicOperator,%) -> %
+--R distribute : % -> %                   elt : (BasicOperator,List(%)) -> %
+--R elt : (BasicOperator,%,%,%) -> %      elt : (BasicOperator,%,%) -> %
+--R elt : (BasicOperator,%) -> %          eval : (%,Symbol,(% -> %)) -> %
+--R eval : (%,List(%),List(%)) -> %       eval : (%,%,%) -> %
+--R eval : (%,Equation(%)) -> %           eval : (%,List(Equation(%))) -> %
+--R eval : (%,Kernel(%),%) -> %           factor : % -> Factored(%)
+--R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
+--R gcd : (%,%) -> %                      gcd : List(%) -> %
+--R hash : % -> SingleInteger             height : % -> NonNegativeInteger
+--R inv : % -> %                          is? : (%,Symbol) -> Boolean
+--R is? : (%,BasicOperator) -> Boolean    kernel : (BasicOperator,%) -> %
 --R kernels : % -> List(Kernel(%))        latex : % -> String
 --R lcm : (%,%) -> %                      lcm : List(%) -> %
---R max : (%,%) -> %                      min : (%,%) -> %
---R norm : (%,List(Kernel(%))) -> %       norm : (%,Kernel(%)) -> %
---R nthRoot : (%,Integer) -> %            one? : % -> Boolean
---R paren : List(%) -> %                  paren : % -> %
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        reduce : % -> %
---R ?rem? : (%,%) -> %                    retract : % -> Fraction(Integer)
---R retract : % -> Integer                retract : % -> Kernel(%)
---R rootOf : Polynomial(%) -> %           sample : () -> %
+--R map : ((% -> %),Kernel(%)) -> %       max : (%,%) -> %
+--R min : (%,%) -> %                      norm : (%,List(Kernel(%))) -> %
+--R norm : (%,Kernel(%)) -> %             nthRoot : (%,Integer) -> %
+--R one? : % -> Boolean                   paren : List(%) -> %
+--R paren : % -> %                        prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R reduce : % -> %                       ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Integer
+--R retract : % -> Kernel(%)              rootOf : Polynomial(%) -> %
+--R rootsOf : Polynomial(%) -> List(%)    sample : () -> %
 --R sizeLess? : (%,%) -> Boolean          sqrt : % -> %
 --R squareFree : % -> Factored(%)         squareFreePart : % -> %
 --R subst : (%,Equation(%)) -> %          tower : % -> List(Kernel(%))
 --R unit? : % -> Boolean                  unitCanonical : % -> %
 --R zero? : % -> Boolean                  zeroOf : Polynomial(%) -> %
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R zerosOf : Polynomial(%) -> List(%)    ?~=? : (%,%) -> Boolean
 --R characteristic : () -> NonNegativeInteger
 --R coerce : SparseMultivariatePolynomial(Integer,Kernel(%)) -> %
 --R definingPolynomial : % -> % if $ has RING
 --R denom : % -> SparseMultivariatePolynomial(Integer,Kernel(%))
 --R differentiate : (%,NonNegativeInteger) -> %
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
---R elt : (BasicOperator,List(%)) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,%,%,%) -> %
 --R euclideanSize : % -> NonNegativeInteger
 --R eval : (%,BasicOperator,(% -> %)) -> %
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R eval : (%,List(Kernel(%)),List(%)) -> %
 --R even? : % -> Boolean if $ has RETRACT(INT)
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
@@ -3225,11 +3292,9 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
---R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R norm : (SparseUnivariatePolynomial(%),List(Kernel(%))) -> SparseUnivariatePolynomial(%)
@@ -3248,7 +3313,6 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R retractIfCan : % -> Union(Kernel(%),"failed")
 --R rootOf : SparseUnivariatePolynomial(%) -> %
 --R rootOf : (SparseUnivariatePolynomial(%),Symbol) -> %
---R rootsOf : Polynomial(%) -> List(%)
 --R rootsOf : SparseUnivariatePolynomial(%) -> List(%)
 --R rootsOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R subst : (%,List(Kernel(%)),List(%)) -> %
@@ -3257,7 +3321,6 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
 --R zeroOf : SparseUnivariatePolynomial(%) -> %
 --R zeroOf : (SparseUnivariatePolynomial(%),Symbol) -> %
---R zerosOf : Polynomial(%) -> List(%)
 --R zerosOf : SparseUnivariatePolynomial(%) -> List(%)
 --R zerosOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R
@@ -3898,6 +3961,7 @@ AlgebraicNumber(): Exports == Implementation where
 
 --S 1 of 1
 )show AnonymousFunction
+--R 
 --R AnonymousFunction  is a domain constructor
 --R Abbreviation for AnonymousFunction is ANON 
 --R This constructor is not exposed in this frame.
@@ -3978,14 +4042,16 @@ AnonymousFunction():SetCategory == add
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coefficient : (%,%) -> R              coerce : R -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R degree : % -> NonNegativeInteger      exp : List(Integer) -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficient : (%,%) -> R
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              degree : % -> NonNegativeInteger
+--R exp : List(Integer) -> %              generator : NonNegativeInteger -> %
 --R hash : % -> SingleInteger             homogeneous? : % -> Boolean
 --R latex : % -> String                   leadingBasisTerm : % -> %
 --R leadingCoefficient : % -> R           map : ((R -> R),%) -> %
@@ -3993,11 +4059,7 @@ AnonymousFunction():SetCategory == add
 --R reductum : % -> %                     retract : % -> R
 --R retractable? : % -> Boolean           sample : () -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
---R generator : NonNegativeInteger -> %
 --R retractIfCan : % -> Union(R,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -4965,8 +5027,8 @@ b := generator()$Sae
 --R coerce : % -> OutputForm              dom : % -> SExpression
 --R domainOf : % -> OutputForm            hash : % -> SingleInteger
 --R latex : % -> String                   obj : % -> None
---R objectOf : % -> OutputForm            ?~=? : (%,%) -> Boolean
---R showTypeInOutput : Boolean -> String
+--R objectOf : % -> OutputForm            showTypeInOutput : Boolean -> String
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 18
 
@@ -5539,9 +5601,9 @@ latex a
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                extract! : % -> S
 --R insert! : (S,%) -> %                  inspect : % -> S
---R map : ((S -> S),%) -> %               pop! : % -> S
---R push! : (S,%) -> S                    sample : () -> %
---R top : % -> S                         
+--R latex : % -> String if S has SETCAT   map : ((S -> S),%) -> %
+--R pop! : % -> S                         push! : (S,%) -> S
+--R sample : () -> %                      top : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -5554,7 +5616,6 @@ latex a
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -6578,13 +6639,12 @@ ArrayStack(S:SetCategory): StackAggregate(S) with
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : FortranExpression([construct,QUOTEX],[construct],MachineFloat) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -7792,13 +7852,12 @@ Asp20(name): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : FortranExpression([construct],[construct,QUOTEXC],MachineFloat) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -7986,9 +8045,9 @@ Asp24(name): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Matrix(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Matrix(MachineFloat) -> %
 --R
 --E 1
 
@@ -8153,9 +8212,9 @@ Asp27(name): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Matrix(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Matrix(MachineFloat) -> %
 --R
 --E 1
 
@@ -8678,9 +8737,9 @@ Asp29(name): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Matrix(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Matrix(MachineFloat) -> %
 --R
 --E 1
 
@@ -9251,9 +9310,9 @@ Asp33(name): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Matrix(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Matrix(MachineFloat) -> %
 --R
 --E 1
 
@@ -9683,13 +9742,12 @@ Asp35(name): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : FortranExpression([construct],[construct,QUOTEX],MachineFloat) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -10534,13 +10592,12 @@ Asp42(nameOne,nameTwo,nameThree): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : FortranExpression([construct],[construct,QUOTEX],MachineFloat) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -12709,9 +12766,9 @@ Asp78(name): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
---R coerce : % -> OutputForm              outputAsFortran : % -> Void
+--R coerce : Vector(MachineFloat) -> %    coerce : % -> OutputForm
+--R outputAsFortran : % -> Void          
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
---R coerce : Vector(MachineFloat) -> %
 --R
 --E 1
 
@@ -13147,13 +13204,12 @@ Asp80(name): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R coerce : FortranCode -> %             coerce : List(FortranCode) -> %
 --R coerce : % -> OutputForm              outputAsFortran : % -> Void
---R retract : Polynomial(Float) -> %      retract : Expression(Float) -> %
+--R retract : Polynomial(Integer) -> %    retract : Polynomial(Float) -> %
+--R retract : Expression(Integer) -> %    retract : Expression(Float) -> %
 --R coerce : FortranExpression([construct,QUOTEX],[construct,QUOTEY],MachineFloat) -> %
 --R coerce : Record(localSymbols: SymbolTable,code: List(FortranCode)) -> %
 --R retract : Fraction(Polynomial(Integer)) -> %
 --R retract : Fraction(Polynomial(Float)) -> %
---R retract : Polynomial(Integer) -> %
---R retract : Expression(Integer) -> %
 --R retractIfCan : Fraction(Polynomial(Integer)) -> Union(%,"failed")
 --R retractIfCan : Fraction(Polynomial(Float)) -> Union(%,"failed")
 --R retractIfCan : Polynomial(Integer) -> Union(%,"failed")
@@ -13351,16 +13407,16 @@ Asp9(name): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           antiCommutator : (%,%) -> %
---R associator : (%,%,%) -> %             coerce : A -> %
---R coerce : % -> A                       coerce : % -> OutputForm
---R commutator : (%,%) -> %               hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
+--R coerce : A -> %                       coerce : % -> A
+--R coerce : % -> OutputForm              commutator : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R alternative? : () -> Boolean if A has FINAALG(R)
 --R antiAssociative? : () -> Boolean if A has FINAALG(R)
 --R antiCommutative? : () -> Boolean if A has FINAALG(R)
@@ -13625,16 +13681,16 @@ AssociatedJordanAlgebra(R:CommutativeRing,A:NonAssociativeAlgebra R):
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           antiCommutator : (%,%) -> %
---R associator : (%,%,%) -> %             coerce : A -> %
---R coerce : % -> A                       coerce : % -> OutputForm
---R commutator : (%,%) -> %               hash : % -> SingleInteger
---R latex : % -> String                   sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
+--R coerce : A -> %                       coerce : % -> A
+--R coerce : % -> OutputForm              commutator : (%,%) -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R alternative? : () -> Boolean if A has FINAALG(R)
 --R antiAssociative? : () -> Boolean if A has FINAALG(R)
 --R antiCommutative? : () -> Boolean if A has FINAALG(R)
@@ -13883,7 +13939,8 @@ AssociatedLieAlgebra(R:CommutativeRing,A:NonAssociativeAlgebra R):
 )set message test on
 )set message auto off
 )clear all
---S 1 of 10
+
+--S 1 of 11
 Data := Record(monthsOld : Integer, gender : String)
 --R 
 --R
@@ -13891,13 +13948,13 @@ Data := Record(monthsOld : Integer, gender : String)
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 10
+--S 2 of 11
 al : AssociationList(String,Data)
 --R 
 --R                                                                   Type: Void
 --E 2
 
---S 3 of 10
+--S 3 of 11
 al := table()
 --R 
 --R
@@ -13905,7 +13962,7 @@ al := table()
 --R      Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
 --E 3
 
---S 4 of 10
+--S 4 of 11
 al."bob" := [407,"male"]$Data
 --R 
 --R
@@ -13913,7 +13970,7 @@ al."bob" := [407,"male"]$Data
 --R                              Type: Record(monthsOld: Integer,gender: String)
 --E 4
 
---S 5 of 10
+--S 5 of 11
 al."judith" := [366,"female"]$Data
 --R 
 --R
@@ -13921,7 +13978,7 @@ al."judith" := [366,"female"]$Data
 --R                              Type: Record(monthsOld: Integer,gender: String)
 --E 5
 
---S 6 of 10
+--S 6 of 11
 al."katie" := [24,"female"]$Data
 --R 
 --R
@@ -13929,7 +13986,7 @@ al."katie" := [24,"female"]$Data
 --R                              Type: Record(monthsOld: Integer,gender: String)
 --E 6
 
---S 7 of 10
+--S 7 of 11
 al."smokie" := [200,"female"]$Data
 --R 
 --R
@@ -13937,7 +13994,7 @@ al."smokie" := [200,"female"]$Data
 --R                              Type: Record(monthsOld: Integer,gender: String)
 --E 7
 
---S 8 of 10
+--S 8 of 11
 al
 --R 
 --R
@@ -13953,7 +14010,7 @@ al
 --R      Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
 --E 8
 
---S 9 of 10
+--S 9 of 11
 al."katie" := [23,"female"]$Data
 --R 
 --R
@@ -13961,7 +14018,7 @@ al."katie" := [23,"female"]$Data
 --R                              Type: Record(monthsOld: Integer,gender: String)
 --E 9
 
---S 10 of 10
+--S 10 of 11
 delete!(al,1)
 --R 
 --R
@@ -13974,6 +14031,197 @@ delete!(al,1)
 --R      "bob"= [monthsOld= 407,gender= "male"]
 --R      Type: AssociationList(String,Record(monthsOld: Integer,gender: String))
 --E 10
+
+--S 11 of 11
+)show AssociationList
+--R 
+--R AssociationList(Key: SetCategory,Entry: SetCategory)  is a domain constructor
+--R Abbreviation for AssociationList is ALIST 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for ALIST 
+--R
+--R------------------------------- Operations --------------------------------
+--R children : % -> List(%)               concat : (%,%) -> %
+--R concat : List(%) -> %                 concat! : (%,%) -> %
+--R copy : % -> %                         cycleEntry : % -> %
+--R cycleTail : % -> %                    cyclic? : % -> Boolean
+--R delete : (%,Integer) -> %             delete! : (%,Integer) -> %
+--R dictionary : () -> %                  distance : (%,%) -> Integer
+--R ?.rest : (%,rest) -> %                elt : (%,Key,Entry) -> Entry
+--R ?.? : (%,Key) -> Entry                empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(Entry)
+--R eq? : (%,%) -> Boolean                explicitlyFinite? : % -> Boolean
+--R index? : (Integer,%) -> Boolean       index? : (Key,%) -> Boolean
+--R indices : % -> List(Integer)          indices : % -> List(Key)
+--R insert : (%,%,Integer) -> %           insert! : (%,%,Integer) -> %
+--R key? : (Key,%) -> Boolean             keys : % -> List(Key)
+--R last : (%,NonNegativeInteger) -> %    leaf? : % -> Boolean
+--R map : ((Entry -> Entry),%) -> %       nodes : % -> List(%)
+--R possiblyInfinite? : % -> Boolean      qelt : (%,Key) -> Entry
+--R rest : % -> %                         rest : (%,NonNegativeInteger) -> %
+--R reverse : % -> %                      sample : () -> %
+--R setelt : (%,Key,Entry) -> Entry       table : () -> %
+--R tail : % -> %                        
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?<? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
+--R ?<=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
+--R ?=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R ?>? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
+--R ?>=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has ORDSET
+--R any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R assoc : (Key,%) -> Union(Record(key: Key,entry: Entry),"failed")
+--R bag : List(Record(key: Key,entry: Entry)) -> %
+--R child? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT
+--R coerce : % -> OutputForm if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R concat : (Record(key: Key,entry: Entry),%) -> %
+--R concat : (%,Record(key: Key,entry: Entry)) -> %
+--R concat! : (%,Record(key: Key,entry: Entry)) -> %
+--R construct : List(Record(key: Key,entry: Entry)) -> %
+--R construct : List(Record(key: Key,entry: Entry)) -> %
+--R convert : % -> InputForm if Record(key: Key,entry: Entry) has KONVERT(INFORM)
+--R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
+--R count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R count : ((Entry -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Entry,%) -> NonNegativeInteger if $ has finiteAggregate and Entry has SETCAT
+--R count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R cycleLength : % -> NonNegativeInteger
+--R cycleSplit! : % -> % if $ has shallowlyMutable
+--R delete : (%,UniversalSegment(Integer)) -> %
+--R delete! : (%,UniversalSegment(Integer)) -> %
+--R dictionary : List(Record(key: Key,entry: Entry)) -> %
+--R ?.value : (%,value) -> Record(key: Key,entry: Entry)
+--R ?.first : (%,first) -> Record(key: Key,entry: Entry)
+--R ?.last : (%,last) -> Record(key: Key,entry: Entry)
+--R ?.? : (%,UniversalSegment(Integer)) -> %
+--R ?.? : (%,Integer) -> Record(key: Key,entry: Entry)
+--R elt : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)
+--R entries : % -> List(Record(key: Key,entry: Entry))
+--R entry? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R entry? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R eval : (%,List(Equation(Record(key: Key,entry: Entry)))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Equation(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,List(Record(key: Key,entry: Entry)),List(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,List(Equation(Entry))) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Equation(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Entry,Entry) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Entry),List(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Record(key: Key,entry: Entry)),List(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Equation(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,List(Equation(Record(key: Key,entry: Entry)))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R every? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R extract! : % -> Record(key: Key,entry: Entry)
+--R fill! : (%,Record(key: Key,entry: Entry)) -> % if $ has shallowlyMutable
+--R fill! : (%,Entry) -> % if $ has shallowlyMutable
+--R find : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Union(Record(key: Key,entry: Entry),"failed")
+--R find : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Union(Record(key: Key,entry: Entry),"failed")
+--R first : % -> Record(key: Key,entry: Entry)
+--R first : (%,NonNegativeInteger) -> %
+--R first : % -> Entry if Key has ORDSET
+--R hash : % -> SingleInteger if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R insert : (Record(key: Key,entry: Entry),%,Integer) -> %
+--R insert! : (Record(key: Key,entry: Entry),%,Integer) -> %
+--R insert! : (Record(key: Key,entry: Entry),%) -> %
+--R inspect : % -> Record(key: Key,entry: Entry)
+--R last : % -> Record(key: Key,entry: Entry)
+--R latex : % -> String if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R leaves : % -> List(Record(key: Key,entry: Entry))
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R list : Record(key: Key,entry: Entry) -> %
+--R map : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> %
+--R map : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,%) -> %
+--R map : (((Entry,Entry) -> Entry),%,%) -> %
+--R map : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> %
+--R map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+--R map! : ((Entry -> Entry),%) -> % if $ has shallowlyMutable
+--R map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+--R max : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+--R maxIndex : % -> Integer if Integer has ORDSET
+--R maxIndex : % -> Key if Key has ORDSET
+--R member? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R member? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R member? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R members : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R members : % -> List(Entry) if $ has finiteAggregate
+--R members : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R merge : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+--R merge : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%,%) -> %
+--R merge! : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+--R merge! : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%,%) -> %
+--R min : (%,%) -> % if Record(key: Key,entry: Entry) has ORDSET
+--R minIndex : % -> Integer if Integer has ORDSET
+--R minIndex : % -> Key if Key has ORDSET
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R new : (NonNegativeInteger,Record(key: Key,entry: Entry)) -> %
+--R node? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT
+--R parts : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R parts : % -> List(Entry) if $ has finiteAggregate
+--R parts : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R position : (Record(key: Key,entry: Entry),%,Integer) -> Integer if Record(key: Key,entry: Entry) has SETCAT
+--R position : (Record(key: Key,entry: Entry),%) -> Integer if Record(key: Key,entry: Entry) has SETCAT
+--R position : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Integer
+--R qelt : (%,Integer) -> Record(key: Key,entry: Entry)
+--R qsetelt! : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R qsetelt! : (%,Key,Entry) -> Entry if $ has shallowlyMutable
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove! : (Record(key: Key,entry: Entry),%) -> % if Record(key: Key,entry: Entry) has SETCAT
+--R remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> %
+--R remove! : (Key,%) -> Union(Entry,"failed")
+--R remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
+--R removeDuplicates : % -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R removeDuplicates! : % -> % if Record(key: Key,entry: Entry) has SETCAT
+--R reverse! : % -> % if $ has shallowlyMutable
+--R search : (Key,%) -> Union(Entry,"failed")
+--R second : % -> Record(key: Key,entry: Entry)
+--R select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> %
+--R select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
+--R setelt : (%,value,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setelt : (%,first,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setelt : (%,rest,%) -> % if $ has shallowlyMutable
+--R setelt : (%,last,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setelt : (%,UniversalSegment(Integer),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setelt : (%,Integer,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setfirst! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setlast! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R setrest! : (%,%) -> % if $ has shallowlyMutable
+--R setvalue! : (%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has shallowlyMutable
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R sort : % -> % if Record(key: Key,entry: Entry) has ORDSET
+--R sort : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> %
+--R sort! : % -> % if $ has shallowlyMutable and Record(key: Key,entry: Entry) has ORDSET
+--R sort! : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> % if $ has shallowlyMutable
+--R sorted? : % -> Boolean if Record(key: Key,entry: Entry) has ORDSET
+--R sorted? : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Boolean),%) -> Boolean
+--R split! : (%,Integer) -> % if $ has shallowlyMutable
+--R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
+--R swap! : (%,Key,Key) -> Void if $ has shallowlyMutable
+--R table : List(Record(key: Key,entry: Entry)) -> %
+--R third : % -> Record(key: Key,entry: Entry)
+--R value : % -> Record(key: Key,entry: Entry)
+--R ?~=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R
+--E 11
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -14282,6 +14530,7 @@ AssociationList(Key:SetCategory, Entry:SetCategory):
 
 --S 1 of 1
 )show AttributeButtons
+--R 
 --R AttributeButtons  is a domain constructor
 --R Abbreviation for AttributeButtons is ATTRBUT 
 --R This constructor is exposed in this frame.
@@ -14289,12 +14538,11 @@ AssociationList(Key:SetCategory, Entry:SetCategory):
 --R
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
---R decrease : String -> Float            hash : % -> SingleInteger
---R increase : String -> Float            latex : % -> String
+--R decrease : String -> Float            decrease : (String,String) -> Float
+--R hash : % -> SingleInteger             increase : String -> Float
+--R increase : (String,String) -> Float   latex : % -> String
 --R resetAttributeButtons : () -> Void    ?~=? : (%,%) -> Boolean
---R decrease : (String,String) -> Float
 --R getButtonValue : (String,String) -> Float
---R increase : (String,String) -> Float
 --R setAttributeButtonStep : Float -> Float
 --R setButtonValue : (String,String,Float) -> Float
 --R setButtonValue : (String,Float) -> Float
@@ -14588,19 +14836,17 @@ AttributeButtons(): E == I where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?/? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R coerce : % -> OutputForm              commutator : (%,%) -> %
 --R conjugate : (%,%) -> %                ?.? : (%,R) -> R
 --R hash : % -> SingleInteger             inv : % -> %
---R latex : % -> String                   morphism : (R -> R) -> %
+--R latex : % -> String                   morphism : ((R,Integer) -> R) -> %
+--R morphism : ((R -> R),(R -> R)) -> %   morphism : (R -> R) -> %
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
---R morphism : ((R,Integer) -> R) -> %
---R morphism : ((R -> R),(R -> R)) -> %
 --R
 --E 1
 
@@ -14725,34 +14971,119 @@ Automorphism(R:Ring): Join(Group, Eltable(R, R)) with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 7
+
+--S 1 of 8
 lm := [3,5,7,11]
+--R 
+--R
+--R   (1)  [3,5,7,11]
+--R                                                  Type: List(PositiveInteger)
 --E 1
 
---S 2 of 7
+--S 2 of 8
 t := balancedBinaryTree(#lm, 0)
+--R 
+--R
+--R   (2)  [[0,0,0],0,[0,0,0]]
+--R                                 Type: BalancedBinaryTree(NonNegativeInteger)
 --E 2
 
---S 3 of 7
+--S 3 of 8
 setleaves!(t,lm)
+--R 
+--R
+--R   (3)  [[3,0,5],0,[7,0,11]]
+--R                                 Type: BalancedBinaryTree(NonNegativeInteger)
 --E 3
 
---S 4 of 7
+--S 4 of 8
 mapUp!(t,_*)
+--R 
+--R
+--R   (4)  1155
+--R                                                        Type: PositiveInteger
 --E 4
 
---S 5 of 7
+--S 5 of 8
 t
+--R 
+--R
+--R   (5)  [[3,15,5],1155,[7,77,11]]
+--R                                 Type: BalancedBinaryTree(NonNegativeInteger)
 --E 5
 
---S 6 of 7
+--S 6 of 8
 mapDown!(t,12,_rem)
+--R 
+--R
+--R   (6)  [[0,12,2],12,[5,12,1]]
+--R                                 Type: BalancedBinaryTree(NonNegativeInteger)
 --E 6
 
---S 7 of 7
+--S 7 of 8
 leaves %
+--R 
+--R
+--R   (7)  [0,2,5,1]
+--R                                               Type: List(NonNegativeInteger)
 --E 7
 
+--S 8 of 8
+)show BalancedBinaryTree
+--R 
+--R BalancedBinaryTree(S: SetCategory)  is a domain constructor
+--R Abbreviation for BalancedBinaryTree is BBTREE 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for BBTREE 
+--R
+--R------------------------------- Operations --------------------------------
+--R children : % -> List(%)               copy : % -> %
+--R cyclic? : % -> Boolean                distance : (%,%) -> Integer
+--R ?.right : (%,right) -> %              ?.left : (%,left) -> %
+--R ?.value : (%,value) -> S              empty : () -> %
+--R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 left : % -> %
+--R map : ((S -> S),%) -> %               mapDown! : (%,S,((S,S) -> S)) -> %
+--R mapUp! : (%,((S,S) -> S)) -> S        node : (%,S,%) -> %
+--R nodes : % -> List(%)                  right : % -> %
+--R sample : () -> %                      setleaves! : (%,List(S)) -> %
+--R value : % -> S                       
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?=? : (%,%) -> Boolean if S has SETCAT
+--R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R balancedBinaryTree : (NonNegativeInteger,S) -> %
+--R child? : (%,%) -> Boolean if S has SETCAT
+--R coerce : % -> OutputForm if S has SETCAT
+--R count : (S,%) -> NonNegativeInteger if $ has finiteAggregate and S has SETCAT
+--R count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,S,S) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,Equation(S)) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
+--R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R hash : % -> SingleInteger if S has SETCAT
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R map! : ((S -> S),%) -> % if $ has shallowlyMutable
+--R mapDown! : (%,S,((S,S,S) -> List(S))) -> %
+--R mapUp! : (%,%,((S,S,S,S) -> S)) -> %
+--R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+--R members : % -> List(S) if $ has finiteAggregate
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R node? : (%,%) -> Boolean if S has SETCAT
+--R parts : % -> List(S) if $ has finiteAggregate
+--R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
+--R setelt : (%,right,%) -> % if $ has shallowlyMutable
+--R setelt : (%,left,%) -> % if $ has shallowlyMutable
+--R setelt : (%,value,S) -> S if $ has shallowlyMutable
+--R setleft! : (%,%) -> % if $ has shallowlyMutable
+--R setright! : (%,%) -> % if $ has shallowlyMutable
+--R setvalue! : (%,S) -> S if $ has shallowlyMutable
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R ?~=? : (%,%) -> Boolean if S has SETCAT
+--R
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -15107,28 +15438,26 @@ BalancedBinaryTree(S: SetCategory): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              complete : % -> %
---R digits : % -> Stream(Integer)         extend : (%,Integer) -> %
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R moduloP : % -> Integer                modulus : () -> Integer
---R one? : % -> Boolean                   order : % -> NonNegativeInteger
---R ?quo? : (%,%) -> %                    quotientByP : % -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R sqrt : (%,Integer) -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complete : % -> %                     digits : % -> Stream(Integer)
+--R extend : (%,Integer) -> %             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      moduloP : % -> Integer
+--R modulus : () -> Integer               one? : % -> Boolean
+--R order : % -> NonNegativeInteger       ?quo? : (%,%) -> %
+--R quotientByP : % -> %                  recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          sqrt : (%,Integer) -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R approximate : (%,Integer) -> Integer
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
@@ -15262,31 +15591,31 @@ BalancedPAdicInteger(p:Integer) == InnerPAdicInteger(p,false$Boolean)
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              denominator : % -> %
---R factor : % -> Factored(%)             gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R numerator : % -> %                    one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R removeZeroes : (Integer,%) -> %       removeZeroes : % -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R denominator : % -> %                  factor : % -> Factored(%)
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      numerator : % -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    removeZeroes : (Integer,%) -> %
+--R removeZeroes : % -> %                 sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,BalancedPAdicInteger(p)) -> %
 --R ?*? : (BalancedPAdicInteger(p),%) -> %
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (BalancedPAdicInteger(p),BalancedPAdicInteger(p)) -> %
 --R ?<? : (%,%) -> Boolean if BalancedPAdicInteger(p) has ORDSET
 --R ?<=? : (%,%) -> Boolean if BalancedPAdicInteger(p) has ORDSET
@@ -15300,7 +15629,6 @@ BalancedPAdicInteger(p:Integer) == InnerPAdicInteger(p,false$Boolean)
 --R D : (%,Symbol) -> % if BalancedPAdicInteger(p) has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if BalancedPAdicInteger(p) has DIFRING
 --R D : % -> % if BalancedPAdicInteger(p) has DIFRING
---R ?^? : (%,NonNegativeInteger) -> %
 --R abs : % -> % if BalancedPAdicInteger(p) has OINTDOM
 --R approximate : (%,Integer) -> Fraction(Integer)
 --R ceiling : % -> BalancedPAdicInteger(p) if BalancedPAdicInteger(p) has INS
@@ -15646,7 +15974,7 @@ BasicFunctions():  E == I where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 18
+--S 1 of 19
 y := operator 'y
 --R 
 --R
@@ -15654,7 +15982,7 @@ y := operator 'y
 --R                                                          Type: BasicOperator
 --E 1
 
---S 2 of 18
+--S 2 of 19
 deq := D(y x, x, 2) + D(y x, x) + y x = 0
 --R 
 --R
@@ -15664,7 +15992,7 @@ deq := D(y x, x, 2) + D(y x, x) + y x = 0
 --R                                          Type: Equation(Expression(Integer))
 --E 2
 
---S 3 of 18
+--S 3 of 19
 solve(deq, y, x)
 --R 
 --R
@@ -15676,7 +16004,7 @@ solve(deq, y, x)
 --IType: Union(Record(particular: Expression(Integer),basis: ...
 --E 3
 
---S 4 of 18
+--S 4 of 19
 nary? y
 --R 
 --R
@@ -15684,7 +16012,7 @@ nary? y
 --R                                                                Type: Boolean
 --E 4
 
---S 5 of 18
+--S 5 of 19
 unary? y
 --R 
 --R
@@ -15692,7 +16020,7 @@ unary? y
 --R                                                                Type: Boolean
 --E 5
 
---S 6 of 18
+--S 6 of 19
 opOne := operator('opOne, 1)
 --R 
 --R
@@ -15700,7 +16028,7 @@ opOne := operator('opOne, 1)
 --R                                                          Type: BasicOperator
 --E 6
 
---S 7 of 18
+--S 7 of 19
 nary? opOne
 --R 
 --R
@@ -15708,7 +16036,7 @@ nary? opOne
 --R                                                                Type: Boolean
 --E 7
 
---S 8 of 18
+--S 8 of 19
 unary? opOne
 --R 
 --R
@@ -15716,7 +16044,7 @@ unary? opOne
 --R                                                                Type: Boolean
 --E 8
 
---S 9 of 18
+--S 9 of 19
 arity opOne
 --R 
 --R
@@ -15724,7 +16052,7 @@ arity opOne
 --R                                          Type: Union(NonNegativeInteger,...)
 --E 9
 
---S 10 of 18
+--S 10 of 19
 name opOne
 --R 
 --R
@@ -15732,7 +16060,7 @@ name opOne
 --R                                                                 Type: Symbol
 --E 10
 
---S 11 of 18
+--S 11 of 19
 is?(opOne, 'z2)
 --R 
 --R
@@ -15740,7 +16068,7 @@ is?(opOne, 'z2)
 --R                                                                Type: Boolean
 --E 11
 
---S 12 of 18
+--S 12 of 19
 is?(opOne, "opOne")
 --R 
 --R
@@ -15748,7 +16076,7 @@ is?(opOne, "opOne")
 --R                                                                Type: Boolean
 --E 12
 
---S 13 of 18
+--S 13 of 19
 properties y
 --R 
 --R
@@ -15756,7 +16084,7 @@ properties y
 --R                                           Type: AssociationList(String,None)
 --E 13
 
---S 14 of 18
+--S 14 of 19
 setProperty(y, "use", "unknown function" :: None )
 --R 
 --R
@@ -15764,7 +16092,7 @@ setProperty(y, "use", "unknown function" :: None )
 --R                                                          Type: BasicOperator
 --E 14
 
---S 15 of 18
+--S 15 of 19
 properties y
 --R 
 --R
@@ -15772,7 +16100,7 @@ properties y
 --R                                           Type: AssociationList(String,None)
 --E 15
 
---S 16 of 18
+--S 16 of 19
 property(y, "use") :: None pretend String
 --R 
 --R
@@ -15780,7 +16108,7 @@ property(y, "use") :: None pretend String
 --R                                                                 Type: String
 --E 16
 
---S 17 of 18
+--S 17 of 19
 deleteProperty!(y, "use")
 --R 
 --R
@@ -15788,13 +16116,51 @@ deleteProperty!(y, "use")
 --R                                                          Type: BasicOperator
 --E 17
 
---S 18 of 18
+--S 18 of 19
 properties y
 --R 
 --R
 --R   (18)  table()
 --R                                           Type: AssociationList(String,None)
 --E 18
+
+--S 19 of 19
+)show BasicOperator
+--R 
+--R BasicOperator  is a domain constructor
+--R Abbreviation for BasicOperator is BOP 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for BOP 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               assert : (%,String) -> %
+--R coerce : % -> OutputForm              copy : % -> %
+--R deleteProperty! : (%,String) -> %     has? : (%,String) -> Boolean
+--R hash : % -> SingleInteger             is? : (%,Symbol) -> Boolean
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      name : % -> Symbol
+--R nary? : % -> Boolean                  nullary? : % -> Boolean
+--R operator : Symbol -> %                setProperty : (%,String,None) -> %
+--R unary? : % -> Boolean                 weight : % -> NonNegativeInteger
+--R ?~=? : (%,%) -> Boolean              
+--R arity : % -> Union(NonNegativeInteger,"failed")
+--R comparison : (%,((%,%) -> Boolean)) -> %
+--R display : (%,(OutputForm -> OutputForm)) -> %
+--R display : (%,(List(OutputForm) -> OutputForm)) -> %
+--R display : % -> Union((List(OutputForm) -> OutputForm),"failed")
+--R equality : (%,((%,%) -> Boolean)) -> %
+--R input : % -> Union((List(InputForm) -> InputForm),"failed")
+--R input : (%,(List(InputForm) -> InputForm)) -> %
+--R operator : (Symbol,NonNegativeInteger) -> %
+--R properties : % -> AssociationList(String,None)
+--R property : (%,String) -> Union(None,"failed")
+--R setProperties : (%,AssociationList(String,None)) -> %
+--R weight : (%,NonNegativeInteger) -> %
+--R
+--E 19
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -16183,21 +16549,21 @@ BasicOperator(): Exports == Implementation where
 )set message auto off
 )clear all
  
---S 1 of 30
+--S 1 of 31
 print copyBSD() 
 --R 
 --R   []
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 30
+--S 2 of 31
 print copyIto()
 --R 
 --R   table()
 --R                                                                   Type: Void
 --E 2
 
---S 3 of 30
+--S 3 of 31
 dX:=introduce!(X,dX) -- dX is a new stochastic differential
 --R 
 --R
@@ -16205,21 +16571,21 @@ dX:=introduce!(X,dX) -- dX is a new stochastic differential
 --R                                 Type: Union(BasicStochasticDifferential,...)
 --E 3
 
---S 4 of 30
+--S 4 of 31
 print copyBSD() 
 --R 
 --R   [dX]
 --R                                                                   Type: Void
 --E 4
 
---S 5 of 30
+--S 5 of 31
 print copyIto() 
 --R 
 --R   table(X= dX)
 --R                                                                   Type: Void
 --E 5
 
---S 6 of 30
+--S 6 of 31
 getSmgl(dX)
 --R 
 --R
@@ -16227,42 +16593,42 @@ getSmgl(dX)
 --R                                                      Type: Union(Symbol,...)
 --E 6
 
---S 7 of 30
+--S 7 of 31
 print dX 
 --R 
 --R   dX
 --R                                                                   Type: Void
 --E 7
 
---S 8 of 30
+--S 8 of 31
 print domainOf(dX)
 --R 
 --R   BasicStochasticDifferential()
 --R                                                                   Type: Void
 --E 8
 
---S 9 of 30
+--S 9 of 31
 print d X
 --R 
 --R   dX
 --R                                                                   Type: Void
 --E 9
 
---S 10 of 30
+--S 10 of 31
 print ((d$BSD) X) 
 --R 
 --R   dX
 --R                                                                   Type: Void
 --E 10
 
---S 11 of 30
+--S 11 of 31
 print domainOf((d$BSD) X)
 --R 
 --R   BasicStochasticDifferential()
 --R                                                                   Type: Void
 --E 11
 
---S 12 of 30
+--S 12 of 31
 introduce!(t,dt) -- dt is a new stochastic differential
 --R 
 --R
@@ -16270,21 +16636,21 @@ introduce!(t,dt) -- dt is a new stochastic differential
 --R                                 Type: Union(BasicStochasticDifferential,...)
 --E 12
 
---S 13 of 30
+--S 13 of 31
 print copyBSD() 
 --R 
 --R   [dX,dt]
 --R                                                                   Type: Void
 --E 13
 
---S 14 of 30
+--S 14 of 31
 print copyIto()
 --R 
 --R   table(t= dt,X= dX)
 --R                                                                   Type: Void
 --E 14
 
---S 15 of 30
+--S 15 of 31
 introduce!(t,dt) -- fails (can't repeat an introduction!)
 --R 
 --R
@@ -16292,21 +16658,21 @@ introduce!(t,dt) -- fails (can't repeat an introduction!)
 --R                                                    Type: Union("failed",...)
 --E 15
 
---S 16 of 30
+--S 16 of 31
 print copyBSD() 
 --R 
 --R   [dX,dt]
 --R                                                                   Type: Void
 --E 16
 
---S 17 of 30
+--S 17 of 31
 print copyIto()
 --R 
 --R   table(t= dt,X= dX)
 --R                                                                   Type: Void
 --E 17
 
---S 18 of 30
+--S 18 of 31
 'dZ::BSD           -- can fail
 --R 
 --R   dZ is not a stochastic differential
@@ -16319,7 +16685,7 @@ print copyIto()
 --R
 --E 18
 
---S 19 of 30
+--S 19 of 31
 dZ::BSD            -- fails
 --R 
 --R   dZ is not a stochastic differential
@@ -16332,7 +16698,7 @@ dZ::BSD            -- fails
 --R
 --E 19
 
---S 20 of 30
+--S 20 of 31
 string(dY)::BSD    -- fails
 --R 
 --R 
@@ -16343,14 +16709,14 @@ string(dY)::BSD    -- fails
 --R
 --E 20
 
---S 21 of 30
+--S 21 of 31
 print domainOf(dt)
 --R 
 --R   Variable(dt)
 --R                                                                   Type: Void
 --E 21
 
---S 22 of 30
+--S 22 of 31
 dt::BSD            -- succeeds!
 --R 
 --R
@@ -16358,7 +16724,7 @@ dt::BSD            -- succeeds!
 --R                                            Type: BasicStochasticDifferential
 --E 22
 
---S 23 of 30
+--S 23 of 31
 getSmgl(dt::BSD)
 --R 
 --R
@@ -16366,7 +16732,7 @@ getSmgl(dt::BSD)
 --R                                                      Type: Union(Symbol,...)
 --E 23
 
---S 24 of 30
+--S 24 of 31
 dX::Symbol         -- succeeds
 --R 
 --R
@@ -16374,7 +16740,7 @@ dX::Symbol         -- succeeds
 --R                                                                 Type: Symbol
 --E 24
 
---S 25 of 30
+--S 25 of 31
 string(dX)         -- fails
 --R 
 --R   There are 3 exposed and 1 unexposed library operations named string 
@@ -16393,7 +16759,7 @@ string(dX)         -- fails
 --R      $ to specify which version of the function you need.
 --E 25
 
---S 26 of 30
+--S 26 of 31
 string(dX::Symbol) -- succeeds
 --R 
 --R
@@ -16401,7 +16767,7 @@ string(dX::Symbol) -- succeeds
 --R                                                                 Type: String
 --E 26
 
---S 27 of 30
+--S 27 of 31
 [introduce!(A[i],dA[i]) for i in 1..2]
 --R 
 --R
@@ -16410,7 +16776,7 @@ string(dX::Symbol) -- succeeds
 --R                      Type: List(Union(BasicStochasticDifferential,"failed"))
 --E 27
 
---S 28 of 30
+--S 28 of 31
 print copyBSD()
 --R 
 --R   [dA ,dA ,dX,dt]
@@ -16418,7 +16784,7 @@ print copyBSD()
 --R                                                                   Type: Void
 --E 28
 
---S 29 of 30
+--S 29 of 31
 print copyIto()
 --R 
 --R   table(A = dA ,A = dA ,t= dt,X= dX)
@@ -16426,7 +16792,7 @@ print copyIto()
 --R                                                                   Type: Void
 --E 29
 
---S 30 of 30
+--S 30 of 31
 [d A[i] for i in 1..2]
 --R 
 --R
@@ -16435,6 +16801,28 @@ print copyIto()
 --R                       Type: List(Union(BasicStochasticDifferential,Integer))
 --E 30
 
+--S 31 of 31
+)show BasicStochasticDifferential
+--R 
+--R BasicStochasticDifferential  is a domain constructor
+--R Abbreviation for BasicStochasticDifferential is BSD 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for BSD 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               coerce : % -> OutputForm
+--R convert : % -> Symbol                 convert : Symbol -> %
+--R copyBSD : () -> List(%)               copyIto : () -> Table(Symbol,%)
+--R d : Symbol -> Union(%,Integer)        hash : % -> SingleInteger
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      ?~=? : (%,%) -> Boolean
+--R convertIfCan : Symbol -> Union(%,"failed")
+--R getSmgl : % -> Union(Symbol,"failed")
+--R introduce! : (Symbol,Symbol) -> Union(%,"failed")
+--R
+--E 31
 
 )spool
 )lisp (bye)
@@ -16678,7 +17066,8 @@ BasicStochasticDifferential(): category == implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 7
+
+--S 1 of 8
 r := binary(22/7)
 --R 
 --R
@@ -16687,7 +17076,7 @@ r := binary(22/7)
 --R                                                        Type: BinaryExpansion
 --E 1
 
---S 2 of 7
+--S 2 of 8
 r + binary(6/7)
 --R 
 --R
@@ -16695,7 +17084,7 @@ r + binary(6/7)
 --R                                                        Type: BinaryExpansion
 --E 2
 
---S 3 of 7
+--S 3 of 8
 [binary(1/i) for i in 102..106]
 --R 
 --R
@@ -16709,7 +17098,7 @@ r + binary(6/7)
 --R                                                  Type: List(BinaryExpansion)
 --E 3
 
---S 4 of 7
+--S 4 of 8
 binary(1/1007)
 --R 
 --R
@@ -16726,7 +17115,7 @@ binary(1/1007)
 --R                                                        Type: BinaryExpansion
 --E 4
 
---S 5 of 7
+--S 5 of 8
 p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)
 --R 
 --R
@@ -16735,7 +17124,7 @@ p := binary(1/4)*x**2 + binary(2/3)*x + binary(4/9)
 --R                                            Type: Polynomial(BinaryExpansion)
 --E 5
 
---S 6 of 7
+--S 6 of 8
 q := D(p, x)
 --R 
 --R
@@ -16744,7 +17133,7 @@ q := D(p, x)
 --R                                            Type: Polynomial(BinaryExpansion)
 --E 6
 
---S 7 of 7
+--S 7 of 8
 g := gcd(p, q)
 --R 
 --R
@@ -16752,6 +17141,126 @@ g := gcd(p, q)
 --R   (7)  x + 1.01
 --R                                            Type: Polynomial(BinaryExpansion)
 --E 7
+
+--S 8 of 8
+)show BinaryExpansion
+--R 
+--R BinaryExpansion  is a domain constructor
+--R Abbreviation for BinaryExpansion is BINARY 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for BINARY 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (Integer,Integer) -> %          ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                D : (%,(Integer -> Integer)) -> %
+--R D : % -> % if Integer has DIFRING     1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        binary : Fraction(Integer) -> %
+--R coerce : % -> RadixExpansion(2)       coerce : % -> Fraction(Integer)
+--R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              denom : % -> Integer
+--R denominator : % -> %                  factor : % -> Factored(%)
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             init : () -> % if Integer has STEP
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R numer : % -> Integer                  numerator : % -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    random : () -> % if Integer has INS
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> Integer                sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?<? : (%,%) -> Boolean if Integer has ORDSET
+--R ?<=? : (%,%) -> Boolean if Integer has ORDSET
+--R ?>? : (%,%) -> Boolean if Integer has ORDSET
+--R ?>=? : (%,%) -> Boolean if Integer has ORDSET
+--R D : (%,(Integer -> Integer),NonNegativeInteger) -> %
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,NonNegativeInteger) -> % if Integer has DIFRING
+--R abs : % -> % if Integer has OINTDOM
+--R ceiling : % -> Integer if Integer has INS
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and Integer has PFECAT or Integer has CHARNZ
+--R coerce : Symbol -> % if Integer has RETRACT(SYMBOL)
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and Integer has PFECAT
+--R convert : % -> DoubleFloat if Integer has REAL
+--R convert : % -> Float if Integer has REAL
+--R convert : % -> InputForm if Integer has KONVERT(INFORM)
+--R convert : % -> Pattern(Float) if Integer has KONVERT(PATTERN(FLOAT))
+--R convert : % -> Pattern(Integer) if Integer has KONVERT(PATTERN(INT))
+--R differentiate : (%,(Integer -> Integer)) -> %
+--R differentiate : (%,(Integer -> Integer),NonNegativeInteger) -> %
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,NonNegativeInteger) -> % if Integer has DIFRING
+--R differentiate : % -> % if Integer has DIFRING
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R ?.? : (%,Integer) -> % if Integer has ELTAB(INT,INT)
+--R euclideanSize : % -> NonNegativeInteger
+--R eval : (%,Symbol,Integer) -> % if Integer has IEVALAB(SYMBOL,INT)
+--R eval : (%,List(Symbol),List(Integer)) -> % if Integer has IEVALAB(SYMBOL,INT)
+--R eval : (%,List(Equation(Integer))) -> % if Integer has EVALAB(INT)
+--R eval : (%,Equation(Integer)) -> % if Integer has EVALAB(INT)
+--R eval : (%,Integer,Integer) -> % if Integer has EVALAB(INT)
+--R eval : (%,List(Integer),List(Integer)) -> % if Integer has EVALAB(INT)
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R floor : % -> Integer if Integer has INS
+--R fractionPart : % -> Fraction(Integer)
+--R fractionPart : % -> % if Integer has EUCDOM
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R map : ((Integer -> Integer),%) -> %
+--R max : (%,%) -> % if Integer has ORDSET
+--R min : (%,%) -> % if Integer has ORDSET
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R negative? : % -> Boolean if Integer has OINTDOM
+--R nextItem : % -> Union(%,"failed") if Integer has STEP
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if Integer has PATMAB(FLOAT)
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if Integer has PATMAB(INT)
+--R positive? : % -> Boolean if Integer has OINTDOM
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R reducedSystem : Matrix(%) -> Matrix(Integer)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if Integer has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if Integer has LINEXP(INT)
+--R retract : % -> Integer if Integer has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if Integer has RETRACT(INT)
+--R retract : % -> Symbol if Integer has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(Integer,"failed") if Integer has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if Integer has RETRACT(INT)
+--R retractIfCan : % -> Union(Symbol,"failed") if Integer has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(Integer,"failed")
+--R sign : % -> Integer if Integer has OINTDOM
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if Integer has PFECAT
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R wholePart : % -> Integer if Integer has EUCDOM
+--R
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -16971,6 +17480,7 @@ BinaryExpansion(): Exports == Implementation where
 
 --S 1 of 1
 )show BinaryFile
+--R 
 --R BinaryFile  is a domain constructor
 --R Abbreviation for BinaryFile is BINFILE 
 --R This constructor is exposed in this frame.
@@ -17147,7 +17657,8 @@ BinaryFile: Cat == Def where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 12
+
+--S 1 of 13
 lv := [8,3,5,4,6,2,1,5,7]
 --R 
 --R
@@ -17155,7 +17666,7 @@ lv := [8,3,5,4,6,2,1,5,7]
 --R                                                  Type: List(PositiveInteger)
 --E 1
 
---S 2 of 12
+--S 2 of 13
 t := binarySearchTree lv
 --R 
 --R
@@ -17163,7 +17674,7 @@ t := binarySearchTree lv
 --R                                      Type: BinarySearchTree(PositiveInteger)
 --E 2
 
---S 3 of 12
+--S 3 of 13
 emptybst := empty()$BSTREE(INT)
 --R 
 --R
@@ -17171,7 +17682,7 @@ emptybst := empty()$BSTREE(INT)
 --R                                              Type: BinarySearchTree(Integer)
 --E 3
 
---S 4 of 12
+--S 4 of 13
 t1 := insert!(8,emptybst)
 --R 
 --R
@@ -17179,7 +17690,7 @@ t1 := insert!(8,emptybst)
 --R                                              Type: BinarySearchTree(Integer)
 --E 4
 
---S 5 of 12
+--S 5 of 13
 insert!(3,t1)
 --R 
 --R
@@ -17187,7 +17698,7 @@ insert!(3,t1)
 --R                                              Type: BinarySearchTree(Integer)
 --E 5
 
---S 6 of 12
+--S 6 of 13
 leaves t
 --R 
 --R
@@ -17195,7 +17706,7 @@ leaves t
 --R                                                  Type: List(PositiveInteger)
 --E 6
 
---S 7 of 12
+--S 7 of 13
 split(3,t)
 --R 
 --R
@@ -17203,13 +17714,13 @@ split(3,t)
 --IType: Record(less: BinarySearchTree(PositiveInteger),greater: ...
 --E 7
 
---S 8 of 12
+--S 8 of 13
 insertRoot: (INT,BSTREE INT) -> BSTREE INT
 --R 
 --R                                                                   Type: Void
 --E 8
 
---S 9 of 12
+--S 9 of 13
 insertRoot(x, t) ==
     a := split(x, t)
     node(a.less, x, a.greater)
@@ -17217,13 +17728,13 @@ insertRoot(x, t) ==
 --R                                                                   Type: Void
 --E 9
 
---S 10 of 12
+--S 10 of 13
 buildFromRoot ls == reduce(insertRoot,ls,emptybst)
 --R 
 --R                                                                   Type: Void
 --E 10
 
---S 11 of 12
+--S 11 of 13
 rt := buildFromRoot reverse lv
 --R 
 --R   Compiling function buildFromRoot with type List(PositiveInteger) -> 
@@ -17235,13 +17746,68 @@ rt := buildFromRoot reverse lv
 --R                                              Type: BinarySearchTree(Integer)
 --E 11
 
---S 12 of 12
+--S 12 of 13
 (t = rt)@Boolean
 --R 
 --R
 --R   (12)  true
 --R                                                                Type: Boolean
 --E 12
+
+--S 13 of 13
+)show BinarySearchTree
+--R 
+--R BinarySearchTree(S: OrderedSet)  is a domain constructor
+--R Abbreviation for BinarySearchTree is BSTREE 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for BSTREE 
+--R
+--R------------------------------- Operations --------------------------------
+--R binarySearchTree : List(S) -> %       children : % -> List(%)
+--R copy : % -> %                         cyclic? : % -> Boolean
+--R distance : (%,%) -> Integer           ?.right : (%,right) -> %
+--R ?.left : (%,left) -> %                ?.value : (%,value) -> S
+--R empty : () -> %                       empty? : % -> Boolean
+--R eq? : (%,%) -> Boolean                insert! : (S,%) -> %
+--R insertRoot! : (S,%) -> %              latex : % -> String if S has SETCAT
+--R leaf? : % -> Boolean                  leaves : % -> List(S)
+--R left : % -> %                         map : ((S -> S),%) -> %
+--R node : (%,S,%) -> %                   nodes : % -> List(%)
+--R right : % -> %                        sample : () -> %
+--R value : % -> S                       
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?=? : (%,%) -> Boolean if S has SETCAT
+--R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R child? : (%,%) -> Boolean if S has SETCAT
+--R coerce : % -> OutputForm if S has SETCAT
+--R count : (S,%) -> NonNegativeInteger if $ has finiteAggregate and S has SETCAT
+--R count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,S,S) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,Equation(S)) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
+--R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R hash : % -> SingleInteger if S has SETCAT
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R map! : ((S -> S),%) -> % if $ has shallowlyMutable
+--R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+--R members : % -> List(S) if $ has finiteAggregate
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R node? : (%,%) -> Boolean if S has SETCAT
+--R parts : % -> List(S) if $ has finiteAggregate
+--R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
+--R setelt : (%,right,%) -> % if $ has shallowlyMutable
+--R setelt : (%,left,%) -> % if $ has shallowlyMutable
+--R setelt : (%,value,S) -> S if $ has shallowlyMutable
+--R setleft! : (%,%) -> % if $ has shallowlyMutable
+--R setright! : (%,%) -> % if $ has shallowlyMutable
+--R setvalue! : (%,S) -> S if $ has shallowlyMutable
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R split : (S,%) -> Record(less: %,greater: %)
+--R ?~=? : (%,%) -> Boolean if S has SETCAT
+--R
+--E 13
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -17512,11 +18078,11 @@ both BinaryTree(S)
 --R ?.left : (%,left) -> %                ?.value : (%,value) -> S
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                insert! : (S,%) -> %
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R left : % -> %                         map : ((S -> S),%) -> %
---R node : (%,S,%) -> %                   nodes : % -> List(%)
---R right : % -> %                        sample : () -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 left : % -> %
+--R map : ((S -> S),%) -> %               node : (%,S,%) -> %
+--R nodes : % -> List(%)                  right : % -> %
+--R sample : () -> %                      value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -17530,7 +18096,6 @@ both BinaryTree(S)
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -17696,11 +18261,11 @@ BinaryTournament(S: OrderedSet): Exports == Implementation where
 --R ?.right : (%,right) -> %              ?.left : (%,left) -> %
 --R ?.value : (%,value) -> S              empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R left : % -> %                         map : ((S -> S),%) -> %
---R node : (%,S,%) -> %                   nodes : % -> List(%)
---R right : % -> %                        sample : () -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 left : % -> %
+--R map : ((S -> S),%) -> %               node : (%,S,%) -> %
+--R nodes : % -> List(%)                  right : % -> %
+--R sample : () -> %                      value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -17714,7 +18279,6 @@ BinaryTournament(S: OrderedSet): Exports == Implementation where
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -17903,14 +18467,14 @@ BinaryTree(S: SetCategory): Exports == Implementation where
 --R empty : () -> %                       empty? : % -> Boolean
 --R entries : % -> List(Boolean)          eq? : (%,%) -> Boolean
 --R hash : % -> SingleInteger             index? : (Integer,%) -> Boolean
---R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R latex : % -> String                   max : (%,%) -> %
---R min : (%,%) -> %                      nand : (%,%) -> %
---R nor : (%,%) -> %                      not? : % -> %
---R ?or? : (%,%) -> %                     qelt : (%,Integer) -> Boolean
---R reverse : % -> %                      sample : () -> %
---R xor : (%,%) -> %                      ~? : % -> %
---R ?~=? : (%,%) -> Boolean              
+--R indices : % -> List(Integer)          insert : (Boolean,%,Integer) -> %
+--R insert : (%,%,Integer) -> %           latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R nand : (%,%) -> %                     nor : (%,%) -> %
+--R not? : % -> %                         ?or? : (%,%) -> %
+--R qelt : (%,Integer) -> Boolean         reverse : % -> %
+--R sample : () -> %                      xor : (%,%) -> %
+--R ~? : % -> %                           ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R any? : ((Boolean -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R bits : (NonNegativeInteger,Boolean) -> %
@@ -17930,7 +18494,6 @@ BinaryTree(S: SetCategory): Exports == Implementation where
 --R fill! : (%,Boolean) -> % if $ has shallowlyMutable
 --R find : ((Boolean -> Boolean),%) -> Union(Boolean,"failed")
 --R first : % -> Boolean if Integer has ORDSET
---R insert : (Boolean,%,Integer) -> %
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : ((Boolean -> Boolean),%) -> %
 --R map : (((Boolean,Boolean) -> Boolean),%,%) -> %
@@ -18320,6 +18883,7 @@ BlowUpWithQuadTrans: Exports == Implementation where
 
 --S 1 of 1
 )show Boolean
+--R 
 --R Boolean  is a domain constructor
 --R Abbreviation for Boolean is BOOLEAN 
 --R This constructor is exposed in this frame.
@@ -18497,7 +19061,8 @@ Boolean(): Join(OrderedSet, Finite, Logic, ConvertibleTo InputForm) with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 20
+
+--S 1 of 21
 c0 := 0 :: CardinalNumber
 --R 
 --R
@@ -18505,7 +19070,7 @@ c0 := 0 :: CardinalNumber
 --R                                                         Type: CardinalNumber
 --E 1
 
---S 2 of 20
+--S 2 of 21
 c1 := 1 :: CardinalNumber
 --R 
 --R
@@ -18513,7 +19078,7 @@ c1 := 1 :: CardinalNumber
 --R                                                         Type: CardinalNumber
 --E 2
 
---S 3 of 20
+--S 3 of 21
 c2 := 2 :: CardinalNumber
 --R 
 --R
@@ -18521,7 +19086,7 @@ c2 := 2 :: CardinalNumber
 --R                                                         Type: CardinalNumber
 --E 3
 
---S 4 of 20
+--S 4 of 21
 c3 := 3 :: CardinalNumber
 --R 
 --R
@@ -18529,7 +19094,7 @@ c3 := 3 :: CardinalNumber
 --R                                                         Type: CardinalNumber
 --E 4
 
---S 5 of 20
+--S 5 of 21
 A0 := Aleph 0
 --R 
 --R
@@ -18537,7 +19102,7 @@ A0 := Aleph 0
 --R                                                         Type: CardinalNumber
 --E 5
 
---S 6 of 20
+--S 6 of 21
 A1 := Aleph 1
 --R 
 --R
@@ -18545,7 +19110,7 @@ A1 := Aleph 1
 --R                                                         Type: CardinalNumber
 --E 6
 
---S 7 of 20
+--S 7 of 21
 finite? c2
 --R 
 --R
@@ -18553,7 +19118,7 @@ finite? c2
 --R                                                                Type: Boolean
 --E 7
 
---S 8 of 20
+--S 8 of 21
 finite? A0
 --R 
 --R
@@ -18561,7 +19126,7 @@ finite? A0
 --R                                                                Type: Boolean
 --E 8
 
---S 9 of 20
+--S 9 of 21
 countable? c2
 --R 
 --R
@@ -18569,7 +19134,7 @@ countable? c2
 --R                                                                Type: Boolean
 --E 9
 
---S 10 of 20
+--S 10 of 21
 countable? A0
 --R 
 --R
@@ -18577,7 +19142,7 @@ countable? A0
 --R                                                                Type: Boolean
 --E 10
 
---S 11 of 20
+--S 11 of 21
 countable? A1
 --R 
 --R
@@ -18585,7 +19150,7 @@ countable? A1
 --R                                                                Type: Boolean
 --E 11
 
---S 12 of 20
+--S 12 of 21
 [c2 + c2, c2 + A1]
 --R 
 --R
@@ -18593,7 +19158,7 @@ countable? A1
 --R                                                   Type: List(CardinalNumber)
 --E 12
 
---S 13 of 20
+--S 13 of 21
 [c0*c2, c1*c2, c2*c2, c0*A1, c1*A1, c2*A1, A0*A1]
 --R 
 --R
@@ -18601,7 +19166,7 @@ countable? A1
 --R                                                   Type: List(CardinalNumber)
 --E 13
 
---S 14 of 20
+--S 14 of 21
 [c2**c0, c2**c1, c2**c2, A1**c0, A1**c1, A1**c2]
 --R 
 --R
@@ -18609,7 +19174,7 @@ countable? A1
 --R                                                   Type: List(CardinalNumber)
 --E 14
 
---S 15 of 20
+--S 15 of 21
 [c2-c1, c2-c2, c2-c3, A1-c2, A1-A0, A1-A1]
 --R 
 --R
@@ -18617,7 +19182,7 @@ countable? A1
 --R                                   Type: List(Union(CardinalNumber,"failed"))
 --E 15
 
---S 16 of 20
+--S 16 of 21
 generalizedContinuumHypothesisAssumed true
 --R 
 --R
@@ -18625,7 +19190,7 @@ generalizedContinuumHypothesisAssumed true
 --R                                                                Type: Boolean
 --E 16
 
---S 17 of 20
+--S 17 of 21
 [c0**A0, c1**A0, c2**A0, A0**A0, A0**A1, A1**A0, A1**A1]
 --R 
 --R
@@ -18633,7 +19198,7 @@ generalizedContinuumHypothesisAssumed true
 --R                                                   Type: List(CardinalNumber)
 --E 17
 
---S 18 of 20
+--S 18 of 21
 a := Aleph 0
 --R 
 --R
@@ -18641,7 +19206,7 @@ a := Aleph 0
 --R                                                         Type: CardinalNumber
 --E 18
 
---S 19 of 20
+--S 19 of 21
 c := 2**a
 --R 
 --R
@@ -18649,13 +19214,45 @@ c := 2**a
 --R                                                         Type: CardinalNumber
 --E 19
 
---S 20 of 20
+--S 20 of 21
 f := 2**c
 --R 
 --R
 --R   (20)  Aleph(2)
 --R                                                         Type: CardinalNumber
 --E 20
+
+--S 21 of 21
+)show CardinalNumber
+--R 
+--R CardinalNumber  is a domain constructor
+--R Abbreviation for CardinalNumber is CARD 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CARD 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,%) -> %                      ?*? : (PositiveInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?**? : (%,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?**? : (%,NonNegativeInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> Union(%,"failed")
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               Aleph : NonNegativeInteger -> %
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,PositiveInteger) -> %        ?^? : (%,NonNegativeInteger) -> %
+--R coerce : NonNegativeInteger -> %      coerce : % -> OutputForm
+--R countable? : % -> Boolean             finite? : % -> Boolean
+--R hash : % -> SingleInteger             latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R retract : % -> NonNegativeInteger     sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R generalizedContinuumHypothesisAssumed : Boolean -> Boolean
+--R generalizedContinuumHypothesisAssumed? : () -> Boolean
+--R retractIfCan : % -> Union(NonNegativeInteger,"failed")
+--R
+--E 21
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -19040,7 +19637,8 @@ CardinalNumber: Join(OrderedSet, AbelianMonoid, Monoid,
 )set message test on
 )set message auto off
 )clear all
---S 1 of 48
+
+--S 1 of 49
 CT := CARTEN(i0 := 1, 2, Integer)
 --R 
 --R
@@ -19048,7 +19646,7 @@ CT := CARTEN(i0 := 1, 2, Integer)
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 48
+--S 2 of 49
 t0: CT := 8
 --R 
 --R
@@ -19056,7 +19654,7 @@ t0: CT := 8
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 2
 
---S 3 of 48
+--S 3 of 49
 rank t0
 --R 
 --R
@@ -19064,7 +19662,7 @@ rank t0
 --R                                                     Type: NonNegativeInteger
 --E 3
 
---S 4 of 48
+--S 4 of 49
 v: DirectProduct(2, Integer) := directProduct [3,4]
 --R 
 --R
@@ -19072,7 +19670,7 @@ v: DirectProduct(2, Integer) := directProduct [3,4]
 --R                                               Type: DirectProduct(2,Integer)
 --E 4
 
---S 5 of 48
+--S 5 of 49
 Tv: CT := v
 --R 
 --R
@@ -19080,7 +19678,7 @@ Tv: CT := v
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 5
 
---S 6 of 48
+--S 6 of 49
 m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ]
 --R 
 --R
@@ -19090,7 +19688,7 @@ m: SquareMatrix(2, Integer) := matrix [ [1,2],[4,5] ]
 --R                                                Type: SquareMatrix(2,Integer)
 --E 6
 
---S 7 of 48
+--S 7 of 49
 Tm: CT := m
 --R 
 --R
@@ -19100,7 +19698,7 @@ Tm: CT := m
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 7
 
---S 8 of 48
+--S 8 of 49
 n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ]
 --R 
 --R
@@ -19110,7 +19708,7 @@ n: SquareMatrix(2, Integer) := matrix [ [2,3],[0,1] ]
 --R                                                Type: SquareMatrix(2,Integer)
 --E 8
 
---S 9 of 48
+--S 9 of 49
 Tn: CT := n
 --R 
 --R
@@ -19120,7 +19718,7 @@ Tn: CT := n
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 9
 
---S 10 of 48
+--S 10 of 49
 t1: CT := [2, 3]
 --R 
 --R
@@ -19128,7 +19726,7 @@ t1: CT := [2, 3]
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 10
 
---S 11 of 48
+--S 11 of 49
 rank t1
 --R 
 --R
@@ -19136,7 +19734,7 @@ rank t1
 --R                                                        Type: PositiveInteger
 --E 11
 
---S 12 of 48
+--S 12 of 49
 t2: CT := [t1, t1]
 --R 
 --R
@@ -19146,7 +19744,7 @@ t2: CT := [t1, t1]
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 12
 
---S 13 of 48
+--S 13 of 49
 t3: CT := [t2, t2]
 --R 
 --R
@@ -19156,7 +19754,7 @@ t3: CT := [t2, t2]
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 13
 
---S 14 of 48
+--S 14 of 49
 tt: CT := [t3, t3]; tt := [tt, tt]
 --R 
 --R
@@ -19170,7 +19768,7 @@ tt: CT := [t3, t3]; tt := [tt, tt]
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 14
 
---S 15 of 48
+--S 15 of 49
 rank tt
 --R 
 --R
@@ -19178,7 +19776,7 @@ rank tt
 --R                                                        Type: PositiveInteger
 --E 15
 
---S 16 of 48
+--S 16 of 49
 Tmn := product(Tm, Tn)
 --R 
 --R
@@ -19192,7 +19790,7 @@ Tmn := product(Tm, Tn)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 16
 
---S 17 of 48
+--S 17 of 49
 Tmv := contract(Tm,2,Tv,1)
 --R 
 --R
@@ -19200,7 +19798,7 @@ Tmv := contract(Tm,2,Tv,1)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 17
 
---S 18 of 48
+--S 18 of 49
 Tm*Tv
 --R 
 --R
@@ -19208,7 +19806,7 @@ Tm*Tv
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 18
 
---S 19 of 48
+--S 19 of 49
 Tmv = m * v
 --R 
 --R
@@ -19216,7 +19814,7 @@ Tmv = m * v
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 19
 
---S 20 of 48
+--S 20 of 49
 t0()
 --R 
 --R
@@ -19224,7 +19822,7 @@ t0()
 --R                                                        Type: PositiveInteger
 --E 20
 
---S 21 of 48
+--S 21 of 49
 t1(1+1)
 --R 
 --R
@@ -19232,7 +19830,7 @@ t1(1+1)
 --R                                                        Type: PositiveInteger
 --E 21
 
---S 22 of 48
+--S 22 of 49
 t2(2,1)
 --R 
 --R
@@ -19240,7 +19838,7 @@ t2(2,1)
 --R                                                        Type: PositiveInteger
 --E 22
 
---S 23 of 48
+--S 23 of 49
 t3(2,1,2)
 --R 
 --R
@@ -19248,7 +19846,7 @@ t3(2,1,2)
 --R                                                        Type: PositiveInteger
 --E 23
 
---S 24 of 48
+--S 24 of 49
 Tmn(2,1,2,1)
 --R 
 --R
@@ -19256,7 +19854,7 @@ Tmn(2,1,2,1)
 --R                                                     Type: NonNegativeInteger
 --E 24
 
---S 25 of 48
+--S 25 of 49
 t0[]
 --R 
 --R
@@ -19264,7 +19862,7 @@ t0[]
 --R                                                        Type: PositiveInteger
 --E 25
 
---S 26 of 48
+--S 26 of 49
 t1[2]
 --R 
 --R
@@ -19272,7 +19870,7 @@ t1[2]
 --R                                                        Type: PositiveInteger
 --E 26
 
---S 27 of 48
+--S 27 of 49
 t2[2,1]
 --R 
 --R
@@ -19280,7 +19878,7 @@ t2[2,1]
 --R                                                        Type: PositiveInteger
 --E 27
 
---S 28 of 48
+--S 28 of 49
 t3[2,1,2]
 --R 
 --R
@@ -19288,7 +19886,7 @@ t3[2,1,2]
 --R                                                        Type: PositiveInteger
 --E 28
 
---S 29 of 48
+--S 29 of 49
 Tmn[2,1,2,1]
 --R 
 --R
@@ -19296,7 +19894,7 @@ Tmn[2,1,2,1]
 --R                                                     Type: NonNegativeInteger
 --E 29
 
---S 30 of 48
+--S 30 of 49
 cTmn := contract(Tmn,1,2)
 --R 
 --R
@@ -19306,7 +19904,7 @@ cTmn := contract(Tmn,1,2)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 30
 
---S 31 of 48
+--S 31 of 49
 trace(m) * n
 --R 
 --R
@@ -19316,7 +19914,7 @@ trace(m) * n
 --R                                                Type: SquareMatrix(2,Integer)
 --E 31
 
---S 32 of 48
+--S 32 of 49
 contract(Tmn,1,2) = trace(m) * n
 --R 
 --R
@@ -19326,7 +19924,7 @@ contract(Tmn,1,2) = trace(m) * n
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 32
 
---S 33 of 48
+--S 33 of 49
 contract(Tmn,1,3) = transpose(m) * n
 --R 
 --R
@@ -19336,7 +19934,7 @@ contract(Tmn,1,3) = transpose(m) * n
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 33
 
---S 34 of 48
+--S 34 of 49
 contract(Tmn,1,4) = transpose(m) * transpose(n)
 --R 
 --R
@@ -19346,7 +19944,7 @@ contract(Tmn,1,4) = transpose(m) * transpose(n)
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 34
 
---S 35 of 48
+--S 35 of 49
 contract(Tmn,2,3) = m * n
 --R 
 --R
@@ -19356,7 +19954,7 @@ contract(Tmn,2,3) = m * n
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 35
 
---S 36 of 48
+--S 36 of 49
 contract(Tmn,2,4) = m * transpose(n)
 --R 
 --R
@@ -19366,7 +19964,7 @@ contract(Tmn,2,4) = m * transpose(n)
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 36
 
---S 37 of 48
+--S 37 of 49
 contract(Tmn,3,4) = trace(n) * m
 --R 
 --R
@@ -19376,7 +19974,7 @@ contract(Tmn,3,4) = trace(n) * m
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 37
 
---S 38 of 48
+--S 38 of 49
 tTmn := transpose(Tmn,1,3)
 --R 
 --R
@@ -19390,7 +19988,7 @@ tTmn := transpose(Tmn,1,3)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 38
 
---S 39 of 48
+--S 39 of 49
 transpose Tmn
 --R 
 --R
@@ -19404,7 +20002,7 @@ transpose Tmn
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 39
 
---S 40 of 48
+--S 40 of 49
 transpose Tm = transpose m
 --R 
 --R
@@ -19414,7 +20012,7 @@ transpose Tm = transpose m
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 40
 
---S 41 of 48
+--S 41 of 49
 rTmn := reindex(Tmn, [1,4,2,3])
 --R 
 --R
@@ -19428,7 +20026,7 @@ rTmn := reindex(Tmn, [1,4,2,3])
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 41
 
---S 42 of 48
+--S 42 of 49
 tt := transpose(Tm)*Tn - Tn*transpose(Tm)
 --R 
 --R
@@ -19438,7 +20036,7 @@ tt := transpose(Tm)*Tn - Tn*transpose(Tm)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 42
 
---S 43 of 48
+--S 43 of 49
 Tv*(tt+Tn)
 --R 
 --R
@@ -19446,7 +20044,7 @@ Tv*(tt+Tn)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 43
 
---S 44 of 48
+--S 44 of 49
 reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)
 --R 
 --R
@@ -19460,7 +20058,7 @@ reindex(product(Tn,Tn),[4,3,2,1])+3*Tn*product(Tm,Tm)
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 44
 
---S 45 of 48
+--S 45 of 49
 delta:  CT := kroneckerDelta()
 --R 
 --R
@@ -19470,7 +20068,7 @@ delta:  CT := kroneckerDelta()
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 45
 
---S 46 of 48
+--S 46 of 49
 contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])
 --R 
 --R
@@ -19484,7 +20082,7 @@ contract(Tmn, 2, delta, 1) = reindex(Tmn, [1,3,4,2])
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 46
 
---S 47 of 48
+--S 47 of 49
 epsilon:CT := leviCivitaSymbol()
 --R 
 --R
@@ -19494,13 +20092,50 @@ epsilon:CT := leviCivitaSymbol()
 --R                                           Type: CartesianTensor(1,2,Integer)
 --E 47
 
---S 48 of 48
+--S 48 of 49
 contract(epsilon*Tm*epsilon, 1,2) = 2 * determinant m
 --R 
 --R
 --R   (48)  - 6= - 6
 --R                                 Type: Equation(CartesianTensor(1,2,Integer))
 --E 48
+
+--S 49 of 49
+)show CartesianTensor
+--R 
+--R CartesianTensor(minix: Integer,dim: NonNegativeInteger,R: CommutativeRing)  is a domain constructor
+--R Abbreviation for CartesianTensor is CARTEN 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CARTEN 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (%,Integer) -> %                ?*? : (%,R) -> %
+--R ?*? : (R,%) -> %                      ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           coerce : List(%) -> %
+--R coerce : List(R) -> %                 coerce : SquareMatrix(dim,R) -> %
+--R coerce : DirectProduct(dim,R) -> %    coerce : R -> %
+--R coerce : % -> OutputForm              degree : % -> NonNegativeInteger
+--R ?.? : (%,List(Integer)) -> R          elt : (%,Integer,Integer) -> R
+--R ?.? : (%,Integer) -> R                elt : % -> R
+--R hash : % -> SingleInteger             kroneckerDelta : () -> %
+--R latex : % -> String                   leviCivitaSymbol : () -> %
+--R product : (%,%) -> %                  rank : % -> NonNegativeInteger
+--R ravel : % -> List(R)                  reindex : (%,List(Integer)) -> %
+--R retract : % -> R                      sample : () -> %
+--R transpose : % -> %                    unravel : List(R) -> %
+--R ?~=? : (%,%) -> Boolean              
+--R contract : (%,Integer,Integer) -> %
+--R contract : (%,Integer,%,Integer) -> %
+--R elt : (%,Integer,Integer,Integer,Integer) -> R
+--R elt : (%,Integer,Integer,Integer) -> R
+--R retractIfCan : % -> Union(R,"failed")
+--R transpose : (%,Integer,Integer) -> %
+--R
+--E 49
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -20632,6 +21267,21 @@ CartesianTensor(minix, dim, R): Exports == Implementation where
 
 --S 1 of 1
 )show Cell
+--R 
+--R Cell(TheField: RealClosedField)  is a domain constructor
+--R Abbreviation for Cell is CELL 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CELL 
+--R
+--R------------------------------- Operations --------------------------------
+--R coerce : % -> OutputForm              dimension : % -> NonNegativeInteger
+--R mainVariableOf : % -> Symbol          samplePoint : % -> List(TheField)
+--R variablesOf : % -> List(Symbol)      
+--R hasDimension? : (%,Symbol) -> Boolean
+--R makeCell : (SimpleCell(TheField,SparseUnivariatePolynomial(TheField)),%) -> %
+--R makeCell : List(SimpleCell(TheField,SparseUnivariatePolynomial(TheField))) -> %
+--R projection : % -> Union(%,"failed")
+--R
 --E 1
 
 )spool
@@ -20757,7 +21407,7 @@ Cell(TheField) : PUB == PRIV where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 13
+--S 1 of 14
 chars := [char "a", char "A", char "X", char "8", char "+"]
 --R 
 --R
@@ -20765,7 +21415,7 @@ chars := [char "a", char "A", char "X", char "8", char "+"]
 --R                                                        Type: List(Character)
 --E 1
 
---S 2 of 13
+--S 2 of 14
 space()
 --R 
 --R
@@ -20773,7 +21423,7 @@ space()
 --R                                                              Type: Character
 --E 2
 
---S 3 of 13
+--S 3 of 14
 quote()
 --R 
 --R
@@ -20781,7 +21431,7 @@ quote()
 --R                                                              Type: Character
 --E 3
 
---S 4 of 13
+--S 4 of 14
 escape()
 --R 
 --R
@@ -20789,7 +21439,7 @@ escape()
 --R                                                              Type: Character
 --E 4
 
---S 5 of 13
+--S 5 of 14
 [ord c for c in chars]
 --R 
 --R
@@ -20797,7 +21447,7 @@ escape()
 --R                                                          Type: List(Integer)
 --E 5
 
---S 6 of 13
+--S 6 of 14
 [upperCase c for c in chars]
 --R 
 --R
@@ -20805,7 +21455,7 @@ escape()
 --R                                                        Type: List(Character)
 --E 6
 
---S 7 of 13
+--S 7 of 14
 [lowerCase c for c in chars]
 --R 
 --R
@@ -20813,7 +21463,7 @@ escape()
 --R                                                        Type: List(Character)
 --E 7
 
---S 8 of 13
+--S 8 of 14
 [alphabetic? c for c in chars]
 --R 
 --R
@@ -20821,7 +21471,7 @@ escape()
 --R                                                          Type: List(Boolean)
 --E 8
 
---S 9 of 13
+--S 9 of 14
 [upperCase? c for c in chars]
 --R 
 --R
@@ -20829,7 +21479,7 @@ escape()
 --R                                                          Type: List(Boolean)
 --E 9
 
---S 10 of 13
+--S 10 of 14
 [lowerCase? c for c in chars]
 --R 
 --R
@@ -20837,7 +21487,7 @@ escape()
 --R                                                          Type: List(Boolean)
 --E 10
 
---S 11 of 13
+--S 11 of 14
 [digit? c for c in chars]
 --R 
 --R
@@ -20845,7 +21495,7 @@ escape()
 --R                                                          Type: List(Boolean)
 --E 11
 
---S 12 of 13
+--S 12 of 14
 [hexDigit? c for c in chars]
 --R 
 --R
@@ -20853,13 +21503,41 @@ escape()
 --R                                                          Type: List(Boolean)
 --E 12
 
---S 13 of 13
+--S 13 of 14
 [alphanumeric? c for c in chars]
 --R 
 --R
 --R   (13)  [true,true,true,true,false]
 --R                                                          Type: List(Boolean)
 --E 13
+
+--S 14 of 14
+)show Character
+--R 
+--R Character  is a domain constructor
+--R Abbreviation for Character is CHAR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CHAR 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               alphabetic? : % -> Boolean
+--R alphanumeric? : % -> Boolean          char : String -> %
+--R char : Integer -> %                   coerce : % -> OutputForm
+--R digit? : % -> Boolean                 enumerate : () -> List(%)
+--R escape : () -> %                      hash : % -> SingleInteger
+--R hexDigit? : % -> Boolean              index : PositiveInteger -> %
+--R latex : % -> String                   lookup : % -> PositiveInteger
+--R lowerCase : % -> %                    lowerCase? : % -> Boolean
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R ord : % -> Integer                    quote : () -> %
+--R random : () -> %                      size : () -> NonNegativeInteger
+--R space : () -> %                       upperCase : % -> %
+--R upperCase? : % -> Boolean             ?~=? : (%,%) -> Boolean
+--R
+--E 14
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -21140,7 +21818,8 @@ Character: OrderedFinite() with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 16
+
+--S 1 of 17
 cl1:=charClass[char "a",char "e",char "i",char "o",char "u",char "y"]
 --R 
 --R
@@ -21148,7 +21827,7 @@ cl1:=charClass[char "a",char "e",char "i",char "o",char "u",char "y"]
 --R                                                         Type: CharacterClass
 --E 1
 
---S 2 of 16
+--S 2 of 17
 cl2 := charClass "bcdfghjklmnpqrstvwxyz"
 --R 
 --R
@@ -21156,7 +21835,7 @@ cl2 := charClass "bcdfghjklmnpqrstvwxyz"
 --R                                                         Type: CharacterClass
 --E 2
 
---S 3 of 16
+--S 3 of 17
 digit()
 --R 
 --R
@@ -21164,7 +21843,7 @@ digit()
 --R                                                         Type: CharacterClass
 --E 3
 
---S 4 of 16
+--S 4 of 17
 hexDigit()
 --R 
 --R
@@ -21172,7 +21851,7 @@ hexDigit()
 --R                                                         Type: CharacterClass
 --E 4
 
---S 5 of 16
+--S 5 of 17
 upperCase()
 --R 
 --R
@@ -21180,7 +21859,7 @@ upperCase()
 --R                                                         Type: CharacterClass
 --E 5
 
---S 6 of 16
+--S 6 of 17
 lowerCase()
 --R 
 --R
@@ -21188,7 +21867,7 @@ lowerCase()
 --R                                                         Type: CharacterClass
 --E 6
 
---S 7 of 16
+--S 7 of 17
 alphabetic()
 --R 
 --R
@@ -21196,7 +21875,7 @@ alphabetic()
 --R                                                         Type: CharacterClass
 --E 7
 
---S 8 of 16
+--S 8 of 17
 alphanumeric()
 --R 
 --R
@@ -21204,7 +21883,7 @@ alphanumeric()
 --R                                                         Type: CharacterClass
 --E 8
 
---S 9 of 16
+--S 9 of 17
 member?(char "a", cl1)
 --R 
 --R
@@ -21212,7 +21891,7 @@ member?(char "a", cl1)
 --R                                                                Type: Boolean
 --E 9
 
---S 10 of 16
+--S 10 of 17
 member?(char "a", cl2)
 --R 
 --R
@@ -21220,7 +21899,7 @@ member?(char "a", cl2)
 --R                                                                Type: Boolean
 --E 10
 
---S 11 of 16
+--S 11 of 17
 intersect(cl1, cl2)
 --R 
 --R
@@ -21228,7 +21907,7 @@ intersect(cl1, cl2)
 --R                                                         Type: CharacterClass
 --E 11
 
---S 12 of 16
+--S 12 of 17
 union(cl1,cl2)
 --R 
 --R
@@ -21236,7 +21915,7 @@ union(cl1,cl2)
 --R                                                         Type: CharacterClass
 --E 12
 
---S 13 of 16
+--S 13 of 17
 difference(cl1,cl2)
 --R 
 --R
@@ -21244,7 +21923,7 @@ difference(cl1,cl2)
 --R                                                         Type: CharacterClass
 --E 13
 
---S 14 of 16
+--S 14 of 17
 intersect(complement(cl1),cl2)
 --R 
 --R
@@ -21252,7 +21931,7 @@ intersect(complement(cl1),cl2)
 --R                                                         Type: CharacterClass
 --E 14
 
---S 15 of 16
+--S 15 of 17
 insert!(char "a", cl2)
 --R 
 --R
@@ -21260,13 +21939,85 @@ insert!(char "a", cl2)
 --R                                                         Type: CharacterClass
 --E 15
 
---S 16 of 16
+--S 16 of 17
 remove!(char "b", cl2)
 --R 
 --R
 --R   (16)  "acdfghjklmnpqrstvwxyz"
 --R                                                         Type: CharacterClass
 --E 16
+
+--S 17 of 17
+)show CharacterClass
+--R 
+--R CharacterClass  is a domain constructor
+--R Abbreviation for CharacterClass is CCLASS 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CCLASS 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?<? : (%,%) -> Boolean                ?=? : (%,%) -> Boolean
+--R alphabetic : () -> %                  alphanumeric : () -> %
+--R bag : List(Character) -> %            brace : List(Character) -> %
+--R brace : () -> %                       charClass : List(Character) -> %
+--R charClass : String -> %               coerce : % -> OutputForm
+--R construct : List(Character) -> %      convert : % -> List(Character)
+--R convert : % -> String                 copy : % -> %
+--R dictionary : () -> %                  dictionary : List(Character) -> %
+--R difference : (%,Character) -> %       difference : (%,%) -> %
+--R digit : () -> %                       empty : () -> %
+--R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
+--R extract! : % -> Character             hash : % -> SingleInteger
+--R hexDigit : () -> %                    insert! : (Character,%) -> %
+--R inspect : % -> Character              intersect : (%,%) -> %
+--R latex : % -> String                   lowerCase : () -> %
+--R sample : () -> %                      set : List(Character) -> %
+--R set : () -> %                         subset? : (%,%) -> Boolean
+--R symmetricDifference : (%,%) -> %      union : (Character,%) -> %
+--R union : (%,Character) -> %            union : (%,%) -> %
+--R upperCase : () -> %                   ?~=? : (%,%) -> Boolean
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R any? : ((Character -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R cardinality : % -> NonNegativeInteger
+--R complement : % -> % if Character has FINITE
+--R convert : % -> InputForm if Character has KONVERT(INFORM)
+--R count : ((Character -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Character,%) -> NonNegativeInteger if $ has finiteAggregate and Character has SETCAT
+--R enumerate : () -> List(%) if Character has FINITE
+--R eval : (%,List(Equation(Character))) -> % if Character has EVALAB(CHAR) and Character has SETCAT
+--R eval : (%,Equation(Character)) -> % if Character has EVALAB(CHAR) and Character has SETCAT
+--R eval : (%,Character,Character) -> % if Character has EVALAB(CHAR) and Character has SETCAT
+--R eval : (%,List(Character),List(Character)) -> % if Character has EVALAB(CHAR) and Character has SETCAT
+--R every? : ((Character -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R find : ((Character -> Boolean),%) -> Union(Character,"failed")
+--R index : PositiveInteger -> % if Character has FINITE
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R lookup : % -> PositiveInteger if Character has FINITE
+--R map : ((Character -> Character),%) -> %
+--R map! : ((Character -> Character),%) -> % if $ has shallowlyMutable
+--R max : % -> Character if Character has ORDSET
+--R member? : (Character,%) -> Boolean if $ has finiteAggregate and Character has SETCAT
+--R members : % -> List(Character) if $ has finiteAggregate
+--R min : % -> Character if Character has ORDSET
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R parts : % -> List(Character) if $ has finiteAggregate
+--R random : () -> % if Character has FINITE
+--R reduce : (((Character,Character) -> Character),%,Character,Character) -> Character if $ has finiteAggregate and Character has SETCAT
+--R reduce : (((Character,Character) -> Character),%,Character) -> Character if $ has finiteAggregate
+--R reduce : (((Character,Character) -> Character),%) -> Character if $ has finiteAggregate
+--R remove : (Character,%) -> % if $ has finiteAggregate and Character has SETCAT
+--R remove : ((Character -> Boolean),%) -> % if $ has finiteAggregate
+--R remove! : (Character,%) -> % if $ has finiteAggregate
+--R remove! : ((Character -> Boolean),%) -> % if $ has finiteAggregate
+--R removeDuplicates : % -> % if $ has finiteAggregate and Character has SETCAT
+--R select : ((Character -> Boolean),%) -> % if $ has finiteAggregate
+--R select! : ((Character -> Boolean),%) -> % if $ has finiteAggregate
+--R size : () -> NonNegativeInteger if Character has FINITE
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R universe : () -> % if Character has FINITE
+--R
+--E 17
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -21746,7 +22497,8 @@ $\mathbb{R}_{m,m}$      & --------$>$ & $\mathbb{R}^{4^m}$ \\
 )set message test on
 )set message auto off
 )clear all
---S 1 of 36
+
+--S 1 of 37
 K := Fraction Polynomial Integer
 --R 
 --R
@@ -21754,7 +22506,7 @@ K := Fraction Polynomial Integer
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 36
+--S 2 of 37
 m := matrix [ [-1] ]
 --R 
 --R
@@ -21762,7 +22514,7 @@ m := matrix [ [-1] ]
 --R                                                        Type: Matrix(Integer)
 --E 2
 
---S 3 of 36
+--S 3 of 37
 C := CliffordAlgebra(1, K, quadraticForm m)
 --R 
 --R
@@ -21770,7 +22522,7 @@ C := CliffordAlgebra(1, K, quadraticForm m)
 --R                                                                 Type: Domain
 --E 3
 
---S 4 of 36
+--S 4 of 37
 i: C := e(1)
 --R 
 --R
@@ -21779,7 +22531,7 @@ i: C := e(1)
 --R                Type: CliffordAlgebra(1,Fraction(Polynomial(Integer)),[[-1]])
 --E 4
 
---S 5 of 36
+--S 5 of 37
 x := a + b * i
 --R 
 --R
@@ -21788,7 +22540,7 @@ x := a + b * i
 --R                Type: CliffordAlgebra(1,Fraction(Polynomial(Integer)),[[-1]])
 --E 5
 
---S 6 of 36
+--S 6 of 37
 y := c + d * i
 --R 
 --R
@@ -21797,7 +22549,7 @@ y := c + d * i
 --R                Type: CliffordAlgebra(1,Fraction(Polynomial(Integer)),[[-1]])
 --E 6
 
---S 7 of 36
+--S 7 of 37
 x * y
 --R 
 --R
@@ -21807,7 +22559,7 @@ x * y
 --E 7
 )clear all
  
---S 8 of 36
+--S 8 of 37
 K := Fraction Polynomial Integer
 --R 
 --R
@@ -21815,7 +22567,7 @@ K := Fraction Polynomial Integer
 --R                                                                 Type: Domain
 --E 8
 
---S 9 of 36
+--S 9 of 37
 m := matrix [ [-1,0],[0,-1] ]
 --R 
 --R
@@ -21825,7 +22577,7 @@ m := matrix [ [-1,0],[0,-1] ]
 --R                                                        Type: Matrix(Integer)
 --E 9
 
---S 10 of 36
+--S 10 of 37
 H  := CliffordAlgebra(2, K, quadraticForm m)
 --R 
 --R
@@ -21833,7 +22585,7 @@ H  := CliffordAlgebra(2, K, quadraticForm m)
 --R                                                                 Type: Domain
 --E 10
 
---S 11 of 36
+--S 11 of 37
 i: H  := e(1)
 --R 
 --R
@@ -21842,7 +22594,7 @@ i: H  := e(1)
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 11
 
---S 12 of 36
+--S 12 of 37
 j: H  := e(2)
 --R 
 --R
@@ -21851,7 +22603,7 @@ j: H  := e(2)
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 12
 
---S 13 of 36
+--S 13 of 37
 k: H  := i * j
 --R 
 --R
@@ -21860,7 +22612,7 @@ k: H  := i * j
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 13
 
---S 14 of 36
+--S 14 of 37
 x := a + b * i + c * j + d * k
 --R 
 --R
@@ -21869,7 +22621,7 @@ x := a + b * i + c * j + d * k
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 14
 
---S 15 of 36
+--S 15 of 37
 y := e + f * i + g * j + h * k 
 --R 
 --R
@@ -21878,7 +22630,7 @@ y := e + f * i + g * j + h * k
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 15
 
---S 16 of 36
+--S 16 of 37
 x + y
 --R 
 --R
@@ -21887,7 +22639,7 @@ x + y
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 16
 
---S 17 of 36
+--S 17 of 37
 x * y
 --R 
 --R
@@ -21900,7 +22652,7 @@ x * y
 --R       Type: CliffordAlgebra(2,Fraction(Polynomial(Integer)),[[-1,0],[0,-1]])
 --E 17
 
---S 18 of 36
+--S 18 of 37
 y * x
 --R 
 --R
@@ -21914,7 +22666,7 @@ y * x
 --E 18
 )clear all
  
---S 19 of 36
+--S 19 of 37
 K := Fraction Polynomial Integer
 --R 
 --R
@@ -21922,7 +22674,7 @@ K := Fraction Polynomial Integer
 --R                                                                 Type: Domain
 --E 19
 
---S 20 of 36
+--S 20 of 37
 Ext := CliffordAlgebra(3, K, quadraticForm 0)
 --R 
 --R
@@ -21931,7 +22683,7 @@ Ext := CliffordAlgebra(3, K, quadraticForm 0)
 --R                                                                 Type: Domain
 --E 20
 
---S 21 of 36
+--S 21 of 37
 i: Ext := e(1)
 --R 
 --R
@@ -21940,7 +22692,7 @@ i: Ext := e(1)
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 21
 
---S 22 of 36
+--S 22 of 37
 j: Ext := e(2)
 --R 
 --R
@@ -21949,7 +22701,7 @@ j: Ext := e(2)
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 22
 
---S 23 of 36
+--S 23 of 37
 k: Ext := e(3)
 --R 
 --R
@@ -21958,7 +22710,7 @@ k: Ext := e(3)
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 23
 
---S 24 of 36
+--S 24 of 37
 x := x1*i + x2*j + x3*k
 --R 
 --R
@@ -21967,7 +22719,7 @@ x := x1*i + x2*j + x3*k
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 24
 
---S 25 of 36
+--S 25 of 37
 y := y1*i + y2*j + y3*k
 --R 
 --R
@@ -21976,7 +22728,7 @@ y := y1*i + y2*j + y3*k
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 25
 
---S 26 of 36
+--S 26 of 37
 x + y
 --R 
 --R
@@ -21985,7 +22737,7 @@ x + y
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 26
 
---S 27 of 36
+--S 27 of 37
 x * y + y * x
 --R 
 --R
@@ -21993,13 +22745,13 @@ x * y + y * x
 --RType: CliffordAlgebra(3,Fraction(Polynomial(Integer)),[[0,0,0],[0,0,0],[0,0,0]])
 --E 27
 
---S 28 of 36
+--S 28 of 37
 dual2 a == coefficient(a,[2,3]) * i + coefficient(a,[3,1]) * j + coefficient(a,[1,2]) * k 
 --R 
 --R                                                                   Type: Void
 --E 28
 
---S 29 of 36
+--S 29 of 37
 dual2(x*y)
 --R 
 --R   Compiling function dual2 with type CliffordAlgebra(3,Fraction(
@@ -22013,7 +22765,7 @@ dual2(x*y)
 --E 29
 )clear all
  
---S 30 of 36
+--S 30 of 37
 K := Fraction Integer
 --R 
 --R
@@ -22021,7 +22773,7 @@ K := Fraction Integer
 --R                                                                 Type: Domain
 --E 30
 
---S 31 of 36
+--S 31 of 37
 g := matrix [ [1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1] ]
 --R 
 --R
@@ -22035,7 +22787,7 @@ g := matrix [ [1,0,0,0], [0,-1,0,0], [0,0,-1,0], [0,0,0,-1] ]
 --R                                                        Type: Matrix(Integer)
 --E 31
 
---S 32 of 36
+--S 32 of 37
 D := CliffordAlgebra(4,K, quadraticForm g)
 --R 
 --R
@@ -22045,7 +22797,7 @@ D := CliffordAlgebra(4,K, quadraticForm g)
 --R                                                                 Type: Domain
 --E 32
 
---S 33 of 36
+--S 33 of 37
 gam := [e(i)$D for i in 1..4]
 --R 
 --R
@@ -22054,14 +22806,14 @@ gam := [e(i)$D for i in 1..4]
 --RType: List(CliffordAlgebra(4,Fraction(Integer),[[1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,0,0,-1]]))
 --E 33
 
---S 34 of 36
+--S 34 of 37
 m := 1; n:= 2; r := 3; s := 4;
 --R 
 --R
 --R                                                        Type: PositiveInteger
 --E 34
 
---S 35 of 36
+--S 35 of 37
 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])
 --R 
 --R
@@ -22070,7 +22822,7 @@ lhs := reduce(+, [reduce(+, [ g(l,t)*gam(l)*gam(m)*gam(n)*gam(r)*gam(s)*gam(t) f
 --RType: CliffordAlgebra(4,Fraction(Integer),[[1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,0,0,-1]])
 --E 35
 
---S 36 of 36
+--S 36 of 37
 rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s) 
 --R 
 --R
@@ -22078,6 +22830,38 @@ rhs := 2*(gam s * gam m*gam n*gam r + gam r*gam n*gam m*gam s)
 --R            1 2 3 4
 --RType: CliffordAlgebra(4,Fraction(Integer),[[1,0,0,0],[0,-1,0,0],[0,0,-1,0],[0,0,0,-1]])
 --E 36
+
+--S 37 of 37
+)show CliffordAlgebra
+--R 
+--R CliffordAlgebra(n: PositiveInteger,K: Field,Q: QuadraticForm(n,K))  is a domain constructor
+--R Abbreviation for CliffordAlgebra is CLIF 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CLIF 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,K) -> %                      ?*? : (K,%) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,K) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coerce : K -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R dimension : () -> CardinalNumber      e : PositiveInteger -> %
+--R hash : % -> SingleInteger             latex : % -> String
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R characteristic : () -> NonNegativeInteger
+--R coefficient : (%,List(PositiveInteger)) -> K
+--R monomial : (K,List(PositiveInteger)) -> %
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R
+--E 37
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -22610,6 +23394,7 @@ CliffordAlgebra(n, K, Q): T == Impl where
 
 --S 1 of 1
 )show Color
+--R 
 --R Color  is a domain constructor
 --R Abbreviation for Color is COLOR 
 --R This constructor is exposed in this frame.
@@ -22621,9 +23406,9 @@ CliffordAlgebra(n, K, Q): T == Impl where
 --R blue : () -> %                        coerce : % -> OutputForm
 --R color : Integer -> %                  green : () -> %
 --R hash : % -> SingleInteger             hue : % -> Integer
---R latex : % -> String                   red : () -> %
---R yellow : () -> %                      ?~=? : (%,%) -> Boolean
---R numberOfHues : () -> PositiveInteger
+--R latex : % -> String                   numberOfHues : () -> PositiveInteger
+--R red : () -> %                         yellow : () -> %
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -22773,6 +23558,7 @@ Color(): Exports == Implementation where
 
 --S 1 of 1
 )show Commutator
+--R 
 --R Commutator  is a domain constructor
 --R Abbreviation for Commutator is COMM 
 --R This constructor is exposed in this frame.
@@ -22877,7 +23663,8 @@ Commutator: Export == Implement where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 16
+
+--S 1 of 17
 a := complex(4/3,5/2)
 --R 
 --R
@@ -22887,7 +23674,7 @@ a := complex(4/3,5/2)
 --R                                             Type: Complex(Fraction(Integer))
 --E 1
 
---S 2 of 16
+--S 2 of 17
 b := complex(4/3,-5/2)
 --R 
 --R
@@ -22897,7 +23684,7 @@ b := complex(4/3,-5/2)
 --R                                             Type: Complex(Fraction(Integer))
 --E 2
 
---S 3 of 16
+--S 3 of 17
 a + b
 --R 
 --R
@@ -22907,7 +23694,7 @@ a + b
 --R                                             Type: Complex(Fraction(Integer))
 --E 3
 
---S 4 of 16
+--S 4 of 17
 a - b
 --R 
 --R
@@ -22915,7 +23702,7 @@ a - b
 --R                                             Type: Complex(Fraction(Integer))
 --E 4
 
---S 5 of 16
+--S 5 of 17
 a * b
 --R 
 --R
@@ -22925,7 +23712,7 @@ a * b
 --R                                             Type: Complex(Fraction(Integer))
 --E 5
 
---S 6 of 16
+--S 6 of 17
 a / b
 --R 
 --R
@@ -22935,7 +23722,7 @@ a / b
 --R                                             Type: Complex(Fraction(Integer))
 --E 6
 
---S 7 of 16
+--S 7 of 17
 % :: Fraction Complex Integer
 --R 
 --R
@@ -22945,7 +23732,7 @@ a / b
 --R                                             Type: Fraction(Complex(Integer))
 --E 7
 
---S 8 of 16
+--S 8 of 17
 3.4 + 6.7 * %i
 --R 
 --R
@@ -22953,7 +23740,7 @@ a / b
 --R                                                         Type: Complex(Float)
 --E 8
 
---S 9 of 16
+--S 9 of 17
 conjugate a
 --R 
 --R
@@ -22963,7 +23750,7 @@ conjugate a
 --R                                             Type: Complex(Fraction(Integer))
 --E 9
 
---S 10 of 16
+--S 10 of 17
 norm a
 --R 
 --R
@@ -22973,7 +23760,7 @@ norm a
 --R                                                      Type: Fraction(Integer)
 --E 10
 
---S 11 of 16
+--S 11 of 17
 real a
 --R 
 --R
@@ -22983,7 +23770,7 @@ real a
 --R                                                      Type: Fraction(Integer)
 --E 11
 
---S 12 of 16
+--S 12 of 17
 imag a
 --R 
 --R
@@ -22993,7 +23780,7 @@ imag a
 --R                                                      Type: Fraction(Integer)
 --E 12
 
---S 13 of 16
+--S 13 of 17
 gcd(13 - 13*%i,31 + 27*%i)
 --R 
 --R
@@ -23001,7 +23788,7 @@ gcd(13 - 13*%i,31 + 27*%i)
 --R                                                       Type: Complex(Integer)
 --E 13
 
---S 14 of 16
+--S 14 of 17
 lcm(13 - 13*%i,31 + 27*%i)
 --R 
 --R
@@ -23009,7 +23796,7 @@ lcm(13 - 13*%i,31 + 27*%i)
 --R                                                       Type: Complex(Integer)
 --E 14
 
---S 15 of 16
+--S 15 of 17
 factor(13 - 13*%i)
 --R 
 --R
@@ -23017,7 +23804,7 @@ factor(13 - 13*%i)
 --R                                             Type: Factored(Complex(Integer))
 --E 15
 
---S 16 of 16
+--S 16 of 17
 factor complex(2,0)
 --R 
 --R
@@ -23025,6 +23812,184 @@ factor complex(2,0)
 --R   (16)  - %i (1 + %i)
 --R                                             Type: Factored(Complex(Integer))
 --E 16
+
+--S 17 of 17
+)show Complex
+--R 
+--R Complex(R: CommutativeRing)  is a domain constructor
+--R Abbreviation for Complex is COMPLEX 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for COMPLEX 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,%) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : % -> % if R has DIFRING
+--R D : (%,(R -> R)) -> %                 OMwrite : % -> String if R has OM
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> % if R has RNS             acos : % -> % if R has TRANFUN
+--R acosh : % -> % if R has TRANFUN       acot : % -> % if R has TRANFUN
+--R acoth : % -> % if R has TRANFUN       acsc : % -> % if R has TRANFUN
+--R acsch : % -> % if R has TRANFUN       argument : % -> R if R has TRANFUN
+--R asec : % -> % if R has TRANFUN        asech : % -> % if R has TRANFUN
+--R asin : % -> % if R has TRANFUN        asinh : % -> % if R has TRANFUN
+--R atan : % -> % if R has TRANFUN        atanh : % -> % if R has TRANFUN
+--R basis : () -> Vector(%)               coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complex : (R,R) -> %                  conjugate : % -> %
+--R convert : Vector(R) -> %              convert : % -> Vector(R)
+--R coordinates : % -> Vector(R)          cos : % -> % if R has TRANFUN
+--R cosh : % -> % if R has TRANFUN        cot : % -> % if R has TRANFUN
+--R coth : % -> % if R has TRANFUN        csc : % -> % if R has TRANFUN
+--R csch : % -> % if R has TRANFUN        differentiate : (%,(R -> R)) -> %
+--R discriminant : () -> R                discriminant : Vector(%) -> R
+--R exp : % -> % if R has TRANFUN         gcd : (%,%) -> % if R has EUCDOM
+--R gcd : List(%) -> % if R has EUCDOM    generator : () -> %
+--R hash : % -> SingleInteger             imag : % -> R
+--R imaginary : () -> %                   init : () -> % if R has FFIELDC
+--R inv : % -> % if R has FIELD           latex : % -> String
+--R lcm : (%,%) -> % if R has EUCDOM      lcm : List(%) -> % if R has EUCDOM
+--R log : % -> % if R has TRANFUN         map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
+--R norm : % -> R                         one? : % -> Boolean
+--R pi : () -> % if R has TRANFUN         random : () -> % if R has FINITE
+--R rank : () -> PositiveInteger          real : % -> R
+--R recip : % -> Union(%,"failed")        represents : Vector(R) -> %
+--R retract : % -> R                      sample : () -> %
+--R sec : % -> % if R has TRANFUN         sech : % -> % if R has TRANFUN
+--R sin : % -> % if R has TRANFUN         sinh : % -> % if R has TRANFUN
+--R tan : % -> % if R has TRANFUN         tanh : % -> % if R has TRANFUN
+--R trace : % -> R                        traceMatrix : () -> Matrix(R)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?*? : (%,Fraction(Integer)) -> % if R has FIELD
+--R ?*? : (Fraction(Integer),%) -> % if R has FIELD
+--R ?**? : (%,Integer) -> % if R has FIELD
+--R ?**? : (%,%) -> % if R has TRANFUN
+--R ?**? : (%,Fraction(Integer)) -> % if R has RADCAT and R has TRANFUN
+--R ?<? : (%,%) -> Boolean if R has ORDSET
+--R ?<=? : (%,%) -> Boolean if R has ORDSET
+--R ?>? : (%,%) -> Boolean if R has ORDSET
+--R ?>=? : (%,%) -> Boolean if R has ORDSET
+--R D : (%,NonNegativeInteger) -> % if R has DIFRING
+--R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
+--R D : (%,(R -> R),NonNegativeInteger) -> %
+--R OMwrite : (OpenMathDevice,%,Boolean) -> Void if R has OM
+--R OMwrite : (OpenMathDevice,%) -> Void if R has OM
+--R OMwrite : (%,Boolean) -> String if R has OM
+--R ?^? : (%,Integer) -> % if R has FIELD
+--R associates? : (%,%) -> Boolean if R has EUCDOM and R has PFECAT or R has INTDOM
+--R characteristic : () -> NonNegativeInteger
+--R characteristicPolynomial : % -> SparseUnivariatePolynomial(R)
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and R has EUCDOM and R has PFECAT or R has CHARNZ
+--R charthRoot : % -> % if R has FFIELDC
+--R coerce : % -> % if R has EUCDOM and R has PFECAT or R has INTDOM
+--R coerce : Fraction(Integer) -> % if R has FIELD or R has RETRACT(FRAC(INT))
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and R has EUCDOM and R has PFECAT or R has FFIELDC
+--R convert : % -> InputForm if R has KONVERT(INFORM)
+--R convert : % -> Complex(DoubleFloat) if R has REAL
+--R convert : % -> Complex(Float) if R has REAL
+--R convert : % -> Pattern(Float) if R has KONVERT(PATTERN(FLOAT))
+--R convert : % -> Pattern(Integer) if R has KONVERT(PATTERN(INT))
+--R convert : SparseUnivariatePolynomial(R) -> %
+--R convert : % -> SparseUnivariatePolynomial(R)
+--R coordinates : Vector(%) -> Matrix(R)
+--R coordinates : (Vector(%),Vector(%)) -> Matrix(R)
+--R coordinates : (%,Vector(%)) -> Vector(R)
+--R createPrimitiveElement : () -> % if R has FFIELDC
+--R definingPolynomial : () -> SparseUnivariatePolynomial(R)
+--R derivationCoordinates : (Vector(%),(R -> R)) -> Matrix(R) if R has FIELD
+--R differentiate : % -> % if R has DIFRING
+--R differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
+--R differentiate : (%,Symbol) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,(R -> R),NonNegativeInteger) -> %
+--R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if R has FFIELDC
+--R discreteLog : % -> NonNegativeInteger if R has FFIELDC
+--R divide : (%,%) -> Record(quotient: %,remainder: %) if R has EUCDOM
+--R ?.? : (%,R) -> % if R has ELTAB(R,R)
+--R enumerate : () -> List(%) if R has FINITE
+--R euclideanSize : % -> NonNegativeInteger if R has EUCDOM
+--R eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
+--R eval : (%,List(Symbol),List(R)) -> % if R has IEVALAB(SYMBOL,R)
+--R eval : (%,List(Equation(R))) -> % if R has EVALAB(R)
+--R eval : (%,Equation(R)) -> % if R has EVALAB(R)
+--R eval : (%,R,R) -> % if R has EVALAB(R)
+--R eval : (%,List(R),List(R)) -> % if R has EVALAB(R)
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has EUCDOM
+--R exquo : (%,%) -> Union(%,"failed") if R has EUCDOM and R has PFECAT or R has INTDOM
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) if R has EUCDOM
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") if R has EUCDOM
+--R factor : % -> Factored(%) if R has EUCDOM and R has PFECAT or R has FIELD
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has EUCDOM and R has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has EUCDOM and R has PFECAT
+--R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer)) if R has FFIELDC
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has EUCDOM
+--R index : PositiveInteger -> % if R has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has EUCDOM
+--R lift : % -> SparseUnivariatePolynomial(R)
+--R lookup : % -> PositiveInteger if R has FINITE
+--R minimalPolynomial : % -> SparseUnivariatePolynomial(R) if R has FIELD
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has EUCDOM
+--R nextItem : % -> Union(%,"failed") if R has FFIELDC
+--R nthRoot : (%,Integer) -> % if R has RADCAT and R has TRANFUN
+--R order : % -> OnePointCompletion(PositiveInteger) if R has FFIELDC
+--R order : % -> PositiveInteger if R has FFIELDC
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if R has PATMAB(FLOAT)
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if R has PATMAB(INT)
+--R polarCoordinates : % -> Record(r: R,phi: R) if R has RNS and R has TRANFUN
+--R prime? : % -> Boolean if R has EUCDOM and R has PFECAT or R has FIELD
+--R primeFrobenius : % -> % if R has FFIELDC
+--R primeFrobenius : (%,NonNegativeInteger) -> % if R has FFIELDC
+--R primitive? : % -> Boolean if R has FFIELDC
+--R primitiveElement : () -> % if R has FFIELDC
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has EUCDOM
+--R ?quo? : (%,%) -> % if R has EUCDOM
+--R rational : % -> Fraction(Integer) if R has INS
+--R rational? : % -> Boolean if R has INS
+--R rationalIfCan : % -> Union(Fraction(Integer),"failed") if R has INS
+--R reduce : Fraction(SparseUnivariatePolynomial(R)) -> Union(%,"failed") if R has FIELD
+--R reduce : SparseUnivariatePolynomial(R) -> %
+--R reducedSystem : Matrix(%) -> Matrix(R)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
+--R regularRepresentation : % -> Matrix(R)
+--R regularRepresentation : (%,Vector(%)) -> Matrix(R)
+--R ?rem? : (%,%) -> % if R has EUCDOM
+--R representationType : () -> Union("prime",polynomial,normal,cyclic) if R has FFIELDC
+--R represents : (Vector(R),Vector(%)) -> %
+--R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retractIfCan : % -> Union(R,"failed")
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R size : () -> NonNegativeInteger if R has FINITE
+--R sizeLess? : (%,%) -> Boolean if R has EUCDOM
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if R has EUCDOM and R has PFECAT
+--R sqrt : % -> % if R has RADCAT and R has TRANFUN
+--R squareFree : % -> Factored(%) if R has EUCDOM and R has PFECAT or R has FIELD
+--R squareFreePart : % -> % if R has EUCDOM and R has PFECAT or R has FIELD
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has EUCDOM and R has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R tableForDiscreteLogarithm : Integer -> Table(PositiveInteger,NonNegativeInteger) if R has FFIELDC
+--R traceMatrix : Vector(%) -> Matrix(R)
+--R unit? : % -> Boolean if R has EUCDOM and R has PFECAT or R has INTDOM
+--R unitCanonical : % -> % if R has EUCDOM and R has PFECAT or R has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has EUCDOM and R has PFECAT or R has INTDOM
+--R
+--E 17
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -23398,25 +24363,25 @@ Complex(R:CommutativeRing): ComplexCategory(R) with
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,%) -> %                ?*? : (%,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      antisymmetric? : % -> Boolean
---R copy : % -> %                         diagonal? : % -> Boolean
---R diagonalMatrix : List(%) -> %         empty : () -> %
---R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R horizConcat : (%,%) -> %              maxColIndex : % -> Integer
---R maxRowIndex : % -> Integer            minColIndex : % -> Integer
---R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
---R nrows : % -> NonNegativeInteger       qnew : (Integer,Integer) -> %
---R sample : () -> %                      square? : % -> Boolean
---R squareTop : % -> %                    symmetric? : % -> Boolean
---R transpose : % -> %                    vertConcat : (%,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R antisymmetric? : % -> Boolean         copy : % -> %
+--R diagonal? : % -> Boolean              diagonalMatrix : List(%) -> %
+--R empty : () -> %                       empty? : % -> Boolean
+--R eq? : (%,%) -> Boolean                horizConcat : (%,%) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R qnew : (Integer,Integer) -> %         sample : () -> %
+--R square? : % -> Boolean                squareTop : % -> %
+--R symmetric? : % -> Boolean             transpose : % -> %
+--R vertConcat : (%,%) -> %              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (ComplexDoubleFloatVector,%) -> ComplexDoubleFloatVector
 --R ?*? : (%,ComplexDoubleFloatVector) -> ComplexDoubleFloatVector
 --R ?*? : (%,Complex(DoubleFloat)) -> %
 --R ?*? : (Complex(DoubleFloat),%) -> %
 --R ?**? : (%,Integer) -> % if Complex(DoubleFloat) has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Complex(DoubleFloat)) -> % if Complex(DoubleFloat) has FIELD
 --R ?=? : (%,%) -> Boolean if Complex(DoubleFloat) has SETCAT
 --R any? : ((Complex(DoubleFloat) -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -24028,7 +24993,8 @@ ComplexDoubleFloatVector : VectorCategory Complex DoubleFloat with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 22
+
+--S 1 of 23
 c := continuedFraction(314159/100000)
 --R 
 --R
@@ -24038,7 +25004,7 @@ c := continuedFraction(314159/100000)
 --R                                             Type: ContinuedFraction(Integer)
 --E 1
 
---S 2 of 22
+--S 2 of 23
 partialQuotients c
 --R 
 --R
@@ -24046,7 +25012,7 @@ partialQuotients c
 --R                                                        Type: Stream(Integer)
 --E 2
 
---S 3 of 22
+--S 3 of 23
 convergents c
 --R 
 --R
@@ -24056,7 +25022,7 @@ convergents c
 --R                                              Type: Stream(Fraction(Integer))
 --E 3
 
---S 4 of 22
+--S 4 of 23
 approximants c
 --R 
 --R
@@ -24067,7 +25033,7 @@ approximants c
 --R                                              Type: Stream(Fraction(Integer))
 --E 4
 
---S 5 of 22
+--S 5 of 23
 pq := partialQuotients(1/c)
 --R 
 --R
@@ -24075,7 +25041,7 @@ pq := partialQuotients(1/c)
 --R                                                        Type: Stream(Integer)
 --E 5
 
---S 6 of 22
+--S 6 of 23
 continuedFraction(first pq,repeating [1],rest pq)
 --R 
 --R
@@ -24085,7 +25051,7 @@ continuedFraction(first pq,repeating [1],rest pq)
 --R                                             Type: ContinuedFraction(Integer)
 --E 6
 
---S 7 of 22
+--S 7 of 23
 z:=continuedFraction(3,repeating [1],repeating [3,6])
 --R 
 --R
@@ -24100,7 +25066,7 @@ z:=continuedFraction(3,repeating [1],repeating [3,6])
 --R                                             Type: ContinuedFraction(Integer)
 --E 7
 
---S 8 of 22
+--S 8 of 23
 dens:Stream Integer := cons(1,generate((x+->x+4),6))
 --R 
 --R
@@ -24108,7 +25074,7 @@ dens:Stream Integer := cons(1,generate((x+->x+4),6))
 --R                                                        Type: Stream(Integer)
 --E 8
 
---S 9 of 22
+--S 9 of 23
 cf := continuedFraction(0,repeating [1],dens)
 --R 
 --R
@@ -24123,7 +25089,7 @@ cf := continuedFraction(0,repeating [1],dens)
 --R                                             Type: ContinuedFraction(Integer)
 --E 9
 
---S 10 of 22
+--S 10 of 23
 ccf := convergents cf
 --R 
 --R
@@ -24133,7 +25099,7 @@ ccf := convergents cf
 --R                                              Type: Stream(Fraction(Integer))
 --E 10
 
---S 11 of 22
+--S 11 of 23
 eConvergents := [2*e + 1 for e in ccf]
 --R 
 --R
@@ -24143,7 +25109,7 @@ eConvergents := [2*e + 1 for e in ccf]
 --R                                              Type: Stream(Fraction(Integer))
 --E 11
 
---S 12 of 22
+--S 12 of 23
 eConvergents :: Stream Float
 --R 
 --R
@@ -24155,7 +25121,7 @@ eConvergents :: Stream Float
 --R                                                          Type: Stream(Float)
 --E 12
 
---S 13 of 22
+--S 13 of 23
 exp 1.0
 --R 
 --R
@@ -24163,7 +25129,7 @@ exp 1.0
 --R                                                                  Type: Float
 --E 13
 
---S 14 of 22
+--S 14 of 23
 cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])
 --R 
 --R
@@ -24178,7 +25144,7 @@ cf := continuedFraction(1,[(2*i+1)**2 for i in 0..],repeating [2])
 --R                                             Type: ContinuedFraction(Integer)
 --E 14
 
---S 15 of 22
+--S 15 of 23
 ccf := convergents cf
 --R 
 --R
@@ -24188,7 +25154,7 @@ ccf := convergents cf
 --R                                              Type: Stream(Fraction(Integer))
 --E 15
 
---S 16 of 22
+--S 16 of 23
 piConvergents := [4/p for p in ccf] 
 --R 
 --R
@@ -24198,7 +25164,7 @@ piConvergents := [4/p for p in ccf]
 --R                                              Type: Stream(Fraction(Integer))
 --E 16
 
---S 17 of 22
+--S 17 of 23
 piConvergents :: Stream Float
 --R 
 --R
@@ -24210,7 +25176,7 @@ piConvergents :: Stream Float
 --R                                                          Type: Stream(Float)
 --E 17
 
---S 18 of 22
+--S 18 of 23
 continuedFraction((- 122 + 597*%i)/(4 - 4*%i))
 --R 
 --R
@@ -24220,13 +25186,13 @@ continuedFraction((- 122 + 597*%i)/(4 - 4*%i))
 --R                                    Type: ContinuedFraction(Complex(Integer))
 --E 18
 
---S 19 of 22
+--S 19 of 23
 r : Fraction UnivariatePolynomial(x,Fraction Integer) 
 --R 
 --R                                                                   Type: Void
 --E 19
 
---S 20 of 22
+--S 20 of 23
 r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))
 --R 
 --R
@@ -24238,7 +25204,7 @@ r := ((x - 1) * (x - 2)) / ((x-3) * (x-4))
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 20
 
---S 21 of 22
+--S 21 of 23
 continuedFraction r 
 --R 
 --R
@@ -24250,7 +25216,7 @@ continuedFraction r
 --R           Type: ContinuedFraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 21
 
---S 22 of 22
+--S 22 of 23
 [i*i for i in convergents(z) :: Stream Float] 
 --R 
 --R
@@ -24261,6 +25227,68 @@ continuedFraction r
 --R    ...]
 --R                                                          Type: Stream(Float)
 --E 22
+
+--S 23 of 23
+)show ContinuedFraction
+--R 
+--R ContinuedFraction(R: EuclideanDomain)  is a domain constructor
+--R Abbreviation for ContinuedFraction is CONTFRAC 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for CONTFRAC 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
+--R ?*? : (%,Fraction(R)) -> %            ?*? : (Fraction(R),%) -> %
+--R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : % -> %                       coerce : Fraction(Integer) -> %
+--R coerce : Fraction(R) -> %             coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complete : % -> %                     denominators : % -> Stream(R)
+--R extend : (%,Integer) -> %             factor : % -> Factored(%)
+--R gcd : (%,%) -> %                      gcd : List(%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : (%,%) -> %
+--R lcm : List(%) -> %                    numerators : % -> Stream(R)
+--R one? : % -> Boolean                   partialNumerators : % -> Stream(R)
+--R partialQuotients : % -> Stream(R)     prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R reducedForm : % -> %                  ?rem? : (%,%) -> %
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R wholePart : % -> R                    zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R approximants : % -> Stream(Fraction(R))
+--R characteristic : () -> NonNegativeInteger
+--R continuedFraction : (R,Stream(R),Stream(R)) -> %
+--R continuedFraction : Fraction(R) -> %
+--R convergents : % -> Stream(Fraction(R))
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R euclideanSize : % -> NonNegativeInteger
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R partialDenominators : % -> Stream(R)
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R reducedContinuedFraction : (R,Stream(R)) -> %
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 23
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -24968,8 +25996,8 @@ ContinuedFraction(R): Exports == Implementation where
 --S 1 of 1
 )show Database
 --R 
---R Database(S) where 
---R   S: OrderedSet with 
+--R Database(S)where
+--R   S: OrderedSetwith
 --R       ?.? : (%,Symbol) -> String
 --R       display : % -> Void
 --R       fullDisplay : % -> Void  is a domain constructor
@@ -25123,15 +26151,19 @@ Database(S): Exports == Implementation where
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
 --R insert : (S,%,Integer) -> %           insert : (%,%,Integer) -> %
 --R insert! : (S,%,Integer) -> %          insert! : (%,%,Integer) -> %
---R last : % -> S                         leaf? : % -> Boolean
+--R last : (%,NonNegativeInteger) -> %    last : % -> S
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
 --R leaves : % -> List(S)                 list : S -> %
 --R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
 --R new : (NonNegativeInteger,S) -> %     nodes : % -> List(%)
 --R possiblyInfinite? : % -> Boolean      qelt : (%,Integer) -> S
+--R remove! : ((S -> Boolean),%) -> %     rest : (%,NonNegativeInteger) -> %
 --R rest : % -> %                         reverse : % -> %
 --R sample : () -> %                      second : % -> S
---R tail : % -> %                         third : % -> S
---R value : % -> S                       
+--R select! : ((S -> Boolean),%) -> %     sort : (((S,S) -> Boolean),%) -> %
+--R sort : % -> % if S has ORDSET         tail : % -> %
+--R third : % -> S                        value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -25161,11 +26193,8 @@ Database(S): Exports == Implementation where
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R members : % -> List(S) if $ has finiteAggregate
@@ -25173,7 +26202,6 @@ Database(S): Exports == Implementation where
 --R merge : (%,%) -> % if S has ORDSET
 --R merge! : (((S,S) -> Boolean),%,%) -> %
 --R merge! : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R node? : (%,%) -> Boolean if S has SETCAT
@@ -25187,14 +26215,11 @@ Database(S): Exports == Implementation where
 --R reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
 --R remove : (S,%) -> % if $ has finiteAggregate and S has SETCAT
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R remove! : ((S -> Boolean),%) -> %
 --R remove! : (S,%) -> % if S has SETCAT
 --R removeDuplicates : % -> % if $ has finiteAggregate and S has SETCAT
 --R removeDuplicates! : % -> % if S has SETCAT
---R rest : (%,NonNegativeInteger) -> %
 --R reverse! : % -> % if $ has shallowlyMutable
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R select! : ((S -> Boolean),%) -> %
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
@@ -25207,8 +26232,6 @@ Database(S): Exports == Implementation where
 --R setrest! : (%,%) -> % if $ has shallowlyMutable
 --R setvalue! : (%,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : (((S,S) -> Boolean),%) -> %
---R sort : % -> % if S has ORDSET
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sort! : % -> % if $ has shallowlyMutable and S has ORDSET
 --R sorted? : (((S,S) -> Boolean),%) -> Boolean
@@ -25397,7 +26420,8 @@ DataList(S:OrderedSet) : Exports == Implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 7
+
+--S 1 of 8
 r := decimal(22/7)
 --R 
 --R
@@ -25406,7 +26430,7 @@ r := decimal(22/7)
 --R                                                       Type: DecimalExpansion
 --E 1
 
---S 2 of 7
+--S 2 of 8
 r + decimal(6/7)
 --R 
 --R
@@ -25414,7 +26438,7 @@ r + decimal(6/7)
 --R                                                       Type: DecimalExpansion
 --E 2
 
---S 3 of 7
+--S 3 of 8
 [decimal(1/i) for i in 350..354]
 --R 
 --R
@@ -25426,7 +26450,7 @@ r + decimal(6/7)
 --R                                                 Type: List(DecimalExpansion)
 --E 3
 
---S 4 of 7
+--S 4 of 8
 decimal(1/2049)
 --R 
 --R
@@ -25441,7 +26465,7 @@ decimal(1/2049)
 --R                                                       Type: DecimalExpansion
 --E 4
 
---S 5 of 7
+--S 5 of 8
 p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9) 
 --R 
 --R
@@ -25450,7 +26474,7 @@ p := decimal(1/4)*x**2 + decimal(2/3)*x + decimal(4/9)
 --R                                           Type: Polynomial(DecimalExpansion)
 --E 5
 
---S 6 of 7
+--S 6 of 8
 q := differentiate(p, x)
 --R 
 --R
@@ -25459,7 +26483,7 @@ q := differentiate(p, x)
 --R                                           Type: Polynomial(DecimalExpansion)
 --E 6
 
---S 7 of 7
+--S 7 of 8
 g := gcd(p, q)
 --R 
 --R
@@ -25467,6 +26491,125 @@ g := gcd(p, q)
 --R   (7)  x + 1.3
 --R                                           Type: Polynomial(DecimalExpansion)
 --E 7
+
+--S 8 of 8
+)show DecimalExpansion
+ DecimalExpansion  is a domain constructor
+ Abbreviation for DecimalExpansion is DECIMAL 
+ This constructor is exposed in this frame.
+ Issue )edit bookvol10.3.pamphlet to see algebra source code for DECIMAL 
+
+------------------------------- Operations --------------------------------
+ ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
+ ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+ ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+ ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+ ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+ ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+ ?-? : (%,%) -> %                      -? : % -> %
+ ?/? : (Integer,Integer) -> %          ?/? : (%,%) -> %
+ ?=? : (%,%) -> Boolean                D : (%,(Integer -> Integer)) -> %
+ D : % -> % if Integer has DIFRING     1 : () -> %
+ 0 : () -> %                           ?^? : (%,Integer) -> %
+ ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+ associates? : (%,%) -> Boolean        coerce : % -> RadixExpansion(10)
+ coerce : % -> Fraction(Integer)       coerce : Integer -> %
+ coerce : Fraction(Integer) -> %       coerce : % -> %
+ coerce : Integer -> %                 coerce : % -> OutputForm
+ decimal : Fraction(Integer) -> %      denom : % -> Integer
+ denominator : % -> %                  factor : % -> Factored(%)
+ gcd : List(%) -> %                    gcd : (%,%) -> %
+ hash : % -> SingleInteger             init : () -> % if Integer has STEP
+ inv : % -> %                          latex : % -> String
+ lcm : List(%) -> %                    lcm : (%,%) -> %
+ numer : % -> Integer                  numerator : % -> %
+ one? : % -> Boolean                   prime? : % -> Boolean
+ ?quo? : (%,%) -> %                    random : () -> % if Integer has INS
+ recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+ retract : % -> Integer                sample : () -> %
+ sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+ squareFreePart : % -> %               unit? : % -> Boolean
+ unitCanonical : % -> %                zero? : % -> Boolean
+ ?~=? : (%,%) -> Boolean              
+ ?<? : (%,%) -> Boolean if Integer has ORDSET
+ ?<=? : (%,%) -> Boolean if Integer has ORDSET
+ ?>? : (%,%) -> Boolean if Integer has ORDSET
+ ?>=? : (%,%) -> Boolean if Integer has ORDSET
+ D : (%,(Integer -> Integer),NonNegativeInteger) -> %
+ D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+ D : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+ D : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+ D : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+ D : (%,NonNegativeInteger) -> % if Integer has DIFRING
+ abs : % -> % if Integer has OINTDOM
+ ceiling : % -> Integer if Integer has INS
+ characteristic : () -> NonNegativeInteger
+ charthRoot : % -> Union(%,"failed") if $ has CHARNZ and Integer has PFECAT or Integer has CHARNZ
+ coerce : Symbol -> % if Integer has RETRACT(SYMBOL)
+ conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and Integer has PFECAT
+ convert : % -> DoubleFloat if Integer has REAL
+ convert : % -> Float if Integer has REAL
+ convert : % -> InputForm if Integer has KONVERT(INFORM)
+ convert : % -> Pattern(Float) if Integer has KONVERT(PATTERN(FLOAT))
+ convert : % -> Pattern(Integer) if Integer has KONVERT(PATTERN(INT))
+ differentiate : (%,(Integer -> Integer)) -> %
+ differentiate : (%,(Integer -> Integer),NonNegativeInteger) -> %
+ differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+ differentiate : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+ differentiate : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+ differentiate : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+ differentiate : (%,NonNegativeInteger) -> % if Integer has DIFRING
+ differentiate : % -> % if Integer has DIFRING
+ divide : (%,%) -> Record(quotient: %,remainder: %)
+ ?.? : (%,Integer) -> % if Integer has ELTAB(INT,INT)
+ euclideanSize : % -> NonNegativeInteger
+ eval : (%,Symbol,Integer) -> % if Integer has IEVALAB(SYMBOL,INT)
+ eval : (%,List(Symbol),List(Integer)) -> % if Integer has IEVALAB(SYMBOL,INT)
+ eval : (%,List(Equation(Integer))) -> % if Integer has EVALAB(INT)
+ eval : (%,Equation(Integer)) -> % if Integer has EVALAB(INT)
+ eval : (%,Integer,Integer) -> % if Integer has EVALAB(INT)
+ eval : (%,List(Integer),List(Integer)) -> % if Integer has EVALAB(INT)
+ expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+ exquo : (%,%) -> Union(%,"failed")
+ extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+ extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+ factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+ factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+ floor : % -> Integer if Integer has INS
+ fractionPart : % -> Fraction(Integer)
+ fractionPart : % -> % if Integer has EUCDOM
+ gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+ lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+ map : ((Integer -> Integer),%) -> %
+ max : (%,%) -> % if Integer has ORDSET
+ min : (%,%) -> % if Integer has ORDSET
+ multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+ negative? : % -> Boolean if Integer has OINTDOM
+ nextItem : % -> Union(%,"failed") if Integer has STEP
+ patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if Integer has PATMAB(FLOAT)
+ patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if Integer has PATMAB(INT)
+ positive? : % -> Boolean if Integer has OINTDOM
+ principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+ reducedSystem : Matrix(%) -> Matrix(Integer)
+ reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer))
+ reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if Integer has LINEXP(INT)
+ reducedSystem : Matrix(%) -> Matrix(Integer) if Integer has LINEXP(INT)
+ retract : % -> Integer if Integer has RETRACT(INT)
+ retract : % -> Fraction(Integer) if Integer has RETRACT(INT)
+ retract : % -> Symbol if Integer has RETRACT(SYMBOL)
+ retractIfCan : % -> Union(Integer,"failed") if Integer has RETRACT(INT)
+ retractIfCan : % -> Union(Fraction(Integer),"failed") if Integer has RETRACT(INT)
+ retractIfCan : % -> Union(Symbol,"failed") if Integer has RETRACT(SYMBOL)
+ retractIfCan : % -> Union(Integer,"failed")
+ sign : % -> Integer if Integer has OINTDOM
+ solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if Integer has PFECAT
+ squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+ subtractIfCan : (%,%) -> Union(%,"failed")
+ unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+ wholePart : % -> Integer if Integer has EUCDOM
+
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -27264,6 +28407,84 @@ description is in terms of a vector and angle of rotation.
 
 --S 1 of 1
 )show DenavitHartenbergMatrix
+--R 
+--R DenavitHartenbergMatrix(R: Join(Field,TranscendentalFunctionCategory))  is a domain constructor
+--R Abbreviation for DenavitHartenbergMatrix is DHMATRIX 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for DHMATRIX 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,Point(R)) -> Point(R)        ?*? : (Vector(R),%) -> Vector(R)
+--R ?*? : (%,Vector(R)) -> Vector(R)      ?*? : (Integer,%) -> %
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?*? : (%,%) -> %                      ?**? : (%,NonNegativeInteger) -> %
+--R ?+? : (%,%) -> %                      -? : % -> %
+--R ?-? : (%,%) -> %                      ?/? : (%,R) -> % if R has FIELD
+--R antisymmetric? : % -> Boolean         coerce : Vector(R) -> %
+--R column : (%,Integer) -> Vector(R)     copy : % -> %
+--R diagonal? : % -> Boolean              diagonalMatrix : List(%) -> %
+--R diagonalMatrix : List(R) -> %         elt : (%,Integer,Integer,R) -> R
+--R elt : (%,Integer,Integer) -> R        empty : () -> %
+--R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
+--R fill! : (%,R) -> %                    horizConcat : (%,%) -> %
+--R identity : () -> %                    latex : % -> String if R has SETCAT
+--R listOfLists : % -> List(List(R))      map : (((R,R) -> R),%,%,R) -> %
+--R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R map! : ((R -> R),%) -> %              matrix : List(List(R)) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R parts : % -> List(R)                  pfaffian : % -> R if R has COMRING
+--R qelt : (%,Integer,Integer) -> R       rotatex : R -> %
+--R rotatey : R -> %                      rotatez : R -> %
+--R row : (%,Integer) -> Vector(R)        sample : () -> %
+--R scale : (R,R,R) -> %                  setelt : (%,Integer,Integer,R) -> R
+--R square? : % -> Boolean                squareTop : % -> %
+--R symmetric? : % -> Boolean             translate : (R,R,R) -> %
+--R transpose : % -> %                    transpose : Vector(R) -> %
+--R vertConcat : (%,%) -> %              
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?**? : (%,Integer) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean if R has SETCAT
+--R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R coerce : % -> OutputForm if R has SETCAT
+--R columnSpace : % -> List(Vector(R)) if R has EUCDOM
+--R count : (R,%) -> NonNegativeInteger if $ has finiteAggregate and R has SETCAT
+--R count : ((R -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R determinant : % -> R if R has commutative(*)
+--R elt : (%,List(Integer),List(Integer)) -> %
+--R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
+--R eval : (%,R,R) -> % if R has EVALAB(R) and R has SETCAT
+--R eval : (%,Equation(R)) -> % if R has EVALAB(R) and R has SETCAT
+--R eval : (%,List(Equation(R))) -> % if R has EVALAB(R) and R has SETCAT
+--R every? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R hash : % -> SingleInteger if R has SETCAT
+--R inverse : % -> Union(%,"failed") if R has FIELD
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R matrix : (NonNegativeInteger,NonNegativeInteger,((Integer,Integer) -> R)) -> %
+--R member? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
+--R members : % -> List(R) if $ has finiteAggregate
+--R minordet : % -> R if R has commutative(*)
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R new : (NonNegativeInteger,NonNegativeInteger,R) -> %
+--R nullSpace : % -> List(Vector(R)) if R has INTDOM
+--R nullity : % -> NonNegativeInteger if R has INTDOM
+--R qsetelt! : (%,Integer,Integer,R) -> R
+--R rank : % -> NonNegativeInteger if R has INTDOM
+--R rowEchelon : % -> % if R has EUCDOM
+--R scalarMatrix : (NonNegativeInteger,R) -> %
+--R setColumn! : (%,Integer,Vector(R)) -> %
+--R setRow! : (%,Integer,Vector(R)) -> %
+--R setelt : (%,List(Integer),List(Integer),%) -> %
+--R setsubMatrix! : (%,Integer,Integer,%) -> %
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R subMatrix : (%,Integer,Integer,Integer,Integer) -> %
+--R swapColumns! : (%,Integer,Integer) -> %
+--R swapRows! : (%,Integer,Integer) -> %
+--R zero : (NonNegativeInteger,NonNegativeInteger) -> %
+--R ?~=? : (%,%) -> Boolean if R has SETCAT
+--R
 --E 1
 
 )spool
@@ -28689,11 +29910,12 @@ latex a
 --R extractTop! : % -> S                  front : % -> S
 --R height : % -> NonNegativeInteger      insert! : (S,%) -> %
 --R insertBottom! : (S,%) -> S            insertTop! : (S,%) -> S
---R inspect : % -> S                      length : % -> NonNegativeInteger
---R map : ((S -> S),%) -> %               pop! : % -> S
---R push! : (S,%) -> S                    reverse! : % -> %
---R rotate! : % -> %                      sample : () -> %
---R top : % -> S                          top! : % -> S
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R length : % -> NonNegativeInteger      map : ((S -> S),%) -> %
+--R pop! : % -> S                         push! : (S,%) -> S
+--R reverse! : % -> %                     rotate! : % -> %
+--R sample : () -> %                      top : % -> S
+--R top! : % -> S                        
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -28706,7 +29928,6 @@ latex a
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -29377,7 +30598,7 @@ Dequeue(S:SetCategory): DequeueAggregate S with
 )set message auto off
 )clear all
 
---S 1 of 148
+--S 1 of 149
 coefRing := Integer
 --R 
 --R
@@ -29385,7 +30606,7 @@ coefRing := Integer
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 148
+--S 2 of 149
 lv : List Symbol := [x,y,z] 
 --R 
 --R
@@ -29393,7 +30614,7 @@ lv : List Symbol := [x,y,z]
 --R                                                           Type: List(Symbol)
 --E 2
 
---S 3 of 148
+--S 3 of 149
 der := DERHAM(coefRing,lv) 
 --R 
 --R
@@ -29401,7 +30622,7 @@ der := DERHAM(coefRing,lv)
 --R                                                                 Type: Domain
 --E 3
 
---S 4 of 148
+--S 4 of 149
 R := Expression coefRing
 --R 
 --R
@@ -29409,7 +30630,7 @@ R := Expression coefRing
 --R                                                                 Type: Domain
 --E 4
 
---S 5 of 148
+--S 5 of 149
 f : R := x**2*y*z-5*x**3*y**2*z**5
 --R 
 --R
@@ -29418,7 +30639,7 @@ f : R := x**2*y*z-5*x**3*y**2*z**5
 --R                                                    Type: Expression(Integer)
 --E 5
 
---S 6 of 148
+--S 6 of 149
 g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2 
 --R 
 --R
@@ -29427,7 +30648,7 @@ g : R := z**2*y*cos(z)-7*sin(x**3*y**2)*z**2
 --R                                                    Type: Expression(Integer)
 --E 6
 
---S 7 of 148
+--S 7 of 149
 h : R :=x*y*z-2*x**3*y*z**2 
 --R 
 --R
@@ -29436,7 +30657,7 @@ h : R :=x*y*z-2*x**3*y*z**2
 --R                                                    Type: Expression(Integer)
 --E 7
 
---S 8 of 148
+--S 8 of 149
 dx : der := generator(1)
 --R 
 --R
@@ -29444,7 +30665,7 @@ dx : der := generator(1)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 8
 
---S 9 of 148
+--S 9 of 149
 dy : der := generator(2)
 --R 
 --R
@@ -29452,7 +30673,7 @@ dy : der := generator(2)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 9
 
---S 10 of 148
+--S 10 of 149
 dz : der := generator(3)
 --R 
 --R
@@ -29460,7 +30681,7 @@ dz : der := generator(3)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 10
 
---S 11 of 148
+--S 11 of 149
 [dx,dy,dz] := [generator(i)$der for i in 1..3]
 --R 
 --R
@@ -29468,7 +30689,7 @@ dz : der := generator(3)
 --R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
 --E 11
 
---S 12 of 148
+--S 12 of 149
 alpha : der := f*dx + g*dy + h*dz
 --R 
 --R
@@ -29481,7 +30702,7 @@ alpha : der := f*dx + g*dy + h*dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 12
 
---S 13 of 148
+--S 13 of 149
 beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
 --R 
 --R
@@ -29489,7 +30710,7 @@ beta  : der := cos(tan(x*y*z)+x*y*z)*dx + x*dy
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 13
 
---S 14 of 148
+--S 14 of 149
 m1:=exteriorDifferential alpha
 --R 
 --R
@@ -29505,7 +30726,7 @@ m1:=exteriorDifferential alpha
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 14
 
---S 15 of 148
+--S 15 of 149
 exteriorDifferential m1
 --R 
 --R
@@ -29513,7 +30734,7 @@ exteriorDifferential m1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 15
 
---S 16 of 148
+--S 16 of 149
 gamma := alpha * beta
 --R 
 --R
@@ -29526,7 +30747,7 @@ gamma := alpha * beta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 16
 
---S 17 of 148
+--S 17 of 149
 exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - _
     alpha * exteriorDifferential(beta)) 
 --R 
@@ -29535,7 +30756,7 @@ exteriorDifferential(gamma) - (exteriorDifferential(alpha)*beta - _
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 17
 
---S 18 of 148
+--S 18 of 149
 a : BOP := operator('a)
 --R 
 --R
@@ -29543,7 +30764,7 @@ a : BOP := operator('a)
 --R                                                          Type: BasicOperator
 --E 18
 
---S 19 of 148
+--S 19 of 149
 b : BOP := operator('b)
 --R 
 --R
@@ -29551,7 +30772,7 @@ b : BOP := operator('b)
 --R                                                          Type: BasicOperator
 --E 19
 
---S 20 of 148
+--S 20 of 149
 c : BOP := operator('c)
 --R 
 --R
@@ -29559,7 +30780,7 @@ c : BOP := operator('c)
 --R                                                          Type: BasicOperator
 --E 20
 
---S 21 of 148
+--S 21 of 149
 sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz 
 --R 
 --R
@@ -29567,7 +30788,7 @@ sigma := a(x,y,z) * dx + b(x,y,z) * dy + c(x,y,z) * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 21
 
---S 22 of 148
+--S 22 of 149
 theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz 
 --R 
 --R
@@ -29575,7 +30796,7 @@ theta  := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 22
 
---S 23 of 148
+--S 23 of 149
 totalDifferential(a(x,y,z))$der 
 --R 
 --R
@@ -29584,7 +30805,7 @@ totalDifferential(a(x,y,z))$der
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 23
 
---S 24 of 148
+--S 24 of 149
 exteriorDifferential sigma
 --R 
 --R
@@ -29597,7 +30818,7 @@ exteriorDifferential sigma
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 24
 
---S 25 of 148
+--S 25 of 149
 exteriorDifferential theta
 --R 
 --R
@@ -29606,7 +30827,7 @@ exteriorDifferential theta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 25
 
---S 26 of 148
+--S 26 of 149
 one : der := 1
 --R 
 --R
@@ -29614,7 +30835,7 @@ one : der := 1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 26
 
---S 27 of 148
+--S 27 of 149
 g1 : der := a([x,t,y,u,v,z,e]) * one 
 --R 
 --R
@@ -29622,7 +30843,7 @@ g1 : der := a([x,t,y,u,v,z,e]) * one
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 27
 
---S 28 of 148
+--S 28 of 149
 h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one 
 --R 
 --R
@@ -29630,7 +30851,7 @@ h1 : der := a([x,y,x,t,x,z,y,r,u,x]) * one
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 28
 
---S 29 of 148
+--S 29 of 149
 exteriorDifferential g1 
 --R 
 --R
@@ -29639,7 +30860,7 @@ exteriorDifferential g1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 29
 
---S 30 of 148
+--S 30 of 149
 exteriorDifferential h1
 --R 
 --R
@@ -29660,7 +30881,7 @@ exteriorDifferential h1
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 30
 
---S 31 of 148
+--S 31 of 149
 coefficient(gamma, dx*dy)
 --R 
 --R
@@ -29669,7 +30890,7 @@ coefficient(gamma, dx*dy)
 --R                                                    Type: Expression(Integer)
 --E 31
 
---S 32 of 148
+--S 32 of 149
 coefficient(gamma, one)
 --R 
 --R
@@ -29677,7 +30898,7 @@ coefficient(gamma, one)
 --R                                                    Type: Expression(Integer)
 --E 32
 
---S 33 of 148
+--S 33 of 149
 coefficient(g1,one)
 --R 
 --R
@@ -29685,7 +30906,7 @@ coefficient(g1,one)
 --R                                                    Type: Expression(Integer)
 --E 33
 
---S 34 of 148
+--S 34 of 149
 gamma := alpha * beta
 --R 
 --R
@@ -29698,7 +30919,7 @@ gamma := alpha * beta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 34
 
---S 35 of 148
+--S 35 of 149
 t1:=generator(1)$der
 --R 
 --R
@@ -29706,7 +30927,7 @@ t1:=generator(1)$der
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 35
 
---S 36 of 148
+--S 36 of 149
 degree(t1)
 --R 
 --R
@@ -29716,7 +30937,7 @@ degree(t1)
 
 )clear all
 
---S 37 of 148
+--S 37 of 149
 X:=DERHAM(Integer,[x,y,z])
 --R 
 --R
@@ -29724,7 +30945,7 @@ X:=DERHAM(Integer,[x,y,z])
 --R                                                                 Type: Domain
 --E 37
 
---S 38 of 148
+--S 38 of 149
 [dx,dy,dz]:=[generator(i)$X for i in 1..3]
 --R 
 --R
@@ -29732,7 +30953,7 @@ X:=DERHAM(Integer,[x,y,z])
 --R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
 --E 38
 
---S 39 of 148
+--S 39 of 149
 f:BOP:=operator('f)
 --R 
 --R
@@ -29740,7 +30961,7 @@ f:BOP:=operator('f)
 --R                                                          Type: BasicOperator
 --E 39
 
---S 40 of 148
+--S 40 of 149
 g:BOP:=operator('g)
 --R 
 --R
@@ -29748,7 +30969,7 @@ g:BOP:=operator('g)
 --R                                                          Type: BasicOperator
 --E 40
 
---S 41 of 148
+--S 41 of 149
 h:BOP:=operator('h)
 --R 
 --R
@@ -29756,7 +30977,7 @@ h:BOP:=operator('h)
 --R                                                          Type: BasicOperator
 --E 41
 
---S 42 of 148
+--S 42 of 149
 a:BOP:=operator('a)
 --R 
 --R
@@ -29764,7 +30985,7 @@ a:BOP:=operator('a)
 --R                                                          Type: BasicOperator
 --E 42
 
---S 43 of 148
+--S 43 of 149
 b:BOP:=operator('b)
 --R 
 --R
@@ -29772,7 +30993,7 @@ b:BOP:=operator('b)
 --R                                                          Type: BasicOperator
 --E 43
 
---S 44 of 148
+--S 44 of 149
 c:BOP:=operator('c)
 --R 
 --R
@@ -29780,7 +31001,7 @@ c:BOP:=operator('c)
 --R                                                          Type: BasicOperator
 --E 44
 
---S 45 of 148
+--S 45 of 149
 sigma:=f(x,y,z)*dx + g(x,y,z)*dy + h(x,y,z)*dz
 --R 
 --R
@@ -29788,7 +31009,7 @@ sigma:=f(x,y,z)*dx + g(x,y,z)*dy + h(x,y,z)*dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 45
 
---S 46 of 148
+--S 46 of 149
 theta:=a(x,y,z)*dx*dy + b(x,y,z)*dx*dz + c(x,y,z)*dy*dz
 --R 
 --R
@@ -29796,13 +31017,13 @@ theta:=a(x,y,z)*dx*dy + b(x,y,z)*dx*dz + c(x,y,z)*dy*dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 46
 
---S 47 of 148
+--S 47 of 149
 d ==> exteriorDifferential
 --R 
 --R                                                                   Type: Void
 --E 47
 
---S 48 of 148
+--S 48 of 149
 leadingCoefficient sigma
 --R 
 --R
@@ -29810,7 +31031,7 @@ leadingCoefficient sigma
 --R                                                    Type: Expression(Integer)
 --E 48
 
---S 49 of 148
+--S 49 of 149
 leadingBasisTerm sigma
 --R 
 --R
@@ -29818,7 +31039,7 @@ leadingBasisTerm sigma
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 49
 
---S 50 of 148
+--S 50 of 149
 reductum sigma
 --R 
 --R
@@ -29826,7 +31047,7 @@ reductum sigma
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 50
 
---S 51 of 148
+--S 51 of 149
 coefficient(sigma,dz)
 --R 
 --R
@@ -29834,7 +31055,7 @@ coefficient(sigma,dz)
 --R                                                    Type: Expression(Integer)
 --E 51
 
---S 52 of 148
+--S 52 of 149
 homogeneous? sigma
 --R 
 --R
@@ -29842,7 +31063,7 @@ homogeneous? sigma
 --R                                                                Type: Boolean
 --E 52
 
---S 53 of 148
+--S 53 of 149
 homogeneous? (sigma+theta)
 --R 
 --R
@@ -29850,7 +31071,7 @@ homogeneous? (sigma+theta)
 --R                                                                Type: Boolean
 --E 53
 
---S 54 of 148
+--S 54 of 149
 retractable? sigma
 --R 
 --R
@@ -29858,7 +31079,7 @@ retractable? sigma
 --R                                                                Type: Boolean
 --E 54
 
---S 55 of 148
+--S 55 of 149
 retractable? (1::X)
 --R 
 --R
@@ -29866,7 +31087,7 @@ retractable? (1::X)
 --R                                                                Type: Boolean
 --E 55
 
---S 56 of 148
+--S 56 of 149
 [degree x for x in [sigma,theta,1::X]]
 --R 
 --R
@@ -29874,7 +31095,7 @@ retractable? (1::X)
 --R                                               Type: List(NonNegativeInteger)
 --E 56
 
---S 57 of 148
+--S 57 of 149
 R:=Expression(Integer)
 --R 
 --R
@@ -29882,19 +31103,19 @@ R:=Expression(Integer)
 --R                                                                 Type: Domain
 --E 57
 
---S 58 of 148
+--S 58 of 149
 T:R->R
 --R 
 --R                                                                   Type: Void
 --E 58
 
---S 59 of 148
+--S 59 of 149
 T(x)==x^2
 --R 
 --R                                                                   Type: Void
 --E 59
 
---S 60 of 148
+--S 60 of 149
 map(T,sigma)
 --R 
 --R   Compiling function T with type Expression(Integer) -> Expression(
@@ -29905,7 +31126,7 @@ map(T,sigma)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 60
 
---S 61 of 148
+--S 61 of 149
 exteriorDifferential sigma
 --R 
 --R
@@ -29918,7 +31139,7 @@ exteriorDifferential sigma
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 61
 
---S 62 of 148
+--S 62 of 149
 d theta
 --R 
 --R
@@ -29927,7 +31148,7 @@ d theta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 62
 
---S 63 of 148
+--S 63 of 149
 F:=operator 'F
 --R 
 --R
@@ -29935,7 +31156,7 @@ F:=operator 'F
 --R                                                          Type: BasicOperator
 --E 63
 
---S 64 of 148
+--S 64 of 149
 nullForm:=F(x,y,z)*(1::X)
 --R 
 --R
@@ -29943,7 +31164,7 @@ nullForm:=F(x,y,z)*(1::X)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 64
 
---S 65 of 148
+--S 65 of 149
 d nullForm
 --R 
 --R
@@ -29952,7 +31173,7 @@ d nullForm
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 65
 
---S 66 of 148
+--S 66 of 149
 totalDifferential(x^2+y^2+sin(x)*z^2)$X
 --R 
 --R
@@ -29961,7 +31182,7 @@ totalDifferential(x^2+y^2+sin(x)*z^2)$X
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 66
 
---S 67 of 148
+--S 67 of 149
 d(d sigma)
 --R 
 --R
@@ -29976,7 +31197,7 @@ d(d sigma)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 67
 
---S 68 of 148
+--S 68 of 149
 d(d theta)
 --R 
 --R
@@ -29984,7 +31205,7 @@ d(d theta)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 68
 
---S 69 of 148
+--S 69 of 149
 sigma*theta
 --R 
 --R
@@ -29992,7 +31213,7 @@ sigma*theta
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 69
 
---S 70 of 148
+--S 70 of 149
 dx*dy+dy*dx
 --R 
 --R
@@ -30000,7 +31221,7 @@ dx*dy+dy*dx
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 70
 
---S 71 of 148
+--S 71 of 149
 sigma+dz
 --R 
 --R
@@ -30008,7 +31229,7 @@ sigma+dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 71
 
---S 72 of 148
+--S 72 of 149
 theta-(2/3)*sigma+%pi*dx
 --R 
 --R
@@ -30021,7 +31242,7 @@ theta-(2/3)*sigma+%pi*dx
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 72
 
---S 73 of 148
+--S 73 of 149
 G:=diagonalMatrix([1,1,1])
 --R 
 --R
@@ -30033,7 +31254,7 @@ G:=diagonalMatrix([1,1,1])
 --R                                                        Type: Matrix(Integer)
 --E 73
 
---S 74 of 148
+--S 74 of 149
 dot(sigma,sigma,G)
 --R 
 --R
@@ -30042,7 +31263,7 @@ dot(sigma,sigma,G)
 --R                                                    Type: Expression(Integer)
 --E 74
 
---S 75 of 148
+--S 75 of 149
 hodgeStar(sigma,G)
 --R 
 --R
@@ -30050,7 +31271,7 @@ hodgeStar(sigma,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 75
 
---S 76 of 148
+--S 76 of 149
 A:=dot(sigma,sigma,G)*sqrt(abs(determinant(G)))
 --R 
 --R
@@ -30059,7 +31280,7 @@ A:=dot(sigma,sigma,G)*sqrt(abs(determinant(G)))
 --R                                                    Type: Expression(Integer)
 --E 76
 
---S 77 of 148
+--S 77 of 149
 B:=sigma*hodgeStar(sigma,G)
 --R 
 --R
@@ -30068,7 +31289,7 @@ B:=sigma*hodgeStar(sigma,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 77
 
---S 78 of 148
+--S 78 of 149
 test(A*dx*dy*dz=B)
 --R 
 --R
@@ -30076,7 +31297,7 @@ test(A*dx*dy*dz=B)
 --R                                                                Type: Boolean
 --E 78
 
---S 79 of 148
+--S 79 of 149
 hodgeStar(dx,G)
 --R 
 --R
@@ -30084,7 +31305,7 @@ hodgeStar(dx,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 79
 
---S 80 of 148
+--S 80 of 149
 hodgeStar(dy,G)
 --R 
 --R
@@ -30092,7 +31313,7 @@ hodgeStar(dy,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 80
 
---S 81 of 148
+--S 81 of 149
 d hodgeStar(d nullForm,G) --- = Laplace(F) ?
 --R 
 --R
@@ -30101,7 +31322,7 @@ d hodgeStar(d nullForm,G) --- = Laplace(F) ?
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 81
 
---S 82 of 148
+--S 82 of 149
 H:=diagonalMatrix([1+x^2,z^2+exp(-y^2),1/z^2])
 --R 
 --R
@@ -30119,7 +31340,7 @@ H:=diagonalMatrix([1+x^2,z^2+exp(-y^2),1/z^2])
 --R                                            Type: Matrix(Expression(Integer))
 --E 82
 
---S 83 of 148
+--S 83 of 149
 hodgeStar(dy,H)
 --R 
 --R
@@ -30137,7 +31358,7 @@ hodgeStar(dy,H)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 83
 
---S 84 of 148
+--S 84 of 149
 hodgeStar(sigma,H)
 --R 
 --R
@@ -30175,7 +31396,7 @@ hodgeStar(sigma,H)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 84
 
---S 85 of 148
+--S 85 of 149
 VolH:=sqrt(abs(determinant(H)))*dx*dy*dz
 --R 
 --R
@@ -30189,7 +31410,7 @@ VolH:=sqrt(abs(determinant(H)))*dx*dy*dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 85
 
---S 86 of 148
+--S 86 of 149
 AA:=dot(sigma,sigma,H)*VolH
 --R 
 --R
@@ -30217,7 +31438,7 @@ AA:=dot(sigma,sigma,H)*VolH
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 86
 
---S 87 of 148
+--S 87 of 149
 BB:=sigma*hodgeStar(sigma,H)
 --R 
 --R
@@ -30245,7 +31466,7 @@ BB:=sigma*hodgeStar(sigma,H)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 87
 
---S 88 of 148
+--S 88 of 149
 test(AA=BB)
 --R 
 --R
@@ -30253,7 +31474,7 @@ test(AA=BB)
 --R                                                                Type: Boolean
 --E 88
 
---S 89 of 148
+--S 89 of 149
 M:=DERHAM(Integer,[t,x,y,z])
 --R 
 --R
@@ -30261,7 +31482,7 @@ M:=DERHAM(Integer,[t,x,y,z])
 --R                                                                 Type: Domain
 --E 89
 
---S 90 of 148
+--S 90 of 149
 [dt,dx,dy,dz]:=[generator(i)$M for i in 1..4]
 --R 
 --R
@@ -30269,7 +31490,7 @@ M:=DERHAM(Integer,[t,x,y,z])
 --R                                 Type: List(DeRhamComplex(Integer,[t,x,y,z]))
 --E 90
 
---S 91 of 148
+--S 91 of 149
 L:=diagonalMatrix([1,-1,-1,-1])
 --R 
 --R
@@ -30283,7 +31504,7 @@ L:=diagonalMatrix([1,-1,-1,-1])
 --R                                                        Type: Matrix(Integer)
 --E 91
 
---S 92 of 148
+--S 92 of 149
 hodgeStar(dt,L)
 --R 
 --R
@@ -30291,7 +31512,7 @@ hodgeStar(dt,L)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 92
 
---S 93 of 148
+--S 93 of 149
 hodgeStar(dx,L)
 --R 
 --R
@@ -30299,7 +31520,7 @@ hodgeStar(dx,L)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 93
 
---S 94 of 148
+--S 94 of 149
 hodgeStar(dy,L)
 --R 
 --R
@@ -30307,7 +31528,7 @@ hodgeStar(dy,L)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 94
 
---S 95 of 148
+--S 95 of 149
 hodgeStar(dz,L)
 --R 
 --R
@@ -30315,7 +31536,7 @@ hodgeStar(dz,L)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 95
 
---S 96 of 148
+--S 96 of 149
 hodgeStar(dt*dz,L)
 --R 
 --R
@@ -30323,7 +31544,7 @@ hodgeStar(dt*dz,L)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 96
 
---S 97 of 148
+--S 97 of 149
 P:=a(t,x,y,z)*(dx+dy+dz-dt)
 --R 
 --R
@@ -30331,7 +31552,7 @@ P:=a(t,x,y,z)*(dx+dy+dz-dt)
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 97
 
---S 98 of 148
+--S 98 of 149
 dot(P,P,L)
 --R 
 --R
@@ -30340,7 +31561,7 @@ dot(P,P,L)
 --R                                                    Type: Expression(Integer)
 --E 98
 
---S 99 of 148
+--S 99 of 149
 P*P
 --R 
 --R
@@ -30348,7 +31569,7 @@ P*P
 --R                                       Type: DeRhamComplex(Integer,[t,x,y,z])
 --E 99
 
---S 100 of 148
+--S 100 of 149
 d P
 --R 
 --R
@@ -30366,7 +31587,7 @@ d P
 
 )clear all
 
---S 101 of 148
+--S 101 of 149
 coefRing := Integer
 --R 
 --R
@@ -30374,7 +31595,7 @@ coefRing := Integer
 --R                                                                 Type: Domain
 --E 101
 
---S 102 of 148
+--S 102 of 149
 R3 : List Symbol := [x,y,z]
 --R 
 --R
@@ -30382,7 +31603,7 @@ R3 : List Symbol := [x,y,z]
 --R                                                           Type: List(Symbol)
 --E 102
 
---S 103 of 148 
+--S 103 of 149 
 X := DERHAM(coefRing,R3)
 --R 
 --R
@@ -30390,7 +31611,7 @@ X := DERHAM(coefRing,R3)
 --R                                                                 Type: Domain
 --E 103
 
---S 104 of 148
+--S 104 of 149
 [dx,dy,dz] := [generator(i)$X for i in 1..3]
 --R 
 --R
@@ -30398,7 +31619,7 @@ X := DERHAM(coefRing,R3)
 --R                                   Type: List(DeRhamComplex(Integer,[x,y,z]))
 --E 104
 
---S 105 of 148
+--S 105 of 149
 f : BOP := operator('f)
 --R 
 --R
@@ -30406,7 +31627,7 @@ f : BOP := operator('f)
 --R                                                          Type: BasicOperator
 --E 105
 
---S 106 of 148
+--S 106 of 149
 g : BOP := operator('g)
 --R 
 --R
@@ -30414,7 +31635,7 @@ g : BOP := operator('g)
 --R                                                          Type: BasicOperator
 --E 106
 
---S 107 of 148
+--S 107 of 149
 h : BOP := operator('h)
 --R 
 --R
@@ -30422,7 +31643,7 @@ h : BOP := operator('h)
 --R                                                          Type: BasicOperator
 --E 107
 
---S 108 of 148
+--S 108 of 149
 a : BOP := operator('a)
 --R 
 --R
@@ -30430,7 +31651,7 @@ a : BOP := operator('a)
 --R                                                          Type: BasicOperator
 --E 108
 
---S 109 of 148
+--S 109 of 149
 b : BOP := operator('b)
 --R 
 --R
@@ -30438,7 +31659,7 @@ b : BOP := operator('b)
 --R                                                          Type: BasicOperator
 --E 109
 
---S 110 of 148
+--S 110 of 149
 c : BOP := operator('c)
 --R 
 --R
@@ -30446,7 +31667,7 @@ c : BOP := operator('c)
 --R                                                          Type: BasicOperator
 --E 110
 
---S 111 of 148
+--S 111 of 149
 U : BOP := operator('U)
 --R 
 --R
@@ -30454,7 +31675,7 @@ U : BOP := operator('U)
 --R                                                          Type: BasicOperator
 --E 111
 
---S 112 of 148
+--S 112 of 149
 V : BOP := operator('V)
 --R 
 --R
@@ -30462,7 +31683,7 @@ V : BOP := operator('V)
 --R                                                          Type: BasicOperator
 --E 112
 
---S 113 of 148
+--S 113 of 149
 W : BOP := operator('W)
 --R 
 --R
@@ -30470,7 +31691,7 @@ W : BOP := operator('W)
 --R                                                          Type: BasicOperator
 --E 113
 
---S 114 of 148
+--S 114 of 149
 v := vector[U(x,y,z),V(x,y,z),W(x,y,z)]
 --R 
 --R
@@ -30478,7 +31699,7 @@ v := vector[U(x,y,z),V(x,y,z),W(x,y,z)]
 --R                                            Type: Vector(Expression(Integer))
 --E 114
 
---S 115 of 148
+--S 115 of 149
 sigma := f(x,y,z) * dx + g(x,y,z) * dy + h(x,y,z) * dz
 --R 
 --R
@@ -30486,7 +31707,7 @@ sigma := f(x,y,z) * dx + g(x,y,z) * dy + h(x,y,z) * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 115
 
---S 116 of 148
+--S 116 of 149
 theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz
 --R 
 --R
@@ -30494,13 +31715,13 @@ theta := a(x,y,z) * dx * dy + b(x,y,z) * dx * dz + c(x,y,z) * dy * dz
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 116
 
---S 117 of 148
+--S 117 of 149
 d ==> exteriorDifferential
 --R 
 --R                                                                   Type: Void
 --E 117
 
---S 118 of 148
+--S 118 of 149
 G := diagonalMatrix([1,1,1])
 --R 
 --R
@@ -30512,7 +31733,7 @@ G := diagonalMatrix([1,1,1])
 --R                                                        Type: Matrix(Integer)
 --E 118
 
---S 119 of 148
+--S 119 of 149
 interiorProduct(v,sigma,G)
 --R 
 --R
@@ -30520,7 +31741,7 @@ interiorProduct(v,sigma,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 119
 
---S 120 of 148
+--S 120 of 149
 interiorProduct(v,theta,G)
 --R 
 --R
@@ -30533,7 +31754,7 @@ interiorProduct(v,theta,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 120
 
---S 121 of 148
+--S 121 of 149
 t1 := d interiorProduct(v,dz*dy*dz,G)
 --R 
 --R
@@ -30541,7 +31762,7 @@ t1 := d interiorProduct(v,dz*dy*dz,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 121
 
---S 122 of 148
+--S 122 of 149
 hodgeStar(t1,G) -- should be div(v)
 --R 
 --R
@@ -30549,7 +31770,7 @@ hodgeStar(t1,G) -- should be div(v)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 122
 
---S 123 of 148
+--S 123 of 149
 eta := lieDerivative(v,theta,G)
 --R 
 --R
@@ -30595,7 +31816,7 @@ eta := lieDerivative(v,theta,G)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 123
 
---S 124 of 148
+--S 124 of 149
 proj(dx+dy*dz+dx*dy*dz,2)
 --R 
 --R
@@ -30603,7 +31824,7 @@ proj(dx+dy*dz+dx*dy*dz,2)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 124
 
---S 125 of 148
+--S 125 of 149
 proj(sigma+theta,1)
 --R 
 --R
@@ -30611,7 +31832,7 @@ proj(sigma+theta,1)
 --R                                         Type: DeRhamComplex(Integer,[x,y,z])
 --E 125
 
---S 126 of 148
+--S 126 of 149
 dim(sigma)
 --R 
 --R
@@ -30619,7 +31840,7 @@ dim(sigma)
 --R                                                        Type: PositiveInteger
 --E 126
 
---S 127 of 148
+--S 127 of 149
 degree(sigma)
 --R 
 --R
@@ -30630,7 +31851,7 @@ degree(sigma)
 -- Laplace Operator for $S^2:\delta F := \star d \star dF$
 )clear all
 
---S 128 of 148
+--S 128 of 149
 coefRing := Integer
 --R 
 --R
@@ -30638,7 +31859,7 @@ coefRing := Integer
 --R                                                                 Type: Domain
 --E 128
 
---S 129 of 148
+--S 129 of 149
 S2 : List Symbol := [r,theta]
 --R 
 --R
@@ -30646,7 +31867,7 @@ S2 : List Symbol := [r,theta]
 --R                                                           Type: List(Symbol)
 --E 129
 
---S 130 of 148
+--S 130 of 149
 Y := DERHAM(coefRing,S2)
 --R 
 --R
@@ -30654,7 +31875,7 @@ Y := DERHAM(coefRing,S2)
 --R                                                                 Type: Domain
 --E 130
 
---S 131 of 148
+--S 131 of 149
 g := diagonalMatrix([1,r^2])
 --R 
 --R
@@ -30665,7 +31886,7 @@ g := diagonalMatrix([1,r^2])
 --R                                            Type: Matrix(Polynomial(Integer))
 --E 131
 
---S 132 of 148
+--S 132 of 149
 F := operator 'F
 --R 
 --R
@@ -30673,13 +31894,13 @@ F := operator 'F
 --R                                                          Type: BasicOperator
 --E 132
 
---S 133 of 148
+--S 133 of 149
 d ==> exteriorDifferential
 --R 
 --R                                                                   Type: Void
 --E 133
 
---S 134 of 148
+--S 134 of 149
 [dr,dtheta] := [generator(i)$Y for i in 1..2]
 --R 
 --R
@@ -30687,7 +31908,7 @@ d ==> exteriorDifferential
 --R                                 Type: List(DeRhamComplex(Integer,[r,theta]))
 --E 134
 
---S 135 of 148
+--S 135 of 149
 F0 := F(r,theta)*1::Y
 --R 
 --R
@@ -30695,7 +31916,7 @@ F0 := F(r,theta)*1::Y
 --R                                       Type: DeRhamComplex(Integer,[r,theta])
 --E 135
 
---S 136 of 148
+--S 136 of 149
 F1 := d F0
 --R 
 --R
@@ -30704,7 +31925,7 @@ F1 := d F0
 --R                                       Type: DeRhamComplex(Integer,[r,theta])
 --E 136
 
---S 137 of 148
+--S 137 of 149
 F2 := hodgeStar(F1,g)
 --R 
 --R
@@ -30718,7 +31939,7 @@ F2 := hodgeStar(F1,g)
 --R                                       Type: DeRhamComplex(Integer,[r,theta])
 --E 137
 
---S 138 of 148
+--S 138 of 149
 F3 := d F2
 --R 
 --R
@@ -30735,7 +31956,7 @@ F3 := d F2
 --R                                       Type: DeRhamComplex(Integer,[r,theta])
 --E 138
 
---S 139 of 148
+--S 139 of 149
 LaplaceF := hodgeStar(F3,g)
 --R 
 --R
@@ -30749,7 +31970,7 @@ LaplaceF := hodgeStar(F3,g)
 --R                                       Type: DeRhamComplex(Integer,[r,theta])
 --E 139
 
---S 140 of 148
+--S 140 of 149
 LapF := LaplaceF::Expression(Integer)
 --R 
 --R
@@ -30763,7 +31984,7 @@ LapF := LaplaceF::Expression(Integer)
 --R                                                    Type: Expression(Integer)
 --E 140
 
---S 141 of 148
+--S 141 of 149
 subst(LapF,abs(r^2)=r^2)
 --R 
 --R
@@ -30778,7 +31999,7 @@ subst(LapF,abs(r^2)=r^2)
 
 -- Internal representation
 
---S 142 of 148
+--S 142 of 149
 R := Expression(Integer)
 --R 
 --R
@@ -30786,7 +32007,7 @@ R := Expression(Integer)
 --R                                                                 Type: Domain
 --E 142
 
---S 143 of 148
+--S 143 of 149
 Y := DERHAM(coefRing,S2)
 --R 
 --R
@@ -30794,19 +32015,19 @@ Y := DERHAM(coefRing,S2)
 --R                                                                 Type: Domain
 --E 143
 
---S 144 of 148
+--S 144 of 149
 terms : Y -> List Record(k : EAB, c : R)
 --R 
 --R                                                                   Type: Void
 --E 144
 
---S 145 of 148
+--S 145 of 149
 terms(a) == a pretend List Record(k : EAB, c : R)
 --R 
 --R                                                                   Type: Void
 --E 145
 
---S 146 of 148
+--S 146 of 149
 terms(dr)
 --R 
 --R   Compiling function terms with type DeRhamComplex(Integer,[r,theta])
@@ -30816,7 +32037,7 @@ terms(dr)
 --R                    Type: List(Record(k: ExtAlgBasis,c: Expression(Integer)))
 --E 146
 
---S 147 of 148
+--S 147 of 149
 terms(dtheta)
 --R 
 --R
@@ -30824,7 +32045,7 @@ terms(dtheta)
 --R                    Type: List(Record(k: ExtAlgBasis,c: Expression(Integer)))
 --E 147
 
---S 148 of 148
+--S 148 of 149
 terms(F1)
 --R 
 --R
@@ -30833,6 +32054,46 @@ terms(F1)
 --R                    Type: List(Record(k: ExtAlgBasis,c: Expression(Integer)))
 --E 148
 
+--S 149 of 149
+)show DeRhamComplex
+--R 
+--R DeRhamComplex(CoefRing: Join(Ring,OrderedSet),listIndVar: List(Symbol))  is a domain constructor
+--R Abbreviation for DeRhamComplex is DERHAM 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for DERHAM 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : Expression(CoefRing) -> %    coerce : Integer -> %
+--R coerce : % -> OutputForm              degree : % -> NonNegativeInteger
+--R dim : % -> NonNegativeInteger         exteriorDifferential : % -> %
+--R generator : NonNegativeInteger -> %   hash : % -> SingleInteger
+--R homogeneous? : % -> Boolean           latex : % -> String
+--R leadingBasisTerm : % -> %             one? : % -> Boolean
+--R proj : (%,NonNegativeInteger) -> %    recip : % -> Union(%,"failed")
+--R reductum : % -> %                     retract : % -> Expression(CoefRing)
+--R retractable? : % -> Boolean           sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?*? : (Expression(CoefRing),%) -> %
+--R characteristic : () -> NonNegativeInteger
+--R coefficient : (%,%) -> Expression(CoefRing)
+--R dot : (%,%,SquareMatrix(#(listIndVar),Expression(CoefRing))) -> Expression(CoefRing)
+--R hodgeStar : (%,SquareMatrix(#(listIndVar),Expression(CoefRing))) -> %
+--R interiorProduct : (Vector(Expression(CoefRing)),%,SquareMatrix(#(listIndVar),Expression(CoefRing))) -> %
+--R leadingCoefficient : % -> Expression(CoefRing)
+--R lieDerivative : (Vector(Expression(CoefRing)),%,SquareMatrix(#(listIndVar),Expression(CoefRing))) -> %
+--R map : ((Expression(CoefRing) -> Expression(CoefRing)),%) -> %
+--R retractIfCan : % -> Union(Expression(CoefRing),"failed")
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R totalDifferential : Expression(CoefRing) -> %
+--R
+--E 149
 
 )spool
 )lisp (bye)
@@ -32988,11 +34249,11 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
 --R empty? : % -> Boolean                 encode : % -> String
 --R eq? : (%,%) -> Boolean                fullOut : % -> OutputForm
 --R fullOutput : () -> Boolean            fullOutput : Boolean -> Boolean
---R leaf? : % -> Boolean                  leaves : % -> List(S)
---R map : ((S -> S),%) -> %               nodes : % -> List(%)
---R sample : () -> %                      tree : List(S) -> %
---R tree : S -> %                         tree : (S,List(%)) -> %
---R value : % -> S                       
+--R latex : % -> String if S has SETCAT   leaf? : % -> Boolean
+--R leaves : % -> List(S)                 map : ((S -> S),%) -> %
+--R nodes : % -> List(%)                  sample : () -> %
+--R tree : List(S) -> %                   tree : S -> %
+--R tree : (S,List(%)) -> %               value : % -> S
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -33006,7 +34267,6 @@ DeRhamComplex(CoefRing,listIndVar:List Symbol): Export == Implement where
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -33185,27 +34445,36 @@ DesingTree(S: SetCategory): T==C where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                D : (%,(R -> R)) -> %
+--R D : % -> % if R has DIFRING           D : (%,V,NonNegativeInteger) -> %
 --R D : (%,List(V)) -> %                  D : (%,V) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coefficients : % -> List(R)
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coefficients : % -> List(R)           coerce : % -> % if R has INTDOM
 --R coerce : S -> %                       coerce : V -> %
 --R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              degree : % -> IndexedExponents(V)
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
+--R degree : % -> IndexedExponents(V)     differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,List(V)) -> %      differentiate : (%,V) -> %
 --R eval : (%,List(V),List(%)) -> %       eval : (%,V,%) -> %
 --R eval : (%,List(V),List(R)) -> %       eval : (%,V,R) -> %
---R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(%),List(%)) -> %       eval : (%,%,%) -> %
+--R eval : (%,Equation(%)) -> %           eval : (%,List(Equation(%))) -> %
+--R gcd : (%,%) -> % if R has GCDDOM      gcd : List(%) -> % if R has GCDDOM
 --R ground : % -> R                       ground? : % -> Boolean
 --R hash : % -> SingleInteger             initial : % -> %
 --R isobaric? : % -> Boolean              latex : % -> String
+--R lcm : (%,%) -> % if R has GCDDOM      lcm : List(%) -> % if R has GCDDOM
 --R leader : % -> V                       leadingCoefficient : % -> R
 --R leadingMonomial : % -> %              map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
 --R monomial? : % -> Boolean              monomials : % -> List(%)
 --R one? : % -> Boolean                   order : % -> NonNegativeInteger
+--R order : (%,S) -> NonNegativeInteger   primitiveMonomials : % -> List(%)
 --R recip : % -> Union(%,"failed")        reductum : % -> %
 --R retract : % -> S                      retract : % -> V
 --R retract : % -> R                      sample : () -> %
@@ -33214,9 +34483,6 @@ DesingTree(S: SetCategory): T==C where
 --R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?>? : (%,%) -> Boolean if R has ORDSET
@@ -33228,8 +34494,6 @@ DesingTree(S: SetCategory): T==C where
 --R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if R has DIFRING
 --R D : (%,List(V),List(NonNegativeInteger)) -> %
---R D : (%,V,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if R has INTDOM
 --R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
 --R characteristic : () -> NonNegativeInteger
@@ -33237,12 +34501,10 @@ DesingTree(S: SetCategory): T==C where
 --R coefficient : (%,List(V),List(NonNegativeInteger)) -> %
 --R coefficient : (%,V,NonNegativeInteger) -> %
 --R coefficient : (%,IndexedExponents(V)) -> R
---R coerce : % -> % if R has INTDOM
 --R coerce : Fraction(Integer) -> % if R has ALGEBRA(FRAC(INT)) or R has RETRACT(FRAC(INT))
 --R coerce : SparseMultivariatePolynomial(R,S) -> %
 --R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and R has PFECAT
 --R content : (%,V) -> % if R has GCDDOM
---R content : % -> R if R has GCDDOM
 --R convert : % -> InputForm if R has KONVERT(INFORM) and V has KONVERT(INFORM)
 --R convert : % -> Pattern(Integer) if R has KONVERT(PATTERN(INT)) and V has KONVERT(PATTERN(INT))
 --R convert : % -> Pattern(Float) if R has KONVERT(PATTERN(FLOAT)) and V has KONVERT(PATTERN(FLOAT))
@@ -33250,7 +34512,6 @@ DesingTree(S: SetCategory): T==C where
 --R degree : (%,List(V)) -> List(NonNegativeInteger)
 --R degree : (%,V) -> NonNegativeInteger
 --R differentialVariables : % -> List(S)
---R differentiate : (%,(R -> R)) -> %
 --R differentiate : (%,(R -> R),NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
 --R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
@@ -33265,28 +34526,20 @@ DesingTree(S: SetCategory): T==C where
 --R eval : (%,S,R) -> % if R has DIFRING
 --R eval : (%,List(S),List(%)) -> % if R has DIFRING
 --R eval : (%,S,%) -> % if R has DIFRING
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R factor : % -> Factored(%) if R has PFECAT
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
---R gcd : (%,%) -> % if R has GCDDOM
---R gcd : List(%) -> % if R has GCDDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
 --R isExpt : % -> Union(Record(var: V,exponent: NonNegativeInteger),"failed")
 --R isPlus : % -> Union(List(%),"failed")
 --R isTimes : % -> Union(List(%),"failed")
---R lcm : (%,%) -> % if R has GCDDOM
---R lcm : List(%) -> % if R has GCDDOM
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(V,"failed")
 --R makeVariable : % -> (NonNegativeInteger -> %) if R has DIFRING
 --R makeVariable : S -> (NonNegativeInteger -> %)
 --R mapExponents : ((IndexedExponents(V) -> IndexedExponents(V)),%) -> %
---R max : (%,%) -> % if R has ORDSET
---R min : (%,%) -> % if R has ORDSET
 --R minimumDegree : (%,List(V)) -> List(NonNegativeInteger)
 --R minimumDegree : (%,V) -> NonNegativeInteger
 --R minimumDegree : % -> IndexedExponents(V)
@@ -33297,12 +34550,10 @@ DesingTree(S: SetCategory): T==C where
 --R multivariate : (SparseUnivariatePolynomial(%),V) -> %
 --R multivariate : (SparseUnivariatePolynomial(R),V) -> %
 --R numberOfMonomials : % -> NonNegativeInteger
---R order : (%,S) -> NonNegativeInteger
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if R has PATMAB(INT) and V has PATMAB(INT)
 --R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if R has PATMAB(FLOAT) and V has PATMAB(FLOAT)
 --R pomopo! : (%,R,IndexedExponents(V),%) -> %
 --R prime? : % -> Boolean if R has PFECAT
---R primitiveMonomials : % -> List(%)
 --R primitivePart : (%,V) -> % if R has GCDDOM
 --R primitivePart : % -> % if R has GCDDOM
 --R reducedSystem : Matrix(%) -> Matrix(R)
@@ -33516,33 +34767,35 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 
 --S 1 of 1
 )show DirectProduct
+--R 
 --R DirectProduct(dim: NonNegativeInteger,R: Type)  is a domain constructor
 --R Abbreviation for DirectProduct is DIRPROD 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for DIRPROD 
 --R
 --R------------------------------- Operations --------------------------------
---R -? : % -> % if R has RING             1 : () -> % if R has MONOID
---R 0 : () -> % if R has CABMON           coerce : % -> Vector(R)
+--R ?*? : (R,%) -> % if R has MONOID      ?*? : (%,R) -> % if R has MONOID
+--R ?*? : (%,%) -> % if R has MONOID      ?+? : (%,%) -> % if R has ABELSG
+--R -? : % -> % if R has RING             ?-? : (%,%) -> % if R has RING
+--R ?/? : (%,R) -> % if R has FIELD       1 : () -> % if R has MONOID
+--R 0 : () -> % if R has CABMON           abs : % -> % if R has ORDRING
+--R coerce : R -> % if R has SETCAT       coerce : % -> Vector(R)
 --R copy : % -> %                         directProduct : Vector(R) -> %
---R ?.? : (%,Integer) -> R                elt : (%,Integer,R) -> R
---R empty : () -> %                       empty? : % -> Boolean
---R entries : % -> List(R)                eq? : (%,%) -> Boolean
---R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R map : ((R -> R),%) -> %               qelt : (%,Integer) -> R
---R sample : () -> %                     
+--R dot : (%,%) -> R if R has RING        ?.? : (%,Integer) -> R
+--R elt : (%,Integer,R) -> R              empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(R)
+--R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
+--R indices : % -> List(Integer)          latex : % -> String if R has SETCAT
+--R map : ((R -> R),%) -> %               one? : % -> Boolean if R has MONOID
+--R qelt : (%,Integer) -> R               random : () -> % if R has FINITE
+--R retract : % -> R if R has SETCAT      sample : () -> %
+--R sup : (%,%) -> % if R has OAMONS     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (PositiveInteger,%) -> % if R has ABELSG
 --R ?*? : (NonNegativeInteger,%) -> % if R has CABMON
---R ?*? : (R,%) -> % if R has MONOID
---R ?*? : (%,R) -> % if R has MONOID
---R ?*? : (%,%) -> % if R has MONOID
 --R ?*? : (Integer,%) -> % if R has RING
 --R ?**? : (%,PositiveInteger) -> % if R has MONOID
 --R ?**? : (%,NonNegativeInteger) -> % if R has MONOID
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has RING
---R ?/? : (%,R) -> % if R has FIELD
 --R ?<? : (%,%) -> Boolean if R has OAMONS or R has ORDRING
 --R ?<=? : (%,%) -> Boolean if R has OAMONS or R has ORDRING
 --R ?=? : (%,%) -> Boolean if R has SETCAT
@@ -33558,10 +34811,8 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --R D : % -> % if R has DIFRING and R has RING
 --R ?^? : (%,PositiveInteger) -> % if R has MONOID
 --R ?^? : (%,NonNegativeInteger) -> % if R has MONOID
---R abs : % -> % if R has ORDRING
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger if R has RING
---R coerce : R -> % if R has SETCAT
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT)) and R has SETCAT
 --R coerce : Integer -> % if R has RETRACT(INT) and R has SETCAT or R has RING
 --R coerce : % -> OutputForm if R has SETCAT
@@ -33576,7 +34827,6 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --R differentiate : (%,NonNegativeInteger) -> % if R has DIFRING and R has RING
 --R differentiate : % -> % if R has DIFRING and R has RING
 --R dimension : () -> CardinalNumber if R has FIELD
---R dot : (%,%) -> R if R has RING
 --R entry? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R enumerate : () -> List(%) if R has FINITE
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -33588,7 +34838,6 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --R first : % -> R if Integer has ORDSET
 --R hash : % -> SingleInteger if R has SETCAT
 --R index : PositiveInteger -> % if R has FINITE
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R lookup : % -> PositiveInteger if R has FINITE
 --R map! : ((R -> R),%) -> % if $ has shallowlyMutable
@@ -33600,17 +34849,14 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R negative? : % -> Boolean if R has ORDRING
---R one? : % -> Boolean if R has MONOID
 --R parts : % -> List(R) if $ has finiteAggregate
 --R positive? : % -> Boolean if R has ORDRING
 --R qsetelt! : (%,Integer,R) -> R if $ has shallowlyMutable
---R random : () -> % if R has FINITE
 --R recip : % -> Union(%,"failed") if R has MONOID
 --R reducedSystem : Matrix(%) -> Matrix(R) if R has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R)) if R has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT) and R has RING
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT) and R has RING
---R retract : % -> R if R has SETCAT
 --R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT)) and R has SETCAT
 --R retract : % -> Integer if R has RETRACT(INT) and R has SETCAT
 --R retractIfCan : % -> Union(R,"failed") if R has SETCAT
@@ -33621,7 +34867,6 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --R size : () -> NonNegativeInteger if R has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed") if R has CABMON
---R sup : (%,%) -> % if R has OAMONS
 --R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
 --R unitVector : PositiveInteger -> % if R has RING
 --R zero? : % -> Boolean if R has CABMON
@@ -33846,34 +35091,36 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 
 --S 1 of 1
 )show DirectProductMatrixModule
+--R 
 --R DirectProductMatrixModule(n: PositiveInteger,R: Ring,M: SquareMatrixCategory(n,R,DirectProduct(n,R),DirectProduct(n,R)),S: LeftModule(R))  is a domain constructor
 --R Abbreviation for DirectProductMatrixModule is DPMM 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for DPMM 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (S,%) -> % if S has MONOID      ?*? : (%,S) -> % if S has MONOID
 --R ?*? : (M,%) -> %                      ?*? : (PositiveInteger,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (R,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (Integer,%) -> %
+--R ?*? : (R,%) -> %                      ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R ?/? : (%,S) -> % if S has FIELD       ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           abs : % -> % if S has ORDRING
+--R coerce : S -> % if S has SETCAT       coerce : % -> OutputForm
 --R coerce : % -> Vector(S)               copy : % -> %
---R directProduct : Vector(S) -> %        ?.? : (%,Integer) -> S
---R elt : (%,Integer,S) -> S              empty : () -> %
---R empty? : % -> Boolean                 entries : % -> List(S)
---R eq? : (%,%) -> Boolean                hash : % -> SingleInteger
---R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R latex : % -> String                   map : ((S -> S),%) -> %
---R qelt : (%,Integer) -> S               sample : () -> %
+--R directProduct : Vector(S) -> %        dot : (%,%) -> S if S has RING
+--R ?.? : (%,Integer) -> S                elt : (%,Integer,S) -> S
+--R empty : () -> %                       empty? : % -> Boolean
+--R entries : % -> List(S)                eq? : (%,%) -> Boolean
+--R hash : % -> SingleInteger             index? : (Integer,%) -> Boolean
+--R indices : % -> List(Integer)          latex : % -> String
+--R map : ((S -> S),%) -> %               qelt : (%,Integer) -> S
+--R random : () -> % if S has FINITE      retract : % -> S if S has SETCAT
+--R sample : () -> %                      sup : (%,%) -> % if S has OAMONS
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (%,%) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R ?*? : (S,%) -> % if S has MONOID
---R ?*? : (%,S) -> % if S has MONOID
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,PositiveInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?**? : (%,NonNegativeInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R ?/? : (%,S) -> % if S has FIELD
 --R ?<? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?<=? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?>? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
@@ -33889,12 +35136,10 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --R 1 : () -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?^? : (%,PositiveInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?^? : (%,NonNegativeInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R abs : % -> % if S has ORDRING
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger if S has RING
 --R coerce : Fraction(Integer) -> % if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R coerce : Integer -> % if S has RETRACT(INT) and S has SETCAT or S has RING
---R coerce : S -> % if S has SETCAT
 --R count : (S,%) -> NonNegativeInteger if $ has finiteAggregate and S has SETCAT
 --R count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
 --R differentiate : % -> % if S has DIFRING and S has RING
@@ -33906,7 +35151,6 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --R differentiate : (%,(S -> S)) -> % if S has RING
 --R differentiate : (%,(S -> S),NonNegativeInteger) -> % if S has RING
 --R dimension : () -> CardinalNumber if S has FIELD
---R dot : (%,%) -> S if S has RING
 --R entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R enumerate : () -> List(%) if S has FINITE
 --R eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
@@ -33932,7 +35176,6 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --R parts : % -> List(S) if $ has finiteAggregate
 --R positive? : % -> Boolean if S has ORDRING
 --R qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
---R random : () -> % if S has FINITE
 --R recip : % -> Union(%,"failed") if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if S has LINEXP(INT) and S has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if S has LINEXP(INT) and S has RING
@@ -33940,7 +35183,6 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(S),vec: Vector(S)) if S has RING
 --R retract : % -> Fraction(Integer) if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R retract : % -> Integer if S has RETRACT(INT) and S has SETCAT
---R retract : % -> S if S has SETCAT
 --R retractIfCan : % -> Union(Fraction(Integer),"failed") if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R retractIfCan : % -> Union(Integer,"failed") if S has RETRACT(INT) and S has SETCAT
 --R retractIfCan : % -> Union(S,"failed") if S has SETCAT
@@ -33949,7 +35191,6 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --R size : () -> NonNegativeInteger if S has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
---R sup : (%,%) -> % if S has OAMONS
 --R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
 --R unitVector : PositiveInteger -> % if S has RING
 --R
@@ -34101,34 +35342,36 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 
 --S 1 of 1
 )show DirectProductModule
+--R 
 --R DirectProductModule(n: NonNegativeInteger,R: Ring,S: LeftModule(R))  is a domain constructor
 --R Abbreviation for DirectProductModule is DPMO 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for DPMO 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?*? : (Integer,%) -> %
---R ?*? : (R,%) -> %                      ?+? : (%,%) -> %
---R -? : % -> %                           ?-? : (%,%) -> %
+--R ?*? : (S,%) -> % if S has MONOID      ?*? : (%,S) -> % if S has MONOID
+--R ?*? : (PositiveInteger,%) -> %        ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (R,%) -> %
+--R ?+? : (%,%) -> %                      -? : % -> %
+--R ?-? : (%,%) -> %                      ?/? : (%,S) -> % if S has FIELD
 --R ?=? : (%,%) -> Boolean                0 : () -> %
+--R abs : % -> % if S has ORDRING         coerce : S -> % if S has SETCAT
 --R coerce : % -> OutputForm              coerce : % -> Vector(S)
 --R copy : % -> %                         directProduct : Vector(S) -> %
---R ?.? : (%,Integer) -> S                elt : (%,Integer,S) -> S
---R empty : () -> %                       empty? : % -> Boolean
---R entries : % -> List(S)                eq? : (%,%) -> Boolean
---R hash : % -> SingleInteger             index? : (Integer,%) -> Boolean
---R indices : % -> List(Integer)          latex : % -> String
---R map : ((S -> S),%) -> %               qelt : (%,Integer) -> S
---R sample : () -> %                      zero? : % -> Boolean
+--R dot : (%,%) -> S if S has RING        ?.? : (%,Integer) -> S
+--R elt : (%,Integer,S) -> S              empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(S)
+--R eq? : (%,%) -> Boolean                hash : % -> SingleInteger
+--R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
+--R latex : % -> String                   map : ((S -> S),%) -> %
+--R qelt : (%,Integer) -> S               random : () -> % if S has FINITE
+--R retract : % -> S if S has SETCAT      sample : () -> %
+--R sup : (%,%) -> % if S has OAMONS      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (%,%) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R ?*? : (S,%) -> % if S has MONOID
---R ?*? : (%,S) -> % if S has MONOID
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,PositiveInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?**? : (%,NonNegativeInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R ?/? : (%,S) -> % if S has FIELD
 --R ?<? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?<=? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?>? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
@@ -34144,12 +35387,10 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --R 1 : () -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?^? : (%,PositiveInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R ?^? : (%,NonNegativeInteger) -> % if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
---R abs : % -> % if S has ORDRING
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger if S has RING
 --R coerce : Fraction(Integer) -> % if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R coerce : Integer -> % if S has RETRACT(INT) and S has SETCAT or S has RING
---R coerce : S -> % if S has SETCAT
 --R count : (S,%) -> NonNegativeInteger if $ has finiteAggregate and S has SETCAT
 --R count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
 --R differentiate : % -> % if S has DIFRING and S has RING
@@ -34161,7 +35402,6 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --R differentiate : (%,(S -> S)) -> % if S has RING
 --R differentiate : (%,(S -> S),NonNegativeInteger) -> % if S has RING
 --R dimension : () -> CardinalNumber if S has FIELD
---R dot : (%,%) -> S if S has RING
 --R entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R enumerate : () -> List(%) if S has FINITE
 --R eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
@@ -34187,7 +35427,6 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --R parts : % -> List(S) if $ has finiteAggregate
 --R positive? : % -> Boolean if S has ORDRING
 --R qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
---R random : () -> % if S has FINITE
 --R recip : % -> Union(%,"failed") if S has DIFRING and S has RING or S has LINEXP(INT) and S has RING or S has MONOID or S has PDRING(SYMBOL) and S has RING
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if S has LINEXP(INT) and S has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if S has LINEXP(INT) and S has RING
@@ -34195,7 +35434,6 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(S),vec: Vector(S)) if S has RING
 --R retract : % -> Fraction(Integer) if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R retract : % -> Integer if S has RETRACT(INT) and S has SETCAT
---R retract : % -> S if S has SETCAT
 --R retractIfCan : % -> Union(Fraction(Integer),"failed") if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R retractIfCan : % -> Union(Integer,"failed") if S has RETRACT(INT) and S has SETCAT
 --R retractIfCan : % -> Union(S,"failed") if S has SETCAT
@@ -34204,7 +35442,6 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --R size : () -> NonNegativeInteger if S has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed")
---R sup : (%,%) -> % if S has OAMONS
 --R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
 --R unitVector : PositiveInteger -> % if S has RING
 --R
@@ -34542,22 +35779,21 @@ reduce(_and,[(x = y)@Boolean for x in t9 for y in t10])
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : % -> Stream(Coef)
---R coerce : Stream(Coef) -> %            coerce : Integer -> %
---R coerce : % -> OutputForm              ?.? : (%,PositiveInteger) -> Coef
---R hash : % -> SingleInteger             latex : % -> String
---R one? : % -> Boolean                   recip : % -> Union(%,"failed")
---R sample : () -> %                      zero? : % -> Boolean
---R zeta : () -> %                        ?~=? : (%,%) -> Boolean
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : % -> Stream(Coef)            coerce : Stream(Coef) -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R ?.? : (%,PositiveInteger) -> Coef     hash : % -> SingleInteger
+--R latex : % -> String                   one? : % -> Boolean
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R zero? : % -> Boolean                  zeta : () -> %
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Coef) -> % if Coef has COMRING
 --R ?*? : (Coef,%) -> % if Coef has COMRING
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R additive? : (%,PositiveInteger) -> Boolean
 --R associates? : (%,%) -> Boolean if Coef has COMRING
 --R characteristic : () -> NonNegativeInteger
@@ -34775,13 +36011,14 @@ DirichletRing(Coef: Ring):
 )set message test on
 )set message auto off
 )clear all
---S 1 of 10
+
+--S 1 of 11
 (d1,d2,d3) : DMP([z,y,x],FRAC INT) 
 --R 
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 10
+--S 2 of 11
 d1 := -4*z + 4*y**2*x + 16*x**2 + 1 
 --R 
 --R
@@ -34790,7 +36027,7 @@ d1 := -4*z + 4*y**2*x + 16*x**2 + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 2
 
---S 3 of 10
+--S 3 of 11
 d2 := 2*z*y**2 + 4*x + 1 
 --R 
 --R
@@ -34799,7 +36036,7 @@ d2 := 2*z*y**2 + 4*x + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 3
 
---S 4 of 10
+--S 4 of 11
 d3 := 2*z*x**2 - 2*y**2 - x 
 --R 
 --R
@@ -34808,7 +36045,7 @@ d3 := 2*z*x**2 - 2*y**2 - x
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 4
 
---S 5 of 10
+--S 5 of 11
 groebner [d1,d2,d3]
 --R 
 --R
@@ -34825,13 +36062,13 @@ groebner [d1,d2,d3]
 --R     Type: List(DistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 5
 
---S 6 of 10
+--S 6 of 11
 (n1,n2,n3) : HDMP([z,y,x],FRAC INT)
 --R 
 --R                                                                   Type: Void
 --E 6
 
---S 7 of 10
+--S 7 of 11
 n1 := d1
 --R 
 --R
@@ -34840,7 +36077,7 @@ n1 := d1
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 7
 
---S 8 of 10
+--S 8 of 11
 n2 := d2
 --R 
 --R
@@ -34849,7 +36086,7 @@ n2 := d2
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 8
 
---S 9 of 10
+--S 9 of 11
 n3 := d3
 --R 
 --R
@@ -34858,7 +36095,7 @@ n3 := d3
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 9
 
---S 10 of 10
+--S 10 of 11
 groebner [n1,n2,n3]
 --R 
 --R
@@ -34874,6 +36111,134 @@ groebner [n1,n2,n3]
 --R                     4     2
 --RType: List(HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 10
+
+--S 11 of 11
+)show DistributedMultivariatePolynomial
+--R 
+--R DistributedMultivariatePolynomial(vl: List(Symbol),R: Ring)  is a domain constructor
+--R Abbreviation for DistributedMultivariatePolynomial is DMP 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for DMP 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficients : % -> List(R)
+--R coerce : % -> % if R has INTDOM       coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R content : % -> R if R has GCDDOM      eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leadingCoefficient : % -> R
+--R leadingMonomial : % -> %              map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
+--R monomial? : % -> Boolean              monomials : % -> List(%)
+--R one? : % -> Boolean                   primitiveMonomials : % -> List(%)
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R reorder : (%,List(Integer)) -> %      retract : % -> R
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
+--R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
+--R ?<? : (%,%) -> Boolean if R has ORDSET
+--R ?<=? : (%,%) -> Boolean if R has ORDSET
+--R ?>? : (%,%) -> Boolean if R has ORDSET
+--R ?>=? : (%,%) -> Boolean if R has ORDSET
+--R D : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R D : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R D : (%,List(OrderedVariableList(vl))) -> %
+--R D : (%,OrderedVariableList(vl)) -> %
+--R associates? : (%,%) -> Boolean if R has INTDOM
+--R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and R has PFECAT or R has CHARNZ
+--R coefficient : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R coefficient : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R coefficient : (%,DirectProduct(#(vl),NonNegativeInteger)) -> R
+--R coerce : Fraction(Integer) -> % if R has ALGEBRA(FRAC(INT)) or R has RETRACT(FRAC(INT))
+--R coerce : OrderedVariableList(vl) -> %
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and R has PFECAT
+--R content : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R convert : % -> InputForm if OrderedVariableList(vl) has KONVERT(INFORM) and R has KONVERT(INFORM)
+--R convert : % -> Pattern(Integer) if OrderedVariableList(vl) has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
+--R convert : % -> Pattern(Float) if OrderedVariableList(vl) has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
+--R degree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R degree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R degree : % -> DirectProduct(#(vl),NonNegativeInteger)
+--R differentiate : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R differentiate : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R differentiate : (%,List(OrderedVariableList(vl))) -> %
+--R differentiate : (%,OrderedVariableList(vl)) -> %
+--R discriminant : (%,OrderedVariableList(vl)) -> % if R has COMRING
+--R eval : (%,List(OrderedVariableList(vl)),List(%)) -> %
+--R eval : (%,OrderedVariableList(vl),%) -> %
+--R eval : (%,List(OrderedVariableList(vl)),List(R)) -> %
+--R eval : (%,OrderedVariableList(vl),R) -> %
+--R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R factor : % -> Factored(%) if R has PFECAT
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
+--R isExpt : % -> Union(Record(var: OrderedVariableList(vl),exponent: NonNegativeInteger),"failed")
+--R isPlus : % -> Union(List(%),"failed")
+--R isTimes : % -> Union(List(%),"failed")
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
+--R mainVariable : % -> Union(OrderedVariableList(vl),"failed")
+--R mapExponents : ((DirectProduct(#(vl),NonNegativeInteger) -> DirectProduct(#(vl),NonNegativeInteger)),%) -> %
+--R minimumDegree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R minimumDegree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R minimumDegree : % -> DirectProduct(#(vl),NonNegativeInteger)
+--R monicDivide : (%,%,OrderedVariableList(vl)) -> Record(quotient: %,remainder: %)
+--R monomial : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R monomial : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R monomial : (R,DirectProduct(#(vl),NonNegativeInteger)) -> %
+--R multivariate : (SparseUnivariatePolynomial(%),OrderedVariableList(vl)) -> %
+--R multivariate : (SparseUnivariatePolynomial(R),OrderedVariableList(vl)) -> %
+--R numberOfMonomials : % -> NonNegativeInteger
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if OrderedVariableList(vl) has PATMAB(INT) and R has PATMAB(INT)
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if OrderedVariableList(vl) has PATMAB(FLOAT) and R has PATMAB(FLOAT)
+--R pomopo! : (%,R,DirectProduct(#(vl),NonNegativeInteger),%) -> %
+--R prime? : % -> Boolean if R has PFECAT
+--R primitivePart : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R primitivePart : % -> % if R has GCDDOM
+--R reducedSystem : Matrix(%) -> Matrix(R)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
+--R resultant : (%,%,OrderedVariableList(vl)) -> % if R has COMRING
+--R retract : % -> OrderedVariableList(vl)
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(OrderedVariableList(vl),"failed")
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(R,"failed")
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if R has PFECAT
+--R squareFree : % -> Factored(%) if R has GCDDOM
+--R squareFreePart : % -> % if R has GCDDOM
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R totalDegree : (%,List(OrderedVariableList(vl))) -> NonNegativeInteger
+--R totalDegree : % -> NonNegativeInteger
+--R unit? : % -> Boolean if R has INTDOM
+--R unitCanonical : % -> % if R has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has INTDOM
+--R univariate : % -> SparseUnivariatePolynomial(R)
+--R univariate : (%,OrderedVariableList(vl)) -> SparseUnivariatePolynomial(%)
+--R variables : % -> List(OrderedVariableList(vl))
+--R
+--E 11
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -35127,24 +36492,23 @@ DistributedMultivariatePolynomial(vl,R): public == private where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,S) -> %                ?*? : (Integer,%) -> %
 --R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (S,%) -> Integer        coerce : S -> %
---R coerce : % -> OutputForm              collect : % -> %
---R concat : (%,%) -> %                   degree : % -> Integer
---R divOfPole : % -> %                    divOfZero : % -> %
---R effective? : % -> Boolean             hash : % -> SingleInteger
---R incr : % -> %                         latex : % -> String
---R mapGen : ((S -> S),%) -> %            nthCoef : (%,Integer) -> Integer
---R nthFactor : (%,Integer) -> S          reductum : % -> %
---R retract : % -> S                      sample : () -> %
---R size : % -> NonNegativeInteger        split : % -> List(%)
---R supp : % -> List(S)                   suppOfPole : % -> List(S)
---R suppOfZero : % -> List(S)             zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (S,%) -> Integer
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R collect : % -> %                      concat : (%,%) -> %
+--R degree : % -> Integer                 divOfPole : % -> %
+--R divOfZero : % -> %                    effective? : % -> Boolean
+--R hash : % -> SingleInteger             incr : % -> %
+--R latex : % -> String                   mapGen : ((S -> S),%) -> %
+--R nthCoef : (%,Integer) -> Integer      nthFactor : (%,Integer) -> S
+--R reductum : % -> %                     retract : % -> S
+--R sample : () -> %                      size : % -> NonNegativeInteger
+--R split : % -> List(%)                  supp : % -> List(S)
+--R suppOfPole : % -> List(S)             suppOfZero : % -> List(S)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R head : % -> Record(gen: S,exp: Integer)
 --R highCommonTerms : (%,%) -> % if Integer has OAMON
 --R mapCoef : ((Integer -> Integer),%) -> %
@@ -35526,7 +36890,7 @@ which just returns a list of the multiple values from the
 )set message auto off
 )clear all
 
---S 1 of 13
+--S 1 of 14
 2.71828
 --R 
 --R
@@ -35534,7 +36898,7 @@ which just returns a list of the multiple values from the
 --R                                                                  Type: Float
 --E 1
 
---S 2 of 13
+--S 2 of 14
 2.71828@DoubleFloat
 --R 
 --R
@@ -35542,7 +36906,7 @@ which just returns a list of the multiple values from the
 --R                                                            Type: DoubleFloat
 --E 2
 
---S 3 of 13
+--S 3 of 14
 2.71828 :: DoubleFloat
 --R 
 --R
@@ -35550,7 +36914,7 @@ which just returns a list of the multiple values from the
 --R                                                            Type: DoubleFloat
 --E 3
 
---S 4 of 13
+--S 4 of 14
 eApprox : DoubleFloat := 2.71828
 --R 
 --R
@@ -35558,13 +36922,13 @@ eApprox : DoubleFloat := 2.71828
 --R                                                            Type: DoubleFloat
 --E 4
 
---S 5 of 13
+--S 5 of 14
 avg : List DoubleFloat -> DoubleFloat
 --R 
 --R                                                                   Type: Void
 --E 5
 
---S 6 of 13
+--S 6 of 14
 avg l ==
   empty? l => 0 :: DoubleFloat
   reduce(_+,l) / #l
@@ -35572,7 +36936,7 @@ avg l ==
 --R                                                                   Type: Void
 --E 6
 
---S 7 of 13
+--S 7 of 14
 avg []
 --R 
 --R   Compiling function avg with type List(DoubleFloat) -> DoubleFloat 
@@ -35581,7 +36945,7 @@ avg []
 --R                                                            Type: DoubleFloat
 --E 7
 
---S 8 of 13
+--S 8 of 14
 avg [3.4,9.7,-6.8]
 --R 
 --R
@@ -35589,7 +36953,7 @@ avg [3.4,9.7,-6.8]
 --R                                                            Type: DoubleFloat
 --E 8
 
---S 9 of 13
+--S 9 of 14
 cos(3.1415926)$DoubleFloat
 --R 
 --R
@@ -35597,7 +36961,7 @@ cos(3.1415926)$DoubleFloat
 --R                                                            Type: DoubleFloat
 --E 9
 
---S 10 of 13
+--S 10 of 14
 cos(3.1415926 :: DoubleFloat)
 --R 
 --R
@@ -35605,7 +36969,7 @@ cos(3.1415926 :: DoubleFloat)
 --R                                                            Type: DoubleFloat
 --E 10
 
---S 11 of 13
+--S 11 of 14
 a:DFLOAT := -1.0/3.0
 --R 
 --R
@@ -35613,7 +36977,7 @@ a:DFLOAT := -1.0/3.0
 --R                                                            Type: DoubleFloat
 --E 11
 
---S 12 of 13
+--S 12 of 14
 integerDecode a
 --R 
 --R
@@ -35621,7 +36985,7 @@ integerDecode a
 --R                                                          Type: List(Integer)
 --E 12
 
---S 13 of 13
+--S 13 of 14
 machineFraction a
 --R 
 --R
@@ -35631,6 +36995,115 @@ machineFraction a
 --R                                                      Type: Fraction(Integer)
 --E 13
  
+--S 14 of 14
+)show DoubleFloat
+--R 
+--R DoubleFloat  is a domain constructor
+--R Abbreviation for DoubleFloat is DFLOAT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for DFLOAT 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,%) -> %                     ?**? : (%,Fraction(Integer)) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,Integer) -> %                ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               Beta : (%,%) -> %
+--R D : % -> %                            D : (%,NonNegativeInteger) -> %
+--R Gamma : (%,%) -> %                    Gamma : % -> %
+--R OMwrite : (%,Boolean) -> String       OMwrite : % -> String
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        abs : % -> %
+--R acos : % -> %                         acosh : % -> %
+--R acot : % -> %                         acoth : % -> %
+--R acsc : % -> %                         acsch : % -> %
+--R airyAi : % -> %                       airyBi : % -> %
+--R asec : % -> %                         asech : % -> %
+--R asin : % -> %                         asinh : % -> %
+--R associates? : (%,%) -> Boolean        atan : (%,%) -> %
+--R atan : % -> %                         atanh : % -> %
+--R base : () -> PositiveInteger          besselI : (%,%) -> %
+--R besselJ : (%,%) -> %                  besselK : (%,%) -> %
+--R besselY : (%,%) -> %                  bits : () -> PositiveInteger
+--R ceiling : % -> %                      coerce : Fraction(Integer) -> %
+--R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              convert : % -> InputForm
+--R convert : % -> Pattern(Float)         convert : % -> DoubleFloat
+--R convert : % -> Float                  cos : % -> %
+--R cosh : % -> %                         cot : % -> %
+--R coth : % -> %                         csc : % -> %
+--R csch : % -> %                         differentiate : % -> %
+--R digamma : % -> %                      digits : () -> PositiveInteger
+--R doubleFloatFormat : String -> String  exp : % -> %
+--R exp1 : () -> %                        exponent : % -> Integer
+--R factor : % -> Factored(%)             float : (Integer,Integer) -> %
+--R floor : % -> %                        fractionPart : % -> %
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> Integer                   hash : % -> SingleInteger
+--R integerDecode : % -> List(Integer)    inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      log : % -> %
+--R log10 : % -> %                        log2 : % -> %
+--R mantissa : % -> Integer               max : (%,%) -> %
+--R min : (%,%) -> %                      negative? : % -> Boolean
+--R norm : % -> %                         nthRoot : (%,Integer) -> %
+--R one? : % -> Boolean                   order : % -> Integer
+--R pi : () -> %                          polygamma : (%,%) -> %
+--R positive? : % -> Boolean              precision : () -> PositiveInteger
+--R prime? : % -> Boolean                 ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Integer
+--R round : % -> %                        sample : () -> %
+--R sec : % -> %                          sech : % -> %
+--R sign : % -> Integer                   sin : % -> %
+--R sinh : % -> %                         sizeLess? : (%,%) -> Boolean
+--R sqrt : % -> %                         squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               tan : % -> %
+--R tanh : % -> %                         truncate : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R wholePart : % -> Integer              zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R OMwrite : (OpenMathDevice,%,Boolean) -> Void
+--R OMwrite : (OpenMathDevice,%) -> Void
+--R bits : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R characteristic : () -> NonNegativeInteger
+--R decreasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
+--R differentiate : (%,NonNegativeInteger) -> %
+--R digits : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R euclideanSize : % -> NonNegativeInteger
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R float : (Integer,Integer,PositiveInteger) -> %
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R increasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R machineFraction : % -> Fraction(Integer)
+--R max : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
+--R min : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%)
+--R precision : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R rationalApproximation : (%,NonNegativeInteger,NonNegativeInteger) -> Fraction(Integer)
+--R rationalApproximation : (%,NonNegativeInteger) -> Fraction(Integer)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed")
+--R retractIfCan : % -> Union(Integer,"failed")
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 14
+
 )spool
 )lisp (bye)
 
@@ -36255,25 +37728,25 @@ DoubleFloat(): Join(FloatingPointSystem, DifferentialRing, OpenMath,
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,%) -> %                ?*? : (%,DoubleFloat) -> %
 --R ?*? : (DoubleFloat,%) -> %            ?*? : (%,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      antisymmetric? : % -> Boolean
---R coerce : DoubleFloatVector -> %       copy : % -> %
---R diagonal? : % -> Boolean              diagonalMatrix : List(%) -> %
---R empty : () -> %                       empty? : % -> Boolean
---R eq? : (%,%) -> Boolean                fill! : (%,DoubleFloat) -> %
---R horizConcat : (%,%) -> %              maxColIndex : % -> Integer
---R maxRowIndex : % -> Integer            minColIndex : % -> Integer
---R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
---R nrows : % -> NonNegativeInteger       parts : % -> List(DoubleFloat)
---R qnew : (Integer,Integer) -> %         sample : () -> %
---R square? : % -> Boolean                squareTop : % -> %
---R symmetric? : % -> Boolean             transpose : % -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R antisymmetric? : % -> Boolean         coerce : DoubleFloatVector -> %
+--R copy : % -> %                         diagonal? : % -> Boolean
+--R diagonalMatrix : List(%) -> %         empty : () -> %
+--R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
+--R fill! : (%,DoubleFloat) -> %          horizConcat : (%,%) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R parts : % -> List(DoubleFloat)        qnew : (Integer,Integer) -> %
+--R sample : () -> %                      square? : % -> Boolean
+--R squareTop : % -> %                    symmetric? : % -> Boolean
+--R transpose : % -> %                    transpose : DoubleFloatVector -> %
 --R vertConcat : (%,%) -> %              
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (DoubleFloatVector,%) -> DoubleFloatVector
 --R ?*? : (%,DoubleFloatVector) -> DoubleFloatVector
 --R ?**? : (%,Integer) -> % if DoubleFloat has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,DoubleFloat) -> % if DoubleFloat has FIELD
 --R ?=? : (%,%) -> Boolean if DoubleFloat has SETCAT
 --R any? : ((DoubleFloat -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -36327,7 +37800,6 @@ DoubleFloat(): Join(FloatingPointSystem, DifferentialRing, OpenMath,
 --R subMatrix : (%,Integer,Integer,Integer,Integer) -> %
 --R swapColumns! : (%,Integer,Integer) -> %
 --R swapRows! : (%,Integer,Integer) -> %
---R transpose : DoubleFloatVector -> %
 --R zero : (NonNegativeInteger,NonNegativeInteger) -> %
 --R ?~=? : (%,%) -> Boolean if DoubleFloat has SETCAT
 --R
@@ -36581,13 +38053,14 @@ DoubleFloatMatrix : MatrixCategory(DoubleFloat,
 --R------------------------------- Operations --------------------------------
 --R concat : List(%) -> %                 concat : (%,%) -> %
 --R concat : (DoubleFloat,%) -> %         concat : (%,DoubleFloat) -> %
---R copy : % -> %                         delete : (%,Integer) -> %
---R ?.? : (%,Integer) -> DoubleFloat      empty : () -> %
---R empty? : % -> Boolean                 entries : % -> List(DoubleFloat)
---R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
---R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R qelt : (%,Integer) -> DoubleFloat     qnew : Integer -> %
---R reverse : % -> %                      sample : () -> %
+--R construct : List(DoubleFloat) -> %    copy : % -> %
+--R delete : (%,Integer) -> %             ?.? : (%,Integer) -> DoubleFloat
+--R empty : () -> %                       empty? : % -> Boolean
+--R entries : % -> List(DoubleFloat)      eq? : (%,%) -> Boolean
+--R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
+--R insert : (%,%,Integer) -> %           qelt : (%,Integer) -> DoubleFloat
+--R qnew : Integer -> %                   reverse : % -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (%,DoubleFloat) -> % if DoubleFloat has MONOID
 --R ?*? : (DoubleFloat,%) -> % if DoubleFloat has MONOID
@@ -36602,7 +38075,6 @@ DoubleFloatMatrix : MatrixCategory(DoubleFloat,
 --R ?>=? : (%,%) -> Boolean if DoubleFloat has ORDSET
 --R any? : ((DoubleFloat -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R coerce : % -> OutputForm if DoubleFloat has SETCAT
---R construct : List(DoubleFloat) -> %
 --R convert : % -> InputForm if DoubleFloat has KONVERT(INFORM)
 --R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
 --R count : (DoubleFloat,%) -> NonNegativeInteger if $ has finiteAggregate and DoubleFloat has SETCAT
@@ -36896,11 +38368,11 @@ DoubleFloatVector : VectorCategory DoubleFloat with
 --R curveColor : Float -> %               hash : % -> SingleInteger
 --R latex : % -> String                   pointColor : Palette -> %
 --R pointColor : Float -> %               range : List(Segment(Float)) -> %
---R style : String -> %                   title : String -> %
---R toScale : Boolean -> %                tubePoints : PositiveInteger -> %
---R tubeRadius : Float -> %               unit : List(Float) -> %
---R var1Steps : PositiveInteger -> %      var2Steps : PositiveInteger -> %
---R ?~=? : (%,%) -> Boolean              
+--R ranges : List(Segment(Float)) -> %    style : String -> %
+--R title : String -> %                   toScale : Boolean -> %
+--R tubePoints : PositiveInteger -> %     tubeRadius : Float -> %
+--R unit : List(Float) -> %               var1Steps : PositiveInteger -> %
+--R var2Steps : PositiveInteger -> %      ?~=? : (%,%) -> Boolean
 --R colorFunction : ((DoubleFloat,DoubleFloat,DoubleFloat) -> DoubleFloat) -> %
 --R colorFunction : ((DoubleFloat,DoubleFloat) -> DoubleFloat) -> %
 --R colorFunction : (DoubleFloat -> DoubleFloat) -> %
@@ -36909,7 +38381,6 @@ DoubleFloatVector : VectorCategory DoubleFloat with
 --R option : (List(%),Symbol) -> Union(Any,"failed")
 --R option? : (List(%),Symbol) -> Boolean
 --R range : List(Segment(Fraction(Integer))) -> %
---R ranges : List(Segment(Float)) -> %
 --R space : ThreeSpace(DoubleFloat) -> %
 --R viewpoint : Record(theta: DoubleFloat,phi: DoubleFloat,scale: DoubleFloat,scaleX: DoubleFloat,scaleY: DoubleFloat,scaleZ: DoubleFloat,deltaX: DoubleFloat,deltaY: DoubleFloat) -> %
 --R
@@ -39675,6 +41146,55 @@ d03fafAnnaType():PartialDifferentialEquationsSolverCategory == Result add
 
 --S 1 of 1
 )show ElementaryFunctionsUnivariateLaurentSeries
+--R 
+--R ElementaryFunctionsUnivariateLaurentSeries(Coef: Algebra(Fraction(Integer)),UTS: UnivariateTaylorSeriesCategory(Coef),ULS: UnivariateLaurentSeriesConstructorCategory(Coef,UTS))  is a domain constructor
+--R Abbreviation for ElementaryFunctionsUnivariateLaurentSeries is EFULS 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EFULS 
+--R
+--R------------------------------- Operations --------------------------------
+--R acos : ULS -> ULS                     acosh : ULS -> ULS
+--R acot : ULS -> ULS                     acoth : ULS -> ULS
+--R acsc : ULS -> ULS                     acsch : ULS -> ULS
+--R asec : ULS -> ULS                     asech : ULS -> ULS
+--R asin : ULS -> ULS                     asinh : ULS -> ULS
+--R atan : ULS -> ULS                     atanh : ULS -> ULS
+--R cos : ULS -> ULS                      cosh : ULS -> ULS
+--R cot : ULS -> ULS                      coth : ULS -> ULS
+--R csc : ULS -> ULS                      csch : ULS -> ULS
+--R exp : ULS -> ULS                      log : ULS -> ULS
+--R sec : ULS -> ULS                      sech : ULS -> ULS
+--R sin : ULS -> ULS                      sinh : ULS -> ULS
+--R tan : ULS -> ULS                      tanh : ULS -> ULS
+--R ?**? : (ULS,Fraction(Integer)) -> ULS if Coef has FIELD
+--R acosIfCan : ULS -> Union(ULS,"failed")
+--R acoshIfCan : ULS -> Union(ULS,"failed")
+--R acotIfCan : ULS -> Union(ULS,"failed")
+--R acothIfCan : ULS -> Union(ULS,"failed")
+--R acscIfCan : ULS -> Union(ULS,"failed")
+--R acschIfCan : ULS -> Union(ULS,"failed")
+--R asecIfCan : ULS -> Union(ULS,"failed")
+--R asechIfCan : ULS -> Union(ULS,"failed")
+--R asinIfCan : ULS -> Union(ULS,"failed")
+--R asinhIfCan : ULS -> Union(ULS,"failed")
+--R atanIfCan : ULS -> Union(ULS,"failed")
+--R atanhIfCan : ULS -> Union(ULS,"failed")
+--R cosIfCan : ULS -> Union(ULS,"failed")
+--R coshIfCan : ULS -> Union(ULS,"failed")
+--R cotIfCan : ULS -> Union(ULS,"failed")
+--R cothIfCan : ULS -> Union(ULS,"failed")
+--R cscIfCan : ULS -> Union(ULS,"failed")
+--R cschIfCan : ULS -> Union(ULS,"failed")
+--R expIfCan : ULS -> Union(ULS,"failed")
+--R logIfCan : ULS -> Union(ULS,"failed")
+--R nthRootIfCan : (ULS,NonNegativeInteger) -> Union(ULS,"failed")
+--R secIfCan : ULS -> Union(ULS,"failed")
+--R sechIfCan : ULS -> Union(ULS,"failed")
+--R sinIfCan : ULS -> Union(ULS,"failed")
+--R sinhIfCan : ULS -> Union(ULS,"failed")
+--R tanIfCan : ULS -> Union(ULS,"failed")
+--R tanhIfCan : ULS -> Union(ULS,"failed")
+--R
 --E 1
 
 )spool
@@ -40120,6 +41640,55 @@ ElementaryFunctionsUnivariateLaurentSeries(Coef,UTS,ULS):_
 
 --S 1 of 1
 )show ElementaryFunctionsUnivariatePuiseuxSeries
+--R 
+--R ElementaryFunctionsUnivariatePuiseuxSeries(Coef: Algebra(Fraction(Integer)),ULS: UnivariateLaurentSeriesCategory(Coef),UPXS: UnivariatePuiseuxSeriesConstructorCategory(Coef,ULS),EFULS: PartialTranscendentalFunctions(ULS))  is a domain constructor
+--R Abbreviation for ElementaryFunctionsUnivariatePuiseuxSeries is EFUPXS 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EFUPXS 
+--R
+--R------------------------------- Operations --------------------------------
+--R acos : UPXS -> UPXS                   acosh : UPXS -> UPXS
+--R acot : UPXS -> UPXS                   acoth : UPXS -> UPXS
+--R acsc : UPXS -> UPXS                   acsch : UPXS -> UPXS
+--R asec : UPXS -> UPXS                   asech : UPXS -> UPXS
+--R asin : UPXS -> UPXS                   asinh : UPXS -> UPXS
+--R atan : UPXS -> UPXS                   atanh : UPXS -> UPXS
+--R cos : UPXS -> UPXS                    cosh : UPXS -> UPXS
+--R cot : UPXS -> UPXS                    coth : UPXS -> UPXS
+--R csc : UPXS -> UPXS                    csch : UPXS -> UPXS
+--R exp : UPXS -> UPXS                    log : UPXS -> UPXS
+--R sec : UPXS -> UPXS                    sech : UPXS -> UPXS
+--R sin : UPXS -> UPXS                    sinh : UPXS -> UPXS
+--R tan : UPXS -> UPXS                    tanh : UPXS -> UPXS
+--R ?**? : (UPXS,Fraction(Integer)) -> UPXS if Coef has FIELD
+--R acosIfCan : UPXS -> Union(UPXS,"failed")
+--R acoshIfCan : UPXS -> Union(UPXS,"failed")
+--R acotIfCan : UPXS -> Union(UPXS,"failed")
+--R acothIfCan : UPXS -> Union(UPXS,"failed")
+--R acscIfCan : UPXS -> Union(UPXS,"failed")
+--R acschIfCan : UPXS -> Union(UPXS,"failed")
+--R asecIfCan : UPXS -> Union(UPXS,"failed")
+--R asechIfCan : UPXS -> Union(UPXS,"failed")
+--R asinIfCan : UPXS -> Union(UPXS,"failed")
+--R asinhIfCan : UPXS -> Union(UPXS,"failed")
+--R atanIfCan : UPXS -> Union(UPXS,"failed")
+--R atanhIfCan : UPXS -> Union(UPXS,"failed")
+--R cosIfCan : UPXS -> Union(UPXS,"failed")
+--R coshIfCan : UPXS -> Union(UPXS,"failed")
+--R cotIfCan : UPXS -> Union(UPXS,"failed")
+--R cothIfCan : UPXS -> Union(UPXS,"failed")
+--R cscIfCan : UPXS -> Union(UPXS,"failed")
+--R cschIfCan : UPXS -> Union(UPXS,"failed")
+--R expIfCan : UPXS -> Union(UPXS,"failed")
+--R logIfCan : UPXS -> Union(UPXS,"failed")
+--R nthRootIfCan : (UPXS,NonNegativeInteger) -> Union(UPXS,"failed")
+--R secIfCan : UPXS -> Union(UPXS,"failed")
+--R sechIfCan : UPXS -> Union(UPXS,"failed")
+--R sinIfCan : UPXS -> Union(UPXS,"failed")
+--R sinhIfCan : UPXS -> Union(UPXS,"failed")
+--R tanIfCan : UPXS -> Union(UPXS,"failed")
+--R tanhIfCan : UPXS -> Union(UPXS,"failed")
+--R
 --E 1
 
 )spool
@@ -40478,7 +42047,8 @@ ElementaryFunctionsUnivariatePuiseuxSeries(Coef,ULS,UPXS,EFULS):_
 )set message test on
 )set message auto off
 )clear all
---S 1 of 12
+
+--S 1 of 13
 eq1 := 3*x + 4*y = 5 
 --R 
 --R
@@ -40486,7 +42056,7 @@ eq1 := 3*x + 4*y = 5
 --R                                          Type: Equation(Polynomial(Integer))
 --E 1
 
---S 2 of 12
+--S 2 of 13
 eq2 := 2*x + 2*y = 3 
 --R 
 --R
@@ -40494,7 +42064,7 @@ eq2 := 2*x + 2*y = 3
 --R                                          Type: Equation(Polynomial(Integer))
 --E 2
 
---S 3 of 12
+--S 3 of 13
 lhs eq1
 --R 
 --R
@@ -40502,7 +42072,7 @@ lhs eq1
 --R                                                    Type: Polynomial(Integer)
 --E 3
 
---S 4 of 12
+--S 4 of 13
 rhs eq1
 --R 
 --R
@@ -40510,7 +42080,7 @@ rhs eq1
 --R                                                    Type: Polynomial(Integer)
 --E 4
 
---S 5 of 12
+--S 5 of 13
 eq1 + eq2 
 --R 
 --R
@@ -40518,7 +42088,7 @@ eq1 + eq2
 --R                                          Type: Equation(Polynomial(Integer))
 --E 5
 
---S 6 of 12
+--S 6 of 13
 eq1 * eq2 
 --R 
 --R
@@ -40527,7 +42097,7 @@ eq1 * eq2
 --R                                          Type: Equation(Polynomial(Integer))
 --E 6
 
---S 7 of 12
+--S 7 of 13
 2*eq2 - eq1
 --R 
 --R
@@ -40535,7 +42105,7 @@ eq1 * eq2
 --R                                          Type: Equation(Polynomial(Integer))
 --E 7
 
---S 8 of 12
+--S 8 of 13
 eq1**2
 --R 
 --R
@@ -40544,7 +42114,7 @@ eq1**2
 --R                                          Type: Equation(Polynomial(Integer))
 --E 8
 
---S 9 of 12
+--S 9 of 13
 if x+1 = y then "equal" else "unequal"
 --R 
 --R
@@ -40552,7 +42122,7 @@ if x+1 = y then "equal" else "unequal"
 --R                                                                 Type: String
 --E 9
 
---S 10 of 12
+--S 10 of 13
 eqpol := x+1 = y 
 --R 
 --R
@@ -40560,7 +42130,7 @@ eqpol := x+1 = y
 --R                                          Type: Equation(Polynomial(Integer))
 --E 10
 
---S 11 of 12
+--S 11 of 13
 if eqpol then "equal" else "unequal"
 --R 
 --R
@@ -40568,13 +42138,78 @@ if eqpol then "equal" else "unequal"
 --R                                                                 Type: String
 --E 11
 
---S 12 of 12
+--S 12 of 13
 eqpol::Boolean
 --R 
 --R
 --R   (12)  false
 --R                                                                Type: Boolean
 --E 12
+
+--S 13 of 13
+)show Equation
+--R 
+--R Equation(S: Type)  is a domain constructor
+--R Abbreviation for Equation is EQ 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EQ 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,%) -> % if S has SGROUP      ?*? : (S,%) -> % if S has SGROUP
+--R ?*? : (%,S) -> % if S has SGROUP      ?+? : (%,%) -> % if S has ABELSG
+--R ?+? : (%,S) -> % if S has ABELSG      ?+? : (S,%) -> % if S has ABELSG
+--R -? : % -> % if S has ABELGRP          ?-? : (%,%) -> % if S has ABELGRP
+--R ?-? : (%,S) -> % if S has ABELGRP     ?-? : (S,%) -> % if S has ABELGRP
+--R ?/? : (%,S) -> % if S has FIELD       ?=? : (S,S) -> %
+--R 1 : () -> % if S has MONOID           0 : () -> % if S has ABELGRP
+--R coerce : Integer -> % if S has RING   equation : (S,S) -> %
+--R latex : % -> String if S has SETCAT   leftZero : % -> % if S has ABELGRP
+--R lhs : % -> S                          map : ((S -> S),%) -> %
+--R one? : % -> Boolean if S has MONOID   rhs : % -> S
+--R subst : (%,%) -> % if S has ES        swap : % -> %
+--R ?*? : (PositiveInteger,%) -> % if S has ABELSG
+--R ?*? : (NonNegativeInteger,%) -> % if S has ABELGRP
+--R ?*? : (Integer,%) -> % if S has ABELGRP
+--R ?**? : (%,PositiveInteger) -> % if S has SGROUP
+--R ?**? : (%,NonNegativeInteger) -> % if S has MONOID
+--R ?**? : (%,Integer) -> % if S has GROUP
+--R ?/? : (%,%) -> % if S has FIELD or S has GROUP
+--R ?=? : (%,%) -> Boolean if S has SETCAT
+--R D : (%,Symbol) -> % if S has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if S has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if S has PDRING(SYMBOL)
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if S has PDRING(SYMBOL)
+--R ?^? : (%,PositiveInteger) -> % if S has SGROUP
+--R ?^? : (%,NonNegativeInteger) -> % if S has MONOID
+--R ?^? : (%,Integer) -> % if S has GROUP
+--R characteristic : () -> NonNegativeInteger if S has RING
+--R coerce : % -> OutputForm if S has SETCAT
+--R coerce : % -> Boolean if S has SETCAT
+--R commutator : (%,%) -> % if S has GROUP
+--R conjugate : (%,%) -> % if S has GROUP
+--R differentiate : (%,Symbol) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if S has PDRING(SYMBOL)
+--R dimension : () -> CardinalNumber if S has FIELD
+--R eval : (%,List(Symbol),List(S)) -> % if S has IEVALAB(SYMBOL,S)
+--R eval : (%,Symbol,S) -> % if S has IEVALAB(SYMBOL,S)
+--R eval : (%,List(%)) -> % if S has EVALAB(S) and S has SETCAT
+--R eval : (%,%) -> % if S has EVALAB(S) and S has SETCAT
+--R factorAndSplit : % -> List(%) if S has INTDOM
+--R hash : % -> SingleInteger if S has SETCAT
+--R inv : % -> % if S has FIELD or S has GROUP
+--R leftOne : % -> Union(%,"failed") if S has MONOID
+--R recip : % -> Union(%,"failed") if S has MONOID
+--R rightOne : % -> Union(%,"failed") if S has MONOID
+--R rightZero : % -> % if S has ABELGRP
+--R sample : () -> % if S has ABELGRP or S has MONOID
+--R subtractIfCan : (%,%) -> Union(%,"failed") if S has ABELGRP
+--R zero? : % -> Boolean if S has ABELGRP
+--R ?~=? : (%,%) -> Boolean if S has SETCAT
+--R
+--E 13
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -40929,7 +42564,8 @@ Equation(S: Type): public == private where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 6
+
+--S 1 of 7
 e: EqTable(List Integer, Integer) := table()
 --R 
 --R
@@ -40937,7 +42573,7 @@ e: EqTable(List Integer, Integer) := table()
 --R                                         Type: EqTable(List(Integer),Integer)
 --E 1
 
---S 2 of 6
+--S 2 of 7
 l1 := [1,2,3]
 --R 
 --R
@@ -40945,7 +42581,7 @@ l1 := [1,2,3]
 --R                                                  Type: List(PositiveInteger)
 --E 2
 
---S 3 of 6
+--S 3 of 7
 l2 := [1,2,3]
 --R 
 --R
@@ -40953,7 +42589,7 @@ l2 := [1,2,3]
 --R                                                  Type: List(PositiveInteger)
 --E 3
 
---S 4 of 6
+--S 4 of 7
 e.l1 := 111
 --R 
 --R
@@ -40961,7 +42597,7 @@ e.l1 := 111
 --R                                                        Type: PositiveInteger
 --E 4
 
---S 5 of 6
+--S 5 of 7
 e.l2 := 222
 --R 
 --R
@@ -40969,13 +42605,98 @@ e.l2 := 222
 --R                                                        Type: PositiveInteger
 --E 5
 
---S 6 of 6
+--S 6 of 7
 e.l1
 --R 
 --R
 --R   (6)  111
 --R                                                        Type: PositiveInteger
 --E 6
+
+--S 7 of 7
+)show EqTable
+--R 
+--R EqTable(Key: SetCategory,Entry: SetCategory)  is a domain constructor
+--R Abbreviation for EqTable is EQTBL 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EQTBL 
+--R
+--R------------------------------- Operations --------------------------------
+--R copy : % -> %                         dictionary : () -> %
+--R elt : (%,Key,Entry) -> Entry          ?.? : (%,Key) -> Entry
+--R empty : () -> %                       empty? : % -> Boolean
+--R entries : % -> List(Entry)            eq? : (%,%) -> Boolean
+--R index? : (Key,%) -> Boolean           indices : % -> List(Key)
+--R key? : (Key,%) -> Boolean             keys : % -> List(Key)
+--R map : ((Entry -> Entry),%) -> %       qelt : (%,Key) -> Entry
+--R sample : () -> %                      setelt : (%,Key,Entry) -> Entry
+--R table : () -> %                      
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R bag : List(Record(key: Key,entry: Entry)) -> %
+--R coerce : % -> OutputForm if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R construct : List(Record(key: Key,entry: Entry)) -> %
+--R convert : % -> InputForm if Record(key: Key,entry: Entry) has KONVERT(INFORM)
+--R count : ((Entry -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Entry,%) -> NonNegativeInteger if $ has finiteAggregate and Entry has SETCAT
+--R count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R dictionary : List(Record(key: Key,entry: Entry)) -> %
+--R entry? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R eval : (%,List(Equation(Entry))) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Equation(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Entry,Entry) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Entry),List(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Record(key: Key,entry: Entry)),List(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Equation(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,List(Equation(Record(key: Key,entry: Entry)))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R every? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R extract! : % -> Record(key: Key,entry: Entry)
+--R fill! : (%,Entry) -> % if $ has shallowlyMutable
+--R find : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Union(Record(key: Key,entry: Entry),"failed")
+--R first : % -> Entry if Key has ORDSET
+--R hash : % -> SingleInteger if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R insert! : (Record(key: Key,entry: Entry),%) -> %
+--R inspect : % -> Record(key: Key,entry: Entry)
+--R latex : % -> String if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R map : (((Entry,Entry) -> Entry),%,%) -> %
+--R map : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> %
+--R map! : ((Entry -> Entry),%) -> % if $ has shallowlyMutable
+--R map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+--R maxIndex : % -> Key if Key has ORDSET
+--R member? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R member? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R members : % -> List(Entry) if $ has finiteAggregate
+--R members : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R minIndex : % -> Key if Key has ORDSET
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R parts : % -> List(Entry) if $ has finiteAggregate
+--R parts : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R qsetelt! : (%,Key,Entry) -> Entry if $ has shallowlyMutable
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove! : (Key,%) -> Union(Entry,"failed")
+--R remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
+--R removeDuplicates : % -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R search : (Key,%) -> Union(Entry,"failed")
+--R select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R swap! : (%,Key,Key) -> Void if $ has shallowlyMutable
+--R table : List(Record(key: Key,entry: Entry)) -> %
+--R ?~=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R
+--E 7
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -41136,26 +42857,25 @@ EqTable(Key: SetCategory, Entry: SetCategory) ==
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> R                       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R ?.? : (%,R) -> R                      gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R modulus : % -> Mod                    one? : % -> Boolean
---R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
---R reduce : (R,Mod) -> %                 ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> R
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              ?.? : (%,R) -> R
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      modulus : % -> Mod
+--R one? : % -> Boolean                   ?quo? : (%,%) -> %
+--R recip : % -> Union(%,"failed")        reduce : (R,Mod) -> %
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
 --R euclideanSize : % -> NonNegativeInteger
@@ -41364,7 +43084,8 @@ EuclideanModularRing(S,R,Mod,reduction:(R,Mod) -> R,
 )set message test on
 )set message auto off
 )clear all
---S 1
+
+--S 1 of 7
 n := 0
 --R 
 --R
@@ -41372,7 +43093,7 @@ n := 0
 --R                                                     Type: NonNegativeInteger
 --E 1
 
---S 2
+--S 2 of 7
 gasp(): Exit ==
   free n
   n := n + 1
@@ -41382,7 +43103,7 @@ gasp(): Exit ==
 --R                                                                   Type: Void
 --E 2
 
---S 3
+--S 3 of 7
 half(k) ==
   if odd? k then gasp()
   else k quo 2
@@ -41390,7 +43111,7 @@ half(k) ==
 --R                                                                   Type: Void
 --E 3
 
---S 4
+--S 4 of 7
 half 4
 --R 
 --R   Compiling function gasp with type () -> Exit 
@@ -41400,7 +43121,7 @@ half 4
 --R                                                        Type: PositiveInteger
 --E 4
 
---S 5
+--S 5 of 7
 half 3
 --R 
 --R 
@@ -41409,13 +43130,29 @@ half 3
 --R      Oh no!
 --E 5
 
---S 6
+--S 6 of 7
 n
 --R 
 --R
 --R   (5)  1
 --R                                                     Type: NonNegativeInteger
 --E 6
+
+--S 7 of 7
+)show Exit
+--R 
+--R Exit  is a domain constructor
+--R Abbreviation for Exit is EXIT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EXIT 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R ?~=? : (%,%) -> Boolean              
+--R
+--E 7
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -41518,30 +43255,30 @@ Exit: SetCategory == add
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R associates? : (%,%) -> Boolean        coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              denominator : % -> %
---R factor : % -> Factored(%)             gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R numerator : % -> %                    one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R denominator : % -> %                  factor : % -> Factored(%)
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      numerator : % -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen)) -> %
 --R ?*? : (UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen),%) -> %
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen),UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen)) -> %
 --R ?<? : (%,%) -> Boolean if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has ORDSET
 --R ?<=? : (%,%) -> Boolean if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has ORDSET
@@ -41555,7 +43292,6 @@ Exit: SetCategory == add
 --R D : (%,Symbol) -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has PDRING(SYMBOL)
 --R D : (%,NonNegativeInteger) -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has DIFRING
 --R D : % -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has DIFRING
---R ?^? : (%,NonNegativeInteger) -> %
 --R abs : % -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has OINTDOM
 --R ceiling : % -> UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has INS
 --R characteristic : () -> NonNegativeInteger
@@ -41899,7 +43635,8 @@ ExponentialExpansion(R,FE,var,cen): Exports == Implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 23
+
+--S 1 of 24
 sin(x) + 3*cos(x)**2
 --R 
 --R
@@ -41908,7 +43645,7 @@ sin(x) + 3*cos(x)**2
 --R                                                    Type: Expression(Integer)
 --E 1
 
---S 2 of 23
+--S 2 of 24
 tan(x) - 3.45*x
 --R 
 --R
@@ -41916,7 +43653,7 @@ tan(x) - 3.45*x
 --R                                                      Type: Expression(Float)
 --E 2
 
---S 3 of 23
+--S 3 of 24
 (tan sqrt 7 - sin sqrt 11)**2 / (4 - cos(x - y))
 --R 
 --R
@@ -41927,7 +43664,7 @@ tan(x) - 3.45*x
 --R                                                    Type: Expression(Integer)
 --E 3
 
---S 4 of 23
+--S 4 of 24
 log(exp  x)@Expression(Integer)
 --R 
 --R
@@ -41935,7 +43672,7 @@ log(exp  x)@Expression(Integer)
 --R                                                    Type: Expression(Integer)
 --E 4
 
---S 5 of 23
+--S 5 of 24
 log(exp  x)@Expression(Complex Integer)
 --R 
 --R
@@ -41944,7 +43681,7 @@ log(exp  x)@Expression(Complex Integer)
 --R                                           Type: Expression(Complex(Integer))
 --E 5
 
---S 6 of 23
+--S 6 of 24
 sqrt 3 + sqrt(2 + sqrt(-5))
 --R 
 --R
@@ -41954,7 +43691,7 @@ sqrt 3 + sqrt(2 + sqrt(-5))
 --R                                                        Type: AlgebraicNumber
 --E 6
 
---S 7 of 23
+--S 7 of 24
 % :: Expression Integer
 --R 
 --R
@@ -41964,7 +43701,7 @@ sqrt 3 + sqrt(2 + sqrt(-5))
 --R                                                    Type: Expression(Integer)
 --E 7
 
---S 8 of 23
+--S 8 of 24
 height mainKernel sin(x + 4)
 --R 
 --R
@@ -41972,7 +43709,7 @@ height mainKernel sin(x + 4)
 --R                                                        Type: PositiveInteger
 --E 8
 
---S 9 of 23
+--S 9 of 24
 e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) ) 
 --R 
 --R
@@ -41984,7 +43721,7 @@ e := (sin(x) - 4)**2 / ( 1 - 2*y*sqrt(- y) )
 --R                                                    Type: Expression(Integer)
 --E 9
 
---S 10 of 23
+--S 10 of 24
 numer e 
 --R 
 --R
@@ -41993,7 +43730,7 @@ numer e
 --R      Type: SparseMultivariatePolynomial(Integer,Kernel(Expression(Integer)))
 --E 10
 
---S 11 of 23
+--S 11 of 24
 denom e
 --R 
 --R
@@ -42002,7 +43739,7 @@ denom e
 --R      Type: SparseMultivariatePolynomial(Integer,Kernel(Expression(Integer)))
 --E 11
 
---S 12 of 23
+--S 12 of 24
 D(e, x) 
 --R 
 --R
@@ -42014,7 +43751,7 @@ D(e, x)
 --R                                                    Type: Expression(Integer)
 --E 12
 
---S 13 of 23
+--S 13 of 24
 D(e, [x, y], [1, 2])
 --R 
 --R
@@ -42036,7 +43773,7 @@ D(e, [x, y], [1, 2])
 --R                                                    Type: Expression(Integer)
 --E 13
 
---S 14 of 23
+--S 14 of 24
 complexNumeric(cos(2 - 3*%i))
 --R 
 --R
@@ -42044,7 +43781,7 @@ complexNumeric(cos(2 - 3*%i))
 --R                                                         Type: Complex(Float)
 --E 14
 
---S 15 of 23
+--S 15 of 24
 numeric(tan 3.8)
 --R 
 --R
@@ -42052,7 +43789,7 @@ numeric(tan 3.8)
 --R                                                                  Type: Float
 --E 15
 
---S 16 of 23
+--S 16 of 24
 e2 := cos(x**2 - y + 3) 
 --R 
 --R
@@ -42061,7 +43798,7 @@ e2 := cos(x**2 - y + 3)
 --R                                                    Type: Expression(Integer)
 --E 16
 
---S 17 of 23
+--S 17 of 24
 e3 := asin(e2) - %pi/2
 --R 
 --R
@@ -42070,7 +43807,7 @@ e3 := asin(e2) - %pi/2
 --R                                                    Type: Expression(Integer)
 --E 17
 
---S 18 of 23
+--S 18 of 24
 e3 :: Polynomial Integer
 --R 
 --R
@@ -42079,7 +43816,7 @@ e3 :: Polynomial Integer
 --R                                                    Type: Polynomial(Integer)
 --E 18
 
---S 19 of 23
+--S 19 of 24
 e3 :: DMP([x, y], Integer) 
 --R 
 --R
@@ -42088,7 +43825,7 @@ e3 :: DMP([x, y], Integer)
 --R                       Type: DistributedMultivariatePolynomial([x,y],Integer)
 --E 19
 
---S 20 of 23
+--S 20 of 24
 sin %pi
 --R 
 --R
@@ -42096,7 +43833,7 @@ sin %pi
 --R                                                    Type: Expression(Integer)
 --E 20
 
---S 21 of 23
+--S 21 of 24
 cos(%pi / 4)
 --R 
 --R
@@ -42107,7 +43844,7 @@ cos(%pi / 4)
 --R                                                    Type: Expression(Integer)
 --E 21
 
---S 22 of 23
+--S 22 of 24
 tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1 
 --R 
 --R
@@ -42116,7 +43853,7 @@ tan(x)**6 + 3*tan(x)**4 + 3*tan(x)**2 + 1
 --R                                                    Type: Expression(Integer)
 --E 22
 
---S 23 of 23
+--S 23 of 24
 simplify % 
 --R 
 --R
@@ -42126,6 +43863,242 @@ simplify %
 --R         cos(x)
 --R                                                    Type: Expression(Integer)
 --E 23
+
+--S 24 of 24
+)show Expression
+--R 
+--R Expression(R: OrderedSet)  is a domain constructor
+--R Abbreviation for Expression is EXPR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for EXPR 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> % if R has COMRING     ?*? : (R,%) -> % if R has COMRING
+--R ?**? : (%,%) -> % if R has INTDOM     ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R Beta : (%,%) -> % if R has INTDOM     Ci : % -> % if R has INTDOM
+--R D : (%,Symbol) -> % if R has RING     Ei : % -> % if R has INTDOM
+--R Gamma : % -> % if R has INTDOM        Si : % -> % if R has INTDOM
+--R abs : % -> % if R has INTDOM          acos : % -> % if R has INTDOM
+--R acosh : % -> % if R has INTDOM        acot : % -> % if R has INTDOM
+--R acoth : % -> % if R has INTDOM        acsc : % -> % if R has INTDOM
+--R acsch : % -> % if R has INTDOM        airyAi : % -> % if R has INTDOM
+--R airyBi : % -> % if R has INTDOM       applyQuote : (Symbol,List(%)) -> %
+--R applyQuote : (Symbol,%,%,%) -> %      applyQuote : (Symbol,%,%) -> %
+--R applyQuote : (Symbol,%) -> %          asec : % -> % if R has INTDOM
+--R asech : % -> % if R has INTDOM        asin : % -> % if R has INTDOM
+--R asinh : % -> % if R has INTDOM        atan : % -> % if R has INTDOM
+--R atanh : % -> % if R has INTDOM        belong? : BasicOperator -> Boolean
+--R box : List(%) -> %                    box : % -> %
+--R coerce : % -> % if R has INTDOM       coerce : R -> %
+--R coerce : Symbol -> %                  coerce : Kernel(%) -> %
+--R coerce : % -> OutputForm              cos : % -> % if R has INTDOM
+--R cosh : % -> % if R has INTDOM         cot : % -> % if R has INTDOM
+--R coth : % -> % if R has INTDOM         csc : % -> % if R has INTDOM
+--R csch : % -> % if R has INTDOM         digamma : % -> % if R has INTDOM
+--R dilog : % -> % if R has INTDOM        distribute : (%,%) -> %
+--R distribute : % -> %                   elt : (BasicOperator,List(%)) -> %
+--R elt : (BasicOperator,%,%,%) -> %      elt : (BasicOperator,%,%) -> %
+--R elt : (BasicOperator,%) -> %          erf : % -> % if R has INTDOM
+--R eval : (%,Symbol,(% -> %)) -> %       eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     eval : (%,Kernel(%),%) -> %
+--R exp : % -> % if R has INTDOM          factorial : % -> % if R has INTDOM
+--R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
+--R fresnelC : % -> % if R has INTDOM     fresnelS : % -> % if R has INTDOM
+--R gcd : (%,%) -> % if R has INTDOM      gcd : List(%) -> % if R has INTDOM
+--R ground : % -> R                       ground? : % -> Boolean
+--R hash : % -> SingleInteger             height : % -> NonNegativeInteger
+--R is? : (%,Symbol) -> Boolean           is? : (%,BasicOperator) -> Boolean
+--R kernel : (BasicOperator,%) -> %       kernels : % -> List(Kernel(%))
+--R latex : % -> String                   lcm : (%,%) -> % if R has INTDOM
+--R lcm : List(%) -> % if R has INTDOM    li : % -> % if R has INTDOM
+--R log : % -> % if R has INTDOM          map : ((% -> %),Kernel(%)) -> %
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R numerator : % -> % if R has RING      paren : List(%) -> %
+--R paren : % -> %                        pi : () -> % if R has INTDOM
+--R reduce : % -> % if R has INTDOM       retract : % -> R
+--R retract : % -> Symbol                 retract : % -> Kernel(%)
+--R rootOf : % -> % if R has INTDOM       sec : % -> % if R has INTDOM
+--R sech : % -> % if R has INTDOM         sin : % -> % if R has INTDOM
+--R sinh : % -> % if R has INTDOM         sqrt : % -> % if R has INTDOM
+--R subst : (%,Equation(%)) -> %          tan : % -> % if R has INTDOM
+--R tanh : % -> % if R has INTDOM         tower : % -> List(Kernel(%))
+--R variables : % -> List(Symbol)         zeroOf : % -> % if R has INTDOM
+--R ?~=? : (%,%) -> Boolean              
+--R ?*? : (PositiveInteger,%) -> % if R has ABELSG or R has LINEXP(INT) and R has RING
+--R ?*? : (NonNegativeInteger,%) -> % if R has ABELSG or R has LINEXP(INT) and R has RING
+--R ?*? : (Integer,%) -> % if R has ABELGRP or R has LINEXP(INT) and R has RING
+--R ?*? : (%,%) -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R ?*? : (%,Fraction(Integer)) -> % if R has INTDOM
+--R ?*? : (Fraction(Integer),%) -> % if R has INTDOM
+--R ?**? : (%,PositiveInteger) -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R ?**? : (%,NonNegativeInteger) -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R ?**? : (%,Integer) -> % if R has GROUP or R has INTDOM
+--R ?**? : (%,Fraction(Integer)) -> % if R has INTDOM
+--R ?+? : (%,%) -> % if R has ABELSG or R has LINEXP(INT) and R has RING
+--R -? : % -> % if R has ABELGRP or R has LINEXP(INT) and R has RING
+--R ?-? : (%,%) -> % if R has ABELGRP or R has LINEXP(INT) and R has RING
+--R ?/? : (%,%) -> % if R has GROUP or R has INTDOM
+--R ?/? : (SparseMultivariatePolynomial(R,Kernel(%)),SparseMultivariatePolynomial(R,Kernel(%))) -> % if R has INTDOM
+--R D : (%,List(Symbol)) -> % if R has RING
+--R D : (%,Symbol,NonNegativeInteger) -> % if R has RING
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has RING
+--R Gamma : (%,%) -> % if R has INTDOM
+--R 1 : () -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R 0 : () -> % if R has ABELSG or R has LINEXP(INT) and R has RING
+--R ?^? : (%,PositiveInteger) -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R ?^? : (%,NonNegativeInteger) -> % if R has LINEXP(INT) and R has RING or R has SGROUP
+--R ?^? : (%,Integer) -> % if R has GROUP or R has INTDOM
+--R applyQuote : (Symbol,%,%,%,%) -> %
+--R associates? : (%,%) -> Boolean if R has INTDOM
+--R besselI : (%,%) -> % if R has INTDOM
+--R besselJ : (%,%) -> % if R has INTDOM
+--R besselK : (%,%) -> % if R has INTDOM
+--R besselY : (%,%) -> % if R has INTDOM
+--R binomial : (%,%) -> % if R has INTDOM
+--R characteristic : () -> NonNegativeInteger if R has RING
+--R charthRoot : % -> Union(%,"failed") if R has CHARNZ
+--R coerce : Integer -> % if R has RETRACT(INT) or R has RING
+--R coerce : Fraction(Integer) -> % if R has INTDOM or R has RETRACT(FRAC(INT))
+--R coerce : Polynomial(R) -> % if R has RING
+--R coerce : Fraction(Polynomial(R)) -> % if R has INTDOM
+--R coerce : Fraction(Polynomial(Fraction(R))) -> % if R has INTDOM
+--R coerce : Polynomial(Fraction(R)) -> % if R has INTDOM
+--R coerce : Fraction(R) -> % if R has INTDOM
+--R coerce : SparseMultivariatePolynomial(R,Kernel(%)) -> % if R has RING
+--R coerce : AlgebraicNumber -> % if R has INTDOM and R has RETRACT(INT)
+--R commutator : (%,%) -> % if R has GROUP
+--R conjugate : (%,%) -> % if R has GROUP
+--R convert : % -> InputForm if R has KONVERT(INFORM)
+--R convert : Factored(%) -> % if R has INTDOM
+--R convert : % -> Pattern(Float) if R has KONVERT(PATTERN(FLOAT))
+--R convert : % -> Pattern(Integer) if R has KONVERT(PATTERN(INT))
+--R definingPolynomial : % -> % if $ has RING
+--R denom : % -> SparseMultivariatePolynomial(R,Kernel(%)) if R has INTDOM
+--R denominator : % -> % if R has INTDOM
+--R differentiate : (%,Symbol) -> % if R has RING
+--R differentiate : (%,List(Symbol)) -> % if R has RING
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has RING
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has RING
+--R divide : (%,%) -> Record(quotient: %,remainder: %) if R has INTDOM
+--R elt : (BasicOperator,%,%,%,%) -> %
+--R euclideanSize : % -> NonNegativeInteger if R has INTDOM
+--R eval : (%,Symbol,NonNegativeInteger,(% -> %)) -> % if R has RING
+--R eval : (%,Symbol,NonNegativeInteger,(List(%) -> %)) -> % if R has RING
+--R eval : (%,List(Symbol),List(NonNegativeInteger),List((List(%) -> %))) -> % if R has RING
+--R eval : (%,List(Symbol),List(NonNegativeInteger),List((% -> %))) -> % if R has RING
+--R eval : (%,List(BasicOperator),List(%),Symbol) -> % if R has KONVERT(INFORM)
+--R eval : (%,BasicOperator,%,Symbol) -> % if R has KONVERT(INFORM)
+--R eval : % -> % if R has KONVERT(INFORM)
+--R eval : (%,List(Symbol)) -> % if R has KONVERT(INFORM)
+--R eval : (%,Symbol) -> % if R has KONVERT(INFORM)
+--R eval : (%,BasicOperator,(% -> %)) -> %
+--R eval : (%,BasicOperator,(List(%) -> %)) -> %
+--R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
+--R eval : (%,List(BasicOperator),List((% -> %))) -> %
+--R eval : (%,Symbol,(List(%) -> %)) -> %
+--R eval : (%,List(Symbol),List((List(%) -> %))) -> %
+--R eval : (%,List(Symbol),List((% -> %))) -> %
+--R eval : (%,List(Kernel(%)),List(%)) -> %
+--R even? : % -> Boolean if $ has RETRACT(INT)
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has INTDOM
+--R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) if R has INTDOM
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") if R has INTDOM
+--R factor : % -> Factored(%) if R has INTDOM
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has GCDDOM and R has INTDOM
+--R factorials : % -> % if R has INTDOM
+--R factorials : (%,Symbol) -> % if R has INTDOM
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has INTDOM
+--R integral : (%,SegmentBinding(%)) -> % if R has INTDOM
+--R integral : (%,Symbol) -> % if R has INTDOM
+--R inv : % -> % if R has GROUP or R has INTDOM
+--R isExpt : (%,Symbol) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
+--R isExpt : (%,BasicOperator) -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has RING
+--R isExpt : % -> Union(Record(var: Kernel(%),exponent: Integer),"failed") if R has SGROUP
+--R isMult : % -> Union(Record(coef: Integer,var: Kernel(%)),"failed") if R has ABELSG
+--R isPlus : % -> Union(List(%),"failed") if R has ABELSG
+--R isPower : % -> Union(Record(val: %,exponent: Integer),"failed") if R has RING
+--R isTimes : % -> Union(List(%),"failed") if R has SGROUP
+--R kernel : (BasicOperator,List(%)) -> %
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has INTDOM
+--R mainKernel : % -> Union(Kernel(%),"failed")
+--R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has INTDOM
+--R nthRoot : (%,Integer) -> % if R has INTDOM
+--R number? : % -> Boolean if R has INTDOM
+--R numer : % -> SparseMultivariatePolynomial(R,Kernel(%)) if R has RING
+--R odd? : % -> Boolean if $ has RETRACT(INT)
+--R one? : % -> Boolean if R has LINEXP(INT) and R has RING or R has SGROUP
+--R operator : BasicOperator -> BasicOperator
+--R operators : % -> List(BasicOperator)
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if R has PATMAB(FLOAT)
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if R has PATMAB(INT)
+--R permutation : (%,%) -> % if R has INTDOM
+--R polygamma : (%,%) -> % if R has INTDOM
+--R prime? : % -> Boolean if R has INTDOM
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has INTDOM
+--R product : (%,Symbol) -> % if R has INTDOM
+--R product : (%,SegmentBinding(%)) -> % if R has INTDOM
+--R ?quo? : (%,%) -> % if R has INTDOM
+--R recip : % -> Union(%,"failed") if R has LINEXP(INT) and R has RING or R has SGROUP
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT) and R has RING
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT) and R has RING
+--R reducedSystem : Matrix(%) -> Matrix(R) if R has RING
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R)) if R has RING
+--R ?rem? : (%,%) -> % if R has INTDOM
+--R retract : % -> Fraction(Integer) if R has INTDOM and R has RETRACT(INT) or R has RETRACT(FRAC(INT))
+--R retract : % -> Polynomial(R) if R has RING
+--R retract : % -> Fraction(Polynomial(R)) if R has INTDOM
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retract : % -> AlgebraicNumber if R has INTDOM and R has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has INTDOM and R has RETRACT(INT) or R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(Polynomial(R),"failed") if R has RING
+--R retractIfCan : % -> Union(Fraction(Polynomial(R)),"failed") if R has INTDOM
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R retractIfCan : % -> Union(AlgebraicNumber,"failed") if R has INTDOM and R has RETRACT(INT)
+--R retractIfCan : % -> Union(R,"failed")
+--R retractIfCan : % -> Union(Symbol,"failed")
+--R retractIfCan : % -> Union(Kernel(%),"failed")
+--R rootOf : Polynomial(%) -> % if R has INTDOM
+--R rootOf : SparseUnivariatePolynomial(%) -> % if R has INTDOM
+--R rootOf : (SparseUnivariatePolynomial(%),Symbol) -> % if R has INTDOM
+--R rootOf : (%,Symbol) -> % if R has INTDOM
+--R rootsOf : Polynomial(%) -> List(%) if R has INTDOM
+--R rootsOf : SparseUnivariatePolynomial(%) -> List(%) if R has INTDOM
+--R rootsOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%) if R has INTDOM
+--R rootsOf : % -> List(%) if R has INTDOM
+--R rootsOf : (%,Symbol) -> List(%) if R has INTDOM
+--R sample : () -> % if R has ABELSG or R has LINEXP(INT) and R has RING or R has SGROUP
+--R simplifyPower : (%,Integer) -> % if R has INTDOM
+--R sizeLess? : (%,%) -> Boolean if R has INTDOM
+--R squareFree : % -> Factored(%) if R has INTDOM
+--R squareFreePart : % -> % if R has INTDOM
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has GCDDOM and R has INTDOM
+--R subst : (%,List(Kernel(%)),List(%)) -> %
+--R subst : (%,List(Equation(%))) -> %
+--R subtractIfCan : (%,%) -> Union(%,"failed") if R has ABELGRP or R has LINEXP(INT) and R has RING
+--R summation : (%,Symbol) -> % if R has INTDOM
+--R summation : (%,SegmentBinding(%)) -> % if R has INTDOM
+--R unit? : % -> Boolean if R has INTDOM
+--R unitCanonical : % -> % if R has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has INTDOM
+--R univariate : (%,Kernel(%)) -> Fraction(SparseUnivariatePolynomial(%)) if R has INTDOM
+--R zero? : % -> Boolean if R has ABELSG or R has LINEXP(INT) and R has RING
+--R zeroOf : Polynomial(%) -> % if R has INTDOM
+--R zeroOf : SparseUnivariatePolynomial(%) -> % if R has INTDOM
+--R zeroOf : (SparseUnivariatePolynomial(%),Symbol) -> % if R has INTDOM
+--R zeroOf : (%,Symbol) -> % if R has INTDOM
+--R zerosOf : Polynomial(%) -> List(%) if R has INTDOM
+--R zerosOf : SparseUnivariatePolynomial(%) -> List(%) if R has INTDOM
+--R zerosOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%) if R has INTDOM
+--R zerosOf : % -> List(%) if R has INTDOM
+--R zerosOf : (%,Symbol) -> List(%) if R has INTDOM
+--R
+--E 24
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -42989,34 +44962,35 @@ Expression(R:OrderedSet): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (FE,%) -> %                     ?*? : (%,FE) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?<? : (%,%) -> Boolean
+--R -? : % -> %                           ?/? : (%,%) -> % if FE has FIELD
+--R ?/? : (%,FE) -> % if FE has FIELD     ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> FE
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R complete : % -> %                     degree : % -> Fraction(Integer)
---R ?.? : (%,Fraction(Integer)) -> FE     hash : % -> SingleInteger
---R inv : % -> % if FE has FIELD          latex : % -> String
---R leadingCoefficient : % -> FE          leadingMonomial : % -> %
---R map : ((FE -> FE),%) -> %             max : (%,%) -> %
---R min : (%,%) -> %                      monomial? : % -> Boolean
---R one? : % -> Boolean                   order : % -> Fraction(Integer)
---R pole? : % -> Boolean                  recip : % -> Union(%,"failed")
---R reductum : % -> %                     sample : () -> %
---R variable : % -> Symbol                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> FE                      coerce : % -> % if FE has INTDOM
+--R coerce : FE -> % if FE has COMRING    coerce : Integer -> %
+--R coerce : % -> OutputForm              complete : % -> %
+--R degree : % -> Fraction(Integer)       ?.? : (%,Fraction(Integer)) -> FE
+--R gcd : (%,%) -> % if FE has FIELD      gcd : List(%) -> % if FE has FIELD
+--R hash : % -> SingleInteger             inv : % -> % if FE has FIELD
+--R latex : % -> String                   lcm : (%,%) -> % if FE has FIELD
+--R lcm : List(%) -> % if FE has FIELD    leadingCoefficient : % -> FE
+--R leadingMonomial : % -> %              map : ((FE -> FE),%) -> %
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R monomial? : % -> Boolean              one? : % -> Boolean
+--R order : % -> Fraction(Integer)        pole? : % -> Boolean
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R sample : () -> %                      variable : % -> Symbol
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if FE has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if FE has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if FE has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if FE has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if FE has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,%) -> % if FE has FIELD
---R ?/? : (%,FE) -> % if FE has FIELD
 --R D : % -> % if FE has *: (Fraction(Integer),FE) -> FE
 --R D : (%,NonNegativeInteger) -> % if FE has *: (Fraction(Integer),FE) -> FE
 --R D : (%,Symbol) -> % if FE has *: (Fraction(Integer),FE) -> FE and FE has PDRING(SYMBOL)
@@ -43024,7 +44998,6 @@ Expression(R:OrderedSet): Exports == Implementation where
 --R D : (%,Symbol,NonNegativeInteger) -> % if FE has *: (Fraction(Integer),FE) -> FE and FE has PDRING(SYMBOL)
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if FE has *: (Fraction(Integer),FE) -> FE and FE has PDRING(SYMBOL)
 --R ?^? : (%,Integer) -> % if FE has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if FE has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if FE has ALGEBRA(FRAC(INT))
 --R acot : % -> % if FE has ALGEBRA(FRAC(INT))
@@ -43042,9 +45015,7 @@ Expression(R:OrderedSet): Exports == Implementation where
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if FE has CHARNZ
 --R coefficient : (%,Fraction(Integer)) -> FE
---R coerce : % -> % if FE has INTDOM
 --R coerce : Fraction(Integer) -> % if FE has ALGEBRA(FRAC(INT))
---R coerce : FE -> % if FE has COMRING
 --R cos : % -> % if FE has ALGEBRA(FRAC(INT))
 --R cosh : % -> % if FE has ALGEBRA(FRAC(INT))
 --R cot : % -> % if FE has ALGEBRA(FRAC(INT))
@@ -43071,13 +45042,9 @@ Expression(R:OrderedSet): Exports == Implementation where
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %) if FE has FIELD
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed") if FE has FIELD
 --R factor : % -> Factored(%) if FE has FIELD
---R gcd : (%,%) -> % if FE has FIELD
---R gcd : List(%) -> % if FE has FIELD
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if FE has FIELD
 --R integrate : (%,Symbol) -> % if FE has integrate: (FE,Symbol) -> FE and FE has variables: FE -> List(Symbol) and FE has ALGEBRA(FRAC(INT)) or FE has ACFS(INT) and FE has ALGEBRA(FRAC(INT)) and FE has PRIMCAT and FE has TRANFUN
 --R integrate : % -> % if FE has ALGEBRA(FRAC(INT))
---R lcm : (%,%) -> % if FE has FIELD
---R lcm : List(%) -> % if FE has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if FE has FIELD
 --R log : % -> % if FE has ALGEBRA(FRAC(INT))
 --R monomial : (%,List(SingletonAsOrderedSet),List(Fraction(Integer))) -> %
@@ -44659,7 +46626,8 @@ e04ucfAnnaType(): NumericalOptimizationCategory == Result add
 )set message test on
 )set message auto off
 )clear all
---S 1 of 38
+
+--S 1 of 39
 g := factor(4312)
 --R 
 --R
@@ -44668,7 +46636,7 @@ g := factor(4312)
 --R                                                      Type: Factored(Integer)
 --E 1
 
---S 2 of 38
+--S 2 of 39
 unit(g)
 --R 
 --R
@@ -44676,7 +46644,7 @@ unit(g)
 --R                                                        Type: PositiveInteger
 --E 2
 
---S 3 of 38
+--S 3 of 39
 numberOfFactors(g)
 --R 
 --R
@@ -44684,7 +46652,7 @@ numberOfFactors(g)
 --R                                                        Type: PositiveInteger
 --E 3
 
---S 4 of 38
+--S 4 of 39
 [nthFactor(g,i) for i in 1..numberOfFactors(g)]
 --R 
 --R
@@ -44692,7 +46660,7 @@ numberOfFactors(g)
 --R                                                          Type: List(Integer)
 --E 4
 
---S 5 of 38
+--S 5 of 39
 [nthExponent(g,i) for i in 1..numberOfFactors(g)] 
 --R 
 --R
@@ -44700,7 +46668,7 @@ numberOfFactors(g)
 --R                                                          Type: List(Integer)
 --E 5
 
---S 6 of 38
+--S 6 of 39
 [nthFlag(g,i) for i in 1..numberOfFactors(g)] 
 --R 
 --R
@@ -44708,7 +46676,7 @@ numberOfFactors(g)
 --R                              Type: List(Union("nil","sqfr","irred","prime"))
 --E 6
 
---S 7 of 38
+--S 7 of 39
 factorList(g) 
 --R 
 --R
@@ -44718,7 +46686,7 @@ factorList(g)
 --RType: List(Record(flg: Union("nil","sqfr","irred","prime"),fctr: Integer,xpnt: Integer))
 --E 7
 
---S 8 of 38
+--S 8 of 39
 factors(g) 
 --R 
 --R
@@ -44727,7 +46695,7 @@ factors(g)
 --R                        Type: List(Record(factor: Integer,exponent: Integer))
 --E 8
 
---S 9 of 38
+--S 9 of 39
 first(%).factor 
 --R 
 --R
@@ -44735,7 +46703,7 @@ first(%).factor
 --R                                                        Type: PositiveInteger
 --E 9
 
---S 10 of 38
+--S 10 of 39
 g := factor(4312) 
 --R 
 --R
@@ -44744,7 +46712,7 @@ g := factor(4312)
 --R                                                      Type: Factored(Integer)
 --E 10
 
---S 11 of 38
+--S 11 of 39
 expand(g)
 --R 
 --R
@@ -44752,7 +46720,7 @@ expand(g)
 --R                                                        Type: PositiveInteger
 --E 11
 
---S 12 of 38
+--S 12 of 39
 reduce(*,[t.factor for t in factors(g)]) 
 --R 
 --R
@@ -44760,7 +46728,7 @@ reduce(*,[t.factor for t in factors(g)])
 --R                                                        Type: PositiveInteger
 --E 12
 
---S 13 of 38
+--S 13 of 39
 g := factor(4312) 
 --R 
 --R
@@ -44769,7 +46737,7 @@ g := factor(4312)
 --R                                                      Type: Factored(Integer)
 --E 13
 
---S 14 of 38
+--S 14 of 39
 f := factor(246960) 
 --R 
 --R
@@ -44778,7 +46746,7 @@ f := factor(246960)
 --R                                                      Type: Factored(Integer)
 --E 14
 
---S 15 of 38
+--S 15 of 39
 f * g 
 --R 
 --R
@@ -44787,7 +46755,7 @@ f * g
 --R                                                      Type: Factored(Integer)
 --E 15
 
---S 16 of 38
+--S 16 of 39
 f**500 
 --R 
 --R
@@ -44796,7 +46764,7 @@ f**500
 --R                                                      Type: Factored(Integer)
 --E 16
 
---S 17 of 38
+--S 17 of 39
 gcd(f,g) 
 --R 
 --R
@@ -44805,7 +46773,7 @@ gcd(f,g)
 --R                                                      Type: Factored(Integer)
 --E 17
 
---S 18 of 38
+--S 18 of 39
 lcm(f,g) 
 --R 
 --R
@@ -44814,7 +46782,7 @@ lcm(f,g)
 --R                                                      Type: Factored(Integer)
 --E 18
 
---S 19 of 38
+--S 19 of 39
 f + g 
 --R 
 --R
@@ -44823,7 +46791,7 @@ f + g
 --R                                                      Type: Factored(Integer)
 --E 19
 
---S 20 of 38
+--S 20 of 39
 f - g 
 --R 
 --R
@@ -44832,7 +46800,7 @@ f - g
 --R                                                      Type: Factored(Integer)
 --E 20
 
---S 21 of 38
+--S 21 of 39
 zero?(factor(0))
 --R 
 --R
@@ -44840,7 +46808,7 @@ zero?(factor(0))
 --R                                                                Type: Boolean
 --E 21
 
---S 22 of 38
+--S 22 of 39
 zero?(g) 
 --R 
 --R
@@ -44848,7 +46816,7 @@ zero?(g)
 --R                                                                Type: Boolean
 --E 22
 
---S 23 of 38
+--S 23 of 39
 one?(factor(1))
 --R 
 --R
@@ -44856,7 +46824,7 @@ one?(factor(1))
 --R                                                                Type: Boolean
 --E 23
 
---S 24 of 38
+--S 24 of 39
 one?(f) 
 --R 
 --R
@@ -44864,7 +46832,7 @@ one?(f)
 --R                                                                Type: Boolean
 --E 24
 
---S 25 of 38
+--S 25 of 39
 0$Factored(Integer)
 --R 
 --R
@@ -44872,7 +46840,7 @@ one?(f)
 --R                                                      Type: Factored(Integer)
 --E 25
 
---S 26 of 38
+--S 26 of 39
 1$Factored(Integer)
 --R 
 --R
@@ -44880,7 +46848,7 @@ one?(f)
 --R                                                      Type: Factored(Integer)
 --E 26
 
---S 27 of 38
+--S 27 of 39
 nilFactor(24,2) 
 --R 
 --R
@@ -44889,7 +46857,7 @@ nilFactor(24,2)
 --R                                                      Type: Factored(Integer)
 --E 27
 
---S 28 of 38
+--S 28 of 39
 nthFlag(%,1) 
 --R 
 --R
@@ -44897,7 +46865,7 @@ nthFlag(%,1)
 --R                                                       Type: Union("nil",...)
 --E 28
 
---S 29 of 38
+--S 29 of 39
 sqfrFactor(30,2)
 --R 
 --R
@@ -44906,7 +46874,7 @@ sqfrFactor(30,2)
 --R                                                      Type: Factored(Integer)
 --E 29
 
---S 30 of 38
+--S 30 of 39
 irreducibleFactor(13,10) 
 --R 
 --R
@@ -44915,7 +46883,7 @@ irreducibleFactor(13,10)
 --R                                                      Type: Factored(Integer)
 --E 30
 
---S 31 of 38
+--S 31 of 39
 primeFactor(11,5) 
 --R 
 --R
@@ -44924,7 +46892,7 @@ primeFactor(11,5)
 --R                                                      Type: Factored(Integer)
 --E 31
 
---S 32 of 38
+--S 32 of 39
 h := factor(-720) 
 --R 
 --R
@@ -44933,7 +46901,7 @@ h := factor(-720)
 --R                                                      Type: Factored(Integer)
 --E 32
 
---S 33 of 38
+--S 33 of 39
 h - makeFR(unit(h),factorList(h))
 --R 
 --R
@@ -44941,7 +46909,7 @@ h - makeFR(unit(h),factorList(h))
 --R                                                      Type: Factored(Integer)
 --E 33
 
---S 34 of 38
+--S 34 of 39
 p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63 
 --R 
 --R
@@ -44950,7 +46918,7 @@ p := (4*x*x-12*x+9)*y*y + (4*x*x-12*x+9)*y + 28*x*x - 84*x + 63
 --R                                                    Type: Polynomial(Integer)
 --E 34
 
---S 35 of 38
+--S 35 of 39
 fp := factor(p) 
 --R 
 --R
@@ -44959,7 +46927,7 @@ fp := factor(p)
 --R                                          Type: Factored(Polynomial(Integer))
 --E 35
 
---S 36 of 38
+--S 36 of 39
 D(p,x) 
 --R 
 --R
@@ -44968,7 +46936,7 @@ D(p,x)
 --R                                                    Type: Polynomial(Integer)
 --E 36
 
---S 37 of 38
+--S 37 of 39
 D(fp,x) 
 --R 
 --R
@@ -44977,13 +46945,106 @@ D(fp,x)
 --R                                          Type: Factored(Polynomial(Integer))
 --E 37
 
---S 38 of 38
+--S 38 of 39
 numberOfFactors(%) 
 --R 
 --R
 --R   (38)  3
 --R                                                        Type: PositiveInteger
 --E 38
+
+--S 39 of 39
+)show Factored
+--R 
+--R Factored(R: IntegralDomain)  is a domain constructor
+--R Abbreviation for Factored is FR 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FR 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R D : (%,(R -> R)) -> %                 D : % -> % if R has DIFRING
+--R 1 : () -> %                           0 : () -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : R -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              convert : % -> Float if R has REAL
+--R differentiate : (%,(R -> R)) -> %     expand : % -> R
+--R exponent : % -> Integer               gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    hash : % -> SingleInteger
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    map : ((R -> R),%) -> %
+--R nilFactor : (R,Integer) -> %          nthFactor : (%,Integer) -> R
+--R one? : % -> Boolean                   prime? : % -> Boolean if R has UFD
+--R primeFactor : (R,Integer) -> %        recip : % -> Union(%,"failed")
+--R retract : % -> R                      sample : () -> %
+--R sqfrFactor : (R,Integer) -> %         unit : % -> R
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R unitNormalize : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R D : (%,(R -> R),NonNegativeInteger) -> %
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
+--R D : (%,Symbol) -> % if R has PDRING(SYMBOL)
+--R D : (%,NonNegativeInteger) -> % if R has DIFRING
+--R characteristic : () -> NonNegativeInteger
+--R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT))
+--R convert : % -> DoubleFloat if R has REAL
+--R convert : % -> InputForm if R has KONVERT(INFORM)
+--R differentiate : (%,(R -> R),NonNegativeInteger) -> %
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,Symbol) -> % if R has PDRING(SYMBOL)
+--R differentiate : (%,NonNegativeInteger) -> % if R has DIFRING
+--R differentiate : % -> % if R has DIFRING
+--R ?.? : (%,%) -> % if R has ELTAB($,$)
+--R ?.? : (%,R) -> % if R has ELTAB(R,R)
+--R eval : (%,List(%),List(%)) -> % if R has EVALAB($)
+--R eval : (%,%,%) -> % if R has EVALAB($)
+--R eval : (%,Equation(%)) -> % if R has EVALAB($)
+--R eval : (%,List(Equation(%))) -> % if R has EVALAB($)
+--R eval : (%,List(Symbol),List(%)) -> % if R has IEVALAB(SYMBOL,$)
+--R eval : (%,Symbol,%) -> % if R has IEVALAB(SYMBOL,$)
+--R eval : (%,Symbol,R) -> % if R has IEVALAB(SYMBOL,R)
+--R eval : (%,List(Symbol),List(R)) -> % if R has IEVALAB(SYMBOL,R)
+--R eval : (%,List(Equation(R))) -> % if R has EVALAB(R)
+--R eval : (%,Equation(R)) -> % if R has EVALAB(R)
+--R eval : (%,R,R) -> % if R has EVALAB(R)
+--R eval : (%,List(R),List(R)) -> % if R has EVALAB(R)
+--R exquo : (%,%) -> Union(%,"failed")
+--R factor : % -> Factored(%) if R has UFD
+--R factorList : % -> List(Record(flg: Union("nil","sqfr","irred","prime"),fctr: R,xpnt: Integer))
+--R factors : % -> List(Record(factor: R,exponent: Integer))
+--R flagFactor : (R,Integer,Union("nil","sqfr","irred","prime")) -> %
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
+--R irreducibleFactor : (R,Integer) -> %
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
+--R makeFR : (R,List(Record(flg: Union("nil","sqfr","irred","prime"),fctr: R,xpnt: Integer))) -> %
+--R nthExponent : (%,Integer) -> Integer
+--R nthFlag : (%,Integer) -> Union("nil","sqfr","irred","prime")
+--R numberOfFactors : % -> NonNegativeInteger
+--R rational : % -> Fraction(Integer) if R has INS
+--R rational? : % -> Boolean if R has INS
+--R rationalIfCan : % -> Union(Fraction(Integer),"failed") if R has INS
+--R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retractIfCan : % -> Union(R,"failed")
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R squareFree : % -> Factored(%) if R has UFD
+--R squareFreePart : % -> % if R has UFD
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 39
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -45890,7 +47951,8 @@ Factored(R: IntegralDomain): Exports == Implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 12
+
+--S 1 of 13
 ifile:File List Integer:=open("jazz1","output") 
 --R 
 --R
@@ -45898,7 +47960,7 @@ ifile:File List Integer:=open("jazz1","output")
 --R                                                    Type: File(List(Integer))
 --E 1
 
---S 2 of 12
+--S 2 of 13
 write!(ifile, [-1,2,3])
 --R 
 --R
@@ -45906,7 +47968,7 @@ write!(ifile, [-1,2,3])
 --R                                                          Type: List(Integer)
 --E 2
 
---S 3 of 12
+--S 3 of 13
 write!(ifile, [10,-10,0,111])
 --R 
 --R
@@ -45914,7 +47976,7 @@ write!(ifile, [10,-10,0,111])
 --R                                                          Type: List(Integer)
 --E 3
 
---S 4 of 12
+--S 4 of 13
 write!(ifile, [7])
 --R 
 --R
@@ -45922,7 +47984,7 @@ write!(ifile, [7])
 --R                                                          Type: List(Integer)
 --E 4
 
---S 5 of 12
+--S 5 of 13
 reopen!(ifile, "input")
 --R 
 --R
@@ -45930,7 +47992,7 @@ reopen!(ifile, "input")
 --R                                                    Type: File(List(Integer))
 --E 5
 
---S 6 of 12
+--S 6 of 13
 read! ifile
 --R 
 --R
@@ -45938,7 +48000,7 @@ read! ifile
 --R                                                          Type: List(Integer)
 --E 6
 
---S 7 of 12
+--S 7 of 13
 read! ifile
 --R 
 --R
@@ -45946,7 +48008,7 @@ read! ifile
 --R                                                          Type: List(Integer)
 --E 7
 
---S 8 of 12
+--S 8 of 13
 readIfCan! ifile 
 --R 
 --R
@@ -45954,7 +48016,7 @@ readIfCan! ifile
 --R                                               Type: Union(List(Integer),...)
 --E 8
 
---S 9 of 12
+--S 9 of 13
 readIfCan! ifile
 --R 
 --R
@@ -45962,7 +48024,7 @@ readIfCan! ifile
 --R                                                    Type: Union("failed",...)
 --E 9
 
---S 10 of 12
+--S 10 of 13
 iomode ifile
 --R 
 --R
@@ -45970,7 +48032,7 @@ iomode ifile
 --R                                                                 Type: String
 --E 10
 
---S 11 of 12
+--S 11 of 13
 name ifile
 --R 
 --R
@@ -45978,13 +48040,34 @@ name ifile
 --R                                                               Type: FileName
 --E 11
 
---S 12 of 12
+--S 12 of 13
 close! ifile
 --R 
 --R
 --R   (12)  "jazz1"
 --R                                                    Type: File(List(Integer))
 --E 12
+
+--S 13 of 13
+)show File
+--R 
+--R File(S: SetCategory)  is a domain constructor
+--R Abbreviation for File is FILE 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FILE 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean                close! : % -> %
+--R coerce : % -> OutputForm              flush : % -> Void
+--R hash : % -> SingleInteger             iomode : % -> String
+--R latex : % -> String                   name : % -> FileName
+--R open : (FileName,String) -> %         open : FileName -> %
+--R read! : % -> S                        readIfCan! : % -> Union(S,"failed")
+--R reopen! : (%,String) -> %             write! : (%,S) -> S
+--R ?~=? : (%,%) -> Boolean              
+--R
+--E 13
+
 )system rm jazz1
 )spool
 )lisp (bye)
@@ -46201,13 +48284,14 @@ File(S:SetCategory): FileCategory(FileName, S) with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 18
+
+--S 1 of 19
 fn: FileName
 --R 
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 18
+--S 2 of 19
 fn := "fname.input"
 --R 
 --R
@@ -46215,7 +48299,7 @@ fn := "fname.input"
 --R                                                               Type: FileName
 --E 2
 
---S 3 of 18
+--S 3 of 19
 directory fn
 --R 
 --R
@@ -46223,7 +48307,7 @@ directory fn
 --R                                                                 Type: String
 --E 3
 
---S 4 of 18
+--S 4 of 19
 name fn
 --R 
 --R
@@ -46231,7 +48315,7 @@ name fn
 --R                                                                 Type: String
 --E 4
 
---S 5 of 18
+--S 5 of 19
 extension fn
 --R 
 --R
@@ -46239,7 +48323,7 @@ extension fn
 --R                                                                 Type: String
 --E 5
 
---S 6 of 18
+--S 6 of 19
 fn := filename("/tmp", "fname", "input") 
 --R 
 --R
@@ -46247,7 +48331,7 @@ fn := filename("/tmp", "fname", "input")
 --R                                                               Type: FileName
 --E 6
 
---S 7 of 18
+--S 7 of 19
 objdir := "/tmp"
 --R 
 --R
@@ -46255,7 +48339,7 @@ objdir := "/tmp"
 --R                                                                 Type: String
 --E 7
 
---S 8 of 18
+--S 8 of 19
 fn := filename(objdir, "table", "spad")
 --R 
 --R
@@ -46263,7 +48347,7 @@ fn := filename(objdir, "table", "spad")
 --R                                                               Type: FileName
 --E 8
 
---S 9 of 18
+--S 9 of 19
 fn := filename("", "letter", "") 
 --R 
 --R
@@ -46271,7 +48355,7 @@ fn := filename("", "letter", "")
 --R                                                               Type: FileName
 --E 9
 
---S 10 of 18
+--S 10 of 19
 exists? "/etc/passwd"
 --R 
 --R
@@ -46279,7 +48363,7 @@ exists? "/etc/passwd"
 --R                                                                Type: Boolean
 --E 10
 
---S 11 of 18
+--S 11 of 19
 readable? "/etc/passwd"
 --R 
 --R
@@ -46287,7 +48371,7 @@ readable? "/etc/passwd"
 --R                                                                Type: Boolean
 --E 11
 
---S 12 of 18
+--S 12 of 19
 readable? "/etc/security/passwd"
 --R 
 --R
@@ -46295,7 +48379,7 @@ readable? "/etc/security/passwd"
 --R                                                                Type: Boolean
 --E 12
 
---S 13 of 18
+--S 13 of 19
 readable? "/ect/passwd"
 --R 
 --R
@@ -46303,7 +48387,7 @@ readable? "/ect/passwd"
 --R                                                                Type: Boolean
 --E 13
 
---S 14 of 18
+--S 14 of 19
 writable? "/etc/passwd"
 --R 
 --R
@@ -46311,7 +48395,7 @@ writable? "/etc/passwd"
 --R                                                                Type: Boolean
 --E 14
 
---S 15 of 18
+--S 15 of 19
 writable? "/dev/null"
 --R 
 --R
@@ -46319,7 +48403,7 @@ writable? "/dev/null"
 --R                                                                Type: Boolean
 --E 15
 
---S 16 of 18
+--S 16 of 19
 writable? "/etc/DoesNotExist"
 --R 
 --R
@@ -46327,7 +48411,7 @@ writable? "/etc/DoesNotExist"
 --R                                                                Type: Boolean
 --E 16
 
---S 17 of 18
+--S 17 of 19
 writable? "/tmp/DoesNotExist"
 --R 
 --R
@@ -46335,13 +48419,34 @@ writable? "/tmp/DoesNotExist"
 --R                                                                Type: Boolean
 --E 17
 
---S 18 of 18
+--S 18 of 19
 fn := new(objdir, "xxx", "yy") 
 --R 
 --R
 --I   (18)  "/tmp/xxx1419.yy"
 --R                                                               Type: FileName
 --E 18
+
+--S 19 of 19
+)show FileName
+--R 
+--R FileName  is a domain constructor
+--R Abbreviation for FileName is FNAME 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FNAME 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean                coerce : % -> String
+--R coerce : String -> %                  coerce : % -> OutputForm
+--R directory : % -> String               exists? : % -> Boolean
+--R extension : % -> String               hash : % -> SingleInteger
+--R latex : % -> String                   name : % -> String
+--R new : (String,String,String) -> %     readable? : % -> Boolean
+--R writable? : % -> Boolean              ?~=? : (%,%) -> Boolean
+--R filename : (String,String,String) -> %
+--R
+--E 19
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -46548,21 +48653,20 @@ FileName(): FileNameCategory == add
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for FDIV 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R divisor : (R,UP,UP,UP,F) -> %         divisor : (F,F,Integer) -> %
---R divisor : (F,F) -> %                  divisor : R -> %
---R finiteBasis : % -> Vector(R)          hash : % -> SingleInteger
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              divisor : (R,UP,UP,UP,F) -> %
+--R divisor : (F,F,Integer) -> %          divisor : (F,F) -> %
+--R divisor : R -> %                      finiteBasis : % -> Vector(R)
+--R generator : % -> Union(R,"failed")    hash : % -> SingleInteger
 --R lSpaceBasis : % -> Vector(R)          latex : % -> String
 --R principal? : % -> Boolean             reduce : % -> %
 --R sample : () -> %                      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
 --R decompose : % -> Record(id: FractionalIdeal(UP,Fraction(UP),UPUP,R),principalPart: R)
 --R divisor : FractionalIdeal(UP,Fraction(UP),UPUP,R) -> %
---R generator : % -> Union(R,"failed")
 --R ideal : % -> FractionalIdeal(UP,Fraction(UP),UPUP,R)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -46773,38 +48877,36 @@ FiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 --R ?*? : (PrimeField(p),%) -> %          ?*? : (%,PrimeField(p)) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,PrimeField(p)) -> %          ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
---R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
---R coerce : PrimeField(p) -> %           coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R norm : % -> PrimeField(p)             one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R retract : % -> PrimeField(p)          sample : () -> %
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               trace : % -> PrimeField(p)
---R transcendent? : % -> Boolean          unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
+--R basis : () -> Vector(%)               coerce : PrimeField(p) -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      norm : % -> PrimeField(p)
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> PrimeField(p)
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R trace : % -> PrimeField(p)            transcendent? : % -> Boolean
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R D : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R D : % -> % if PrimeField(p) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R Frobenius : % -> % if PrimeField(p) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
@@ -47034,38 +49136,36 @@ FiniteField(p:PositiveInteger, n:PositiveInteger): _
 --R ?*? : (PrimeField(p),%) -> %          ?*? : (%,PrimeField(p)) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,PrimeField(p)) -> %          ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
---R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
---R coerce : PrimeField(p) -> %           coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R norm : % -> PrimeField(p)             one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R retract : % -> PrimeField(p)          sample : () -> %
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               trace : % -> PrimeField(p)
---R transcendent? : % -> Boolean          unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
+--R basis : () -> Vector(%)               coerce : PrimeField(p) -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      norm : % -> PrimeField(p)
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> PrimeField(p)
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R trace : % -> PrimeField(p)            transcendent? : % -> Boolean
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R D : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R D : % -> % if PrimeField(p) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R Frobenius : % -> % if PrimeField(p) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
@@ -47309,38 +49409,38 @@ FiniteFieldCyclicGroup(p,extdeg):_
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -47369,7 +49469,6 @@ FiniteFieldCyclicGroup(p,extdeg):_
 --R generator : () -> % if GF has FINITE
 --R getZechTable : () -> PrimitiveArray(SingleInteger)
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -47390,7 +49489,6 @@ FiniteFieldCyclicGroup(p,extdeg):_
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -47584,38 +49682,38 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -47644,7 +49742,6 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 --R generator : () -> % if GF has FINITE
 --R getZechTable : () -> PrimitiveArray(SingleInteger)
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -47665,7 +49762,6 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -48126,38 +50222,38 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -48185,7 +50281,6 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R generator : () -> % if GF has FINITE
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -48206,7 +50301,6 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -48388,38 +50482,38 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -48447,7 +50541,6 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R generator : () -> % if GF has FINITE
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -48468,7 +50561,6 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -48850,38 +50942,36 @@ FiniteFieldExtensionByPolynomial(GF:FiniteFieldCategory,_
 --R ?*? : (PrimeField(p),%) -> %          ?*? : (%,PrimeField(p)) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,PrimeField(p)) -> %          ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
 --R 0 : () -> %                           ?^? : (%,Integer) -> %
---R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
---R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
---R coerce : PrimeField(p) -> %           coerce : Fraction(Integer) -> %
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R norm : % -> PrimeField(p)             one? : % -> Boolean
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R retract : % -> PrimeField(p)          sample : () -> %
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               trace : % -> PrimeField(p)
---R transcendent? : % -> Boolean          unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
+--R basis : () -> Vector(%)               coerce : PrimeField(p) -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      norm : % -> PrimeField(p)
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> PrimeField(p)
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R trace : % -> PrimeField(p)            transcendent? : % -> Boolean
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R D : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R D : % -> % if PrimeField(p) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if PrimeField(p) has FINITE
 --R Frobenius : % -> % if PrimeField(p) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
@@ -49137,38 +51227,38 @@ FiniteFieldNormalBasis(p,extdeg):_
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -49198,7 +51288,6 @@ FiniteFieldNormalBasis(p,extdeg):_
 --R getMultiplicationMatrix : () -> Matrix(GF)
 --R getMultiplicationTable : () -> Vector(List(Record(value: GF,index: SingleInteger)))
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -49219,7 +51308,6 @@ FiniteFieldNormalBasis(p,extdeg):_
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -49423,38 +51511,38 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 --R ?*? : (GF,%) -> %                     ?*? : (%,GF) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,GF) -> %                     ?/? : (%,%) -> %
 --R ?=? : (%,%) -> Boolean                D : % -> % if GF has FINITE
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
---R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
---R basis : () -> Vector(%)               coerce : GF -> %
---R coerce : Fraction(Integer) -> %       coerce : % -> %
---R coerce : Integer -> %                 coerce : % -> OutputForm
---R coordinates : % -> Vector(GF)         degree : % -> PositiveInteger
---R dimension : () -> CardinalNumber      factor : % -> Factored(%)
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        algebraic? : % -> Boolean
+--R associates? : (%,%) -> Boolean        basis : () -> Vector(%)
+--R coerce : GF -> %                      coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              coordinates : % -> Vector(GF)
+--R degree : % -> PositiveInteger         dimension : () -> CardinalNumber
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         init : () -> % if GF has FINITE
 --R inv : % -> %                          latex : % -> String
 --R lcm : List(%) -> %                    lcm : (%,%) -> %
 --R norm : % -> GF                        one? : % -> Boolean
 --R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R represents : Vector(GF) -> %          retract : % -> GF
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> GF                       transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R random : () -> % if GF has FINITE     recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    represents : Vector(GF) -> %
+--R retract : % -> GF                     sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> GF
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R D : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if GF has FINITE
 --R Frobenius : % -> % if GF has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if GF has CHARNZ or GF has FINITE
@@ -49484,7 +51572,6 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 --R getMultiplicationMatrix : () -> Matrix(GF)
 --R getMultiplicationTable : () -> Vector(List(Record(value: GF,index: SingleInteger)))
 --R index : PositiveInteger -> % if GF has FINITE
---R init : () -> % if GF has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
@@ -49505,7 +51592,6 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 --R primitive? : % -> Boolean if GF has FINITE
 --R primitiveElement : () -> % if GF has FINITE
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
---R random : () -> % if GF has FINITE
 --R representationType : () -> Union("prime",polynomial,normal,cyclic) if GF has FINITE
 --R retractIfCan : % -> Union(GF,"failed")
 --R size : () -> NonNegativeInteger if GF has FINITE
@@ -50007,7 +52093,8 @@ divisor of the order of the multiplicative group"
 )set message test on
 )set message auto off
 )clear all
---S 1 of 16
+
+--S 1 of 17
 flexibleArray [i for i in 1..6]
 --R 
 --R
@@ -50015,7 +52102,7 @@ flexibleArray [i for i in 1..6]
 --R                                         Type: FlexibleArray(PositiveInteger)
 --E 1
 
---S 2 of 16
+--S 2 of 17
 f : FARRAY INT := new(6,0)
 --R 
 --R
@@ -50023,7 +52110,7 @@ f : FARRAY INT := new(6,0)
 --R                                                 Type: FlexibleArray(Integer)
 --E 2
 
---S 3 of 16
+--S 3 of 17
 for i in 1..6 repeat f.i := i; f
 --R 
 --R
@@ -50031,7 +52118,7 @@ for i in 1..6 repeat f.i := i; f
 --R                                                 Type: FlexibleArray(Integer)
 --E 3
 
---S 4 of 16
+--S 4 of 17
 physicalLength f
 --R 
 --R
@@ -50039,7 +52126,7 @@ physicalLength f
 --R                                                        Type: PositiveInteger
 --E 4
 
---S 5 of 16
+--S 5 of 17
 concat!(f,11)
 --R 
 --R
@@ -50047,7 +52134,7 @@ concat!(f,11)
 --R                                                 Type: FlexibleArray(Integer)
 --E 5
 
---S 6 of 16
+--S 6 of 17
 physicalLength f
 --R 
 --R
@@ -50055,7 +52142,7 @@ physicalLength f
 --R                                                        Type: PositiveInteger
 --E 6
 
---S 7 of 16
+--S 7 of 17
 physicalLength!(f,15)
 --R 
 --R
@@ -50063,7 +52150,7 @@ physicalLength!(f,15)
 --R                                                 Type: FlexibleArray(Integer)
 --E 7
 
---S 8 of 16
+--S 8 of 17
 concat!(f,f)
 --R 
 --R
@@ -50071,7 +52158,7 @@ concat!(f,f)
 --R                                                 Type: FlexibleArray(Integer)
 --E 8
 
---S 9 of 16
+--S 9 of 17
 insert!(22,f,1)
 --R 
 --R
@@ -50079,7 +52166,7 @@ insert!(22,f,1)
 --R                                                 Type: FlexibleArray(Integer)
 --E 9
 
---S 10 of 16
+--S 10 of 17
 g := f(10..)
 --R 
 --R
@@ -50087,7 +52174,7 @@ g := f(10..)
 --R                                                 Type: FlexibleArray(Integer)
 --E 10
 
---S 11 of 16
+--S 11 of 17
 insert!(g,f,1)
 --R 
 --R
@@ -50095,7 +52182,7 @@ insert!(g,f,1)
 --R                                                 Type: FlexibleArray(Integer)
 --E 11
 
---S 12 of 16
+--S 12 of 17
 merge!(sort! f, sort! g)
 --R 
 --R
@@ -50103,7 +52190,7 @@ merge!(sort! f, sort! g)
 --R                                                 Type: FlexibleArray(Integer)
 --E 12
 
---S 13 of 16
+--S 13 of 17
 removeDuplicates! f
 --R 
 --R
@@ -50111,7 +52198,7 @@ removeDuplicates! f
 --R                                                 Type: FlexibleArray(Integer)
 --E 13
 
---S 14 of 16
+--S 14 of 17
 select!(i +-> even? i,f)
 --R 
 --R
@@ -50119,7 +52206,7 @@ select!(i +-> even? i,f)
 --R                                                 Type: FlexibleArray(Integer)
 --E 14
 
---S 15 of 16
+--S 15 of 17
 physicalLength f
 --R 
 --R
@@ -50127,13 +52214,105 @@ physicalLength f
 --R                                                        Type: PositiveInteger
 --E 15
 
---S 16 of 16
+--S 16 of 17
 shrinkable(false)$FlexibleArray(Integer)
 --R 
 --R
 --R   (16)  true
 --R                                                                Type: Boolean
 --E 16
+
+--S 17 of 17
+)show FlexibleArray
+ FlexibleArray(S: Type)  is a domain constructor
+ Abbreviation for FlexibleArray is FARRAY 
+ This constructor is exposed in this frame.
+ Issue )edit bookvol10.3.pamphlet to see algebra source code for FARRAY 
+
+------------------------------- Operations --------------------------------
+ concat : List(%) -> %                 concat : (%,%) -> %
+ concat : (S,%) -> %                   concat : (%,S) -> %
+ concat! : (%,S) -> %                  concat! : (%,%) -> %
+ construct : List(S) -> %              copy : % -> %
+ delete : (%,Integer) -> %             delete! : (%,Integer) -> %
+ ?.? : (%,Integer) -> S                elt : (%,Integer,S) -> S
+ empty : () -> %                       empty? : % -> Boolean
+ entries : % -> List(S)                eq? : (%,%) -> Boolean
+ flexibleArray : List(S) -> %          index? : (Integer,%) -> Boolean
+ indices : % -> List(Integer)          insert : (%,%,Integer) -> %
+ insert : (S,%,Integer) -> %           insert! : (S,%,Integer) -> %
+ insert! : (%,%,Integer) -> %          latex : % -> String if S has SETCAT
+ map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+ max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
+ new : (NonNegativeInteger,S) -> %     physicalLength! : (%,Integer) -> %
+ qelt : (%,Integer) -> S               remove! : ((S -> Boolean),%) -> %
+ reverse : % -> %                      sample : () -> %
+ select! : ((S -> Boolean),%) -> %     shrinkable : Boolean -> Boolean
+ sort : % -> % if S has ORDSET         sort : (((S,S) -> Boolean),%) -> %
+ #? : % -> NonNegativeInteger if $ has finiteAggregate
+ ?<? : (%,%) -> Boolean if S has ORDSET
+ ?<=? : (%,%) -> Boolean if S has ORDSET
+ ?=? : (%,%) -> Boolean if S has SETCAT
+ ?>? : (%,%) -> Boolean if S has ORDSET
+ ?>=? : (%,%) -> Boolean if S has ORDSET
+ any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ coerce : % -> OutputForm if S has SETCAT
+ convert : % -> InputForm if S has KONVERT(INFORM)
+ copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
+ count : (S,%) -> NonNegativeInteger if $ has finiteAggregate and S has SETCAT
+ count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+ delete : (%,UniversalSegment(Integer)) -> %
+ delete! : (%,UniversalSegment(Integer)) -> %
+ ?.? : (%,UniversalSegment(Integer)) -> %
+ entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+ eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
+ eval : (%,S,S) -> % if S has EVALAB(S) and S has SETCAT
+ eval : (%,Equation(S)) -> % if S has EVALAB(S) and S has SETCAT
+ eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
+ every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
+ fill! : (%,S) -> % if $ has shallowlyMutable
+ find : ((S -> Boolean),%) -> Union(S,"failed")
+ first : % -> S if Integer has ORDSET
+ hash : % -> SingleInteger if S has SETCAT
+ less? : (%,NonNegativeInteger) -> Boolean
+ map! : ((S -> S),%) -> % if $ has shallowlyMutable
+ maxIndex : % -> Integer if Integer has ORDSET
+ member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
+ members : % -> List(S) if $ has finiteAggregate
+ merge : (%,%) -> % if S has ORDSET
+ merge : (((S,S) -> Boolean),%,%) -> %
+ merge! : (((S,S) -> Boolean),%,%) -> %
+ merge! : (%,%) -> % if S has ORDSET
+ minIndex : % -> Integer if Integer has ORDSET
+ more? : (%,NonNegativeInteger) -> Boolean
+ parts : % -> List(S) if $ has finiteAggregate
+ physicalLength : % -> NonNegativeInteger
+ position : (S,%,Integer) -> Integer if S has SETCAT
+ position : (S,%) -> Integer if S has SETCAT
+ position : ((S -> Boolean),%) -> Integer
+ qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
+ reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
+ reduce : (((S,S) -> S),%,S) -> S if $ has finiteAggregate
+ reduce : (((S,S) -> S),%,S,S) -> S if $ has finiteAggregate and S has SETCAT
+ remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
+ remove : (S,%) -> % if $ has finiteAggregate and S has SETCAT
+ remove! : (S,%) -> % if S has SETCAT
+ removeDuplicates : % -> % if $ has finiteAggregate and S has SETCAT
+ removeDuplicates! : % -> % if S has SETCAT
+ reverse! : % -> % if $ has shallowlyMutable
+ select : ((S -> Boolean),%) -> % if $ has finiteAggregate
+ setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
+ setelt : (%,Integer,S) -> S if $ has shallowlyMutable
+ size? : (%,NonNegativeInteger) -> Boolean
+ sort! : % -> % if $ has shallowlyMutable and S has ORDSET
+ sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
+ sorted? : % -> Boolean if S has ORDSET
+ sorted? : (((S,S) -> Boolean),%) -> Boolean
+ swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
+ ?~=? : (%,%) -> Boolean if S has SETCAT
+
+--E 17
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -50417,7 +52596,8 @@ parts of Axiom.
 )set message test on
 )set message auto off
 )clear all
---S 1 of 64
+
+--S 1 of 65
 1.234
 --R 
 --R
@@ -50425,7 +52605,7 @@ parts of Axiom.
 --R                                                                  Type: Float
 --E 1
 
---S 2 of 64
+--S 2 of 65
 1.234E2
 --R 
 --R
@@ -50433,7 +52613,7 @@ parts of Axiom.
 --R                                                                  Type: Float
 --E 2
 
---S 3 of 64
+--S 3 of 65
 sqrt(1.2 + 2.3 / 3.4 ** 4.5)
 --R 
 --R
@@ -50441,7 +52621,7 @@ sqrt(1.2 + 2.3 / 3.4 ** 4.5)
 --R                                                                  Type: Float
 --E 3
 
---S 4 of 64
+--S 4 of 65
 i := 3 :: Float
 --R 
 --R
@@ -50449,7 +52629,7 @@ i := 3 :: Float
 --R                                                                  Type: Float
 --E 4
 
---S 5 of 64
+--S 5 of 65
 i :: Integer
 --R 
 --R
@@ -50457,7 +52637,7 @@ i :: Integer
 --R                                                                Type: Integer
 --E 5
 
---S 6 of 64
+--S 6 of 65
 i :: Fraction Integer 
 --R 
 --R
@@ -50465,7 +52645,7 @@ i :: Fraction Integer
 --R                                                      Type: Fraction(Integer)
 --E 6
 
---S 7 of 64
+--S 7 of 65
 r := 3/7 :: Float 
 --R 
 --R
@@ -50473,7 +52653,7 @@ r := 3/7 :: Float
 --R                                                                  Type: Float
 --E 7
 
---S 8 of 64
+--S 8 of 65
 r :: Fraction Integer
 --R 
 --R
@@ -50483,7 +52663,7 @@ r :: Fraction Integer
 --R                                                      Type: Fraction(Integer)
 --E 8
 
---S 9 of 64
+--S 9 of 65
 r :: Integer
 --R 
 --R 
@@ -50493,7 +52673,7 @@ r :: Integer
 --R
 --E 9
 
---S 10 of 64
+--S 10 of 65
 truncate 3.6
 --R 
 --R
@@ -50501,7 +52681,7 @@ truncate 3.6
 --R                                                                  Type: Float
 --E 10
 
---S 11 of 64
+--S 11 of 65
 round 3.6
 --R 
 --R
@@ -50509,7 +52689,7 @@ round 3.6
 --R                                                                  Type: Float
 --E 11
 
---S 12 of 64
+--S 12 of 65
 truncate(-3.6)
 --R 
 --R
@@ -50517,7 +52697,7 @@ truncate(-3.6)
 --R                                                                  Type: Float
 --E 12
 
---S 13 of 64
+--S 13 of 65
 round(-3.6)
 --R 
 --R
@@ -50525,7 +52705,7 @@ round(-3.6)
 --R                                                                  Type: Float
 --E 13
 
---S 14 of 64
+--S 14 of 65
 fractionPart 3.6
 --R 
 --R
@@ -50533,7 +52713,7 @@ fractionPart 3.6
 --R                                                                  Type: Float
 --E 14
 
---S 15 of 64
+--S 15 of 65
 digits 40 
 --R 
 --R
@@ -50541,7 +52721,7 @@ digits 40
 --R                                                        Type: PositiveInteger
 --E 15
 
---S 16 of 64
+--S 16 of 65
 sqrt 0.2
 --R 
 --R
@@ -50549,7 +52729,7 @@ sqrt 0.2
 --R                                                                  Type: Float
 --E 16
 
---S 17 of 64
+--S 17 of 65
 pi()$Float
 --R 
 --R
@@ -50557,7 +52737,7 @@ pi()$Float
 --R                                                                  Type: Float
 --E 17
 
---S 18 of 64
+--S 18 of 65
 digits 500
 --R 
 --R
@@ -50565,7 +52745,7 @@ digits 500
 --R                                                        Type: PositiveInteger
 --E 18
 
---S 19 of 64
+--S 19 of 65
 pi()$Float
 --R 
 --R
@@ -50581,7 +52761,7 @@ pi()$Float
 --R                                                                  Type: Float
 --E 19
 
---S 20 of 64
+--S 20 of 65
 digits 20
 --R 
 --R
@@ -50589,7 +52769,7 @@ digits 20
 --R                                                        Type: PositiveInteger
 --E 20
 
---S 21 of 64
+--S 21 of 65
 outputSpacing 0; x := sqrt 0.2
 --R 
 --R
@@ -50597,7 +52777,7 @@ outputSpacing 0; x := sqrt 0.2
 --R                                                                  Type: Float
 --E 21
 
---S 22 of 64
+--S 22 of 65
 outputSpacing 5; x
 --R 
 --R
@@ -50605,7 +52785,7 @@ outputSpacing 5; x
 --R                                                                  Type: Float
 --E 22
 
---S 23 of 64
+--S 23 of 65
 y := x/10**10
 --R 
 --R
@@ -50613,7 +52793,7 @@ y := x/10**10
 --R                                                                  Type: Float
 --E 23
 
---S 24 of 64
+--S 24 of 65
 outputFloating(); x 
 --R 
 --R
@@ -50621,7 +52801,7 @@ outputFloating(); x
 --R                                                                  Type: Float
 --E 24
 
---S 25 of 64
+--S 25 of 65
 outputFixed(); y 
 --R 
 --R
@@ -50629,7 +52809,7 @@ outputFixed(); y
 --R                                                                  Type: Float
 --E 25
 
---S 26 of 64
+--S 26 of 65
 outputFloating 2; y 
 --R 
 --R
@@ -50637,7 +52817,7 @@ outputFloating 2; y
 --R                                                                  Type: Float
 --E 26
 
---S 27 of 64
+--S 27 of 65
 outputFixed 2; x 
 --R 
 --R
@@ -50645,13 +52825,13 @@ outputFixed 2; x
 --R                                                                  Type: Float
 --E 27
 
---S 28 of 64
+--S 28 of 65
 outputGeneral()
 --R 
 --R                                                                   Type: Void
 --E 28
 
---S 29 of 64
+--S 29 of 65
 a: Matrix Fraction Integer := matrix [ [1/(i+j+1) for j in 0..9] for i in 0..9]
 --R 
 --R
@@ -50697,7 +52877,7 @@ a: Matrix Fraction Integer := matrix [ [1/(i+j+1) for j in 0..9] for i in 0..9]
 --R                                              Type: Matrix(Fraction(Integer))
 --E 29
 
---S 30 of 64
+--S 30 of 65
 d:= determinant a
 --R 
 --R
@@ -50707,7 +52887,7 @@ d:= determinant a
 --R                                                      Type: Fraction(Integer)
 --E 30
 
---S 31 of 64
+--S 31 of 65
 d :: Float
 --R 
 --R
@@ -50715,7 +52895,7 @@ d :: Float
 --R                                                                  Type: Float
 --E 31
 
---S 32 of 64
+--S 32 of 65
 b: Matrix DoubleFloat := matrix [ [1/(i+j+1$DoubleFloat) for j in 0..9] for i in 0..9]
 --R 
 --R
@@ -50775,7 +52955,7 @@ b: Matrix DoubleFloat := matrix [ [1/(i+j+1$DoubleFloat) for j in 0..9] for i in
 --R                                                    Type: Matrix(DoubleFloat)
 --E 32
 
---S 33 of 64
+--S 33 of 65
 determinant b
 --R 
 --R
@@ -50783,7 +52963,7 @@ determinant b
 --R                                                            Type: DoubleFloat
 --E 33
 
---S 34 of 64
+--S 34 of 65
 digits 40 
 --R 
 --R
@@ -50791,7 +52971,7 @@ digits 40
 --R                                                        Type: PositiveInteger
 --E 34
 
---S 35 of 64
+--S 35 of 65
 c: Matrix Float := matrix [ [1/(i+j+1$Float) for j in 0..9] for i in 0..9]
 --R 
 --R
@@ -50885,7 +53065,7 @@ c: Matrix Float := matrix [ [1/(i+j+1$Float) for j in 0..9] for i in 0..9]
 --R                                                          Type: Matrix(Float)
 --E 35
 
---S 36 of 64
+--S 36 of 65
 determinant c
 --R 
 --R
@@ -50893,7 +53073,7 @@ determinant c
 --R                                                                  Type: Float
 --E 36
 
---S 37 of 64
+--S 37 of 65
 digits 20
 --R 
 --R
@@ -50903,13 +53083,13 @@ digits 20
 
 )clear all
 
---S 38 of 64
+--S 38 of 65
 outputFixed()
 --R 
 --R                                                                   Type: Void
 --E 38
 
---S 39 of 64
+--S 39 of 65
 a:=3.0
 --R 
 --R
@@ -50917,7 +53097,7 @@ a:=3.0
 --R                                                                  Type: Float
 --E 39
 
---S 40 of 64
+--S 40 of 65
 b:=3.1
 --R 
 --R
@@ -50925,7 +53105,7 @@ b:=3.1
 --R                                                                  Type: Float
 --E 40
 
---S 41 of 64
+--S 41 of 65
 c:=numeric pi()
 --R 
 --R
@@ -50933,7 +53113,7 @@ c:=numeric pi()
 --R                                                                  Type: Float
 --E 41
 
---S 42 of 64
+--S 42 of 65
 d:=0.0
 --R 
 --R
@@ -50941,13 +53121,13 @@ d:=0.0
 --R                                                                  Type: Float
 --E 42
 
---S 43 of 64
+--S 43 of 65
 outputFixed 2
 --R 
 --R                                                                   Type: Void
 --E 43
 
---S 44 of 64
+--S 44 of 65
 a
 --R 
 --R
@@ -50955,7 +53135,7 @@ a
 --R                                                                  Type: Float
 --E 44
 
---S 45 of 64
+--S 45 of 65
 b
 --R 
 --R
@@ -50963,7 +53143,7 @@ b
 --R                                                                  Type: Float
 --E 45
 
---S 46 of 64
+--S 46 of 65
 c
 --R 
 --R
@@ -50971,7 +53151,7 @@ c
 --R                                                                  Type: Float
 --E 46
 
---S 47 of 64
+--S 47 of 65
 d
 --R 
 --R
@@ -50979,13 +53159,13 @@ d
 --R                                                                  Type: Float
 --E 47
 
---S 48 of 64
+--S 48 of 65
 outputFixed 0
 --R 
 --R                                                                   Type: Void
 --E 48
 
---S 49 of 64
+--S 49 of 65
 a
 --R 
 --R
@@ -50993,7 +53173,7 @@ a
 --R                                                                  Type: Float
 --E 49
 
---S 50 of 64
+--S 50 of 65
 b
 --R 
 --R
@@ -51001,7 +53181,7 @@ b
 --R                                                                  Type: Float
 --E 50
 
---S 51 of 64
+--S 51 of 65
 c
 --R 
 --R
@@ -51009,7 +53189,7 @@ c
 --R                                                                  Type: Float
 --E 51
 
---S 52 of 64
+--S 52 of 65
 31.1
 --R 
 --R
@@ -51017,7 +53197,7 @@ c
 --R                                                                  Type: Float
 --E 52
 
---S 53 of 64
+--S 53 of 65
 310.1
 --R 
 --R
@@ -51025,7 +53205,7 @@ c
 --R                                                                  Type: Float
 --E 53
 
---S 54 of 64
+--S 54 of 65
 d
 --R 
 --R
@@ -51033,68 +53213,178 @@ d
 --R                                                                  Type: Float
 --E 54
 
---S 55 of 64
+--S 55 of 65
 outputFixed(0)
 --R                                                                   Type: Void
 --E 55
 
---S 56 of 64
+--S 56 of 65
 1.1
 --R
 --R   (19)  1.
 --R                                                                  Type: Float
 --E 56
 
---S 57 of 64
+--S 57 of 65
 3111.1
 --R
 --R   (20)  3111.
 --R                                                                  Type: Float
 --E 57
 
---S 58 of 64
+--S 58 of 65
 1234567890.1
 --R
 --R   (21)  12345 67890.
 --R                                                                  Type: Float
 --E 58
 
---S 59 of 64
+--S 59 of 65
 outputFixed(12)
 --R                                                                   Type: Void
 --E 59
 
---S 60 of 64
+--S 60 of 65
 1234567890.1
 --R
 --R   (23)  12345 67890.09999 99999 99
 --R                                                                  Type: Float
 --E 60
 
---S 61 of 64
+--S 61 of 65
 outputFixed(15)
 --R                                                                   Type: Void
 --E 61
 
---S 62 of 64
+--S 62 of 65
 1234567890.1
 --R
 --R   (25)  12345 67890.09999 99999 98545
 --R                                                                  Type: Float
 --E 62
 
---S 63 of 64
+--S 63 of 65
 outputFixed(2)
 --R                                                                   Type: Void
 --E 63
 
---S 64 of 64
+--S 64 of 65
 1234567890.1
 --R
 --R   (27)  12345 67890.10
 --R                                                                  Type: Float
 --E 64
 
+--S 65 of 65
+)show Float
+--R 
+--R Float  is a domain constructor
+--R Abbreviation for Float is FLOAT 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FLOAT 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,%) -> %                     ?**? : (%,Fraction(Integer)) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (%,Integer) -> %                ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               D : % -> %
+--R D : (%,NonNegativeInteger) -> %       OMwrite : (%,Boolean) -> String
+--R OMwrite : % -> String                 1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> %                          acos : % -> %
+--R acosh : % -> %                        acot : % -> %
+--R acoth : % -> %                        acsc : % -> %
+--R acsch : % -> %                        asec : % -> %
+--R asech : % -> %                        asin : % -> %
+--R asinh : % -> %                        associates? : (%,%) -> Boolean
+--R atan : (%,%) -> %                     atan : % -> %
+--R atanh : % -> %                        base : () -> PositiveInteger
+--R bits : () -> PositiveInteger          ceiling : % -> %
+--R coerce : % -> DoubleFloat             coerce : Fraction(Integer) -> %
+--R coerce : Integer -> %                 coerce : Fraction(Integer) -> %
+--R coerce : % -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              convert : DoubleFloat -> %
+--R convert : % -> InputForm              convert : % -> String
+--R convert : % -> Pattern(Float)         convert : % -> DoubleFloat
+--R convert : % -> Float                  cos : % -> %
+--R cosh : % -> %                         cot : % -> %
+--R coth : % -> %                         csc : % -> %
+--R csch : % -> %                         differentiate : % -> %
+--R digits : () -> PositiveInteger        exp : % -> %
+--R exp1 : () -> %                        exponent : % -> Integer
+--R factor : % -> Factored(%)             float : (Integer,Integer) -> %
+--R floor : % -> %                        fractionPart : % -> %
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      log : % -> %
+--R log10 : % -> %                        log10 : () -> %
+--R log2 : % -> %                         log2 : () -> %
+--R mantissa : % -> Integer               max : (%,%) -> %
+--R min : (%,%) -> %                      negative? : % -> Boolean
+--R norm : % -> %                         normalize : % -> %
+--R nthRoot : (%,Integer) -> %            one? : % -> Boolean
+--R order : % -> Integer                  outputFixed : () -> Void
+--R outputFloating : () -> Void           outputGeneral : () -> Void
+--R pi : () -> %                          positive? : % -> Boolean
+--R precision : () -> PositiveInteger     prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R relerror : (%,%) -> Integer           ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Integer
+--R round : % -> %                        sample : () -> %
+--R sec : % -> %                          sech : % -> %
+--R shift : (%,Integer) -> %              sign : % -> Integer
+--R sin : % -> %                          sinh : % -> %
+--R sizeLess? : (%,%) -> Boolean          sqrt : % -> %
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R tan : % -> %                          tanh : % -> %
+--R truncate : % -> %                     unit? : % -> Boolean
+--R unitCanonical : % -> %                wholePart : % -> Integer
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R OMwrite : (OpenMathDevice,%,Boolean) -> Void
+--R OMwrite : (OpenMathDevice,%) -> Void
+--R bits : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R characteristic : () -> NonNegativeInteger
+--R decreasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
+--R differentiate : (%,NonNegativeInteger) -> %
+--R digits : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R euclideanSize : % -> NonNegativeInteger
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R float : (Integer,Integer,PositiveInteger) -> %
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R increasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R max : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
+--R min : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R outputFixed : NonNegativeInteger -> Void
+--R outputFloating : NonNegativeInteger -> Void
+--R outputGeneral : NonNegativeInteger -> Void
+--R outputSpacing : NonNegativeInteger -> Void
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%)
+--R precision : PositiveInteger -> PositiveInteger if $ has arbitraryPrecision
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R rationalApproximation : (%,NonNegativeInteger,NonNegativeInteger) -> Fraction(Integer)
+--R rationalApproximation : (%,NonNegativeInteger) -> Fraction(Integer)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed")
+--R retractIfCan : % -> Union(Integer,"failed")
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 65
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -52552,14 +54842,15 @@ Float():
 --R ?=? : (%,%) -> Boolean                assign : (Symbol,String) -> %
 --R block : List(%) -> %                  call : String -> %
 --R coerce : % -> OutputForm              comment : List(String) -> %
---R comment : String -> %                 cond : (Switch,%,%) -> %
---R cond : (Switch,%) -> %                continue : SingleInteger -> %
---R getCode : % -> SExpression            goto : SingleInteger -> %
---R hash : % -> SingleInteger             latex : % -> String
---R printCode : % -> Void                 returns : Expression(Float) -> %
---R returns : () -> %                     save : () -> %
---R stop : () -> %                        whileLoop : (Switch,%) -> %
---R ?~=? : (%,%) -> Boolean              
+--R comment : String -> %                 common : (Symbol,List(Symbol)) -> %
+--R cond : (Switch,%,%) -> %              cond : (Switch,%) -> %
+--R continue : SingleInteger -> %         getCode : % -> SExpression
+--R goto : SingleInteger -> %             hash : % -> SingleInteger
+--R latex : % -> String                   printCode : % -> Void
+--R repeatUntilLoop : (Switch,%) -> %     returns : Expression(Integer) -> %
+--R returns : Expression(Float) -> %      returns : () -> %
+--R save : () -> %                        stop : () -> %
+--R whileLoop : (Switch,%) -> %           ?~=? : (%,%) -> Boolean
 --R assign : (Symbol,List(Polynomial(Integer)),Expression(Complex(Float))) -> %
 --R assign : (Symbol,List(Polynomial(Integer)),Expression(Float)) -> %
 --R assign : (Symbol,List(Polynomial(Integer)),Expression(Integer)) -> %
@@ -52591,14 +54882,11 @@ Float():
 --R assign : (Symbol,Expression(MachineFloat)) -> %
 --R assign : (Symbol,Expression(MachineInteger)) -> %
 --R code : % -> Union(nullBranch: null,assignmentBranch: Record(var: Symbol,arrayIndex: List(Polynomial(Integer)),rand: Record(ints2Floats?: Boolean,expr: OutputForm)),arrayAssignmentBranch: Record(var: Symbol,rand: OutputForm,ints2Floats?: Boolean),conditionalBranch: Record(switch: Switch,thenClause: %,elseClause: %),returnBranch: Record(empty?: Boolean,value: Record(ints2Floats?: Boolean,expr: OutputForm)),blockBranch: List(%),commentBranch: List(String),callBranch: String,forBranch: Record(range: SegmentBinding(Polynomial(Integer)),span: Polynomial(Integer),body: %),labelBranch: SingleInteger,loopBranch: Record(switch: Switch,body: %),commonBranch: Record(name: Symbol,contents: List(Symbol)),printBranch: List(OutputForm))
---R common : (Symbol,List(Symbol)) -> %
 --R forLoop : (SegmentBinding(Polynomial(Integer)),Polynomial(Integer),%) -> %
 --R forLoop : (SegmentBinding(Polynomial(Integer)),%) -> %
 --R operation : % -> Union(Null: null,Assignment: assignment,Conditional: conditional,Return: return,Block: block,Comment: comment,Call: call,For: for,While: while,Repeat: repeat,Goto: goto,Continue: continue,ArrayAssignment: arrayAssignment,Save: save,Stop: stop,Common: common,Print: print)
 --R printStatement : List(OutputForm) -> %
---R repeatUntilLoop : (Switch,%) -> %
 --R returns : Expression(Complex(Float)) -> %
---R returns : Expression(Integer) -> %
 --R returns : Expression(MachineComplex) -> %
 --R returns : Expression(MachineInteger) -> %
 --R returns : Expression(MachineFloat) -> %
@@ -53269,32 +55557,37 @@ FortranCode(): public == private where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for FEXPR 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?*? : (Integer,%) -> %
---R ?*? : (%,%) -> %                      ?*? : (%,R) -> %
---R ?*? : (R,%) -> %                      ?**? : (%,PositiveInteger) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (%,%) -> %
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?**? : (%,NonNegativeInteger) -> %
 --R ?+? : (%,%) -> %                      -? : % -> %
 --R ?-? : (%,%) -> %                      ?<? : (%,%) -> Boolean
 --R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R D : (%,Symbol) -> %                   D : (%,List(Symbol)) -> %
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        abs : % -> %
---R acos : % -> %                         asin : % -> %
---R atan : % -> %                         belong? : BasicOperator -> Boolean
---R box : List(%) -> %                    box : % -> %
---R coerce : % -> Expression(R)           coerce : Integer -> %
---R coerce : R -> %                       coerce : Kernel(%) -> %
---R coerce : % -> OutputForm              cos : % -> %
---R cosh : % -> %                         differentiate : (%,Symbol) -> %
---R distribute : (%,%) -> %               distribute : % -> %
---R elt : (BasicOperator,%,%) -> %        elt : (BasicOperator,%) -> %
---R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R ?^? : (%,PositiveInteger) -> %        ?^? : (%,NonNegativeInteger) -> %
+--R abs : % -> %                          acos : % -> %
+--R asin : % -> %                         atan : % -> %
+--R belong? : BasicOperator -> Boolean    box : List(%) -> %
+--R box : % -> %                          coerce : % -> Expression(R)
+--R coerce : Integer -> %                 coerce : R -> %
+--R coerce : Kernel(%) -> %               coerce : % -> OutputForm
+--R cos : % -> %                          cosh : % -> %
+--R differentiate : (%,Symbol) -> %       distribute : (%,%) -> %
+--R distribute : % -> %                   elt : (BasicOperator,List(%)) -> %
+--R elt : (BasicOperator,%,%,%) -> %      elt : (BasicOperator,%,%) -> %
+--R elt : (BasicOperator,%) -> %          eval : (%,Symbol,(% -> %)) -> %
+--R eval : (%,List(%),List(%)) -> %       eval : (%,%,%) -> %
+--R eval : (%,Equation(%)) -> %           eval : (%,List(Equation(%))) -> %
 --R eval : (%,Kernel(%),%) -> %           exp : % -> %
 --R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
 --R hash : % -> SingleInteger             height : % -> NonNegativeInteger
---R is? : (%,Symbol) -> Boolean           kernel : (BasicOperator,%) -> %
---R kernels : % -> List(Kernel(%))        latex : % -> String
---R log : % -> %                          log10 : % -> %
+--R is? : (%,Symbol) -> Boolean           is? : (%,BasicOperator) -> Boolean
+--R kernel : (BasicOperator,%) -> %       kernels : % -> List(Kernel(%))
+--R latex : % -> String                   log : % -> %
+--R log10 : % -> %                        map : ((% -> %),Kernel(%)) -> %
 --R max : (%,%) -> %                      min : (%,%) -> %
 --R one? : % -> Boolean                   paren : List(%) -> %
 --R paren : % -> %                        pi : () -> %
@@ -53304,38 +55597,28 @@ FortranCode(): public == private where
 --R sin : % -> %                          sinh : % -> %
 --R sqrt : % -> %                         subst : (%,Equation(%)) -> %
 --R tan : % -> %                          tanh : % -> %
---R tower : % -> List(Kernel(%))          useNagFunctions : () -> Boolean
---R variables : % -> List(Symbol)         zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R tower : % -> List(Kernel(%))          useNagFunctions : Boolean -> Boolean
+--R useNagFunctions : () -> Boolean       variables : % -> List(Symbol)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R D : (%,Symbol,NonNegativeInteger) -> %
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R characteristic : () -> NonNegativeInteger
 --R definingPolynomial : % -> % if $ has RING
 --R differentiate : (%,List(Symbol)) -> %
 --R differentiate : (%,Symbol,NonNegativeInteger) -> %
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> %
---R elt : (BasicOperator,List(%)) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,%,%,%) -> %
 --R eval : (%,BasicOperator,(% -> %)) -> %
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R eval : (%,List(Kernel(%)),List(%)) -> %
 --R even? : % -> Boolean if $ has RETRACT(INT)
---R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R odd? : % -> Boolean if $ has RETRACT(INT)
 --R operator : BasicOperator -> BasicOperator
@@ -53359,7 +55642,6 @@ FortranCode(): public == private where
 --R subst : (%,List(Kernel(%)),List(%)) -> %
 --R subst : (%,List(Equation(%))) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
---R useNagFunctions : Boolean -> Boolean
 --R
 --E 1
 
@@ -54112,6 +56394,7 @@ FortranProgram(name,returnType,arguments,symbols): Exports == Implement where
 
 --S 1 of 1
 )show FortranScalarType
+--R 
 --R FortranScalarType  is a domain constructor
 --R Abbreviation for FortranScalarType is FST 
 --R This constructor is exposed in this frame.
@@ -54330,6 +56613,7 @@ FortranScalarType() : exports == implementation where
 
 --S 1 of 1
 )show FortranTemplate
+--R 
 --R FortranTemplate  is a domain constructor
 --R Abbreviation for FortranTemplate is FTEM 
 --R This constructor is exposed in this frame.
@@ -54339,12 +56623,12 @@ FortranScalarType() : exports == implementation where
 --R ?=? : (%,%) -> Boolean                close! : % -> %
 --R coerce : % -> OutputForm              flush : % -> Void
 --R fortranCarriageReturn : () -> Void    fortranLiteral : String -> Void
---R hash : % -> SingleInteger             iomode : % -> String
---R latex : % -> String                   name : % -> FileName
---R open : (FileName,String) -> %         open : FileName -> %
---R read! : % -> String                   reopen! : (%,String) -> %
---R write! : (%,String) -> String         ?~=? : (%,%) -> Boolean
---R fortranLiteralLine : String -> Void
+--R fortranLiteralLine : String -> Void   hash : % -> SingleInteger
+--R iomode : % -> String                  latex : % -> String
+--R name : % -> FileName                  open : (FileName,String) -> %
+--R open : FileName -> %                  read! : % -> String
+--R reopen! : (%,String) -> %             write! : (%,String) -> String
+--R ?~=? : (%,%) -> Boolean              
 --R processTemplate : FileName -> FileName
 --R processTemplate : (FileName,FileName) -> FileName
 --R
@@ -54808,20 +57092,19 @@ FourierComponent(E:OrderedSet):
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : FourierComponent(E) -> %
---R coerce : R -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   makeCos : (E,R) -> %
---R makeSin : (E,R) -> %                  one? : % -> Boolean
---R recip : % -> Union(%,"failed")        sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : FourierComponent(E) -> %     coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R makeCos : (E,R) -> %                  makeSin : (E,R) -> %
+--R one? : % -> Boolean                   recip : % -> Union(%,"failed")
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -54957,7 +57240,8 @@ FourierSeries(R:Join(CommutativeRing,Algebra(Fraction Integer)),
 )set message test on
 )set message auto off
 )clear all
---S 1 of 12
+
+--S 1 of 13
 a := 11/12
 --R 
 --R
@@ -54967,7 +57251,7 @@ a := 11/12
 --R                                                      Type: Fraction(Integer)
 --E 1
 
---S 2 of 12
+--S 2 of 13
 b := 23/24
 --R 
 --R
@@ -54977,7 +57261,7 @@ b := 23/24
 --R                                                      Type: Fraction(Integer)
 --E 2
 
---S 3 of 12
+--S 3 of 13
 3 - a*b**2 + a + b/a
 --R 
 --R
@@ -54987,7 +57271,7 @@ b := 23/24
 --R                                                      Type: Fraction(Integer)
 --E 3
 
---S 4 of 12
+--S 4 of 13
 numer(a)
 --R 
 --R
@@ -54995,7 +57279,7 @@ numer(a)
 --R                                                        Type: PositiveInteger
 --E 4
 
---S 5 of 12
+--S 5 of 13
 denom(b)
 --R 
 --R
@@ -55003,7 +57287,7 @@ denom(b)
 --R                                                        Type: PositiveInteger
 --E 5
 
---S 6 of 12
+--S 6 of 13
 r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)
 --R 
 --R
@@ -55015,7 +57299,7 @@ r := (x**2 + 2*x + 1)/(x**2 - 2*x + 1)
 --R                                          Type: Fraction(Polynomial(Integer))
 --E 6
 
---S 7 of 12
+--S 7 of 13
 factor(r)
 --R 
 --R
@@ -55027,7 +57311,7 @@ factor(r)
 --R                                Type: Factored(Fraction(Polynomial(Integer)))
 --E 7
 
---S 8 of 12
+--S 8 of 13
 map(factor,r)
 --R 
 --R
@@ -55039,7 +57323,7 @@ map(factor,r)
 --R                                Type: Fraction(Factored(Polynomial(Integer)))
 --E 8
 
---S 9 of 12
+--S 9 of 13
 continuedFraction(7/12)
 --R 
 --R
@@ -55049,7 +57333,7 @@ continuedFraction(7/12)
 --R                                             Type: ContinuedFraction(Integer)
 --E 9
 
---S 10 of 12
+--S 10 of 13
 partialFraction(7,12)
 --R 
 --R
@@ -55060,7 +57344,7 @@ partialFraction(7,12)
 --R                                               Type: PartialFraction(Integer)
 --E 10
 
---S 11 of 12
+--S 11 of 13
 g := 2/3 + 4/5*%i
 --R 
 --R
@@ -55070,7 +57354,7 @@ g := 2/3 + 4/5*%i
 --R                                             Type: Complex(Fraction(Integer))
 --E 11
 
---S 12 of 12
+--S 12 of 13
 g :: FRAC COMPLEX INT
 --R 
 --R
@@ -55080,6 +57364,122 @@ g :: FRAC COMPLEX INT
 --R                                             Type: Fraction(Complex(Integer))
 --E 12
 
+--S 13 of 13
+)show Fraction
+--R 
+--R Fraction(S: IntegralDomain)  is a domain constructor
+--R Abbreviation for Fraction is FRAC 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FRAC 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,S) -> %                      ?*? : (S,%) -> %
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (S,S) -> %                      ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                D : (%,(S -> S)) -> %
+--R D : % -> % if S has DIFRING           1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R abs : % -> % if S has OINTDOM         associates? : (%,%) -> Boolean
+--R ceiling : % -> S if S has INS         coerce : S -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R convert : % -> Float if S has REAL    denom : % -> S
+--R denominator : % -> %                  differentiate : (%,(S -> S)) -> %
+--R factor : % -> Factored(%)             floor : % -> S if S has INS
+--R gcd : List(%) -> %                    gcd : (%,%) -> %
+--R hash : % -> SingleInteger             init : () -> % if S has STEP
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R map : ((S -> S),%) -> %               max : (%,%) -> % if S has ORDSET
+--R min : (%,%) -> % if S has ORDSET      numer : % -> S
+--R numerator : % -> %                    one? : % -> Boolean
+--R prime? : % -> Boolean                 ?quo? : (%,%) -> %
+--R random : () -> % if S has INS         recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> S
+--R sample : () -> %                      sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R wholePart : % -> S if S has EUCDOM    zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?<? : (%,%) -> Boolean if S has ORDSET
+--R ?<=? : (%,%) -> Boolean if S has ORDSET
+--R ?>? : (%,%) -> Boolean if S has ORDSET
+--R ?>=? : (%,%) -> Boolean if S has ORDSET
+--R D : (%,(S -> S),NonNegativeInteger) -> %
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if S has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if S has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if S has PDRING(SYMBOL)
+--R D : (%,Symbol) -> % if S has PDRING(SYMBOL)
+--R D : (%,NonNegativeInteger) -> % if S has DIFRING
+--R OMwrite : (OpenMathDevice,%,Boolean) -> Void if S has INS and S has OM
+--R OMwrite : (OpenMathDevice,%) -> Void if S has INS and S has OM
+--R OMwrite : (%,Boolean) -> String if S has INS and S has OM
+--R OMwrite : % -> String if S has INS and S has OM
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and S has PFECAT or S has CHARNZ
+--R coerce : Symbol -> % if S has RETRACT(SYMBOL)
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and S has PFECAT
+--R convert : % -> DoubleFloat if S has REAL
+--R convert : % -> InputForm if S has KONVERT(INFORM)
+--R convert : % -> Pattern(Float) if S has KONVERT(PATTERN(FLOAT))
+--R convert : % -> Pattern(Integer) if S has KONVERT(PATTERN(INT))
+--R differentiate : (%,(S -> S),NonNegativeInteger) -> %
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,Symbol) -> % if S has PDRING(SYMBOL)
+--R differentiate : (%,NonNegativeInteger) -> % if S has DIFRING
+--R differentiate : % -> % if S has DIFRING
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R ?.? : (%,S) -> % if S has ELTAB(S,S)
+--R euclideanSize : % -> NonNegativeInteger
+--R eval : (%,Symbol,S) -> % if S has IEVALAB(SYMBOL,S)
+--R eval : (%,List(Symbol),List(S)) -> % if S has IEVALAB(SYMBOL,S)
+--R eval : (%,List(Equation(S))) -> % if S has EVALAB(S)
+--R eval : (%,Equation(S)) -> % if S has EVALAB(S)
+--R eval : (%,S,S) -> % if S has EVALAB(S)
+--R eval : (%,List(S),List(S)) -> % if S has EVALAB(S)
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if S has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if S has PFECAT
+--R fractionPart : % -> % if S has EUCDOM
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R negative? : % -> Boolean if S has OINTDOM
+--R nextItem : % -> Union(%,"failed") if S has STEP
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if S has PATMAB(FLOAT)
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if S has PATMAB(INT)
+--R positive? : % -> Boolean if S has OINTDOM
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R reducedSystem : Matrix(%) -> Matrix(S)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(S),vec: Vector(S))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if S has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if S has LINEXP(INT)
+--R retract : % -> Integer if S has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if S has RETRACT(INT)
+--R retract : % -> Symbol if S has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(Integer,"failed") if S has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if S has RETRACT(INT)
+--R retractIfCan : % -> Union(Symbol,"failed") if S has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(S,"failed")
+--R sign : % -> Integer if S has OINTDOM
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if S has PFECAT
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if S has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R
+--E 13
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -55645,9 +58045,10 @@ Fraction(S: IntegralDomain): QuotientFieldCategory S with
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?**? : (%,Integer) -> %
---R ?**? : (%,PositiveInteger) -> %       ?/? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R basis : % -> Vector(A)                coerce : % -> OutputForm
 --R commutator : (%,%) -> %               conjugate : (%,%) -> %
 --R denom : % -> R                        hash : % -> SingleInteger
@@ -55656,8 +58057,6 @@ Fraction(S: IntegralDomain): QuotientFieldCategory S with
 --R norm : % -> F                         numer : % -> Vector(A)
 --R one? : % -> Boolean                   recip : % -> Union(%,"failed")
 --R sample : () -> %                      ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R randomLC : (NonNegativeInteger,Vector(A)) -> A
 --R
 --E 1
@@ -55907,16 +58306,15 @@ FractionalIdeal(R, F, UP, A): Exports == Implementation where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for FRMOD 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (%,%) -> %                      ?**? : (%,PositiveInteger) -> %
---R ?=? : (%,%) -> Boolean                1 : () -> %
+--R ?*? : (%,%) -> %                      ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?=? : (%,%) -> Boolean
+--R 1 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        basis : % -> Vector(A)
 --R coerce : % -> OutputForm              hash : % -> SingleInteger
 --R latex : % -> String                   module : Vector(A) -> %
 --R norm : % -> F                         one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        sample : () -> %
 --R ?~=? : (%,%) -> Boolean              
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R module : FractionalIdeal(R,F,UP,A) -> % if A has RETRACT(F)
 --R
 --E 1
@@ -56095,26 +58493,24 @@ FramedModule(R, F, UP, A, ibasis): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,S) -> %                ?*? : (%,Integer) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
---R ?-? : (%,%) -> %                      -? : % -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (S,%) -> Integer        coerce : S -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   mapGen : ((S -> S),%) -> %
---R nthCoef : (%,Integer) -> Integer      nthFactor : (%,Integer) -> S
---R retract : % -> S                      sample : () -> %
---R size : % -> NonNegativeInteger        zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (S,%) -> Integer
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R mapGen : ((S -> S),%) -> %            max : (%,%) -> % if S has ORDSET
+--R min : (%,%) -> % if S has ORDSET      nthCoef : (%,Integer) -> Integer
+--R nthFactor : (%,Integer) -> S          retract : % -> S
+--R sample : () -> %                      size : % -> NonNegativeInteger
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
 --R ?>? : (%,%) -> Boolean if S has ORDSET
 --R ?>=? : (%,%) -> Boolean if S has ORDSET
 --R highCommonTerms : (%,%) -> % if Integer has OAMON
 --R mapCoef : ((Integer -> Integer),%) -> %
---R max : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R retractIfCan : % -> Union(S,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R terms : % -> List(Record(gen: S,exp: Integer))
@@ -56253,16 +58649,15 @@ FreeAbelianGroup(S:SetCategory): Exports == Implementation where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for FAMONOID 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (NonNegativeInteger,S) -> %     ?*? : (PositiveInteger,%) -> %
---R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : S -> %                       coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R mapGen : ((S -> S),%) -> %            nthFactor : (%,Integer) -> S
---R retract : % -> S                      sample : () -> %
---R size : % -> NonNegativeInteger        zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,S) -> %     ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : S -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   mapGen : ((S -> S),%) -> %
+--R nthFactor : (%,Integer) -> S          retract : % -> S
+--R sample : () -> %                      size : % -> NonNegativeInteger
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R coefficient : (S,%) -> NonNegativeInteger
 --R highCommonTerms : (%,%) -> % if NonNegativeInteger has OAMON
 --R mapCoef : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
@@ -56369,9 +58764,10 @@ FreeAbelianMonoid(S: SetCategory):
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,S) -> %                      ?*? : (S,%) -> %
 --R ?*? : (%,%) -> %                      ?**? : (S,Integer) -> %
---R ?**? : (%,Integer) -> %               ?**? : (%,PositiveInteger) -> %
---R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
---R 1 : () -> %                           ?^? : (%,Integer) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R ?^? : (%,Integer) -> %                ?^? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,PositiveInteger) -> %        coerce : S -> %
 --R coerce : % -> OutputForm              commutator : (%,%) -> %
 --R conjugate : (%,%) -> %                hash : % -> SingleInteger
@@ -56381,8 +58777,6 @@ FreeAbelianMonoid(S: SetCategory):
 --R recip : % -> Union(%,"failed")        retract : % -> S
 --R sample : () -> %                      size : % -> NonNegativeInteger
 --R ?~=? : (%,%) -> Boolean              
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R factors : % -> List(Record(gen: S,exp: Integer))
 --R mapExpon : ((Integer -> Integer),%) -> %
 --R retractIfCan : % -> Union(S,"failed")
@@ -56528,6 +58922,7 @@ FreeGroup(S: SetCategory): Join(Group, RetractableTo S) with
 
 --S 1 of 1
 )show FreeModule
+--R 
 --R FreeModule(R: Ring,S: OrderedSet)  is a domain constructor
 --R Abbreviation for FreeModule is FM 
 --R This constructor is not exposed in this frame.
@@ -56535,16 +58930,16 @@ FreeGroup(S: SetCategory): Join(Group, RetractableTo S) with
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R leadingCoefficient : % -> R           leadingSupport : % -> S
---R map : ((R -> R),%) -> %               monomial : (R,S) -> %
---R reductum : % -> %                     sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   leadingCoefficient : % -> R
+--R leadingSupport : % -> S               map : ((R -> R),%) -> %
+--R monomial : (R,S) -> %                 reductum : % -> %
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -56684,19 +59079,19 @@ FreeModule(R:Ring,S:OrderedSet):
 --R------------------------------- Operations --------------------------------
 --R ?*? : (S,R) -> %                      ?*? : (R,S) -> %
 --R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coefficient : (%,S) -> R
---R coefficients : % -> List(R)           coerce : S -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> R
---R leadingMonomial : % -> S              map : ((R -> R),%) -> %
---R monom : (S,R) -> %                    monomial? : % -> Boolean
---R monomials : % -> List(%)              reductum : % -> %
---R retract : % -> S                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coefficient : (%,S) -> R              coefficients : % -> List(R)
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> R           leadingMonomial : % -> S
+--R map : ((R -> R),%) -> %               monom : (S,R) -> %
+--R monomial? : % -> Boolean              monomials : % -> List(%)
+--R reductum : % -> %                     retract : % -> S
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R leadingTerm : % -> Record(k: S,c: R)
 --R listOfTerms : % -> List(Record(k: S,c: R))
 --R numberOfMonomials : % -> NonNegativeInteger
@@ -56878,33 +59273,29 @@ FreeModule1(R:Ring,S:OrderedSet): FMcat == FMdef where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,S) -> %                      ?*? : (S,%) -> %
---R ?*? : (%,%) -> %                      ?**? : (%,PositiveInteger) -> %
+--R ?*? : (%,%) -> %                      ?**? : (S,NonNegativeInteger) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R ?^? : (%,PositiveInteger) -> %        coerce : S -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R hclf : (%,%) -> %                     hcrf : (%,%) -> %
---R latex : % -> String                   mapGen : ((S -> S),%) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R hash : % -> SingleInteger             hclf : (%,%) -> %
+--R hcrf : (%,%) -> %                     latex : % -> String
+--R lquo : (%,%) -> Union(%,"failed")     mapGen : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
 --R nthFactor : (%,Integer) -> S          one? : % -> Boolean
 --R recip : % -> Union(%,"failed")        retract : % -> S
---R sample : () -> %                      size : % -> NonNegativeInteger
---R ?~=? : (%,%) -> Boolean              
---R ?**? : (S,NonNegativeInteger) -> %
---R ?**? : (%,NonNegativeInteger) -> %
+--R rquo : (%,%) -> Union(%,"failed")     sample : () -> %
+--R size : % -> NonNegativeInteger        ?~=? : (%,%) -> Boolean
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
 --R ?>? : (%,%) -> Boolean if S has ORDSET
 --R ?>=? : (%,%) -> Boolean if S has ORDSET
---R ?^? : (%,NonNegativeInteger) -> %
 --R divide : (%,%) -> Union(Record(lm: %,rm: %),"failed")
 --R factors : % -> List(Record(gen: S,exp: NonNegativeInteger))
---R lquo : (%,%) -> Union(%,"failed")
 --R mapExpon : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
---R max : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R nthExpon : (%,Integer) -> NonNegativeInteger
 --R overlap : (%,%) -> Record(lm: %,mm: %,rm: %)
 --R retractIfCan : % -> Union(S,"failed")
---R rquo : (%,%) -> Union(%,"failed")
 --R
 --E 1
 
@@ -57174,6 +59565,7 @@ FreeMonoid(S: SetCategory): FMcategory == FMdefinition where
 
 --S 1 of 1
 )show FreeNilpotentLie
+--R 
 --R FreeNilpotentLie(n: NonNegativeInteger,class: NonNegativeInteger,R: CommutativeRing)  is a domain constructor
 --R Abbreviation for FreeNilpotentLie is FNLA 
 --R This constructor is exposed in this frame.
@@ -57182,18 +59574,17 @@ FreeMonoid(S: SetCategory): FMcategory == FMdefinition where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           antiCommutator : (%,%) -> %
---R associator : (%,%,%) -> %             coerce : % -> OutputForm
---R commutator : (%,%) -> %               deepExpand : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R sample : () -> %                      shallowExpand : % -> OutputForm
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R dimension : () -> NonNegativeInteger
---R generator : NonNegativeInteger -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R antiCommutator : (%,%) -> %           associator : (%,%,%) -> %
+--R coerce : % -> OutputForm              commutator : (%,%) -> %
+--R deepExpand : % -> OutputForm          dimension : () -> NonNegativeInteger
+--R generator : NonNegativeInteger -> %   hash : % -> SingleInteger
+--R latex : % -> String                   sample : () -> %
+--R shallowExpand : % -> OutputForm       zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R leftPower : (%,PositiveInteger) -> %
 --R plenaryPower : (%,PositiveInteger) -> %
 --R rightPower : (%,PositiveInteger) -> %
@@ -57381,7 +59772,8 @@ FreeNilpotentLie(n:NNI,class:NNI,R: CommutativeRing): Export == Implement where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 16
+
+--S 1 of 17
 Fx := FRAC UP(x, FRAC INT)
 --R 
 --R
@@ -57389,7 +59781,7 @@ Fx := FRAC UP(x, FRAC INT)
 --R                                                                 Type: Domain
 --E 1
 
---S 2 of 16
+--S 2 of 17
 f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2) 
 --R 
 --R
@@ -57400,7 +59792,7 @@ f : Fx := 36 / (x**5-2*x**4-2*x**3+4*x**2+x-2)
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 2
 
---S 3 of 16
+--S 3 of 17
 g := fullPartialFraction f 
 --R 
 --R
@@ -57412,7 +59804,7 @@ g := fullPartialFraction f
 --RType: FullPartialFractionExpansion(Fraction(Integer),UnivariatePolynomial(x,Fraction(Integer)))
 --E 3
 
---S 4 of 16
+--S 4 of 17
 g :: Fx
 --R 
 --R
@@ -57423,7 +59815,7 @@ g :: Fx
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 4
 
---S 5 of 16
+--S 5 of 17
 g5 := D(g, 5)
 --R 
 --R
@@ -57435,7 +59827,7 @@ g5 := D(g, 5)
 --RType: FullPartialFractionExpansion(Fraction(Integer),UnivariatePolynomial(x,Fraction(Integer)))
 --E 5
 
---S 6 of 16
+--S 6 of 17
 f5 := D(f, 5)
 --R 
 --R
@@ -57457,7 +59849,7 @@ f5 := D(f, 5)
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 6
 
---S 7 of 16
+--S 7 of 17
 g5::Fx - f5
 --R 
 --R
@@ -57465,7 +59857,7 @@ g5::Fx - f5
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 7
 
---S 8 of 16
+--S 8 of 17
 f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)
 --R 
 --R
@@ -57477,7 +59869,7 @@ f : Fx := (x**5 * (x-1)) / ((x**2 + x + 1)**2 * (x-2)**3)
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 8
 
---S 9 of 16
+--S 9 of 17
 g := fullPartialFraction f 
 --R 
 --R
@@ -57500,7 +59892,7 @@ g := fullPartialFraction f
 --RType: FullPartialFractionExpansion(Fraction(Integer),UnivariatePolynomial(x,Fraction(Integer)))
 --E 9
 
---S 10 of 16
+--S 10 of 17
 g :: Fx - f
 --R 
 --R
@@ -57508,7 +59900,7 @@ g :: Fx - f
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 10
 
---S 11 of 16
+--S 11 of 17
 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) 
 --R 
 --R
@@ -57520,7 +59912,7 @@ 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)
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 11
 
---S 12 of 16
+--S 12 of 17
 g := fullPartialFraction f
 --R 
 --R
@@ -57534,7 +59926,7 @@ g := fullPartialFraction f
 --RType: FullPartialFractionExpansion(Fraction(Integer),UnivariatePolynomial(x,Fraction(Integer)))
 --E 12
 
---S 13 of 16
+--S 13 of 17
 g :: Fx - f 
 --R 
 --R
@@ -57542,7 +59934,7 @@ g :: Fx - f
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 13
 
---S 14 of 16
+--S 14 of 17
 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)
 --R 
 --R
@@ -57560,7 +59952,7 @@ f:Fx := x**3 / (x**21 + 2*x**20 + 4*x**19 + 7*x**18 + 10*x**17 + 17*x**16 + 22*x
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 14
 
---S 15 of 16
+--S 15 of 17
 g := fullPartialFraction f 
 --R 
 --R
@@ -57619,13 +60011,36 @@ g := fullPartialFraction f
 --RType: FullPartialFractionExpansion(Fraction(Integer),UnivariatePolynomial(x,Fraction(Integer)))
 --E 15
 
---S 16 of 16
+--S 16 of 17
 g :: Fx - f
 --R 
 --R
 --R   (16)  0
 --R                    Type: Fraction(UnivariatePolynomial(x,Fraction(Integer)))
 --E 16
+
+--S 17 of 17
+)show FullPartialFractionExpansion
+--R 
+--R FullPartialFractionExpansion(F: Join(Field,CharacteristicZero),UP: UnivariatePolynomialCategory(F))  is a domain constructor
+--R Abbreviation for FullPartialFractionExpansion is FPARFRAC 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for FPARFRAC 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?+? : (UP,%) -> %                     ?=? : (%,%) -> Boolean
+--R D : (%,NonNegativeInteger) -> %       D : % -> %
+--R coerce : % -> OutputForm              convert : % -> Fraction(UP)
+--R differentiate : % -> %                hash : % -> SingleInteger
+--R latex : % -> String                   polyPart : % -> UP
+--R ?~=? : (%,%) -> Boolean              
+--R construct : List(Record(exponent: NonNegativeInteger,center: UP,num: UP)) -> %
+--R differentiate : (%,NonNegativeInteger) -> %
+--R fracPart : % -> List(Record(exponent: NonNegativeInteger,center: UP,num: UP))
+--R fullPartialFraction : Fraction(UP) -> %
+--R
+--E 17
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -58141,13 +60556,14 @@ FunctionCalled(f:Symbol): SetCategory with
 )set message test on
 )set message auto off
 )clear all
---S 1 of 10
+
+--S 1 of 11
 (d1,d2,d3) : DMP([z,y,x],FRAC INT) 
 --R 
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 10
+--S 2 of 11
 d1 := -4*z + 4*y**2*x + 16*x**2 + 1 
 --R 
 --R
@@ -58156,7 +60572,7 @@ d1 := -4*z + 4*y**2*x + 16*x**2 + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 2
 
---S 3 of 10
+--S 3 of 11
 d2 := 2*z*y**2 + 4*x + 1 
 --R 
 --R
@@ -58165,7 +60581,7 @@ d2 := 2*z*y**2 + 4*x + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 3
 
---S 4 of 10
+--S 4 of 11
 d3 := 2*z*x**2 - 2*y**2 - x 
 --R 
 --R
@@ -58174,7 +60590,7 @@ d3 := 2*z*x**2 - 2*y**2 - x
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 4
 
---S 5 of 10
+--S 5 of 11
 groebner [d1,d2,d3]
 --R 
 --R
@@ -58191,13 +60607,13 @@ groebner [d1,d2,d3]
 --R     Type: List(DistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 5
 
---S 6 of 10
+--S 6 of 11
 (n1,n2,n3) : HDMP([z,y,x],FRAC INT)
 --R 
 --R                                                                   Type: Void
 --E 6
 
---S 7 of 10
+--S 7 of 11
 n1 := d1
 --R 
 --R
@@ -58206,7 +60622,7 @@ n1 := d1
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 7
 
---S 8 of 10
+--S 8 of 11
 n2 := d2
 --R 
 --R
@@ -58215,7 +60631,7 @@ n2 := d2
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 8
 
---S 9 of 10
+--S 9 of 11
 n3 := d3
 --R 
 --R
@@ -58224,7 +60640,7 @@ n3 := d3
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 9
 
---S 10 of 10
+--S 10 of 11
 groebner [n1,n2,n3]
 --R 
 --R
@@ -58240,6 +60656,131 @@ groebner [n1,n2,n3]
 --R                     4     2
 --RType: List(HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 10
+
+--S 11 of 11
+)show GeneralDistributedMultivariatePolynomial
+--R 
+--R GeneralDistributedMultivariatePolynomial(vl: List(Symbol),R: Ring,E: DirectProductCategory(#(vl),NonNegativeInteger))  is a domain constructor
+--R Abbreviation for GeneralDistributedMultivariatePolynomial is GDMP 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for GDMP 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficient : (%,E) -> R
+--R coefficients : % -> List(R)           coerce : % -> % if R has INTDOM
+--R coerce : R -> %                       coerce : Integer -> %
+--R coerce : % -> OutputForm              content : % -> R if R has GCDDOM
+--R degree : % -> E                       eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leadingCoefficient : % -> R
+--R leadingMonomial : % -> %              map : ((R -> R),%) -> %
+--R mapExponents : ((E -> E),%) -> %      max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      minimumDegree : % -> E
+--R monomial : (R,E) -> %                 monomial? : % -> Boolean
+--R monomials : % -> List(%)              one? : % -> Boolean
+--R pomopo! : (%,R,E,%) -> %              primitiveMonomials : % -> List(%)
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R reorder : (%,List(Integer)) -> %      retract : % -> R
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
+--R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
+--R ?<? : (%,%) -> Boolean if R has ORDSET
+--R ?<=? : (%,%) -> Boolean if R has ORDSET
+--R ?>? : (%,%) -> Boolean if R has ORDSET
+--R ?>=? : (%,%) -> Boolean if R has ORDSET
+--R D : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R D : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R D : (%,List(OrderedVariableList(vl))) -> %
+--R D : (%,OrderedVariableList(vl)) -> %
+--R associates? : (%,%) -> Boolean if R has INTDOM
+--R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and R has PFECAT or R has CHARNZ
+--R coefficient : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R coefficient : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R coerce : Fraction(Integer) -> % if R has ALGEBRA(FRAC(INT)) or R has RETRACT(FRAC(INT))
+--R coerce : OrderedVariableList(vl) -> %
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and R has PFECAT
+--R content : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R convert : % -> InputForm if OrderedVariableList(vl) has KONVERT(INFORM) and R has KONVERT(INFORM)
+--R convert : % -> Pattern(Integer) if OrderedVariableList(vl) has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
+--R convert : % -> Pattern(Float) if OrderedVariableList(vl) has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
+--R degree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R degree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R differentiate : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R differentiate : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R differentiate : (%,List(OrderedVariableList(vl))) -> %
+--R differentiate : (%,OrderedVariableList(vl)) -> %
+--R discriminant : (%,OrderedVariableList(vl)) -> % if R has COMRING
+--R eval : (%,List(OrderedVariableList(vl)),List(%)) -> %
+--R eval : (%,OrderedVariableList(vl),%) -> %
+--R eval : (%,List(OrderedVariableList(vl)),List(R)) -> %
+--R eval : (%,OrderedVariableList(vl),R) -> %
+--R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R factor : % -> Factored(%) if R has PFECAT
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
+--R isExpt : % -> Union(Record(var: OrderedVariableList(vl),exponent: NonNegativeInteger),"failed")
+--R isPlus : % -> Union(List(%),"failed")
+--R isTimes : % -> Union(List(%),"failed")
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
+--R mainVariable : % -> Union(OrderedVariableList(vl),"failed")
+--R minimumDegree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R minimumDegree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R monicDivide : (%,%,OrderedVariableList(vl)) -> Record(quotient: %,remainder: %)
+--R monomial : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R monomial : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R multivariate : (SparseUnivariatePolynomial(%),OrderedVariableList(vl)) -> %
+--R multivariate : (SparseUnivariatePolynomial(R),OrderedVariableList(vl)) -> %
+--R numberOfMonomials : % -> NonNegativeInteger
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if OrderedVariableList(vl) has PATMAB(INT) and R has PATMAB(INT)
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if OrderedVariableList(vl) has PATMAB(FLOAT) and R has PATMAB(FLOAT)
+--R prime? : % -> Boolean if R has PFECAT
+--R primitivePart : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R primitivePart : % -> % if R has GCDDOM
+--R reducedSystem : Matrix(%) -> Matrix(R)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
+--R resultant : (%,%,OrderedVariableList(vl)) -> % if R has COMRING
+--R retract : % -> OrderedVariableList(vl)
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(OrderedVariableList(vl),"failed")
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(R,"failed")
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if R has PFECAT
+--R squareFree : % -> Factored(%) if R has GCDDOM
+--R squareFreePart : % -> % if R has GCDDOM
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R totalDegree : (%,List(OrderedVariableList(vl))) -> NonNegativeInteger
+--R totalDegree : % -> NonNegativeInteger
+--R unit? : % -> Boolean if R has INTDOM
+--R unitCanonical : % -> % if R has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has INTDOM
+--R univariate : % -> SparseUnivariatePolynomial(R)
+--R univariate : (%,OrderedVariableList(vl)) -> SparseUnivariatePolynomial(%)
+--R variables : % -> List(OrderedVariableList(vl))
+--R
+--E 11
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -58706,17 +61247,17 @@ GeneralDistributedMultivariatePolynomial(vl,R,E): public == private where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (R,%) -> %                      ?*? : (%,R) -> %
 --R ?*? : (%,P) -> %                      ?*? : (P,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           build : (R,IS,E) -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> R
---R leadingExponent : % -> E              leadingIndex : % -> IS
---R multMonom : (R,E,%) -> %              reductum : % -> %
---R sample : () -> %                      unitVector : IS -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R build : (R,IS,E) -> %                 coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> R           leadingExponent : % -> E
+--R leadingIndex : % -> IS                multMonom : (R,E,%) -> %
+--R reductum : % -> %                     sample : () -> %
+--R unitVector : IS -> %                  zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R leadingMonomial : % -> ModuleMonomial(IS,E,ff)
 --R monomial : (R,ModuleMonomial(IS,E,ff)) -> %
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -58870,15 +61411,16 @@ GeneralModulePolynomial(vl, R, IS, E, ff, P): public  ==  private where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           alternative? : () -> Boolean
---R antiAssociative? : () -> Boolean      antiCommutative? : () -> Boolean
---R antiCommutator : (%,%) -> %           associative? : () -> Boolean
---R associator : (%,%,%) -> %             basis : () -> Vector(%)
---R coerce : % -> OutputForm              commutative? : () -> Boolean
---R commutator : (%,%) -> %               flexible? : () -> Boolean
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R alternative? : () -> Boolean          antiAssociative? : () -> Boolean
+--R antiCommutative? : () -> Boolean      antiCommutator : (%,%) -> %
+--R associative? : () -> Boolean          associator : (%,%,%) -> %
+--R basis : () -> Vector(%)               coerce : % -> OutputForm
+--R commutative? : () -> Boolean          commutator : (%,%) -> %
+--R flexible? : () -> Boolean             generic : (Symbol,Vector(%)) -> %
 --R generic : Vector(%) -> %              generic : Vector(Symbol) -> %
 --R generic : Symbol -> %                 generic : () -> %
 --R hash : % -> SingleInteger             jacobiIdentity? : () -> Boolean
@@ -58892,7 +61434,6 @@ GeneralModulePolynomial(vl, R, IS, E, ff, P): public  ==  private where
 --R ?*? : (SquareMatrix(n,Fraction(Polynomial(R))),%) -> %
 --R ?*? : (Fraction(Polynomial(R)),%) -> %
 --R ?*? : (%,Fraction(Polynomial(R))) -> %
---R ?*? : (NonNegativeInteger,%) -> %
 --R apply : (Matrix(Fraction(Polynomial(R))),%) -> %
 --R associatorDependence : () -> List(Vector(Fraction(Polynomial(R)))) if Fraction(Polynomial(R)) has INTDOM
 --R coerce : Vector(Fraction(Polynomial(R))) -> %
@@ -58908,7 +61449,6 @@ GeneralModulePolynomial(vl, R, IS, E, ff, P): public  ==  private where
 --R coordinates : (%,Vector(%)) -> Vector(Fraction(Polynomial(R)))
 --R ?.? : (%,Integer) -> Fraction(Polynomial(R))
 --R generic : (Vector(Symbol),Vector(%)) -> %
---R generic : (Symbol,Vector(%)) -> %
 --R genericLeftDiscriminant : () -> Fraction(Polynomial(R)) if R has INTDOM
 --R genericLeftMinimalPolynomial : % -> SparseUnivariatePolynomial(Fraction(Polynomial(R))) if R has INTDOM
 --R genericLeftNorm : % -> Fraction(Polynomial(R)) if R has INTDOM
@@ -59611,33 +62151,119 @@ GeneralPolynomialSet(R,E,VarSet,P) : Exports == Implementation where
 )set message auto off
 )set break resume
 )clear all
---S 1 of 7
+
+--S 1 of 8
 patrons: GeneralSparseTable(String, Integer, KeyedAccessFile(Integer), 0) := table() ; 
 --E 1
 
---S 2 of 7
+--S 2 of 8
 patrons."Smith" := 10500 
 --E 2
 
---S 3 of 7
+--S 3 of 8
 patrons."Jones" := 22000
 --E 3
 
---S 4 of 7
+--S 4 of 8
 patrons."Jones" 
 --E 4
 
---S 5 of 7
+--S 5 of 8
 patrons."Stingy"
 --E 5
 
---S 6 of 7
+--S 6 of 8
 reduce(+, entries patrons) 
 --E 6
 
---S 7 of 7
+--S 7 of 8
 )system rm -r kaf*.sdata
 --E 7
+
+--S 8 of 8
+)show GeneralSparseTable
+--R 
+--R GeneralSparseTable(Key: SetCategory,Entry: SetCategory,Tbl: TableAggregate(Key,Entry),dent: Entry)  is a domain constructor
+--R Abbreviation for GeneralSparseTable is GSTBL 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for GSTBL 
+--R
+--R------------------------------- Operations --------------------------------
+--R copy : % -> %                         dictionary : () -> %
+--R elt : (%,Key,Entry) -> Entry          ?.? : (%,Key) -> Entry
+--R empty : () -> %                       empty? : % -> Boolean
+--R entries : % -> List(Entry)            eq? : (%,%) -> Boolean
+--R index? : (Key,%) -> Boolean           indices : % -> List(Key)
+--R key? : (Key,%) -> Boolean             keys : % -> List(Key)
+--R map : ((Entry -> Entry),%) -> %       qelt : (%,Key) -> Entry
+--R sample : () -> %                      setelt : (%,Key,Entry) -> Entry
+--R table : () -> %                      
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R ?=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R any? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R any? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R bag : List(Record(key: Key,entry: Entry)) -> %
+--R coerce : % -> OutputForm if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R construct : List(Record(key: Key,entry: Entry)) -> %
+--R convert : % -> InputForm if Record(key: Key,entry: Entry) has KONVERT(INFORM)
+--R count : ((Entry -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Entry,%) -> NonNegativeInteger if $ has finiteAggregate and Entry has SETCAT
+--R count : (Record(key: Key,entry: Entry),%) -> NonNegativeInteger if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R count : ((Record(key: Key,entry: Entry) -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R dictionary : List(Record(key: Key,entry: Entry)) -> %
+--R entry? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R eval : (%,List(Equation(Entry))) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Equation(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,Entry,Entry) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Entry),List(Entry)) -> % if Entry has EVALAB(Entry) and Entry has SETCAT
+--R eval : (%,List(Record(key: Key,entry: Entry)),List(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,Equation(Record(key: Key,entry: Entry))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R eval : (%,List(Equation(Record(key: Key,entry: Entry)))) -> % if Record(key: Key,entry: Entry) has EVALAB(Record(key: Key,entry: Entry)) and Record(key: Key,entry: Entry) has SETCAT
+--R every? : ((Entry -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R every? : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R extract! : % -> Record(key: Key,entry: Entry)
+--R fill! : (%,Entry) -> % if $ has shallowlyMutable
+--R find : ((Record(key: Key,entry: Entry) -> Boolean),%) -> Union(Record(key: Key,entry: Entry),"failed")
+--R first : % -> Entry if Key has ORDSET
+--R hash : % -> SingleInteger if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R insert! : (Record(key: Key,entry: Entry),%) -> %
+--R inspect : % -> Record(key: Key,entry: Entry)
+--R latex : % -> String if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R map : (((Entry,Entry) -> Entry),%,%) -> %
+--R map : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> %
+--R map! : ((Entry -> Entry),%) -> % if $ has shallowlyMutable
+--R map! : ((Record(key: Key,entry: Entry) -> Record(key: Key,entry: Entry)),%) -> % if $ has shallowlyMutable
+--R maxIndex : % -> Key if Key has ORDSET
+--R member? : (Entry,%) -> Boolean if $ has finiteAggregate and Entry has SETCAT
+--R member? : (Record(key: Key,entry: Entry),%) -> Boolean if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R members : % -> List(Entry) if $ has finiteAggregate
+--R members : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R minIndex : % -> Key if Key has ORDSET
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R parts : % -> List(Entry) if $ has finiteAggregate
+--R parts : % -> List(Record(key: Key,entry: Entry)) if $ has finiteAggregate
+--R qsetelt! : (%,Key,Entry) -> Entry if $ has shallowlyMutable
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate
+--R reduce : (((Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry)),%,Record(key: Key,entry: Entry),Record(key: Key,entry: Entry)) -> Record(key: Key,entry: Entry) if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R remove! : (Key,%) -> Union(Entry,"failed")
+--R remove! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R remove! : (Record(key: Key,entry: Entry),%) -> % if $ has finiteAggregate
+--R removeDuplicates : % -> % if $ has finiteAggregate and Record(key: Key,entry: Entry) has SETCAT
+--R search : (Key,%) -> Union(Entry,"failed")
+--R select : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R select! : ((Record(key: Key,entry: Entry) -> Boolean),%) -> % if $ has finiteAggregate
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R swap! : (%,Key,Key) -> Void if $ has shallowlyMutable
+--R table : List(Record(key: Key,entry: Entry)) -> %
+--R ?~=? : (%,%) -> Boolean if Record(key: Key,entry: Entry) has SETCAT or Entry has SETCAT
+--R
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -59831,7 +62457,8 @@ GeneralSparseTable(Key, Entry, Tbl, dent): TableAggregate(Key, Entry) == Impl
 --R normalized? : (P,%) -> Boolean        reduceByQuasiMonic : (P,%) -> P
 --R removeZero : (P,%) -> P               rest : % -> Union(%,"failed")
 --R retract : List(P) -> %                sample : () -> %
---R stronglyReduce : (P,%) -> P           stronglyReduced? : % -> Boolean
+--R select : (%,V) -> Union(P,"failed")   stronglyReduce : (P,%) -> P
+--R stronglyReduced? : % -> Boolean       stronglyReduced? : (P,%) -> Boolean
 --R trivialIdeal? : % -> Boolean          variables : % -> List(V)
 --R zeroSetSplit : List(P) -> List(%)     ?~=? : (%,%) -> Boolean
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
@@ -59876,11 +62503,9 @@ GeneralSparseTable(Key, Entry, Tbl, dent): TableAggregate(Key, Entry) == Impl
 --R roughEqualIdeals? : (%,%) -> Boolean if R has INTDOM
 --R roughSubIdeal? : (%,%) -> Boolean if R has INTDOM
 --R roughUnitIdeal? : % -> Boolean if R has INTDOM
---R select : (%,V) -> Union(P,"failed")
 --R select : ((P -> Boolean),%) -> % if $ has finiteAggregate
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R sort : (%,V) -> Record(under: %,floor: %,upper: %)
---R stronglyReduced? : (P,%) -> Boolean
 --R triangular? : % -> Boolean if R has INTDOM
 --R zeroSetSplitIntoTriangularSystems : List(P) -> List(Record(close: %,open: List(P)))
 --R
@@ -60127,14 +62752,17 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coerce : % -> % if Coef has INTDOM
 --R coerce : Variable(var) -> %           coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
---R degree : % -> Fraction(Integer)       hash : % -> SingleInteger
+--R degree : % -> Fraction(Integer)       ?.? : (%,Fraction(Integer)) -> Coef
+--R hash : % -> SingleInteger             inv : % -> % if Coef has FIELD
 --R latex : % -> String                   leadingCoefficient : % -> Coef
 --R leadingMonomial : % -> %              map : ((Coef -> Coef),%) -> %
 --R monomial? : % -> Boolean              one? : % -> Boolean
@@ -60144,11 +62772,9 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,%) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?**? : (%,Integer) -> % if Coef has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,%) -> % if Coef has FIELD
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Fraction(Integer),Coef) -> Coef
@@ -60158,7 +62784,6 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has *: (Fraction(Integer),Coef) -> Coef and Coef has PDRING(SYMBOL)
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has *: (Fraction(Integer),Coef) -> Coef and Coef has PDRING(SYMBOL)
 --R ?^? : (%,Integer) -> % if Coef has FIELD
---R ?^? : (%,NonNegativeInteger) -> %
 --R acos : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acosh : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R acot : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -60176,7 +62801,6 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coefficient : (%,Fraction(Integer)) -> Coef
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R coerce : UnivariatePuiseuxSeries(Coef,var,cen) -> %
 --R coerce : Coef -> % if Coef has COMRING
@@ -60195,7 +62819,6 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has *: (Fraction(Integer),Coef) -> Coef and Coef has PDRING(SYMBOL)
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if Coef has FIELD
 --R ?.? : (%,%) -> % if Fraction(Integer) has SGROUP
---R ?.? : (%,Fraction(Integer)) -> Coef
 --R euclideanSize : % -> NonNegativeInteger if Coef has FIELD
 --R eval : (%,Coef) -> Stream(Coef) if Coef has **: (Coef,Fraction(Integer)) -> Coef
 --R exp : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -60211,7 +62834,6 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --R integrate : (%,Variable(var)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R integrate : (%,Symbol) -> % if Coef has integrate: (Coef,Symbol) -> Coef and Coef has variables: Coef -> List(Symbol) and Coef has ALGEBRA(FRAC(INT)) or Coef has ACFS(INT) and Coef has ALGEBRA(FRAC(INT)) and Coef has PRIMCAT and Coef has TRANFUN
 --R integrate : % -> % if Coef has ALGEBRA(FRAC(INT))
---R inv : % -> % if Coef has FIELD
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Coef has FIELD
@@ -60506,8 +63128,8 @@ GeneralUnivariatePowerSeries(Coef,var,cen): Exports == Implementation where
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
 --R graphImage : () -> %                  hash : % -> SingleInteger
 --R key : % -> Integer                    latex : % -> String
---R makeGraphImage : % -> %               units : % -> List(Float)
---R ?~=? : (%,%) -> Boolean              
+--R makeGraphImage : % -> %               ranges : % -> List(Segment(Float))
+--R units : % -> List(Float)              ?~=? : (%,%) -> Boolean
 --R appendPoint : (%,Point(DoubleFloat)) -> Void
 --R coerce : List(List(Point(DoubleFloat))) -> %
 --R component : (%,Point(DoubleFloat),Palette,Palette,PositiveInteger) -> Void
@@ -60521,7 +63143,6 @@ GeneralUnivariatePowerSeries(Coef,var,cen): Exports == Implementation where
 --R pointLists : % -> List(List(Point(DoubleFloat)))
 --R putColorInfo : (List(List(Point(DoubleFloat))),List(Palette)) -> List(List(Point(DoubleFloat)))
 --R ranges : (%,List(Segment(Float))) -> List(Segment(Float))
---R ranges : % -> List(Segment(Float))
 --R units : (%,List(Float)) -> List(Float)
 --R
 --E 1
@@ -61258,14 +63879,14 @@ GuessOption(): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R one : List(GuessOption) -> Boolean    ?~=? : (%,%) -> Boolean
+--R debug : List(GuessOption) -> Boolean  hash : % -> SingleInteger
+--R latex : % -> String                   one : List(GuessOption) -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R Somos : List(GuessOption) -> Union(PositiveInteger,Boolean)
 --R allDegrees : List(GuessOption) -> Boolean
 --R check : List(GuessOption) -> Union(skip,MonteCarlo,deterministic)
 --R checkExtraValues : List(GuessOption) -> Boolean
 --R checkOptions : List(GuessOption) -> Void
---R debug : List(GuessOption) -> Boolean
 --R displayAsGF : List(GuessOption) -> Boolean
 --R functionName : List(GuessOption) -> Symbol
 --R homogeneous : List(GuessOption) -> Union(PositiveInteger,Boolean)
@@ -62192,9 +64813,10 @@ coerce a
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                extract! : % -> S
 --R heap : List(S) -> %                   insert! : (S,%) -> %
---R inspect : % -> S                      map : ((S -> S),%) -> %
---R max : % -> S                          merge : (%,%) -> %
---R merge! : (%,%) -> %                   sample : () -> %
+--R inspect : % -> S                      latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               max : % -> S
+--R merge : (%,%) -> %                    merge! : (%,%) -> %
+--R sample : () -> %                     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if S has SETCAT
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -62207,7 +64829,6 @@ coerce a
 --R eval : (%,List(Equation(S))) -> % if S has EVALAB(S) and S has SETCAT
 --R every? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
@@ -62709,7 +65330,8 @@ Heap(S:OrderedSet): Exports == Implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 7
+
+--S 1 of 8
 r := hex(22/7)
 --R 
 --R
@@ -62718,7 +65340,7 @@ r := hex(22/7)
 --R                                                   Type: HexadecimalExpansion
 --E 1
 
---S 2 of 7
+--S 2 of 8
 r + hex(6/7)
 --R 
 --R
@@ -62726,7 +65348,7 @@ r + hex(6/7)
 --R                                                   Type: HexadecimalExpansion
 --E 2
 
---S 3 of 7
+--S 3 of 8
 [hex(1/i) for i in 350..354]
 --R 
 --R
@@ -62738,7 +65360,7 @@ r + hex(6/7)
 --R                                             Type: List(HexadecimalExpansion)
 --E 3
 
---S 4 of 7
+--S 4 of 8
 hex(1/1007)
 --R 
 --R
@@ -62750,7 +65372,7 @@ hex(1/1007)
 --R                                                   Type: HexadecimalExpansion
 --E 4
 
---S 5 of 7
+--S 5 of 8
 p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)
 --R 
 --R
@@ -62759,7 +65381,7 @@ p := hex(1/4)*x**2 + hex(2/3)*x + hex(4/9)
 --R                                       Type: Polynomial(HexadecimalExpansion)
 --E 5
 
---S 6 of 7
+--S 6 of 8
 q := D(p, x)
 --R 
 --R
@@ -62768,7 +65390,7 @@ q := D(p, x)
 --R                                       Type: Polynomial(HexadecimalExpansion)
 --E 6
 
---S 7 of 7
+--S 7 of 8
 g := gcd(p, q)
 --R 
 --R
@@ -62776,6 +65398,126 @@ g := gcd(p, q)
 --R   (7)  x + 1.5
 --R                                       Type: Polynomial(HexadecimalExpansion)
 --E 7
+
+--S 8 of 8
+)show HexadecimalExpansion
+--R 
+--R HexadecimalExpansion  is a domain constructor
+--R Abbreviation for HexadecimalExpansion is HEXADEC 
+--R This constructor is exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for HEXADEC 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,Integer) -> %                ?*? : (Integer,%) -> %
+--R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?/? : (Integer,Integer) -> %          ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                D : (%,(Integer -> Integer)) -> %
+--R D : % -> % if Integer has DIFRING     1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> RadixExpansion(16)
+--R coerce : % -> Fraction(Integer)       coerce : Integer -> %
+--R coerce : Fraction(Integer) -> %       coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R denom : % -> Integer                  denominator : % -> %
+--R factor : % -> Factored(%)             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R hex : Fraction(Integer) -> %          init : () -> % if Integer has STEP
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R numer : % -> Integer                  numerator : % -> %
+--R one? : % -> Boolean                   prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    random : () -> % if Integer has INS
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R retract : % -> Integer                sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               toint : String -> Integer
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R ?<? : (%,%) -> Boolean if Integer has ORDSET
+--R ?<=? : (%,%) -> Boolean if Integer has ORDSET
+--R ?>? : (%,%) -> Boolean if Integer has ORDSET
+--R ?>=? : (%,%) -> Boolean if Integer has ORDSET
+--R D : (%,(Integer -> Integer),NonNegativeInteger) -> %
+--R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+--R D : (%,NonNegativeInteger) -> % if Integer has DIFRING
+--R abs : % -> % if Integer has OINTDOM
+--R ceiling : % -> Integer if Integer has INS
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and Integer has PFECAT or Integer has CHARNZ
+--R coerce : Symbol -> % if Integer has RETRACT(SYMBOL)
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and Integer has PFECAT
+--R convert : % -> DoubleFloat if Integer has REAL
+--R convert : % -> Float if Integer has REAL
+--R convert : % -> InputForm if Integer has KONVERT(INFORM)
+--R convert : % -> Pattern(Float) if Integer has KONVERT(PATTERN(FLOAT))
+--R convert : % -> Pattern(Integer) if Integer has KONVERT(PATTERN(INT))
+--R differentiate : (%,(Integer -> Integer)) -> %
+--R differentiate : (%,(Integer -> Integer),NonNegativeInteger) -> %
+--R differentiate : (%,List(Symbol),List(NonNegativeInteger)) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,Symbol,NonNegativeInteger) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,List(Symbol)) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,Symbol) -> % if Integer has PDRING(SYMBOL)
+--R differentiate : (%,NonNegativeInteger) -> % if Integer has DIFRING
+--R differentiate : % -> % if Integer has DIFRING
+--R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R ?.? : (%,Integer) -> % if Integer has ELTAB(INT,INT)
+--R euclideanSize : % -> NonNegativeInteger
+--R eval : (%,Symbol,Integer) -> % if Integer has IEVALAB(SYMBOL,INT)
+--R eval : (%,List(Symbol),List(Integer)) -> % if Integer has IEVALAB(SYMBOL,INT)
+--R eval : (%,List(Equation(Integer))) -> % if Integer has EVALAB(INT)
+--R eval : (%,Equation(Integer)) -> % if Integer has EVALAB(INT)
+--R eval : (%,Integer,Integer) -> % if Integer has EVALAB(INT)
+--R eval : (%,List(Integer),List(Integer)) -> % if Integer has EVALAB(INT)
+--R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
+--R exquo : (%,%) -> Union(%,"failed")
+--R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
+--R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R floor : % -> Integer if Integer has INS
+--R fractionPart : % -> Fraction(Integer)
+--R fractionPart : % -> % if Integer has EUCDOM
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
+--R map : ((Integer -> Integer),%) -> %
+--R max : (%,%) -> % if Integer has ORDSET
+--R min : (%,%) -> % if Integer has ORDSET
+--R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
+--R negative? : % -> Boolean if Integer has OINTDOM
+--R nextItem : % -> Union(%,"failed") if Integer has STEP
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if Integer has PATMAB(FLOAT)
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if Integer has PATMAB(INT)
+--R positive? : % -> Boolean if Integer has OINTDOM
+--R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
+--R reducedSystem : Matrix(%) -> Matrix(Integer)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if Integer has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if Integer has LINEXP(INT)
+--R retract : % -> Integer if Integer has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if Integer has RETRACT(INT)
+--R retract : % -> Symbol if Integer has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(Integer,"failed") if Integer has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if Integer has RETRACT(INT)
+--R retractIfCan : % -> Union(Symbol,"failed") if Integer has RETRACT(SYMBOL)
+--R retractIfCan : % -> Union(Integer,"failed")
+--R sign : % -> Integer if Integer has OINTDOM
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if Integer has PFECAT
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if Integer has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
+--R wholePart : % -> Integer if Integer has EUCDOM
+--R
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -63170,6 +65912,7 @@ information.
 
 --S 1 of 9
 )show HTMLFormat
+--R 
 --R HTMLFormat  is a domain constructor
 --R Abbreviation for HTMLFormat is HTMLFORM 
 --R This constructor is exposed in this frame.
@@ -64242,33 +66985,35 @@ HTMLFormat(): public == private where
 
 --S 1 of 1
 )show HomogeneousDirectProduct
+--R 
 --R HomogeneousDirectProduct(dim: NonNegativeInteger,S: OrderedAbelianMonoidSup)  is a domain constructor
 --R Abbreviation for HomogeneousDirectProduct is HDP 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for HDP 
 --R
 --R------------------------------- Operations --------------------------------
---R -? : % -> % if S has RING             1 : () -> % if S has MONOID
---R 0 : () -> % if S has CABMON           coerce : % -> Vector(S)
+--R ?*? : (S,%) -> % if S has MONOID      ?*? : (%,S) -> % if S has MONOID
+--R ?*? : (%,%) -> % if S has MONOID      ?+? : (%,%) -> % if S has ABELSG
+--R -? : % -> % if S has RING             ?-? : (%,%) -> % if S has RING
+--R ?/? : (%,S) -> % if S has FIELD       1 : () -> % if S has MONOID
+--R 0 : () -> % if S has CABMON           abs : % -> % if S has ORDRING
+--R coerce : S -> % if S has SETCAT       coerce : % -> Vector(S)
 --R copy : % -> %                         directProduct : Vector(S) -> %
---R ?.? : (%,Integer) -> S                elt : (%,Integer,S) -> S
---R empty : () -> %                       empty? : % -> Boolean
---R entries : % -> List(S)                eq? : (%,%) -> Boolean
---R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
---R map : ((S -> S),%) -> %               qelt : (%,Integer) -> S
---R sample : () -> %                     
+--R dot : (%,%) -> S if S has RING        ?.? : (%,Integer) -> S
+--R elt : (%,Integer,S) -> S              empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(S)
+--R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
+--R indices : % -> List(Integer)          latex : % -> String if S has SETCAT
+--R map : ((S -> S),%) -> %               one? : % -> Boolean if S has MONOID
+--R qelt : (%,Integer) -> S               random : () -> % if S has FINITE
+--R retract : % -> S if S has SETCAT      sample : () -> %
+--R sup : (%,%) -> % if S has OAMONS     
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (PositiveInteger,%) -> % if S has ABELSG
 --R ?*? : (NonNegativeInteger,%) -> % if S has CABMON
---R ?*? : (S,%) -> % if S has MONOID
---R ?*? : (%,S) -> % if S has MONOID
---R ?*? : (%,%) -> % if S has MONOID
 --R ?*? : (Integer,%) -> % if S has RING
 --R ?**? : (%,PositiveInteger) -> % if S has MONOID
 --R ?**? : (%,NonNegativeInteger) -> % if S has MONOID
---R ?+? : (%,%) -> % if S has ABELSG
---R ?-? : (%,%) -> % if S has RING
---R ?/? : (%,S) -> % if S has FIELD
 --R ?<? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?<=? : (%,%) -> Boolean if S has OAMONS or S has ORDRING
 --R ?=? : (%,%) -> Boolean if S has SETCAT
@@ -64284,10 +67029,8 @@ HTMLFormat(): public == private where
 --R D : % -> % if S has DIFRING and S has RING
 --R ?^? : (%,PositiveInteger) -> % if S has MONOID
 --R ?^? : (%,NonNegativeInteger) -> % if S has MONOID
---R abs : % -> % if S has ORDRING
 --R any? : ((S -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R characteristic : () -> NonNegativeInteger if S has RING
---R coerce : S -> % if S has SETCAT
 --R coerce : Fraction(Integer) -> % if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R coerce : Integer -> % if S has RETRACT(INT) and S has SETCAT or S has RING
 --R coerce : % -> OutputForm if S has SETCAT
@@ -64302,7 +67045,6 @@ HTMLFormat(): public == private where
 --R differentiate : (%,NonNegativeInteger) -> % if S has DIFRING and S has RING
 --R differentiate : % -> % if S has DIFRING and S has RING
 --R dimension : () -> CardinalNumber if S has FIELD
---R dot : (%,%) -> S if S has RING
 --R entry? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R enumerate : () -> List(%) if S has FINITE
 --R eval : (%,List(S),List(S)) -> % if S has EVALAB(S) and S has SETCAT
@@ -64314,7 +67056,6 @@ HTMLFormat(): public == private where
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
 --R index : PositiveInteger -> % if S has FINITE
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R lookup : % -> PositiveInteger if S has FINITE
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
@@ -64326,17 +67067,14 @@ HTMLFormat(): public == private where
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R negative? : % -> Boolean if S has ORDRING
---R one? : % -> Boolean if S has MONOID
 --R parts : % -> List(S) if $ has finiteAggregate
 --R positive? : % -> Boolean if S has ORDRING
 --R qsetelt! : (%,Integer,S) -> S if $ has shallowlyMutable
---R random : () -> % if S has FINITE
 --R recip : % -> Union(%,"failed") if S has MONOID
 --R reducedSystem : Matrix(%) -> Matrix(S) if S has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(S),vec: Vector(S)) if S has RING
 --R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if S has LINEXP(INT) and S has RING
 --R reducedSystem : Matrix(%) -> Matrix(Integer) if S has LINEXP(INT) and S has RING
---R retract : % -> S if S has SETCAT
 --R retract : % -> Fraction(Integer) if S has RETRACT(FRAC(INT)) and S has SETCAT
 --R retract : % -> Integer if S has RETRACT(INT) and S has SETCAT
 --R retractIfCan : % -> Union(S,"failed") if S has SETCAT
@@ -64347,7 +67085,6 @@ HTMLFormat(): public == private where
 --R size : () -> NonNegativeInteger if S has FINITE
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subtractIfCan : (%,%) -> Union(%,"failed") if S has CABMON
---R sup : (%,%) -> % if S has OAMONS
 --R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
 --R unitVector : PositiveInteger -> % if S has RING
 --R zero? : % -> Boolean if S has CABMON
@@ -64507,13 +67244,14 @@ HomogeneousDirectProduct(dim,S) : T == C where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 10
+
+--S 1 of 11
 (d1,d2,d3) : DMP([z,y,x],FRAC INT) 
 --R 
 --R                                                                   Type: Void
 --E 1
 
---S 2 of 10
+--S 2 of 11
 d1 := -4*z + 4*y**2*x + 16*x**2 + 1 
 --R 
 --R
@@ -64522,7 +67260,7 @@ d1 := -4*z + 4*y**2*x + 16*x**2 + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 2
 
---S 3 of 10
+--S 3 of 11
 d2 := 2*z*y**2 + 4*x + 1 
 --R 
 --R
@@ -64531,7 +67269,7 @@ d2 := 2*z*y**2 + 4*x + 1
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 3
 
---S 4 of 10
+--S 4 of 11
 d3 := 2*z*x**2 - 2*y**2 - x 
 --R 
 --R
@@ -64540,7 +67278,7 @@ d3 := 2*z*x**2 - 2*y**2 - x
 --R           Type: DistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 4
 
---S 5 of 10
+--S 5 of 11
 groebner [d1,d2,d3]
 --R 
 --R
@@ -64557,13 +67295,13 @@ groebner [d1,d2,d3]
 --R     Type: List(DistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 5
 
---S 6 of 10
+--S 6 of 11
 (n1,n2,n3) : HDMP([z,y,x],FRAC INT)
 --R 
 --R                                                                   Type: Void
 --E 6
 
---S 7 of 10
+--S 7 of 11
 n1 := d1
 --R 
 --R
@@ -64572,7 +67310,7 @@ n1 := d1
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 7
 
---S 8 of 10
+--S 8 of 11
 n2 := d2
 --R 
 --R
@@ -64581,7 +67319,7 @@ n2 := d2
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 8
 
---S 9 of 10
+--S 9 of 11
 n3 := d3
 --R 
 --R
@@ -64590,7 +67328,7 @@ n3 := d3
 --RType: HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer))
 --E 9
 
---S 10 of 10
+--S 10 of 11
 groebner [n1,n2,n3]
 --R 
 --R
@@ -64606,6 +67344,134 @@ groebner [n1,n2,n3]
 --R                     4     2
 --RType: List(HomogeneousDistributedMultivariatePolynomial([z,y,x],Fraction(Integer)))
 --E 10
+
+--S 11 of 11
+)show HomogeneousDistributedMultivariatePolynomial
+--R 
+--R HomogeneousDistributedMultivariatePolynomial(vl: List(Symbol),R: Ring)  is a domain constructor
+--R Abbreviation for HomogeneousDistributedMultivariatePolynomial is HDMP 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for HDMP 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> %                      ?*? : (R,%) -> %
+--R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
+--R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
+--R -? : % -> %                           ?/? : (%,R) -> % if R has FIELD
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficients : % -> List(R)
+--R coerce : % -> % if R has INTDOM       coerce : R -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R content : % -> R if R has GCDDOM      eval : (%,List(%),List(%)) -> %
+--R eval : (%,%,%) -> %                   eval : (%,Equation(%)) -> %
+--R eval : (%,List(Equation(%))) -> %     gcd : (%,%) -> % if R has GCDDOM
+--R gcd : List(%) -> % if R has GCDDOM    ground : % -> R
+--R ground? : % -> Boolean                hash : % -> SingleInteger
+--R latex : % -> String                   lcm : (%,%) -> % if R has GCDDOM
+--R lcm : List(%) -> % if R has GCDDOM    leadingCoefficient : % -> R
+--R leadingMonomial : % -> %              map : ((R -> R),%) -> %
+--R max : (%,%) -> % if R has ORDSET      min : (%,%) -> % if R has ORDSET
+--R monomial? : % -> Boolean              monomials : % -> List(%)
+--R one? : % -> Boolean                   primitiveMonomials : % -> List(%)
+--R recip : % -> Union(%,"failed")        reductum : % -> %
+--R reorder : (%,List(Integer)) -> %      retract : % -> R
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
+--R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
+--R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
+--R ?<? : (%,%) -> Boolean if R has ORDSET
+--R ?<=? : (%,%) -> Boolean if R has ORDSET
+--R ?>? : (%,%) -> Boolean if R has ORDSET
+--R ?>=? : (%,%) -> Boolean if R has ORDSET
+--R D : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R D : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R D : (%,List(OrderedVariableList(vl))) -> %
+--R D : (%,OrderedVariableList(vl)) -> %
+--R associates? : (%,%) -> Boolean if R has INTDOM
+--R binomThmExpt : (%,%,NonNegativeInteger) -> % if R has COMRING
+--R characteristic : () -> NonNegativeInteger
+--R charthRoot : % -> Union(%,"failed") if $ has CHARNZ and R has PFECAT or R has CHARNZ
+--R coefficient : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R coefficient : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R coefficient : (%,HomogeneousDirectProduct(#(vl),NonNegativeInteger)) -> R
+--R coerce : Fraction(Integer) -> % if R has ALGEBRA(FRAC(INT)) or R has RETRACT(FRAC(INT))
+--R coerce : OrderedVariableList(vl) -> %
+--R conditionP : Matrix(%) -> Union(Vector(%),"failed") if $ has CHARNZ and R has PFECAT
+--R content : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R convert : % -> InputForm if OrderedVariableList(vl) has KONVERT(INFORM) and R has KONVERT(INFORM)
+--R convert : % -> Pattern(Integer) if OrderedVariableList(vl) has KONVERT(PATTERN(INT)) and R has KONVERT(PATTERN(INT))
+--R convert : % -> Pattern(Float) if OrderedVariableList(vl) has KONVERT(PATTERN(FLOAT)) and R has KONVERT(PATTERN(FLOAT))
+--R degree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R degree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R degree : % -> HomogeneousDirectProduct(#(vl),NonNegativeInteger)
+--R differentiate : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R differentiate : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R differentiate : (%,List(OrderedVariableList(vl))) -> %
+--R differentiate : (%,OrderedVariableList(vl)) -> %
+--R discriminant : (%,OrderedVariableList(vl)) -> % if R has COMRING
+--R eval : (%,List(OrderedVariableList(vl)),List(%)) -> %
+--R eval : (%,OrderedVariableList(vl),%) -> %
+--R eval : (%,List(OrderedVariableList(vl)),List(R)) -> %
+--R eval : (%,OrderedVariableList(vl),R) -> %
+--R exquo : (%,%) -> Union(%,"failed") if R has INTDOM
+--R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
+--R factor : % -> Factored(%) if R has PFECAT
+--R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has GCDDOM
+--R isExpt : % -> Union(Record(var: OrderedVariableList(vl),exponent: NonNegativeInteger),"failed")
+--R isPlus : % -> Union(List(%),"failed")
+--R isTimes : % -> Union(List(%),"failed")
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
+--R mainVariable : % -> Union(OrderedVariableList(vl),"failed")
+--R mapExponents : ((HomogeneousDirectProduct(#(vl),NonNegativeInteger) -> HomogeneousDirectProduct(#(vl),NonNegativeInteger)),%) -> %
+--R minimumDegree : (%,List(OrderedVariableList(vl))) -> List(NonNegativeInteger)
+--R minimumDegree : (%,OrderedVariableList(vl)) -> NonNegativeInteger
+--R minimumDegree : % -> HomogeneousDirectProduct(#(vl),NonNegativeInteger)
+--R monicDivide : (%,%,OrderedVariableList(vl)) -> Record(quotient: %,remainder: %)
+--R monomial : (%,List(OrderedVariableList(vl)),List(NonNegativeInteger)) -> %
+--R monomial : (%,OrderedVariableList(vl),NonNegativeInteger) -> %
+--R monomial : (R,HomogeneousDirectProduct(#(vl),NonNegativeInteger)) -> %
+--R multivariate : (SparseUnivariatePolynomial(%),OrderedVariableList(vl)) -> %
+--R multivariate : (SparseUnivariatePolynomial(R),OrderedVariableList(vl)) -> %
+--R numberOfMonomials : % -> NonNegativeInteger
+--R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%) if OrderedVariableList(vl) has PATMAB(INT) and R has PATMAB(INT)
+--R patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%) if OrderedVariableList(vl) has PATMAB(FLOAT) and R has PATMAB(FLOAT)
+--R pomopo! : (%,R,HomogeneousDirectProduct(#(vl),NonNegativeInteger),%) -> %
+--R prime? : % -> Boolean if R has PFECAT
+--R primitivePart : (%,OrderedVariableList(vl)) -> % if R has GCDDOM
+--R primitivePart : % -> % if R has GCDDOM
+--R reducedSystem : Matrix(%) -> Matrix(R)
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(R),vec: Vector(R))
+--R reducedSystem : (Matrix(%),Vector(%)) -> Record(mat: Matrix(Integer),vec: Vector(Integer)) if R has LINEXP(INT)
+--R reducedSystem : Matrix(%) -> Matrix(Integer) if R has LINEXP(INT)
+--R resultant : (%,%,OrderedVariableList(vl)) -> % if R has COMRING
+--R retract : % -> OrderedVariableList(vl)
+--R retract : % -> Integer if R has RETRACT(INT)
+--R retract : % -> Fraction(Integer) if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(OrderedVariableList(vl),"failed")
+--R retractIfCan : % -> Union(Integer,"failed") if R has RETRACT(INT)
+--R retractIfCan : % -> Union(Fraction(Integer),"failed") if R has RETRACT(FRAC(INT))
+--R retractIfCan : % -> Union(R,"failed")
+--R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed") if R has PFECAT
+--R squareFree : % -> Factored(%) if R has GCDDOM
+--R squareFreePart : % -> % if R has GCDDOM
+--R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if R has PFECAT
+--R subtractIfCan : (%,%) -> Union(%,"failed")
+--R totalDegree : (%,List(OrderedVariableList(vl))) -> NonNegativeInteger
+--R totalDegree : % -> NonNegativeInteger
+--R unit? : % -> Boolean if R has INTDOM
+--R unitCanonical : % -> % if R has INTDOM
+--R unitNormal : % -> Record(unit: %,canonical: %,associate: %) if R has INTDOM
+--R univariate : % -> SparseUnivariatePolynomial(R)
+--R univariate : (%,OrderedVariableList(vl)) -> SparseUnivariatePolynomial(%)
+--R variables : % -> List(OrderedVariableList(vl))
+--R
+--E 11
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -64858,20 +67724,19 @@ HomogeneousDistributedMultivariatePolynomial(vl,R): public == private where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for HELLFDIV 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R divisor : (R,UP,UP,UP,F) -> %         divisor : (F,F,Integer) -> %
---R divisor : (F,F) -> %                  divisor : R -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              divisor : (R,UP,UP,UP,F) -> %
+--R divisor : (F,F,Integer) -> %          divisor : (F,F) -> %
+--R divisor : R -> %                      generator : % -> Union(R,"failed")
 --R hash : % -> SingleInteger             latex : % -> String
 --R principal? : % -> Boolean             reduce : % -> %
 --R sample : () -> %                      zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
 --R decompose : % -> Record(id: FractionalIdeal(UP,Fraction(UP),UPUP,R),principalPart: R)
 --R divisor : FractionalIdeal(UP,Fraction(UP),UPUP,R) -> %
---R generator : % -> Union(R,"failed")
 --R ideal : % -> FractionalIdeal(UP,Fraction(UP),UPUP,R)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
@@ -65112,6 +67977,7 @@ HyperellipticFiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 
 --S 1 of 1
 )show InfClsPt
+--R 
 --R InfClsPt(K: Field,symb: List(Symbol),BLMET: BlowUpMethodCategory)  is a domain constructor
 --R Abbreviation for InfClsPt is ICP 
 --R This constructor is exposed in this frame.
@@ -65120,16 +67986,17 @@ HyperellipticFiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                actualExtensionV : % -> K
 --R chartV : % -> BLMET                   coerce : % -> OutputForm
---R degree : % -> PositiveInteger         fullOut : % -> OutputForm
---R fullOutput : () -> Boolean            fullOutput : Boolean -> Boolean
---R hash : % -> SingleInteger             latex : % -> String
---R localPointV : % -> AffinePlane(K)     multV : % -> NonNegativeInteger
---R pointV : % -> ProjectivePlane(K)      setchart! : (%,BLMET) -> BLMET
---R symbNameV : % -> Symbol               ?~=? : (%,%) -> Boolean
+--R degree : % -> PositiveInteger         excpDivV : % -> Divisor(Places(K))
+--R fullOut : % -> OutputForm             fullOutput : () -> Boolean
+--R fullOutput : Boolean -> Boolean       hash : % -> SingleInteger
+--R latex : % -> String                   localPointV : % -> AffinePlane(K)
+--R multV : % -> NonNegativeInteger       pointV : % -> ProjectivePlane(K)
+--R setchart! : (%,BLMET) -> BLMET        setsymbName! : (%,Symbol) -> Symbol
+--R subMultV : % -> NonNegativeInteger    symbNameV : % -> Symbol
+--R ?~=? : (%,%) -> Boolean              
 --R create : (ProjectivePlane(K),DistributedMultivariatePolynomial(symb,K)) -> %
 --R create : (ProjectivePlane(K),DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K),AffinePlane(K),NonNegativeInteger,BLMET,NonNegativeInteger,Divisor(Places(K)),K,Symbol) -> %
 --R curveV : % -> DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K)
---R excpDivV : % -> Divisor(Places(K))
 --R localParamV : % -> List(NeitherSparseOrDensePowerSeries(K))
 --R setcurve! : (%,DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K)) -> DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K)
 --R setexcpDiv! : (%,Divisor(Places(K))) -> Divisor(Places(K))
@@ -65138,8 +68005,6 @@ HyperellipticFiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 --R setmult! : (%,NonNegativeInteger) -> NonNegativeInteger
 --R setpoint! : (%,ProjectivePlane(K)) -> ProjectivePlane(K)
 --R setsubmult! : (%,NonNegativeInteger) -> NonNegativeInteger
---R setsymbName! : (%,Symbol) -> Symbol
---R subMultV : % -> NonNegativeInteger
 --R
 --E 1
 
@@ -65251,6 +68116,7 @@ InfClsPt(K,symb,BLMET):Exports == Implementation where
 
 --S 1 of 1
 )show IndexCard
+--R 
 --R IndexCard  is a domain constructor
 --R Abbreviation for IndexCard is ICARD 
 --R This constructor is exposed in this frame.
@@ -65384,7 +68250,8 @@ IndexCard() : Exports == Implementation where
 )set message test on
 )set message auto off
 )clear all
---S 1 of 13
+
+--S 1 of 14
 a:IBITS(32):=new(32,false)
 --R 
 --R
@@ -65392,7 +68259,7 @@ a:IBITS(32):=new(32,false)
 --R                                                        Type: IndexedBits(32)
 --E 1
 
---S 2 of 13
+--S 2 of 14
 b:IBITS(32):=new(32,true)
 --R 
 --R
@@ -65400,7 +68267,7 @@ b:IBITS(32):=new(32,true)
 --R                                                        Type: IndexedBits(32)
 --E 2
 
---S 3 of 13
+--S 3 of 14
 elt(a,3)
 --R 
 --R
@@ -65408,7 +68275,7 @@ elt(a,3)
 --R                                                                Type: Boolean
 --E 3
 
---S 4 of 13
+--S 4 of 14
 setelt(a,3,true)
 --R 
 --R
@@ -65416,7 +68283,7 @@ setelt(a,3,true)
 --R                                                                Type: Boolean
 --E 4
 
---S 5 of 13
+--S 5 of 14
 a
 --R 
 --R
@@ -65424,7 +68291,7 @@ a
 --R                                                        Type: IndexedBits(32)
 --E 5
 
---S 6 of 13
+--S 6 of 14
 #a
 --R 
 --R
@@ -65432,7 +68299,7 @@ a
 --R                                                        Type: PositiveInteger
 --E 6
 
---S 7 of 13
+--S 7 of 14
 (a=a)$IBITS(32)
 --R 
 --R
@@ -65440,7 +68307,7 @@ a
 --R                                                                Type: Boolean
 --E 7
 
---S 8 of 13
+--S 8 of 14
 (a=b)$IBITS(32)
 --R 
 --R
@@ -65448,7 +68315,7 @@ a
 --R                                                                Type: Boolean
 --E 8
 
---S 9 of 13
+--S 9 of 14
 (a ~= b)
 --R 
 --R
@@ -65456,7 +68323,7 @@ a
 --R                                                                Type: Boolean
 --E 9
 
---S 10 of 13
+--S 10 of 14
 Or(a,b)
 --R 
 --R
@@ -65464,7 +68331,7 @@ Or(a,b)
 --R                                                        Type: IndexedBits(32)
 --E 10
 
---S 11 of 13
+--S 11 of 14
 And(a,b)
 --R 
 --R
@@ -65472,7 +68339,7 @@ And(a,b)
 --R                                                        Type: IndexedBits(32)
 --E 11
 
---S 12 of 13
+--S 12 of 14
 Not(a)
 --R 
 --R
@@ -65480,13 +68347,101 @@ Not(a)
 --R                                                        Type: IndexedBits(32)
 --E 12
 
---S 13 of 13
+--S 13 of 14
 c:=copy a
 --R 
 --R
 --R   (13)  "00000000000000000000000000000100"
 --R                                                        Type: IndexedBits(32)
 --E 13
+
+--S 14 of 14
+)show IndexedBits
+--R 
+--R IndexedBits(mn: Integer)  is a domain constructor
+--R Abbreviation for IndexedBits is IBITS 
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for IBITS 
+--R
+--R------------------------------- Operations --------------------------------
+--R ?/\? : (%,%) -> %                     ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R And : (%,%) -> %                      Not : % -> %
+--R Or : (%,%) -> %                       ?\/? : (%,%) -> %
+--R ^? : % -> %                           ?and? : (%,%) -> %
+--R coerce : % -> OutputForm              concat : (%,Boolean) -> %
+--R concat : (Boolean,%) -> %             concat : (%,%) -> %
+--R concat : List(%) -> %                 construct : List(Boolean) -> %
+--R copy : % -> %                         delete : (%,Integer) -> %
+--R ?.? : (%,Integer) -> Boolean          empty : () -> %
+--R empty? : % -> Boolean                 entries : % -> List(Boolean)
+--R eq? : (%,%) -> Boolean                hash : % -> SingleInteger
+--R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
+--R insert : (Boolean,%,Integer) -> %     insert : (%,%,Integer) -> %
+--R latex : % -> String                   max : (%,%) -> %
+--R min : (%,%) -> %                      nand : (%,%) -> %
+--R nor : (%,%) -> %                      not? : % -> %
+--R ?or? : (%,%) -> %                     qelt : (%,Integer) -> Boolean
+--R reverse : % -> %                      sample : () -> %
+--R xor : (%,%) -> %                      ~? : % -> %
+--R ?~=? : (%,%) -> Boolean              
+--R #? : % -> NonNegativeInteger if $ has finiteAggregate
+--R any? : ((Boolean -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R convert : % -> InputForm if Boolean has KONVERT(INFORM)
+--R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
+--R count : ((Boolean -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R count : (Boolean,%) -> NonNegativeInteger if $ has finiteAggregate and Boolean has SETCAT
+--R delete : (%,UniversalSegment(Integer)) -> %
+--R elt : (%,Integer,Boolean) -> Boolean
+--R ?.? : (%,UniversalSegment(Integer)) -> %
+--R entry? : (Boolean,%) -> Boolean if $ has finiteAggregate and Boolean has SETCAT
+--R eval : (%,List(Equation(Boolean))) -> % if Boolean has EVALAB(BOOLEAN) and Boolean has SETCAT
+--R eval : (%,Equation(Boolean)) -> % if Boolean has EVALAB(BOOLEAN) and Boolean has SETCAT
+--R eval : (%,Boolean,Boolean) -> % if Boolean has EVALAB(BOOLEAN) and Boolean has SETCAT
+--R eval : (%,List(Boolean),List(Boolean)) -> % if Boolean has EVALAB(BOOLEAN) and Boolean has SETCAT
+--R every? : ((Boolean -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R fill! : (%,Boolean) -> % if $ has shallowlyMutable
+--R find : ((Boolean -> Boolean),%) -> Union(Boolean,"failed")
+--R first : % -> Boolean if Integer has ORDSET
+--R less? : (%,NonNegativeInteger) -> Boolean
+--R map : ((Boolean -> Boolean),%) -> %
+--R map : (((Boolean,Boolean) -> Boolean),%,%) -> %
+--R map! : ((Boolean -> Boolean),%) -> % if $ has shallowlyMutable
+--R maxIndex : % -> Integer if Integer has ORDSET
+--R member? : (Boolean,%) -> Boolean if $ has finiteAggregate and Boolean has SETCAT
+--R members : % -> List(Boolean) if $ has finiteAggregate
+--R merge : (((Boolean,Boolean) -> Boolean),%,%) -> %
+--R merge : (%,%) -> % if Boolean has ORDSET
+--R minIndex : % -> Integer if Integer has ORDSET
+--R more? : (%,NonNegativeInteger) -> Boolean
+--R new : (NonNegativeInteger,Boolean) -> %
+--R parts : % -> List(Boolean) if $ has finiteAggregate
+--R position : ((Boolean -> Boolean),%) -> Integer
+--R position : (Boolean,%) -> Integer if Boolean has SETCAT
+--R position : (Boolean,%,Integer) -> Integer if Boolean has SETCAT
+--R qsetelt! : (%,Integer,Boolean) -> Boolean if $ has shallowlyMutable
+--R reduce : (((Boolean,Boolean) -> Boolean),%,Boolean,Boolean) -> Boolean if $ has finiteAggregate and Boolean has SETCAT
+--R reduce : (((Boolean,Boolean) -> Boolean),%,Boolean) -> Boolean if $ has finiteAggregate
+--R reduce : (((Boolean,Boolean) -> Boolean),%) -> Boolean if $ has finiteAggregate
+--R remove : (Boolean,%) -> % if $ has finiteAggregate and Boolean has SETCAT
+--R remove : ((Boolean -> Boolean),%) -> % if $ has finiteAggregate
+--R removeDuplicates : % -> % if $ has finiteAggregate and Boolean has SETCAT
+--R reverse! : % -> % if $ has shallowlyMutable
+--R select : ((Boolean -> Boolean),%) -> % if $ has finiteAggregate
+--R setelt : (%,Integer,Boolean) -> Boolean if $ has shallowlyMutable
+--R setelt : (%,UniversalSegment(Integer),Boolean) -> Boolean if $ has shallowlyMutable
+--R size? : (%,NonNegativeInteger) -> Boolean
+--R sort : (((Boolean,Boolean) -> Boolean),%) -> %
+--R sort : % -> % if Boolean has ORDSET
+--R sort! : (((Boolean,Boolean) -> Boolean),%) -> % if $ has shallowlyMutable
+--R sort! : % -> % if $ has shallowlyMutable and Boolean has ORDSET
+--R sorted? : (((Boolean,Boolean) -> Boolean),%) -> Boolean
+--R sorted? : % -> Boolean if Boolean has ORDSET
+--R swap! : (%,Integer,Integer) -> Void if $ has shallowlyMutable
+--R
+--E 14
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -65701,22 +68656,23 @@ IndexedBits(mn:Integer): BitAggregate() with
 
 --S 1 of 1
 )show IndexedDirectProductAbelianGroup
+--R 
 --R IndexedDirectProductAbelianGroup(A: AbelianGroup,S: OrderedSet)  is a domain constructor
 --R Abbreviation for IndexedDirectProductAbelianGroup is IDPAG 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IDPAG 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
---R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
---R -? : % -> %                           ?=? : (%,%) -> Boolean
---R 0 : () -> %                           coerce : % -> OutputForm
---R hash : % -> SingleInteger             latex : % -> String
---R leadingCoefficient : % -> A           leadingSupport : % -> S
---R map : ((A -> A),%) -> %               monomial : (A,S) -> %
---R reductum : % -> %                     sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
+--R ?-? : (%,%) -> %                      -? : % -> %
+--R ?=? : (%,%) -> Boolean                0 : () -> %
+--R coerce : % -> OutputForm              hash : % -> SingleInteger
+--R latex : % -> String                   leadingCoefficient : % -> A
+--R leadingSupport : % -> S               map : ((A -> A),%) -> %
+--R monomial : (A,S) -> %                 reductum : % -> %
+--R sample : () -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -65859,21 +68815,21 @@ IndexedDirectProductAbelianGroup(A:AbelianGroup,S:OrderedSet):
 
 --S 1 of 1
 )show IndexedDirectProductAbelianMonoid
+--R 
 --R IndexedDirectProductAbelianMonoid(A: AbelianMonoid,S: OrderedSet)  is a domain constructor
 --R Abbreviation for IndexedDirectProductAbelianMonoid is IDPAM 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IDPAM 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> A
---R leadingSupport : % -> S               map : ((A -> A),%) -> %
---R monomial : (A,S) -> %                 reductum : % -> %
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> A           leadingSupport : % -> S
+--R map : ((A -> A),%) -> %               monomial : (A,S) -> %
+--R reductum : % -> %                     sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R
 --E 1
 
@@ -66023,6 +68979,7 @@ IndexedDirectProductAbelianMonoid(A:AbelianMonoid,S:OrderedSet):
 
 --S 1 of 1
 )show IndexedDirectProductObject
+--R 
 --R IndexedDirectProductObject(A: SetCategory,S: OrderedSet)  is a domain constructor
 --R Abbreviation for IndexedDirectProductObject is IDPO 
 --R This constructor is not exposed in this frame.
@@ -66140,24 +69097,24 @@ IndexedDirectProductObject(A:SetCategory,S:OrderedSet): _
 
 --S 1 of 1
 )show IndexedDirectProductOrderedAbelianMonoid
+--R 
 --R IndexedDirectProductOrderedAbelianMonoid(A: OrderedAbelianMonoid,S: OrderedSet)  is a domain constructor
 --R Abbreviation for IndexedDirectProductOrderedAbelianMonoid is IDPOAM 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IDPOAM 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> A
---R leadingSupport : % -> S               map : ((A -> A),%) -> %
---R max : (%,%) -> %                      min : (%,%) -> %
---R monomial : (A,S) -> %                 reductum : % -> %
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> A           leadingSupport : % -> S
+--R map : ((A -> A),%) -> %               max : (%,%) -> %
+--R min : (%,%) -> %                      monomial : (A,S) -> %
+--R reductum : % -> %                     sample : () -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R
 --E 1
 
@@ -66256,24 +69213,25 @@ IndexedDirectProductOrderedAbelianMonoid(A:OrderedAbelianMonoid,S:OrderedSet):
 
 --S 1 of 1
 )show IndexedDirectProductOrderedAbelianMonoidSup
+--R 
 --R IndexedDirectProductOrderedAbelianMonoidSup(A: OrderedAbelianMonoidSup,S: OrderedSet)  is a domain constructor
 --R Abbreviation for IndexedDirectProductOrderedAbelianMonoidSup is IDPOAMS 
 --R This constructor is not exposed in this frame.
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IDPOAMS 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingCoefficient : % -> A
---R leadingSupport : % -> S               map : ((A -> A),%) -> %
---R max : (%,%) -> %                      min : (%,%) -> %
---R monomial : (A,S) -> %                 reductum : % -> %
---R sample : () -> %                      sup : (%,%) -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingCoefficient : % -> A           leadingSupport : % -> S
+--R map : ((A -> A),%) -> %               max : (%,%) -> %
+--R min : (%,%) -> %                      monomial : (A,S) -> %
+--R reductum : % -> %                     sample : () -> %
+--R sup : (%,%) -> %                      zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R
 --E 1
@@ -66398,17 +69356,16 @@ IndexedDirectProductOrderedAbelianMonoidSup(A:OrderedAbelianMonoidSup,S:OrderedS
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for INDE 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?+? : (%,%) -> %
---R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
---R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
---R ?>=? : (%,%) -> Boolean               0 : () -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   leadingSupport : % -> Varset
---R max : (%,%) -> %                      min : (%,%) -> %
---R reductum : % -> %                     sample : () -> %
---R sup : (%,%) -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?+? : (%,%) -> %                      ?<? : (%,%) -> Boolean
+--R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
+--R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
+--R 0 : () -> %                           coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R leadingSupport : % -> Varset          max : (%,%) -> %
+--R min : (%,%) -> %                      reductum : % -> %
+--R sample : () -> %                      sup : (%,%) -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R leadingCoefficient : % -> NonNegativeInteger
 --R map : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
 --R monomial : (NonNegativeInteger,Varset) -> %
@@ -66529,10 +69486,14 @@ IndexedExponents(Varset:OrderedSet): C == T where
 --R flexibleArray : List(S) -> %          index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
 --R insert : (S,%,Integer) -> %           insert! : (S,%,Integer) -> %
---R insert! : (%,%,Integer) -> %          map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
---R qelt : (%,Integer) -> S               reverse : % -> %
---R sample : () -> %                      shrinkable : Boolean -> Boolean
+--R insert! : (%,%,Integer) -> %          latex : % -> String if S has SETCAT
+--R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
+--R new : (NonNegativeInteger,S) -> %     physicalLength! : (%,Integer) -> %
+--R qelt : (%,Integer) -> S               remove! : ((S -> Boolean),%) -> %
+--R reverse : % -> %                      sample : () -> %
+--R select! : ((S -> Boolean),%) -> %     shrinkable : Boolean -> Boolean
+--R sort : % -> % if S has ORDSET         sort : (((S,S) -> Boolean),%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -66558,10 +69519,8 @@ IndexedExponents(Varset:OrderedSet): C == T where
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R members : % -> List(S) if $ has finiteAggregate
@@ -66569,12 +69528,10 @@ IndexedExponents(Varset:OrderedSet): C == T where
 --R merge : (((S,S) -> Boolean),%,%) -> %
 --R merge! : (((S,S) -> Boolean),%,%) -> %
 --R merge! : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(S) if $ has finiteAggregate
 --R physicalLength : % -> NonNegativeInteger
---R physicalLength! : (%,Integer) -> %
 --R position : (S,%,Integer) -> Integer if S has SETCAT
 --R position : (S,%) -> Integer if S has SETCAT
 --R position : ((S -> Boolean),%) -> Integer
@@ -66584,18 +69541,14 @@ IndexedExponents(Varset:OrderedSet): C == T where
 --R reduce : (((S,S) -> S),%,S,S) -> S if $ has finiteAggregate and S has SETCAT
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
 --R remove : (S,%) -> % if $ has finiteAggregate and S has SETCAT
---R remove! : ((S -> Boolean),%) -> %
 --R remove! : (S,%) -> % if S has SETCAT
 --R removeDuplicates : % -> % if $ has finiteAggregate and S has SETCAT
 --R removeDuplicates! : % -> % if S has SETCAT
 --R reverse! : % -> % if $ has shallowlyMutable
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R select! : ((S -> Boolean),%) -> %
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if S has ORDSET
---R sort : (((S,S) -> Boolean),%) -> %
 --R sort! : % -> % if $ has shallowlyMutable and S has ORDSET
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if S has ORDSET
@@ -67000,15 +69953,20 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 --R first : % -> S                        index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (S,%,Integer) -> %
 --R insert : (%,%,Integer) -> %           insert! : (S,%,Integer) -> %
---R insert! : (%,%,Integer) -> %          last : % -> S
+--R insert! : (%,%,Integer) -> %          last : (%,NonNegativeInteger) -> %
+--R last : % -> S                         latex : % -> String if S has SETCAT
 --R leaf? : % -> Boolean                  leaves : % -> List(S)
 --R list : S -> %                         map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
+--R map : ((S -> S),%) -> %               max : (%,%) -> % if S has ORDSET
+--R min : (%,%) -> % if S has ORDSET      new : (NonNegativeInteger,S) -> %
 --R nodes : % -> List(%)                  possiblyInfinite? : % -> Boolean
---R qelt : (%,Integer) -> S               rest : % -> %
+--R qelt : (%,Integer) -> S               remove! : ((S -> Boolean),%) -> %
+--R rest : (%,NonNegativeInteger) -> %    rest : % -> %
 --R reverse : % -> %                      sample : () -> %
---R second : % -> S                       tail : % -> %
---R third : % -> S                        value : % -> S
+--R second : % -> S                       select! : ((S -> Boolean),%) -> %
+--R sort : (((S,S) -> Boolean),%) -> %    sort : % -> % if S has ORDSET
+--R tail : % -> %                         third : % -> S
+--R value : % -> S                       
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -67037,11 +69995,8 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : (%,NonNegativeInteger) -> %
 --R hash : % -> SingleInteger if S has SETCAT
---R last : (%,NonNegativeInteger) -> %
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R members : % -> List(S) if $ has finiteAggregate
@@ -67049,7 +70004,6 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 --R merge : (%,%) -> % if S has ORDSET
 --R merge! : (((S,S) -> Boolean),%,%) -> %
 --R merge! : (%,%) -> % if S has ORDSET
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R node? : (%,%) -> Boolean if S has SETCAT
@@ -67063,14 +70017,11 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 --R reduce : (((S,S) -> S),%) -> S if $ has finiteAggregate
 --R remove : (S,%) -> % if $ has finiteAggregate and S has SETCAT
 --R remove : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R remove! : ((S -> Boolean),%) -> %
 --R remove! : (S,%) -> % if S has SETCAT
 --R removeDuplicates : % -> % if $ has finiteAggregate and S has SETCAT
 --R removeDuplicates! : % -> % if S has SETCAT
---R rest : (%,NonNegativeInteger) -> %
 --R reverse! : % -> % if $ has shallowlyMutable
 --R select : ((S -> Boolean),%) -> % if $ has finiteAggregate
---R select! : ((S -> Boolean),%) -> %
 --R setchildren! : (%,List(%)) -> % if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
@@ -67083,8 +70034,6 @@ IndexedFlexibleArray(S:Type, mn: Integer): Exports == Implementation where
 --R setrest! : (%,%) -> % if $ has shallowlyMutable
 --R setvalue! : (%,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : (((S,S) -> Boolean),%) -> %
---R sort : % -> % if S has ORDSET
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sort! : % -> % if $ has shallowlyMutable and S has ORDSET
 --R sorted? : (((S,S) -> Boolean),%) -> Boolean
@@ -67427,6 +70376,7 @@ IndexedList(S:Type, mn:Integer): Exports == Implementation where
 
 --S 1 of 1
 )show IndexedMatrix
+--R 
 --R IndexedMatrix(R: Ring,mnRow: Integer,mnCol: Integer)  is a domain constructor
 --R Abbreviation for IndexedMatrix is IMATRIX 
 --R This constructor is not exposed in this frame.
@@ -67435,30 +70385,30 @@ IndexedList(S:Type, mn:Integer): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Integer,%) -> %                ?*? : (%,R) -> %
 --R ?*? : (R,%) -> %                      ?*? : (%,%) -> %
---R ?+? : (%,%) -> %                      -? : % -> %
---R ?-? : (%,%) -> %                      antisymmetric? : % -> Boolean
+--R ?**? : (%,NonNegativeInteger) -> %    ?+? : (%,%) -> %
+--R -? : % -> %                           ?-? : (%,%) -> %
+--R ?/? : (%,R) -> % if R has FIELD       antisymmetric? : % -> Boolean
 --R copy : % -> %                         diagonal? : % -> Boolean
 --R diagonalMatrix : List(%) -> %         diagonalMatrix : List(R) -> %
 --R elt : (%,Integer,Integer,R) -> R      elt : (%,Integer,Integer) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                fill! : (%,R) -> %
---R horizConcat : (%,%) -> %              listOfLists : % -> List(List(R))
---R map : (((R,R) -> R),%,%,R) -> %       map : (((R,R) -> R),%,%) -> %
---R map : ((R -> R),%) -> %               map! : ((R -> R),%) -> %
---R matrix : List(List(R)) -> %           maxColIndex : % -> Integer
---R maxRowIndex : % -> Integer            minColIndex : % -> Integer
---R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
---R nrows : % -> NonNegativeInteger       parts : % -> List(R)
+--R horizConcat : (%,%) -> %              latex : % -> String if R has SETCAT
+--R listOfLists : % -> List(List(R))      map : (((R,R) -> R),%,%,R) -> %
+--R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R map! : ((R -> R),%) -> %              matrix : List(List(R)) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R parts : % -> List(R)                  pfaffian : % -> R if R has COMRING
 --R qelt : (%,Integer,Integer) -> R       sample : () -> %
---R square? : % -> Boolean                squareTop : % -> %
---R symmetric? : % -> Boolean             transpose : % -> %
---R vertConcat : (%,%) -> %              
+--R setelt : (%,Integer,Integer,R) -> R   square? : % -> Boolean
+--R squareTop : % -> %                    symmetric? : % -> Boolean
+--R transpose : % -> %                    vertConcat : (%,%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?*? : (IndexedVector(R,mnCol),%) -> IndexedVector(R,mnCol)
 --R ?*? : (%,IndexedVector(R,mnRow)) -> IndexedVector(R,mnRow)
 --R ?**? : (%,Integer) -> % if R has FIELD
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,R) -> % if R has FIELD
 --R ?=? : (%,%) -> Boolean if R has SETCAT
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R coerce : IndexedVector(R,mnRow) -> %
@@ -67477,7 +70427,6 @@ IndexedList(S:Type, mn:Integer): Exports == Implementation where
 --R exquo : (%,R) -> Union(%,"failed") if R has INTDOM
 --R hash : % -> SingleInteger if R has SETCAT
 --R inverse : % -> Union(%,"failed") if R has FIELD
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R matrix : (NonNegativeInteger,NonNegativeInteger,((Integer,Integer) -> R)) -> %
 --R member? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
@@ -67487,7 +70436,6 @@ IndexedList(S:Type, mn:Integer): Exports == Implementation where
 --R new : (NonNegativeInteger,NonNegativeInteger,R) -> %
 --R nullSpace : % -> List(IndexedVector(R,mnRow)) if R has INTDOM
 --R nullity : % -> NonNegativeInteger if R has INTDOM
---R pfaffian : % -> R if R has COMRING
 --R qsetelt! : (%,Integer,Integer,R) -> R
 --R rank : % -> NonNegativeInteger if R has INTDOM
 --R row : (%,Integer) -> IndexedVector(R,mnCol)
@@ -67496,7 +70444,6 @@ IndexedList(S:Type, mn:Integer): Exports == Implementation where
 --R setColumn! : (%,Integer,IndexedVector(R,mnRow)) -> %
 --R setRow! : (%,Integer,IndexedVector(R,mnCol)) -> %
 --R setelt : (%,List(Integer),List(Integer),%) -> %
---R setelt : (%,Integer,Integer,R) -> R
 --R setsubMatrix! : (%,Integer,Integer,%) -> %
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R subMatrix : (%,Integer,Integer,Integer,Integer) -> %
@@ -67707,10 +70654,12 @@ IndexedMatrix(R,mnRow,mnCol): Exports == Implementation where
 --R empty? : % -> Boolean                 entries : % -> List(S)
 --R eq? : (%,%) -> Boolean                index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R insert : (S,%,Integer) -> %           map : (((S,S) -> S),%,%) -> %
---R map : ((S -> S),%) -> %               new : (NonNegativeInteger,S) -> %
---R qelt : (%,Integer) -> S               reverse : % -> %
---R sample : () -> %                     
+--R insert : (S,%,Integer) -> %           latex : % -> String if S has SETCAT
+--R map : (((S,S) -> S),%,%) -> %         map : ((S -> S),%) -> %
+--R max : (%,%) -> % if S has ORDSET      min : (%,%) -> % if S has ORDSET
+--R new : (NonNegativeInteger,S) -> %     qelt : (%,Integer) -> S
+--R reverse : % -> %                      sample : () -> %
+--R sort : % -> % if S has ORDSET         sort : (((S,S) -> Boolean),%) -> %
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if S has ORDSET
 --R ?<=? : (%,%) -> Boolean if S has ORDSET
@@ -67735,16 +70684,13 @@ IndexedMatrix(R,mnRow,mnCol): Exports == Implementation where
 --R find : ((S -> Boolean),%) -> Union(S,"failed")
 --R first : % -> S if Integer has ORDSET
 --R hash : % -> SingleInteger if S has SETCAT
---R latex : % -> String if S has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map! : ((S -> S),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if S has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (S,%) -> Boolean if $ has finiteAggregate and S has SETCAT
 --R members : % -> List(S) if $ has finiteAggregate
 --R merge : (%,%) -> % if S has ORDSET
 --R merge : (((S,S) -> Boolean),%,%) -> %
---R min : (%,%) -> % if S has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R parts : % -> List(S) if $ has finiteAggregate
@@ -67763,8 +70709,6 @@ IndexedMatrix(R,mnRow,mnCol): Exports == Implementation where
 --R setelt : (%,UniversalSegment(Integer),S) -> S if $ has shallowlyMutable
 --R setelt : (%,Integer,S) -> S if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if S has ORDSET
---R sort : (((S,S) -> Boolean),%) -> %
 --R sort! : % -> % if $ has shallowlyMutable and S has ORDSET
 --R sort! : (((S,S) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if S has ORDSET
@@ -68004,13 +70948,14 @@ IndexedOneDimensionalArray(S:Type, mn:Integer):
 --R entries : % -> List(Character)        eq? : (%,%) -> Boolean
 --R hash : % -> Integer                   index? : (Integer,%) -> Boolean
 --R indices : % -> List(Integer)          insert : (%,%,Integer) -> %
---R leftTrim : (%,Character) -> %         lowerCase : % -> %
---R lowerCase! : % -> %                   prefix? : (%,%) -> Boolean
---R qelt : (%,Integer) -> Character       reverse : % -> %
---R rightTrim : (%,Character) -> %        sample : () -> %
---R split : (%,Character) -> List(%)      suffix? : (%,%) -> Boolean
---R trim : (%,CharacterClass) -> %        trim : (%,Character) -> %
---R upperCase : % -> %                    upperCase! : % -> %
+--R leftTrim : (%,CharacterClass) -> %    leftTrim : (%,Character) -> %
+--R lowerCase : % -> %                    lowerCase! : % -> %
+--R prefix? : (%,%) -> Boolean            qelt : (%,Integer) -> Character
+--R reverse : % -> %                      rightTrim : (%,Character) -> %
+--R sample : () -> %                      split : (%,Character) -> List(%)
+--R suffix? : (%,%) -> Boolean            trim : (%,CharacterClass) -> %
+--R trim : (%,Character) -> %             upperCase : % -> %
+--R upperCase! : % -> %                  
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?<? : (%,%) -> Boolean if Character has ORDSET
 --R ?<=? : (%,%) -> Boolean if Character has ORDSET
@@ -68038,7 +70983,6 @@ IndexedOneDimensionalArray(S:Type, mn:Integer):
 --R hash : % -> SingleInteger if Character has SETCAT
 --R insert : (Character,%,Integer) -> %
 --R latex : % -> String if Character has SETCAT
---R leftTrim : (%,CharacterClass) -> %
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : (((Character,Character) -> Character),%,%) -> %
 --R map : ((Character -> Character),%) -> %
@@ -68422,13 +71366,14 @@ first column in an array and vice versa.
 --R copy : % -> %                         elt : (%,Integer,Integer,R) -> R
 --R elt : (%,Integer,Integer) -> R        empty : () -> %
 --R empty? : % -> Boolean                 eq? : (%,%) -> Boolean
---R fill! : (%,R) -> %                    map : (((R,R) -> R),%,%,R) -> %
---R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
---R map! : ((R -> R),%) -> %              maxColIndex : % -> Integer
---R maxRowIndex : % -> Integer            minColIndex : % -> Integer
---R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
---R nrows : % -> NonNegativeInteger       parts : % -> List(R)
---R qelt : (%,Integer,Integer) -> R       sample : () -> %
+--R fill! : (%,R) -> %                    latex : % -> String if R has SETCAT
+--R map : (((R,R) -> R),%,%,R) -> %       map : (((R,R) -> R),%,%) -> %
+--R map : ((R -> R),%) -> %               map! : ((R -> R),%) -> %
+--R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
+--R minColIndex : % -> Integer            minRowIndex : % -> Integer
+--R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
+--R parts : % -> List(R)                  qelt : (%,Integer,Integer) -> R
+--R sample : () -> %                      setelt : (%,Integer,Integer,R) -> R
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if R has SETCAT
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -68442,7 +71387,6 @@ first column in an array and vice versa.
 --R eval : (%,List(Equation(R))) -> % if R has EVALAB(R) and R has SETCAT
 --R every? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R member? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R members : % -> List(R) if $ has finiteAggregate
@@ -68452,7 +71396,6 @@ first column in an array and vice versa.
 --R row : (%,Integer) -> IndexedOneDimensionalArray(R,mnCol)
 --R setColumn! : (%,Integer,IndexedOneDimensionalArray(R,mnRow)) -> %
 --R setRow! : (%,Integer,IndexedOneDimensionalArray(R,mnCol)) -> %
---R setelt : (%,Integer,Integer,R) -> R
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R ?~=? : (%,%) -> Boolean if R has SETCAT
 --R
@@ -68569,24 +71512,26 @@ IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports == Implementation where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IVECTOR 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (%,R) -> % if R has MONOID      ?*? : (R,%) -> % if R has MONOID
+--R ?+? : (%,%) -> % if R has ABELSG      ?-? : (%,%) -> % if R has ABELGRP
 --R -? : % -> % if R has ABELGRP          concat : List(%) -> %
 --R concat : (%,%) -> %                   concat : (R,%) -> %
 --R concat : (%,R) -> %                   construct : List(R) -> %
---R copy : % -> %                         delete : (%,Integer) -> %
+--R copy : % -> %                         cross : (%,%) -> % if R has RING
+--R delete : (%,Integer) -> %             dot : (%,%) -> R if R has RING
 --R ?.? : (%,Integer) -> R                elt : (%,Integer,R) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R entries : % -> List(R)                eq? : (%,%) -> Boolean
 --R index? : (Integer,%) -> Boolean       indices : % -> List(Integer)
 --R insert : (%,%,Integer) -> %           insert : (R,%,Integer) -> %
---R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
---R new : (NonNegativeInteger,R) -> %     qelt : (%,Integer) -> R
---R reverse : % -> %                      sample : () -> %
+--R latex : % -> String if R has SETCAT   map : (((R,R) -> R),%,%) -> %
+--R map : ((R -> R),%) -> %               max : (%,%) -> % if R has ORDSET
+--R min : (%,%) -> % if R has ORDSET      new : (NonNegativeInteger,R) -> %
+--R qelt : (%,Integer) -> R               reverse : % -> %
+--R sample : () -> %                      sort : % -> % if R has ORDSET
+--R sort : (((R,R) -> Boolean),%) -> %   
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
---R ?*? : (%,R) -> % if R has MONOID
---R ?*? : (R,%) -> % if R has MONOID
 --R ?*? : (Integer,%) -> % if R has ABELGRP
---R ?+? : (%,%) -> % if R has ABELSG
---R ?-? : (%,%) -> % if R has ABELGRP
 --R ?<? : (%,%) -> Boolean if R has ORDSET
 --R ?<=? : (%,%) -> Boolean if R has ORDSET
 --R ?=? : (%,%) -> Boolean if R has SETCAT
@@ -68598,9 +71543,7 @@ IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports == Implementation where
 --R copyInto! : (%,%,Integer) -> % if $ has shallowlyMutable
 --R count : (R,%) -> NonNegativeInteger if $ has finiteAggregate and R has SETCAT
 --R count : ((R -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
---R cross : (%,%) -> % if R has RING
 --R delete : (%,UniversalSegment(Integer)) -> %
---R dot : (%,%) -> R if R has RING
 --R ?.? : (%,UniversalSegment(Integer)) -> %
 --R entry? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R eval : (%,List(R),List(R)) -> % if R has EVALAB(R) and R has SETCAT
@@ -68612,18 +71555,15 @@ IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports == Implementation where
 --R find : ((R -> Boolean),%) -> Union(R,"failed")
 --R first : % -> R if Integer has ORDSET
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R length : % -> R if R has RADCAT and R has RING
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R magnitude : % -> R if R has RADCAT and R has RING
 --R map! : ((R -> R),%) -> % if $ has shallowlyMutable
---R max : (%,%) -> % if R has ORDSET
 --R maxIndex : % -> Integer if Integer has ORDSET
 --R member? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R members : % -> List(R) if $ has finiteAggregate
 --R merge : (%,%) -> % if R has ORDSET
 --R merge : (((R,R) -> Boolean),%,%) -> %
---R min : (%,%) -> % if R has ORDSET
 --R minIndex : % -> Integer if Integer has ORDSET
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R outerProduct : (%,%) -> Matrix(R) if R has RING
@@ -68643,8 +71583,6 @@ IndexedTwoDimensionalArray(R,mnRow,mnCol):Exports == Implementation where
 --R setelt : (%,UniversalSegment(Integer),R) -> R if $ has shallowlyMutable
 --R setelt : (%,Integer,R) -> R if $ has shallowlyMutable
 --R size? : (%,NonNegativeInteger) -> Boolean
---R sort : % -> % if R has ORDSET
---R sort : (((R,R) -> Boolean),%) -> %
 --R sort! : % -> % if $ has shallowlyMutable and R has ORDSET
 --R sort! : (((R,R) -> Boolean),%) -> % if $ has shallowlyMutable
 --R sorted? : % -> Boolean if R has ORDSET
@@ -68895,6 +71833,7 @@ InfiniteTuple(S:Type): Exports == Implementation where
 --R localParamV : % -> List(PCS)          localPointV : % -> AffinePlane(K)
 --R multV : % -> NonNegativeInteger       pointV : % -> ProjPt
 --R setchart! : (%,BLMET) -> BLMET        setpoint! : (%,ProjPt) -> ProjPt
+--R setsymbName! : (%,Symbol) -> Symbol   subMultV : % -> NonNegativeInteger
 --R symbNameV : % -> Symbol               ?~=? : (%,%) -> Boolean
 --R create : (ProjPt,DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K),AffinePlane(K),NonNegativeInteger,BLMET,NonNegativeInteger,DIVISOR,K,Symbol) -> %
 --R curveV : % -> DistributedMultivariatePolynomial([construct,QUOTEX,QUOTEY],K)
@@ -68904,10 +71843,9 @@ InfiniteTuple(S:Type): Exports == Implementation where
 --R setlocalPoint! : (%,AffinePlane(K)) -> AffinePlane(K)
 --R setmult! : (%,NonNegativeInteger) -> NonNegativeInteger
 --R setsubmult! : (%,NonNegativeInteger) -> NonNegativeInteger
---R setsymbName! : (%,Symbol) -> Symbol
---R subMultV : % -> NonNegativeInteger
 --R
 --E 1
+
 )spool
 )lisp (bye)
 
@@ -69162,7 +72100,8 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):Exports == I
 --R fullOut : % -> OutputForm             fullOutput : () -> Boolean
 --R fullOutput : Boolean -> Boolean       hash : % -> SingleInteger
 --R latex : % -> String                   multV : % -> NonNegativeInteger
---R setchart! : (%,BLMET) -> BLMET        symbNameV : % -> Symbol
+--R setchart! : (%,BLMET) -> BLMET        setsymbName! : (%,Symbol) -> Symbol
+--R subMultV : % -> NonNegativeInteger    symbNameV : % -> Symbol
 --R ?~=? : (%,%) -> Boolean              
 --R actualExtensionV : % -> PseudoAlgebraicClosureOfFiniteField(K)
 --R create : (ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField(K),DistributedMultivariatePolynomial(symb,PseudoAlgebraicClosureOfFiniteField(K))) -> %
@@ -69179,8 +72118,6 @@ InfinitlyClosePoint(K,symb,PolyRing,E,ProjPt,PCS,Plc,DIVISOR,BLMET):Exports == I
 --R setmult! : (%,NonNegativeInteger) -> NonNegativeInteger
 --R setpoint! : (%,ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField(K)) -> ProjectivePlaneOverPseudoAlgebraicClosureOfFiniteField(K)
 --R setsubmult! : (%,NonNegativeInteger) -> NonNegativeInteger
---R setsymbName! : (%,Symbol) -> Symbol
---R subMultV : % -> NonNegativeInteger
 --R
 --E 1
 
@@ -69300,17 +72237,19 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IAN 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (PositiveInteger,%) -> %        ?*? : (Integer,%) -> %
---R ?*? : (%,%) -> %                      ?*? : (%,Fraction(Integer)) -> %
---R ?*? : (Fraction(Integer),%) -> %      ?**? : (%,PositiveInteger) -> %
---R ?**? : (%,Integer) -> %               ?+? : (%,%) -> %
---R -? : % -> %                           ?-? : (%,%) -> %
---R ?/? : (%,%) -> %                      ?<? : (%,%) -> Boolean
---R ?<=? : (%,%) -> Boolean               ?=? : (%,%) -> Boolean
---R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
---R D : % -> %                            D : (%,NonNegativeInteger) -> %
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        ?^? : (%,Integer) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (%,%) -> %
+--R ?*? : (%,Fraction(Integer)) -> %      ?*? : (Fraction(Integer),%) -> %
+--R ?**? : (%,PositiveInteger) -> %       ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,Fraction(Integer)) -> %
+--R ?+? : (%,%) -> %                      -? : % -> %
+--R ?-? : (%,%) -> %                      ?/? : (%,%) -> %
+--R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
+--R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
+--R ?>=? : (%,%) -> Boolean               D : % -> %
+--R D : (%,NonNegativeInteger) -> %       1 : () -> %
+--R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,Integer) -> %
 --R associates? : (%,%) -> Boolean        belong? : BasicOperator -> Boolean
 --R box : List(%) -> %                    box : % -> %
 --R coerce : Integer -> %                 coerce : % -> %
@@ -69318,55 +72257,51 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R coerce : % -> OutputForm              convert : % -> Complex(Float)
 --R convert : % -> DoubleFloat            convert : % -> Float
 --R differentiate : % -> %                distribute : (%,%) -> %
---R distribute : % -> %                   elt : (BasicOperator,%,%) -> %
---R elt : (BasicOperator,%) -> %          eval : (%,%,%) -> %
---R eval : (%,Equation(%)) -> %           eval : (%,Kernel(%),%) -> %
---R factor : % -> Factored(%)             freeOf? : (%,Symbol) -> Boolean
---R freeOf? : (%,%) -> Boolean            gcd : (%,%) -> %
---R gcd : List(%) -> %                    hash : % -> SingleInteger
---R height : % -> NonNegativeInteger      inv : % -> %
---R is? : (%,Symbol) -> Boolean           kernel : (BasicOperator,%) -> %
+--R distribute : % -> %                   elt : (BasicOperator,List(%)) -> %
+--R elt : (BasicOperator,%,%,%) -> %      elt : (BasicOperator,%,%) -> %
+--R elt : (BasicOperator,%) -> %          eval : (%,Symbol,(% -> %)) -> %
+--R eval : (%,List(%),List(%)) -> %       eval : (%,%,%) -> %
+--R eval : (%,Equation(%)) -> %           eval : (%,List(Equation(%))) -> %
+--R eval : (%,Kernel(%),%) -> %           factor : % -> Factored(%)
+--R freeOf? : (%,Symbol) -> Boolean       freeOf? : (%,%) -> Boolean
+--R gcd : (%,%) -> %                      gcd : List(%) -> %
+--R hash : % -> SingleInteger             height : % -> NonNegativeInteger
+--R inv : % -> %                          is? : (%,Symbol) -> Boolean
+--R is? : (%,BasicOperator) -> Boolean    kernel : (BasicOperator,%) -> %
 --R kernels : % -> List(Kernel(%))        latex : % -> String
 --R lcm : (%,%) -> %                      lcm : List(%) -> %
---R max : (%,%) -> %                      min : (%,%) -> %
---R norm : (%,List(Kernel(%))) -> %       norm : (%,Kernel(%)) -> %
---R nthRoot : (%,Integer) -> %            one? : % -> Boolean
---R paren : List(%) -> %                  paren : % -> %
---R prime? : % -> Boolean                 ?quo? : (%,%) -> %
---R recip : % -> Union(%,"failed")        reduce : % -> %
---R ?rem? : (%,%) -> %                    retract : % -> Fraction(Integer)
---R retract : % -> Integer                retract : % -> Kernel(%)
---R rootOf : Polynomial(%) -> %           sample : () -> %
+--R map : ((% -> %),Kernel(%)) -> %       max : (%,%) -> %
+--R min : (%,%) -> %                      norm : (%,List(Kernel(%))) -> %
+--R norm : (%,Kernel(%)) -> %             nthRoot : (%,Integer) -> %
+--R one? : % -> Boolean                   paren : List(%) -> %
+--R paren : % -> %                        prime? : % -> Boolean
+--R ?quo? : (%,%) -> %                    recip : % -> Union(%,"failed")
+--R reduce : % -> %                       ?rem? : (%,%) -> %
+--R retract : % -> Fraction(Integer)      retract : % -> Integer
+--R retract : % -> Kernel(%)              rootOf : Polynomial(%) -> %
+--R rootsOf : Polynomial(%) -> List(%)    sample : () -> %
 --R sizeLess? : (%,%) -> Boolean          sqrt : % -> %
 --R squareFree : % -> Factored(%)         squareFreePart : % -> %
 --R subst : (%,Equation(%)) -> %          tower : % -> List(Kernel(%))
 --R trueEqual : (%,%) -> Boolean          unit? : % -> Boolean
 --R unitCanonical : % -> %                zero? : % -> Boolean
---R zeroOf : Polynomial(%) -> %           ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?**? : (%,Fraction(Integer)) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R zeroOf : Polynomial(%) -> %           zerosOf : Polynomial(%) -> List(%)
+--R ?~=? : (%,%) -> Boolean              
 --R characteristic : () -> NonNegativeInteger
 --R coerce : SparseMultivariatePolynomial(Integer,Kernel(%)) -> %
 --R definingPolynomial : % -> % if $ has RING
 --R denom : % -> SparseMultivariatePolynomial(Integer,Kernel(%))
 --R differentiate : (%,NonNegativeInteger) -> %
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
---R elt : (BasicOperator,List(%)) -> %
 --R elt : (BasicOperator,%,%,%,%) -> %
---R elt : (BasicOperator,%,%,%) -> %
 --R euclideanSize : % -> NonNegativeInteger
 --R eval : (%,BasicOperator,(% -> %)) -> %
 --R eval : (%,BasicOperator,(List(%) -> %)) -> %
 --R eval : (%,List(BasicOperator),List((List(%) -> %))) -> %
 --R eval : (%,List(BasicOperator),List((% -> %))) -> %
---R eval : (%,Symbol,(% -> %)) -> %
 --R eval : (%,Symbol,(List(%) -> %)) -> %
 --R eval : (%,List(Symbol),List((List(%) -> %))) -> %
 --R eval : (%,List(Symbol),List((% -> %))) -> %
---R eval : (%,List(%),List(%)) -> %
---R eval : (%,List(Equation(%))) -> %
 --R eval : (%,List(Kernel(%)),List(%)) -> %
 --R even? : % -> Boolean if $ has RETRACT(INT)
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
@@ -69374,11 +72309,9 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R extendedEuclidean : (%,%,%) -> Union(Record(coef1: %,coef2: %),"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
---R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
---R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R norm : (SparseUnivariatePolynomial(%),List(Kernel(%))) -> SparseUnivariatePolynomial(%)
@@ -69397,7 +72330,6 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R retractIfCan : % -> Union(Kernel(%),"failed")
 --R rootOf : SparseUnivariatePolynomial(%) -> %
 --R rootOf : (SparseUnivariatePolynomial(%),Symbol) -> %
---R rootsOf : Polynomial(%) -> List(%)
 --R rootsOf : SparseUnivariatePolynomial(%) -> List(%)
 --R rootsOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R subst : (%,List(Kernel(%)),List(%)) -> %
@@ -69406,7 +72338,6 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
 --R zeroOf : SparseUnivariatePolynomial(%) -> %
 --R zeroOf : (SparseUnivariatePolynomial(%),Symbol) -> %
---R zerosOf : Polynomial(%) -> List(%)
 --R zerosOf : SparseUnivariatePolynomial(%) -> List(%)
 --R zerosOf : (SparseUnivariatePolynomial(%),Symbol) -> List(%)
 --R
@@ -69695,14 +72626,17 @@ InnerAlgebraicNumber(): Exports == Implementation where
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IFF 
 --R
 --R------------------------------- Operations --------------------------------
+--R ?*? : (InnerPrimeField(p),%) -> %     ?*? : (%,InnerPrimeField(p)) -> %
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
---R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R ?/? : (%,InnerPrimeField(p)) -> %     ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
 --R basis : () -> Vector(%)               coerce : InnerPrimeField(p) -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
@@ -69721,16 +72655,10 @@ InnerAlgebraicNumber(): Exports == Implementation where
 --R trace : % -> InnerPrimeField(p)       transcendent? : % -> Boolean
 --R unit? : % -> Boolean                  unitCanonical : % -> %
 --R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (InnerPrimeField(p),%) -> %
---R ?*? : (%,InnerPrimeField(p)) -> %
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?/? : (%,InnerPrimeField(p)) -> %
 --R D : (%,NonNegativeInteger) -> % if InnerPrimeField(p) has FINITE
 --R D : % -> % if InnerPrimeField(p) has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if InnerPrimeField(p) has FINITE
 --R Frobenius : % -> % if InnerPrimeField(p) has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if InnerPrimeField(p) has CHARNZ or InnerPrimeField(p) has FINITE
@@ -69951,17 +72879,17 @@ InnerFiniteField(p:PositiveInteger, n:PositiveInteger) ==
 --R Issue )edit bookvol10.3.pamphlet to see algebra source code for IFAMON 
 --R
 --R------------------------------- Operations --------------------------------
---R ?*? : (E,S) -> %                      ?*? : (PositiveInteger,%) -> %
---R ?+? : (S,%) -> %                      ?+? : (%,%) -> %
---R ?=? : (%,%) -> Boolean                0 : () -> %
---R coefficient : (S,%) -> E              coerce : S -> %
---R coerce : % -> OutputForm              hash : % -> SingleInteger
---R latex : % -> String                   mapCoef : ((E -> E),%) -> %
---R mapGen : ((S -> S),%) -> %            nthCoef : (%,Integer) -> E
---R nthFactor : (%,Integer) -> S          retract : % -> S
---R sample : () -> %                      size : % -> NonNegativeInteger
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
---R ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (E,S) -> %                      ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?+? : (S,%) -> %
+--R ?+? : (%,%) -> %                      ?=? : (%,%) -> Boolean
+--R 0 : () -> %                           coefficient : (S,%) -> E
+--R coerce : S -> %                       coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R mapCoef : ((E -> E),%) -> %           mapGen : ((S -> S),%) -> %
+--R nthCoef : (%,Integer) -> E            nthFactor : (%,Integer) -> S
+--R retract : % -> S                      sample : () -> %
+--R size : % -> NonNegativeInteger        zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R highCommonTerms : (%,%) -> % if E has OAMON
 --R retractIfCan : % -> Union(S,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -70088,14 +73016,15 @@ This is an internal type which provides an implementation of
 --R elt : (%,Integer,Integer,R) -> R      elt : (%,Integer,Integer) -> R
 --R empty : () -> %                       empty? : % -> Boolean
 --R eq? : (%,%) -> Boolean                fill! : (%,R) -> %
---R map : (((R,R) -> R),%,%,R) -> %       map : (((R,R) -> R),%,%) -> %
---R map : ((R -> R),%) -> %               map! : ((R -> R),%) -> %
---R maxColIndex : % -> Integer            maxRowIndex : % -> Integer
---R minColIndex : % -> Integer            minRowIndex : % -> Integer
---R ncols : % -> NonNegativeInteger       nrows : % -> NonNegativeInteger
---R parts : % -> List(R)                  qelt : (%,Integer,Integer) -> R
---R row : (%,Integer) -> Row              sample : () -> %
---R setRow! : (%,Integer,Row) -> %       
+--R latex : % -> String if R has SETCAT   map : (((R,R) -> R),%,%,R) -> %
+--R map : (((R,R) -> R),%,%) -> %         map : ((R -> R),%) -> %
+--R map! : ((R -> R),%) -> %              maxColIndex : % -> Integer
+--R maxRowIndex : % -> Integer            minColIndex : % -> Integer
+--R minRowIndex : % -> Integer            ncols : % -> NonNegativeInteger
+--R nrows : % -> NonNegativeInteger       parts : % -> List(R)
+--R qelt : (%,Integer,Integer) -> R       row : (%,Integer) -> Row
+--R sample : () -> %                      setColumn! : (%,Integer,Col) -> %
+--R setRow! : (%,Integer,Row) -> %        setelt : (%,Integer,Integer,R) -> R
 --R #? : % -> NonNegativeInteger if $ has finiteAggregate
 --R ?=? : (%,%) -> Boolean if R has SETCAT
 --R any? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
@@ -70108,15 +73037,12 @@ This is an internal type which provides an implementation of
 --R eval : (%,List(Equation(R))) -> % if R has EVALAB(R) and R has SETCAT
 --R every? : ((R -> Boolean),%) -> Boolean if $ has finiteAggregate
 --R hash : % -> SingleInteger if R has SETCAT
---R latex : % -> String if R has SETCAT
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R member? : (R,%) -> Boolean if $ has finiteAggregate and R has SETCAT
 --R members : % -> List(R) if $ has finiteAggregate
 --R more? : (%,NonNegativeInteger) -> Boolean
 --R new : (NonNegativeInteger,NonNegativeInteger,R) -> %
 --R qsetelt! : (%,Integer,Integer,R) -> R
---R setColumn! : (%,Integer,Col) -> %
---R setelt : (%,Integer,Integer,R) -> R
 --R size? : (%,NonNegativeInteger) -> Boolean
 --R ?~=? : (%,%) -> Boolean if R has SETCAT
 --R
@@ -70301,28 +73227,26 @@ InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col):_
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        associates? : (%,%) -> Boolean
---R coerce : % -> %                       coerce : Integer -> %
---R coerce : % -> OutputForm              complete : % -> %
---R digits : % -> Stream(Integer)         extend : (%,Integer) -> %
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R moduloP : % -> Integer                modulus : () -> Integer
---R one? : % -> Boolean                   order : % -> NonNegativeInteger
---R ?quo? : (%,%) -> %                    quotientByP : % -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R sample : () -> %                      sizeLess? : (%,%) -> Boolean
---R sqrt : (%,Integer) -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R associates? : (%,%) -> Boolean        coerce : % -> %
+--R coerce : Integer -> %                 coerce : % -> OutputForm
+--R complete : % -> %                     digits : % -> Stream(Integer)
+--R extend : (%,Integer) -> %             gcd : List(%) -> %
+--R gcd : (%,%) -> %                      hash : % -> SingleInteger
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      moduloP : % -> Integer
+--R modulus : () -> Integer               one? : % -> Boolean
+--R order : % -> NonNegativeInteger       ?quo? : (%,%) -> %
+--R quotientByP : % -> %                  recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    sample : () -> %
+--R sizeLess? : (%,%) -> Boolean          sqrt : (%,Integer) -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R approximate : (%,Integer) -> Integer
 --R characteristic : () -> NonNegativeInteger
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
@@ -70689,13 +73613,15 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Fraction(Integer),%) -> %      ?*? : (%,Fraction(Integer)) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,Integer) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
 --R D : % -> %                            D : (%,NonNegativeInteger) -> %
---R 1 : () -> %                           0 : () -> %
---R ?^? : (%,Integer) -> %                ?^? : (%,PositiveInteger) -> %
+--R Frobenius : % -> % if $ has FINITE    1 : () -> %
+--R 0 : () -> %                           ?^? : (%,Integer) -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
 --R algebraic? : % -> Boolean             associates? : (%,%) -> Boolean
 --R basis : () -> Vector(%)               charthRoot : % -> %
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
@@ -70705,11 +73631,12 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R differentiate : % -> %                dimension : () -> CardinalNumber
 --R enumerate : () -> List(%)             factor : % -> Factored(%)
 --R gcd : List(%) -> %                    gcd : (%,%) -> %
---R hash : % -> SingleInteger             inGroundField? : % -> Boolean
---R index : PositiveInteger -> %          init : () -> %
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R lookup : % -> PositiveInteger         norm : % -> %
+--R generator : () -> % if $ has FINITE   hash : % -> SingleInteger
+--R inGroundField? : % -> Boolean         index : PositiveInteger -> %
+--R init : () -> %                        inv : % -> %
+--R latex : % -> String                   lcm : List(%) -> %
+--R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
+--R nextItem : % -> Union(%,"failed")     norm : % -> %
 --R one? : % -> Boolean                   order : % -> PositiveInteger
 --R prime? : % -> Boolean                 primeFrobenius : % -> %
 --R primitive? : % -> Boolean             primitiveElement : () -> %
@@ -70722,11 +73649,7 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R transcendent? : % -> Boolean          unit? : % -> Boolean
 --R unitCanonical : % -> %                zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R Frobenius : % -> % if $ has FINITE
 --R Frobenius : (%,NonNegativeInteger) -> % if $ has FINITE
---R ?^? : (%,NonNegativeInteger) -> %
 --R basis : PositiveInteger -> Vector(%)
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed")
@@ -70748,7 +73671,6 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R extensionDegree : () -> PositiveInteger
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer))
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
---R generator : () -> % if $ has FINITE
 --R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(%)) -> % if $ has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(%) if $ has FINITE
@@ -70757,7 +73679,6 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R minimalPolynomial : % -> SparseUnivariatePolynomial(%)
 --R minimalPolynomial : (%,PositiveInteger) -> SparseUnivariatePolynomial(%) if $ has FINITE
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
---R nextItem : % -> Union(%,"failed")
 --R norm : (%,PositiveInteger) -> % if $ has FINITE
 --R normal? : % -> Boolean if $ has FINITE
 --R normalElement : () -> % if $ has FINITE
@@ -71089,12 +74010,14 @@ InnerPrimeField(p:PositiveInteger): Exports == Implementation where
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Coef,%) -> %                   ?*? : (%,Coef) -> %
 --R ?*? : (%,%) -> %                      ?*? : (Integer,%) -> %
---R ?*? : (PositiveInteger,%) -> %        ?**? : (%,PositiveInteger) -> %
+--R ?*? : (NonNegativeInteger,%) -> %     ?*? : (PositiveInteger,%) -> %
+--R ?**? : (%,NonNegativeInteger) -> %    ?**? : (%,PositiveInteger) -> %
 --R ?+? : (%,%) -> %                      ?-? : (%,%) -> %
 --R -? : % -> %                           ?=? : (%,%) -> Boolean
 --R 1 : () -> %                           0 : () -> %
---R ?^? : (%,PositiveInteger) -> %        center : % -> Coef
---R coefficient : (%,Integer) -> Coef     coerce : Integer -> %
+--R ?^? : (%,NonNegativeInteger) -> %     ?^? : (%,PositiveInteger) -> %
+--R center : % -> Coef                    coefficient : (%,Integer) -> Coef
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              complete : % -> %
 --R degree : % -> Integer                 ?.? : (%,Integer) -> Coef
 --R extend : (%,Integer) -> %             hash : % -> SingleInteger
@@ -71110,8 +74033,6 @@ InnerPrimeField(p:PositiveInteger): Exports == Implementation where
 --R ?~=? : (%,%) -> Boolean              
 --R ?*? : (%,Fraction(Integer)) -> % if Coef has ALGEBRA(FRAC(INT))
 --R ?*? : (Fraction(Integer),%) -> % if Coef has ALGEBRA(FRAC(INT))
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
 --R ?/? : (%,Coef) -> % if Coef has FIELD
 --R D : % -> % if Coef has *: (Integer,Coef) -> Coef
 --R D : (%,NonNegativeInteger) -> % if Coef has *: (Integer,Coef) -> Coef
@@ -71119,7 +74040,6 @@ InnerPrimeField(p:PositiveInteger): Exports == Implementation where
 --R D : (%,List(Symbol)) -> % if Coef has *: (Integer,Coef) -> Coef and Coef has PDRING(SYMBOL)
 --R D : (%,Symbol,NonNegativeInteger) -> % if Coef has *: (Integer,Coef) -> Coef and Coef has PDRING(SYMBOL)
 --R D : (%,List(Symbol),List(NonNegativeInteger)) -> % if Coef has *: (Integer,Coef) -> Coef and Coef has PDRING(SYMBOL)
---R ?^? : (%,NonNegativeInteger) -> %
 --R approximate : (%,Integer) -> Coef if Coef has **: (Coef,Integer) -> Coef and Coef has coerce: Symbol -> Coef
 --R associates? : (%,%) -> Boolean if Coef has INTDOM
 --R cAcos : % -> % if Coef has ALGEBRA(FRAC(INT))
@@ -71153,7 +74073,6 @@ InnerPrimeField(p:PositiveInteger): Exports == Implementation where
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if Coef has CHARNZ
 --R coerce : Coef -> % if Coef has COMRING
---R coerce : % -> % if Coef has INTDOM
 --R coerce : Fraction(Integer) -> % if Coef has ALGEBRA(FRAC(INT))
 --R differentiate : % -> % if Coef has *: (Integer,Coef) -> Coef
 --R differentiate : (%,NonNegativeInteger) -> % if Coef has *: (Integer,Coef) -> Coef
@@ -72395,8 +75314,8 @@ InnerSparseUnivariatePowerSeries(Coef): Exports == Implementation where
 --S 1 of 1
 )show InnerTable
 --R 
---R InnerTable(Key: SetCategory,Entry: SetCategory,addDom) where 
---R   addDom: TableAggregate(Key,Entry) with 
+--R InnerTable(Key: SetCategory,Entry: SetCategory,addDom)where
+--R   addDom: TableAggregate(Key,Entry)with
 --R        finiteAggregate  is a domain constructor
 --R Abbreviation for InnerTable is INTABL 
 --R This constructor is not exposed in this frame.
@@ -72609,24 +75528,22 @@ InnerTable(Key: SetCategory, Entry: SetCategory, addDom):Exports == Implementati
 --R------------------------------- Operations --------------------------------
 --R ?*? : (%,Integer) -> %                ?*? : (%,Coef) -> %
 --R ?*? : (Coef,%) -> %                   ?*? : (%,%) -> %
---R ?*? : (Integer,%) -> %                ?*? : (PositiveInteger,%) -> %
+--R ?*? : (Integer,%) -> %                ?*? : (NonNegativeInteger,%) -> %
+--R ?*? : (PositiveInteger,%) -> %        ?**? : (%,NonNegativeInteger) -> %
 --R ?**? : (%,PositiveInteger) -> %       ?+? : (%,%) -> %
 --R ?-? : (%,%) -> %                      -? : % -> %
 --R ?=? : (%,%) -> Boolean                1 : () -> %
---R 0 : () -> %                           ?^? : (%,PositiveInteger) -> %
---R coefficients : % -> Stream(Coef)      coerce : Integer -> %
+--R 0 : () -> %                           ?^? : (%,NonNegativeInteger) -> %
+--R ?^? : (%,PositiveInteger) -> %        coefficients : % -> Stream(Coef)
+--R coerce : % -> % if Coef has INTDOM    coerce : Integer -> %
 --R coerce : % -> OutputForm              hash : % -> SingleInteger
 --R latex : % -> String                   one? : % -> Boolean
 --R order : % -> NonNegativeInteger       pole? : % -> Boolean
 --R recip : % -> Union(%,"failed")        sample : () -> %
 --R series : Stream(Coef) -> %            zero? : % -> Boolean
 --R ?~=? : (%,%) -> Boolean              
---R ?*? : (NonNegativeInteger,%) -> %
---R ?**? : (%,NonNegativeInteger) -> %
---R ?^? : (%,NonNegativeInteger) -> %
 --R associates? : (%,%) -> Boolean if Coef has INTDOM
 --R characteristic : () -> NonNegativeInteger
---R coerce : % -> % if Coef has INTDOM
 --R exquo : (%,%) -> Union(%,"failed") if Coef has INTDOM
 --R order : (%,NonNegativeInteger) -> NonNegativeInteger
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -72850,29 +75767,29 @@ InnerTaylorSeries(Coef): Exports == Implementation where
 --R
 --R------------------------------- Operations --------------------------------
 --R #? : % -> Integer                     ?*? : (%,%) -> %
---R ?**? : (%,Integer) -> %               ?+? : (%,%) -> %
---R ?/? : (%,%) -> %                      ?=? : (%,%) -> Boolean
---R 1 : () -> %                           0 : () -> %
---R atom? : % -> Boolean                  binary : (%,List(%)) -> %
---R car : % -> %                          cdr : % -> %
---R coerce : % -> OutputForm              convert : SExpression -> %
---R convert : % -> SExpression            convert : OutputForm -> %
---R convert : DoubleFloat -> %            convert : Integer -> %
---R convert : Symbol -> %                 convert : String -> %
---R convert : List(%) -> %                declare : List(%) -> Symbol
---R destruct : % -> List(%)               ?.? : (%,List(Integer)) -> %
---R ?.? : (%,Integer) -> %                eq : (%,%) -> Boolean
---R expr : % -> OutputForm                flatten : % -> %
---R float : % -> DoubleFloat              float? : % -> Boolean
---R hash : % -> SingleInteger             integer : % -> Integer
---R integer? : % -> Boolean               interpret : % -> Any
---R lambda : (%,List(Symbol)) -> %        latex : % -> String
---R list? : % -> Boolean                  null? : % -> Boolean
---R pair? : % -> Boolean                  parse : String -> %
---R string : % -> String                  string? : % -> Boolean
---R symbol : % -> Symbol                  symbol? : % -> Boolean
---R unparse : % -> String                 ?~=? : (%,%) -> Boolean
---R ?**? : (%,NonNegativeInteger) -> %
+--R ?**? : (%,Integer) -> %               ?**? : (%,NonNegativeInteger) -> %
+--R ?+? : (%,%) -> %                      ?/? : (%,%) -> %
+--R ?=? : (%,%) -> Boolean                1 : () -> %
+--R 0 : () -> %                           atom? : % -> Boolean
+--R binary : (%,List(%)) -> %             car : % -> %
+--R cdr : % -> %                          coerce : % -> OutputForm
+--R convert : SExpression -> %            convert : % -> SExpression
+--R convert : OutputForm -> %             convert : DoubleFloat -> %
+--R convert : Integer -> %                convert : Symbol -> %
+--R convert : String -> %                 convert : List(%) -> %
+--R declare : List(%) -> Symbol           destruct : % -> List(%)
+--R ?.? : (%,List(Integer)) -> %          ?.? : (%,Integer) -> %
+--R eq : (%,%) -> Boolean                 expr : % -> OutputForm
+--R flatten : % -> %                      float : % -> DoubleFloat
+--R float? : % -> Boolean                 hash : % -> SingleInteger
+--R integer : % -> Integer                integer? : % -> Boolean
+--R interpret : % -> Any                  lambda : (%,List(Symbol)) -> %
+--R latex : % -> String                   list? : % -> Boolean
+--R null? : % -> Boolean                  pair? : % -> Boolean
+--R parse : String -> %                   string : % -> String
+--R string? : % -> Boolean                symbol : % -> Symbol
+--R symbol? : % -> Boolean                unparse : % -> String
+--R ?~=? : (%,%) -> Boolean              
 --R compile : (Symbol,List(%)) -> Symbol
 --R function : (%,List(Symbol),Symbol) -> %
 --R
@@ -73148,7 +76065,8 @@ Common Lisp and is not defined in Common Lisp.
 )set message test on
 )set message auto off
 )clear all
---S 1 of 42
+
+--S 1 of 43
 2**(5678 - 4856 + 2 * 17)
 --R 
 --R
@@ -73160,7 +76078,7 @@ Common Lisp and is not defined in Common Lisp.
 --R                                                        Type: PositiveInteger
 --E 1
 
---S 2 of 42
+--S 2 of 43
 x := -101
 --R 
 --R
@@ -73168,7 +76086,7 @@ x := -101
 --R                                                                Type: Integer
 --E 2
 
---S 3 of 42
+--S 3 of 43
 abs(x)
 --R 
 --R
@@ -73176,7 +76094,7 @@ abs(x)
 --R                                                        Type: PositiveInteger
 --E 3
 
---S 4 of 42
+--S 4 of 43
 sign(x)
 --R 
 --R
@@ -73184,7 +76102,7 @@ sign(x)
 --R                                                                Type: Integer
 --E 4
 
---S 5 of 42
+--S 5 of 43
 x < 0
 --R 
 --R
@@ -73192,7 +76110,7 @@ x < 0
 --R                                                                Type: Boolean
 --E 5
 
---S 6 of 42
+--S 6 of 43
 x <= -1
 --R 
 --R
@@ -73200,7 +76118,7 @@ x <= -1
 --R                                                                Type: Boolean
 --E 6
 
---S 7 of 42
+--S 7 of 43
 negative?(x)
 --R 
 --R
@@ -73208,7 +76126,7 @@ negative?(x)
 --R                                                                Type: Boolean
 --E 7
 
---S 8 of 42
+--S 8 of 43
 x > 0
 --R 
 --R
@@ -73216,7 +76134,7 @@ x > 0
 --R                                                                Type: Boolean
 --E 8
 
---S 9 of 42
+--S 9 of 43
 x >= 1
 --R 
 --R
@@ -73224,7 +76142,7 @@ x >= 1
 --R                                                                Type: Boolean
 --E 9
 
---S 10 of 42
+--S 10 of 43
 positive?(x)
 --R 
 --R
@@ -73232,7 +76150,7 @@ positive?(x)
 --R                                                                Type: Boolean
 --E 10
 
---S 11 of 42
+--S 11 of 43
 zero?(x)
 --R 
 --R
@@ -73240,7 +76158,7 @@ zero?(x)
 --R                                                                Type: Boolean
 --E 11
 
---S 12 of 42
+--S 12 of 43
 one?(x)
 --R 
 --R
@@ -73248,7 +76166,7 @@ one?(x)
 --R                                                                Type: Boolean
 --E 12
 
---S 13 of 42
+--S 13 of 43
 (x = -101)@Boolean
 --R 
 --R
@@ -73256,7 +76174,7 @@ one?(x)
 --R                                                                Type: Boolean
 --E 13
 
---S 14 of 42
+--S 14 of 43
 odd?(x)
 --R 
 --R
@@ -73264,7 +76182,7 @@ odd?(x)
 --R                                                                Type: Boolean
 --E 14
 
---S 15 of 42
+--S 15 of 43
 even?(x)
 --R 
 --R
@@ -73272,7 +76190,7 @@ even?(x)
 --R                                                                Type: Boolean
 --E 15
 
---S 16 of 42
+--S 16 of 43
 gcd(56788,43688)
 --R 
 --R
@@ -73280,7 +76198,7 @@ gcd(56788,43688)
 --R                                                        Type: PositiveInteger
 --E 16
 
---S 17 of 42
+--S 17 of 43
 lcm(56788,43688)
 --R 
 --R
@@ -73288,7 +76206,7 @@ lcm(56788,43688)
 --R                                                        Type: PositiveInteger
 --E 17
 
---S 18 of 42
+--S 18 of 43
 max(678,567)
 --R 
 --R
@@ -73296,7 +76214,7 @@ max(678,567)
 --R                                                        Type: PositiveInteger
 --E 18
 
---S 19 of 42
+--S 19 of 43
 min(678,567)
 --R 
 --R
@@ -73304,7 +76222,7 @@ min(678,567)
 --R                                                        Type: PositiveInteger
 --E 19
 
---S 20 of 42
+--S 20 of 43
 reduce(max,[2,45,-89,78,100,-45])
 --R 
 --R
@@ -73312,7 +76230,7 @@ reduce(max,[2,45,-89,78,100,-45])
 --R                                                        Type: PositiveInteger
 --E 20
 
---S 21 of 42
+--S 21 of 43
 reduce(min,[2,45,-89,78,100,-45])
 --R 
 --R
@@ -73320,7 +76238,7 @@ reduce(min,[2,45,-89,78,100,-45])
 --R                                                                Type: Integer
 --E 21
 
---S 22 of 42
+--S 22 of 43
 reduce(gcd,[2,45,-89,78,100,-45])
 --R 
 --R
@@ -73328,7 +76246,7 @@ reduce(gcd,[2,45,-89,78,100,-45])
 --R                                                        Type: PositiveInteger
 --E 22
 
---S 23 of 42
+--S 23 of 43
 reduce(lcm,[2,45,-89,78,100,-45])
 --R 
 --R
@@ -73336,7 +76254,7 @@ reduce(lcm,[2,45,-89,78,100,-45])
 --R                                                        Type: PositiveInteger
 --E 23
 
---S 24 of 42
+--S 24 of 43
 13 / 4
 --R 
 --R
@@ -73346,7 +76264,7 @@ reduce(lcm,[2,45,-89,78,100,-45])
 --R                                                      Type: Fraction(Integer)
 --E 24
 
---S 25 of 42
+--S 25 of 43
 13 quo 4
 --R 
 --