diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index f06cbb2..6175142 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -107,6 +107,18 @@ digraph pic {
 \pagehead{AdditiveValuationAttribute}{ATADDVA}
 \pagepic{ps/v102additivevaluationattribute.eps}{ATADDVA}{1.00}
 \begin{chunk}{AdditiveValuationAttribute.input}
+)set break resume
+)sys rm -f AdditiveValuationAttribute.output
+)spool AdditiveValuationAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
 \end{chunk}
 \begin{chunk}{AdditiveValuationAttribute.help}
 ====================================================================
@@ -159,6 +171,19 @@ digraph pic {
 \pagehead{ApproximateAttribute}{ATAPPRO}
 \pagepic{ps/v102approximateattribute.eps}{ATAPPRO}{1.00}
 \begin{chunk}{ApproximateAttribute.input}
+)set break resume
+)sys rm -f ApproximateAttribute.output
+)spool ApproximateAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{ApproximateAttribute.help}
 ====================================================================
@@ -209,6 +234,19 @@ digraph pic {
 \pagehead{ArbitraryExponentAttribute}{ATARBEX}
 \pagepic{ps/v102arbitraryexponentattribute.eps}{ATARBEX}{1.00}
 \begin{chunk}{ArbitraryExponentAttribute.input}
+)set break resume
+)sys rm -f ArbitraryExponentAttribute.output
+)spool ArbitraryExponentAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{ArbitraryExponentAttribute.help}
 ====================================================================
@@ -259,6 +297,19 @@ digraph pic {
 \pagehead{ArbitraryPrecisionAttribute}{ATARBPR}
 \pagepic{ps/v102arbitraryprecisionattribute.eps}{ATARBPR}{1.00}
 \begin{chunk}{ArbitraryPrecisionAttribute.input}
+)set break resume
+)sys rm -f ArbitraryPrecisionAttribute.output
+)spool ArbitraryPrecisionAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{ArbitraryPrecisionAttribute.help}
 ====================================================================
@@ -835,6 +886,19 @@ digraph pic {
 \pagehead{CanonicalAttribute}{ATCANON}
 \pagepic{ps/v102canonicalattribute.eps}{ATCANON}{1.00}
 \begin{chunk}{CanonicalAttribute.input}
+)set break resume
+)sys rm -f CanonicalAttribute.output
+)spool CanonicalAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{CanonicalAttribute.help}
 ====================================================================
@@ -887,6 +951,18 @@ digraph pic {
 \pagehead{CanonicalClosedAttribute}{ATCANCL}
 \pagepic{ps/v102canonicalclosedattribute.eps}{ATCANCL}{1.00}
 \begin{chunk}{CanonicalClosedAttribute.input}
+)set break resume
+)sys rm -f CanonicalClosedAttribute.output
+)spool CanonicalClosedAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
 \end{chunk}
 \begin{chunk}{CanonicalClosedAttribute.help}
 ====================================================================
@@ -939,6 +1015,19 @@ digraph pic {
 \pagehead{CanonicalUnitNormalAttribute}{ATCUNOR}
 \pagepic{ps/v102canonicalunitnormalattribute.eps}{ATCUNOR}{1.00}
 \begin{chunk}{CanonicalUnitNormalAttribute.input}
+)set break resume
+)sys rm -f CanonicalUnitNormalAttribute.output
+)spool CanonicalUnitNormalAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{CanonicalUnitNormalAttribute.help}
 ====================================================================
@@ -995,6 +1084,19 @@ digraph pic {
 \pagehead{CentralAttribute}{ATCENRL}
 \pagepic{ps/v102centralattribute.eps}{ATCENRL}{1.00}
 \begin{chunk}{CentralAttribute.input}
+)set break resume
+)sys rm -f CentralAttribute.output
+)spool CentralAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{CentralAttribute.help}
 ====================================================================
@@ -1268,6 +1370,19 @@ digraph pic {
 \pagehead{CommutativeStarAttribute}{ATCS}
 \pagepic{ps/v102commutativestarattribute.eps}{ATCS}{1.00}
 \begin{chunk}{CommutativeStarAttribute.input}
+)set break resume
+)sys rm -f CommutativeStarAttribute.output
+)spool CommutativeStarAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{CommutativeStarAttribute.help}
 ====================================================================
@@ -1702,6 +1817,19 @@ digraph pic {
 \pagehead{FiniteAggregateAttribute}{ATFINAG}
 \pagepic{ps/v102finiteaggregateattribute.eps}{ATFINAG}{1.00}
 \begin{chunk}{FiniteAggregateAttribute.input}
+)set break resume
+)sys rm -f FiniteAggregateAttribute.output
+)spool FiniteAggregateAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{FiniteAggregateAttribute.help}
 ====================================================================
@@ -2016,6 +2144,19 @@ digraph pic {
 \pagehead{JacobiIdentityAttribute}{ATJACID}
 \pagepic{ps/v102jacobiidentityattribute.eps}{ATJACID}{1.00}
 \begin{chunk}{JacobiIdentityAttribute.input}
+)set break resume
+)sys rm -f JacobiIdentityAttribute.output
+)spool JacobiIdentityAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{JacobiIdentityAttribute.help}
 ====================================================================
@@ -2068,6 +2209,19 @@ digraph pic {
 \pagehead{LazyRepresentationAttribute}{ATLR}
 \pagepic{ps/v102lazyrepresentationattribute.eps}{ATLR}{1.00}
 \begin{chunk}{LazyRepresentationAttribute.input}
+)set break resume
+)sys rm -f LazyRepresentationAttribute.output
+)spool LazyRepresentationAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{LazyRepresentationAttribute.help}
 ====================================================================
@@ -2118,6 +2272,19 @@ digraph pic {
 \pagehead{LeftUnitaryAttribute}{ATLUNIT}
 \pagepic{ps/v102leftunitaryattribute.eps}{ATLUNIT}{1.00}
 \begin{chunk}{LeftUnitaryAttribute.input}
+)set break resume
+)sys rm -f LeftUnitaryAttribute.output
+)spool LeftUnitaryAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{LeftUnitaryAttribute.help}
 ====================================================================
@@ -2316,6 +2483,19 @@ digraph pic {
 \pagehead{MultiplicativeValuationAttribute}{ATMULVA}
 \pagepic{ps/v102multiplicativevaluationattribute.eps}{ATMULVA}{1.00}
 \begin{chunk}{MultiplicativeValuationAttribute.input}
+)set break resume
+)sys rm -f MultiplicativeValuationAttribute.output
+)spool MultiplicativeValuationAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{MultiplicativeValuationAttribute.help}
 ====================================================================
@@ -2368,6 +2548,19 @@ digraph pic {
 \pagehead{NotherianAttribute}{ATNOTHR}
 \pagepic{ps/v102notherianattribute.eps}{ATNOTHR}{1.00}
 \begin{chunk}{NotherianAttribute.input}
+)set break resume
+)sys rm -f NotherianAttribute.output
+)spool NotherianAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{NotherianAttribute.help}
 ====================================================================
@@ -2418,6 +2611,19 @@ digraph pic {
 \pagehead{NoZeroDivisorsAttribute}{ATNZDIV}
 \pagepic{ps/v102nozerodivisorsattribute.eps}{ATNZDIV}{1.00}
 \begin{chunk}{NoZeroDivisorsAttribute.input}
+)set break resume
+)sys rm -f NoZeroDivisorsAttribute.output
+)spool NoZeroDivisorsAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{NoZeroDivisorsAttribute.help}
 ====================================================================
@@ -2470,6 +2676,19 @@ digraph pic {
 \pagehead{NullSquareAttribute}{ATNULSQ}
 \pagepic{ps/v102nullsquareattribute.eps}{ATNULSQ}{1.00}
 \begin{chunk}{NullSquareAttribute.input}
+)set break resume
+)sys rm -f NullSquareAttribute.output
+)spool NullSquareAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{NullSquareAttribute.help}
 ====================================================================
@@ -2629,6 +2848,19 @@ digraph pic {
 \pagehead{PartiallyOrderedSetAttribute}{ATPOSET}
 \pagepic{ps/v102partiallyorderedsetattribute.eps}{ATPOSET}{1.00}
 \begin{chunk}{PartiallyOrderedSetAttribute.input}
+)set break resume
+)sys rm -f PartiallyOrderedSetAttribute.output
+)spool PartiallyOrderedSetAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{PartiallyOrderedSetAttribute.help}
 ====================================================================
@@ -3435,6 +3667,19 @@ digraph pic {
 \pagehead{RightUnitaryAttribute}{ATRUNIT}
 \pagepic{ps/v102rightunitaryattribute.eps}{ATRUNIT}{1.00}
 \begin{chunk}{RightUnitaryAttribute.input}
+)set break resume
+)sys rm -f RightUnitaryAttribute.output
+)spool RightUnitaryAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{RightUnitaryAttribute.help}
 ====================================================================
@@ -3485,6 +3730,19 @@ digraph pic {
 \pagehead{ShallowlyMutableAttribute}{ATSHMUT}
 \pagepic{ps/v102shallowlymutableattribute.eps}{ATSHMUT}{1.00}
 \begin{chunk}{ShallowlyMutableAttribute.input}
+)set break resume
+)sys rm -f ShallowlyMutableAttribute.output
+)spool ShallowlyMutableAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{ShallowlyMutableAttribute.help}
 ====================================================================
@@ -3881,6 +4139,19 @@ digraph pic {
 \pagehead{UnitsKnownAttribute}{ATUNIKN}
 \pagepic{ps/v102unitsknownattribute.eps}{ATUNIKN}{1.00}
 \begin{chunk}{UnitsKnownAttribute.input}
+)set break resume
+)sys rm -f UnitsKnownAttribute.output
+)spool UnitsKnownAttribute.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+1
+--E 1
+)spool
+)lisp (bye)
+
 \end{chunk}
 \begin{chunk}{UnitsKnownAttribute.help}
 ====================================================================
@@ -4263,7 +4534,7 @@ digraph pic {
 )show Comparable
 --R Comparable  is a category constructor
 --R Abbreviation for Comparable is COMPAR 
---R This constructor is not exposed in this frame.
+--R This constructor is exposed in this frame.
 --R Issue )edit bookvol10.2.pamphlet to see algebra source code for COMPAR 
 --R
 --R------------------------------- Operations --------------------------------
@@ -7918,10 +8189,10 @@ digraph pic {
 --R
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
---R hash : % -> SingleInteger             index : PositiveInteger -> %
---R latex : % -> String                   lookup : % -> PositiveInteger
---R random : () -> %                      size : () -> NonNegativeInteger
---R ?~=? : (%,%) -> Boolean              
+--R enumerate : () -> List(%)             hash : % -> SingleInteger
+--R index : PositiveInteger -> %          latex : % -> String
+--R lookup : % -> PositiveInteger         random : () -> %
+--R size : () -> NonNegativeInteger       ?~=? : (%,%) -> Boolean
 --R
 --E 1
 
@@ -15096,11 +15367,11 @@ digraph pic {
 --R ?<? : (%,%) -> Boolean                ?<=? : (%,%) -> Boolean
 --R ?=? : (%,%) -> Boolean                ?>? : (%,%) -> Boolean
 --R ?>=? : (%,%) -> Boolean               coerce : % -> OutputForm
---R hash : % -> SingleInteger             index : PositiveInteger -> %
---R latex : % -> String                   lookup : % -> PositiveInteger
---R max : (%,%) -> %                      min : (%,%) -> %
---R random : () -> %                      size : () -> NonNegativeInteger
---R ?~=? : (%,%) -> Boolean              
+--R enumerate : () -> List(%)             hash : % -> SingleInteger
+--R index : PositiveInteger -> %          latex : % -> String
+--R lookup : % -> PositiveInteger         max : (%,%) -> %
+--R min : (%,%) -> %                      random : () -> %
+--R size : () -> NonNegativeInteger       ?~=? : (%,%) -> Boolean
 --R
 --E 1
 
@@ -27804,7 +28075,6 @@ 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.
@@ -27834,6 +28104,7 @@ digraph pic {
 --R convert : % -> InputForm if S has KONVERT(INFORM)
 --R count : (S,%) -> NonNegativeInteger if S has SETCAT and $ has finiteAggregate
 --R count : ((S -> Boolean),%) -> NonNegativeInteger if $ has finiteAggregate
+--R enumerate : () -> List(%) if S has FINITE
 --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
@@ -45055,6 +45326,7 @@ digraph pic {
 --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
 --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
@@ -47732,7 +48004,6 @@ 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.
@@ -47770,6 +48041,7 @@ digraph pic {
 --R coerce : Fraction(Integer) -> % if R has RETRACT(FRAC(INT))
 --R convert : % -> InputForm if R has KONVERT(INFORM)
 --R ?.? : (%,R) -> % if R has ELTAB(R,R)
+--R enumerate : () -> List(%) if R has FINITE
 --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)
@@ -70478,7 +70750,6 @@ digraph pic {
 
 --S 1 of 1
 )show FiniteFieldCategory
---R 
 --R FiniteFieldCategory  is a category constructor
 --R Abbreviation for FiniteFieldCategory is FFIELDC 
 --R This constructor is exposed in this frame.
@@ -70498,21 +70769,22 @@ digraph pic {
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R createPrimitiveElement : () -> %      differentiate : % -> %
---R factor : % -> Factored(%)             gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R index : PositiveInteger -> %          init : () -> %
---R inv : % -> %                          latex : % -> String
---R lcm : List(%) -> %                    lcm : (%,%) -> %
---R lookup : % -> PositiveInteger         one? : % -> Boolean
---R order : % -> PositiveInteger          prime? : % -> Boolean
---R primeFrobenius : % -> %               primitive? : % -> Boolean
---R primitiveElement : () -> %            ?quo? : (%,%) -> %
---R random : () -> %                      recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    sample : () -> %
---R size : () -> NonNegativeInteger       sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--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 one? : % -> Boolean                   order : % -> PositiveInteger
+--R prime? : % -> Boolean                 primeFrobenius : % -> %
+--R primitive? : % -> Boolean             primitiveElement : () -> %
+--R ?quo? : (%,%) -> %                    random : () -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R sample : () -> %                      size : () -> NonNegativeInteger
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,NonNegativeInteger) -> %
@@ -71877,7 +72149,6 @@ digraph pic {
 
 --S 1 of 1
 )show PseudoAlgebraicClosureOfFiniteFieldCategory
---R 
 --R PseudoAlgebraicClosureOfFiniteFieldCategory  is a category constructor
 --R Abbreviation for PseudoAlgebraicClosureOfFiniteFieldCategory is PACFFC 
 --R This constructor is exposed in this frame.
@@ -71897,25 +72168,26 @@ digraph pic {
 --R coerce : Fraction(Integer) -> %       coerce : % -> %
 --R coerce : Integer -> %                 coerce : % -> OutputForm
 --R conjugate : % -> %                    createPrimitiveElement : () -> %
---R differentiate : % -> %                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 one? : % -> Boolean                   order : % -> PositiveInteger
---R previousTower : % -> %                prime? : % -> Boolean
---R primeFrobenius : % -> %               primitive? : % -> Boolean
---R primitiveElement : () -> %            ?quo? : (%,%) -> %
---R random : () -> %                      recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    sample : () -> %
---R setTower! : % -> Void                 size : () -> NonNegativeInteger
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               unit? : % -> Boolean
---R unitCanonical : % -> %                vectorise : (%,%) -> Vector(%)
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--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 order : % -> PositiveInteger          previousTower : % -> %
+--R prime? : % -> Boolean                 primeFrobenius : % -> %
+--R primitive? : % -> Boolean             primitiveElement : () -> %
+--R ?quo? : (%,%) -> %                    random : () -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R sample : () -> %                      setTower! : % -> Void
+--R size : () -> NonNegativeInteger       sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R unit? : % -> Boolean                  unitCanonical : % -> %
+--R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,NonNegativeInteger) -> %
@@ -73756,7 +74028,6 @@ digraph pic {
 
 --S 1 of 1
 )show FiniteAlgebraicExtensionField
---R 
 --R FiniteAlgebraicExtensionField(F: Field)  is a category constructor
 --R Abbreviation for FiniteAlgebraicExtensionField is FAXF 
 --R This constructor is exposed in this frame.
@@ -73813,6 +74084,7 @@ digraph pic {
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if F has CHARNZ or F has FINITE
 --R discreteLog : % -> NonNegativeInteger if F has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if F has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -74570,7 +74842,6 @@ digraph pic {
 
 --S 1 of 1
 )show MonogenicAlgebra
---R 
 --R MonogenicAlgebra(R: CommutativeRing,UP: UnivariatePolynomialCategory(t#1))  is a category constructor
 --R Abbreviation for MonogenicAlgebra is MONOGEN 
 --R This constructor is exposed in this frame.
@@ -74638,6 +74909,7 @@ digraph pic {
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if R has FFIELDC
 --R discreteLog : % -> NonNegativeInteger if R has FFIELDC
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if R has FIELD
+--R enumerate : () -> List(%) if R has FINITE
 --R euclideanSize : % -> NonNegativeInteger if R has FIELD
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has FIELD
 --R exquo : (%,%) -> Union(%,"failed") if R has FIELD
@@ -75607,7 +75879,6 @@ digraph pic {
 
 --S 1 of 1
 )show ComplexCategory
---R 
 --R ComplexCategory(R: CommutativeRing)  is a category constructor
 --R Abbreviation for ComplexCategory is COMPCAT 
 --R This constructor is exposed in this frame.
@@ -75710,6 +75981,7 @@ digraph pic {
 --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)
@@ -76750,7 +77022,6 @@ digraph pic {
 
 --S 1 of 1
 )show FunctionFieldCategory
---R 
 --R FunctionFieldCategory(F: UniqueFactorizationDomain,UP: UnivariatePolynomialCategory(t#1),UPUP: UnivariatePolynomialCategory(Fraction(t#2)))  is a category constructor
 --R Abbreviation for FunctionFieldCategory is FFCAT 
 --R This constructor is exposed in this frame.
@@ -76832,6 +77103,7 @@ digraph pic {
 --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
 --R exquo : (%,%) -> Union(%,"failed") if Fraction(UP) has FIELD
diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index cd0bff6..9a3888f 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -1059,6 +1059,7 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --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
 --R exquo : (%,%) -> Union(%,"failed") if Fraction(UP) has FIELD
@@ -15075,16 +15076,17 @@ BlowUpWithQuadTrans: Exports == Implementation where
 --R ?>? : (%,%) -> Boolean                ?>=? : (%,%) -> Boolean
 --R ?\/? : (%,%) -> %                     ^? : % -> %
 --R ?and? : (%,%) -> %                    coerce : % -> OutputForm
---R convert : % -> InputForm              false : () -> %
---R hash : % -> SingleInteger             implies : (%,%) -> %
---R index : PositiveInteger -> %          latex : % -> String
---R lookup : % -> PositiveInteger         max : (%,%) -> %
---R min : (%,%) -> %                      nand : (%,%) -> %
---R nor : (%,%) -> %                      not? : % -> %
---R ?or? : (%,%) -> %                     random : () -> %
---R size : () -> NonNegativeInteger       test : % -> Boolean
---R true : () -> %                        xor : (%,%) -> %
---R ~? : % -> %                           ?~=? : (%,%) -> Boolean
+--R convert : % -> InputForm              enumerate : () -> List(%)
+--R false : () -> %                       hash : % -> SingleInteger
+--R implies : (%,%) -> %                  index : PositiveInteger -> %
+--R latex : % -> String                   lookup : % -> PositiveInteger
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R nand : (%,%) -> %                     nor : (%,%) -> %
+--R not? : % -> %                         ?or? : (%,%) -> %
+--R random : () -> %                      size : () -> NonNegativeInteger
+--R test : % -> Boolean                   true : () -> %
+--R xor : (%,%) -> %                      ~? : % -> %
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -26578,7 +26580,6 @@ 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.
@@ -26641,6 +26642,7 @@ DifferentialSparseMultivariatePolynomial(R, S, V):
 --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
 --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
@@ -26908,7 +26910,6 @@ 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.
@@ -26971,6 +26972,7 @@ DirectProduct(dim:NonNegativeInteger, R:Type):
 --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
 --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
@@ -27163,7 +27165,6 @@ 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.
@@ -27226,6 +27227,7 @@ DirectProductMatrixModule(n, R, M, S): DPcategory == DPcapsule where
 --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
 --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
@@ -39822,7 +39824,6 @@ FiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 
 --S 1 of 1
 )show FiniteField
---R 
 --R FiniteField(p: PositiveInteger,n: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteField is FF 
 --R This constructor is exposed in this frame.
@@ -39880,6 +39881,7 @@ FiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
 --R discreteLog : % -> NonNegativeInteger if PrimeField(p) has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if PrimeField(p) has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -40081,7 +40083,6 @@ FiniteField(p:PositiveInteger, n:PositiveInteger): _
 
 --S 1 of 1
 )show FiniteFieldCyclicGroup
---R 
 --R FiniteFieldCyclicGroup(p: PositiveInteger,extdeg: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteFieldCyclicGroup is FFCG 
 --R This constructor is exposed in this frame.
@@ -40139,6 +40140,7 @@ FiniteField(p:PositiveInteger, n:PositiveInteger): _
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
 --R discreteLog : % -> NonNegativeInteger if PrimeField(p) has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if PrimeField(p) has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -40354,7 +40356,6 @@ FiniteFieldCyclicGroup(p,extdeg):_
 
 --S 1 of 1
 )show FiniteFieldCyclicGroupExtension
---R 
 --R FiniteFieldCyclicGroupExtension(GF: FiniteFieldCategory,extdeg: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteFieldCyclicGroupExtension is FFCGX 
 --R This constructor is not exposed in this frame.
@@ -40411,6 +40412,7 @@ FiniteFieldCyclicGroup(p,extdeg):_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -40627,7 +40629,6 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 
 --S 1 of 1
 )show FiniteFieldCyclicGroupExtensionByPolynomial
---R 
 --R FiniteFieldCyclicGroupExtensionByPolynomial(GF: FiniteFieldCategory,defpol: SparseUnivariatePolynomial(GF))  is a domain constructor
 --R Abbreviation for FiniteFieldCyclicGroupExtensionByPolynomial is FFCGP 
 --R This constructor is not exposed in this frame.
@@ -40684,6 +40685,7 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -41167,7 +41169,6 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 
 --S 1 of 1
 )show FiniteFieldExtension
---R 
 --R FiniteFieldExtension(GF: FiniteFieldCategory,n: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteFieldExtension is FFX 
 --R This constructor is not exposed in this frame.
@@ -41224,6 +41225,7 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -41427,7 +41429,6 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 
 --S 1 of 1
 )show FiniteFieldExtensionByPolynomial
---R 
 --R FiniteFieldExtensionByPolynomial(GF: FiniteFieldCategory,defpol: SparseUnivariatePolynomial(GF))  is a domain constructor
 --R Abbreviation for FiniteFieldExtensionByPolynomial is FFP 
 --R This constructor is not exposed in this frame.
@@ -41484,6 +41485,7 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -41887,7 +41889,6 @@ FiniteFieldExtensionByPolynomial(GF:FiniteFieldCategory,_
 
 --S 1 of 1
 )show FiniteFieldNormalBasis
---R 
 --R FiniteFieldNormalBasis(p: PositiveInteger,extdeg: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteFieldNormalBasis is FFNB 
 --R This constructor is exposed in this frame.
@@ -41945,6 +41946,7 @@ FiniteFieldExtensionByPolynomial(GF:FiniteFieldCategory,_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if PrimeField(p) has CHARNZ or PrimeField(p) has FINITE
 --R discreteLog : % -> NonNegativeInteger if PrimeField(p) has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if PrimeField(p) has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -42172,7 +42174,6 @@ FiniteFieldNormalBasis(p,extdeg):_
 
 --S 1 of 1
 )show FiniteFieldNormalBasisExtension
---R 
 --R FiniteFieldNormalBasisExtension(GF: FiniteFieldCategory,extdeg: PositiveInteger)  is a domain constructor
 --R Abbreviation for FiniteFieldNormalBasisExtension is FFNBX 
 --R This constructor is not exposed in this frame.
@@ -42229,6 +42230,7 @@ FiniteFieldNormalBasis(p,extdeg):_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -42456,7 +42458,6 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 
 --S 1 of 1
 )show FiniteFieldNormalBasisExtensionByPolynomial
---R 
 --R FiniteFieldNormalBasisExtensionByPolynomial(GF: FiniteFieldCategory,uni: Union(SparseUnivariatePolynomial(GF),Vector(List(Record(value: GF,index: SingleInteger)))))  is a domain constructor
 --R Abbreviation for FiniteFieldNormalBasisExtensionByPolynomial is FFNBP 
 --R This constructor is not exposed in this frame.
@@ -42513,6 +42514,7 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if GF has CHARNZ or GF has FINITE
 --R discreteLog : % -> NonNegativeInteger if GF has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if GF has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -57239,7 +57241,6 @@ 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.
@@ -57302,6 +57303,7 @@ HTMLFormat(): public == private where
 --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
 --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
@@ -62685,7 +62687,6 @@ InnerAlgebraicNumber(): Exports == Implementation where
 
 --S 1 of 1
 )show InnerFiniteField
---R 
 --R InnerFiniteField(p: PositiveInteger,n: PositiveInteger)  is a domain constructor
 --R Abbreviation for InnerFiniteField is IFF 
 --R This constructor is not exposed in this frame.
@@ -62744,6 +62745,7 @@ InnerAlgebraicNumber(): Exports == Implementation where
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if InnerPrimeField(p) has CHARNZ or InnerPrimeField(p) has FINITE
 --R discreteLog : % -> NonNegativeInteger if InnerPrimeField(p) has FINITE
 --R divide : (%,%) -> Record(quotient: %,remainder: %)
+--R enumerate : () -> List(%) if InnerPrimeField(p) has FINITE
 --R euclideanSize : % -> NonNegativeInteger
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
@@ -63674,7 +63676,6 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 
 --S 1 of 1
 )show InnerPrimeField
---R 
 --R InnerPrimeField(p: PositiveInteger)  is a domain constructor
 --R Abbreviation for InnerPrimeField is IPF 
 --R This constructor is not exposed in this frame.
@@ -63697,24 +63698,25 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R convert : % -> Integer                coordinates : % -> Vector(%)
 --R createPrimitiveElement : () -> %      degree : % -> PositiveInteger
 --R differentiate : % -> %                dimension : () -> CardinalNumber
---R factor : % -> Factored(%)             gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R inGroundField? : % -> Boolean         index : PositiveInteger -> %
---R init : () -> %                        inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
---R norm : % -> %                         one? : % -> Boolean
---R order : % -> PositiveInteger          prime? : % -> Boolean
---R primeFrobenius : % -> %               primitive? : % -> Boolean
---R primitiveElement : () -> %            ?quo? : (%,%) -> %
---R random : () -> %                      recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    represents : Vector(%) -> %
---R retract : % -> %                      sample : () -> %
---R size : () -> NonNegativeInteger       sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> %                        transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--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 one? : % -> Boolean                   order : % -> PositiveInteger
+--R prime? : % -> Boolean                 primeFrobenius : % -> %
+--R primitive? : % -> Boolean             primitiveElement : () -> %
+--R ?quo? : (%,%) -> %                    random : () -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R represents : Vector(%) -> %           retract : % -> %
+--R sample : () -> %                      size : () -> NonNegativeInteger
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> %
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R Frobenius : % -> % if $ has FINITE
@@ -67066,7 +67068,6 @@ Integer: Join(IntegerNumberSystem, ConvertibleTo String, OpenMath) with
 
 --S 1 of 1
 )show IntegerMod
---R 
 --R IntegerMod(p: PositiveInteger)  is a domain constructor
 --R Abbreviation for IntegerMod is ZMOD 
 --R This constructor is not exposed in this frame.
@@ -67080,12 +67081,13 @@ Integer: Join(IntegerNumberSystem, ConvertibleTo String, OpenMath) with
 --R 1 : () -> %                           0 : () -> %
 --R ?^? : (%,PositiveInteger) -> %        coerce : Integer -> %
 --R coerce : % -> OutputForm              convert : % -> Integer
---R hash : % -> SingleInteger             index : PositiveInteger -> %
---R init : () -> %                        latex : % -> String
---R lookup : % -> PositiveInteger         one? : % -> Boolean
---R random : () -> %                      recip : % -> Union(%,"failed")
---R sample : () -> %                      size : () -> NonNegativeInteger
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R enumerate : () -> List(%)             hash : % -> SingleInteger
+--R index : PositiveInteger -> %          init : () -> %
+--R latex : % -> String                   lookup : % -> PositiveInteger
+--R one? : % -> Boolean                   random : () -> %
+--R recip : % -> Union(%,"failed")        sample : () -> %
+--R size : () -> NonNegativeInteger       zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R ?^? : (%,NonNegativeInteger) -> %
@@ -75285,7 +75287,6 @@ LyndonWord(VarSet:OrderedSet):Public == Private where
 
 --S 1 of 1
 )show MachineComplex
---R 
 --R MachineComplex  is a domain constructor
 --R Abbreviation for MachineComplex is MCMPLX 
 --R This constructor is exposed in this frame.
@@ -75393,6 +75394,7 @@ LyndonWord(VarSet:OrderedSet):Public == Private where
 --R discriminant : Vector(%) -> MachineFloat
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if MachineFloat has EUCDOM
 --R ?.? : (%,MachineFloat) -> % if MachineFloat has ELTAB(MFLOAT,MFLOAT)
+--R enumerate : () -> List(%) if MachineFloat has FINITE
 --R euclideanSize : % -> NonNegativeInteger if MachineFloat has EUCDOM
 --R eval : (%,List(MachineFloat),List(MachineFloat)) -> % if MachineFloat has EVALAB(MFLOAT)
 --R eval : (%,MachineFloat,MachineFloat) -> % if MachineFloat has EVALAB(MFLOAT)
@@ -79876,7 +79878,6 @@ Matrix(R): Exports == Implementation where
 
 --S 1 of 1
 )show ModMonic
---R 
 --R ModMonic(R: Ring,Rep: UnivariatePolynomialCategory(R))  is a domain constructor
 --R Abbreviation for ModMonic is MODMON 
 --R This constructor is not exposed in this frame.
@@ -79969,6 +79970,7 @@ Matrix(R): Exports == Implementation where
 --R ?.? : (%,Fraction(%)) -> Fraction(%) if R has INTDOM
 --R elt : (Fraction(%),R) -> R if R has FIELD
 --R elt : (Fraction(%),Fraction(%)) -> Fraction(%) if R has INTDOM
+--R enumerate : () -> List(%) if R has FINITE
 --R euclideanSize : % -> NonNegativeInteger if R has FIELD
 --R eval : (%,List(SingletonAsOrderedSet),List(%)) -> %
 --R eval : (%,SingletonAsOrderedSet,%) -> %
@@ -81394,7 +81396,6 @@ MoebiusTransform(F): Exports == Implementation where
 
 --S 1 of 1
 )show MonoidRing
---R 
 --R MonoidRing(R: Ring,M: Monoid)  is a domain constructor
 --R Abbreviation for MonoidRing is MRING 
 --R This constructor is not exposed in this frame.
@@ -81424,6 +81425,7 @@ MoebiusTransform(F): Exports == Implementation where
 --R characteristic : () -> NonNegativeInteger
 --R charthRoot : % -> Union(%,"failed") if R has CHARNZ
 --R coerce : List(Record(coef: R,monom: M)) -> %
+--R enumerate : () -> List(%) if M has FINITE and R has FINITE
 --R index : PositiveInteger -> % if M has FINITE and R has FINITE
 --R leadingCoefficient : % -> R if M has ORDSET
 --R leadingMonomial : % -> M if M has ORDSET
@@ -89081,7 +89083,6 @@ OrderedCompletion(R:SetCategory): Exports == Implementation where
 
 --S 1 of 1
 )show OrderedDirectProduct
---R 
 --R OrderedDirectProduct(dim: NonNegativeInteger,S: OrderedAbelianMonoidSup,f: ((Vector(S),Vector(S)) -> Boolean))  is a domain constructor
 --R Abbreviation for OrderedDirectProduct is ODP 
 --R This constructor is not exposed in this frame.
@@ -89144,6 +89145,7 @@ OrderedCompletion(R:SetCategory): Exports == Implementation where
 --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
 --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
@@ -103217,7 +103219,6 @@ PositiveInteger: Join(AbelianSemiGroup,OrderedSet,Monoid) with
 
 --S 1 of 1
 )show PrimeField
---R 
 --R PrimeField(p: PositiveInteger)  is a domain constructor
 --R Abbreviation for PrimeField is PF 
 --R This constructor is exposed in this frame.
@@ -103240,24 +103241,25 @@ PositiveInteger: Join(AbelianSemiGroup,OrderedSet,Monoid) with
 --R convert : % -> Integer                coordinates : % -> Vector(%)
 --R createPrimitiveElement : () -> %      degree : % -> PositiveInteger
 --R differentiate : % -> %                dimension : () -> CardinalNumber
---R factor : % -> Factored(%)             gcd : List(%) -> %
---R gcd : (%,%) -> %                      hash : % -> SingleInteger
---R inGroundField? : % -> Boolean         index : PositiveInteger -> %
---R init : () -> %                        inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
---R norm : % -> %                         one? : % -> Boolean
---R order : % -> PositiveInteger          prime? : % -> Boolean
---R primeFrobenius : % -> %               primitive? : % -> Boolean
---R primitiveElement : () -> %            ?quo? : (%,%) -> %
---R random : () -> %                      recip : % -> Union(%,"failed")
---R ?rem? : (%,%) -> %                    represents : Vector(%) -> %
---R retract : % -> %                      sample : () -> %
---R size : () -> NonNegativeInteger       sizeLess? : (%,%) -> Boolean
---R squareFree : % -> Factored(%)         squareFreePart : % -> %
---R trace : % -> %                        transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--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 one? : % -> Boolean                   order : % -> PositiveInteger
+--R prime? : % -> Boolean                 primeFrobenius : % -> %
+--R primitive? : % -> Boolean             primitiveElement : () -> %
+--R ?quo? : (%,%) -> %                    random : () -> %
+--R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
+--R represents : Vector(%) -> %           retract : % -> %
+--R sample : () -> %                      size : () -> NonNegativeInteger
+--R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
+--R squareFreePart : % -> %               trace : % -> %
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R Frobenius : % -> % if $ has FINITE
@@ -104713,7 +104715,6 @@ PseudoAlgebraicClosureOfAlgExtOfRationalNumber(downLevel:K):Exp == Impl where
 
 --S 1 of 1
 )show PseudoAlgebraicClosureOfFiniteField
---R 
 --R PseudoAlgebraicClosureOfFiniteField(K: FiniteFieldCategory)  is a domain constructor
 --R Abbreviation for PseudoAlgebraicClosureOfFiniteField is PACOFF 
 --R This constructor is exposed in this frame.
@@ -104736,27 +104737,27 @@ PseudoAlgebraicClosureOfAlgExtOfRationalNumber(downLevel:K):Exp == Impl where
 --R coerce : % -> %                       coerce : Integer -> %
 --R coerce : % -> OutputForm              conjugate : % -> %
 --R createPrimitiveElement : () -> %      differentiate : % -> %
---R dimension : () -> CardinalNumber      extDegree : % -> PositiveInteger
---R factor : % -> Factored(%)             fullOutput : % -> OutputForm
---R gcd : List(%) -> %                    gcd : (%,%) -> %
---R ground? : % -> Boolean                hash : % -> SingleInteger
---R inGroundField? : % -> Boolean         index : PositiveInteger -> %
---R init : () -> %                        inv : % -> %
---R latex : % -> String                   lcm : List(%) -> %
---R lcm : (%,%) -> %                      lookup : % -> PositiveInteger
---R maxTower : List(%) -> %               one? : % -> Boolean
---R order : % -> PositiveInteger          previousTower : % -> %
---R prime? : % -> Boolean                 primeFrobenius : % -> %
---R primitive? : % -> Boolean             primitiveElement : () -> %
---R ?quo? : (%,%) -> %                    random : () -> %
---R recip : % -> Union(%,"failed")        ?rem? : (%,%) -> %
---R retract : % -> K                      sample : () -> %
---R setTower! : % -> Void                 size : () -> NonNegativeInteger
---R sizeLess? : (%,%) -> Boolean          squareFree : % -> Factored(%)
---R squareFreePart : % -> %               transcendent? : % -> Boolean
---R unit? : % -> Boolean                  unitCanonical : % -> %
---R vectorise : (%,%) -> Vector(%)        zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R dimension : () -> CardinalNumber      enumerate : () -> List(%)
+--R extDegree : % -> PositiveInteger      factor : % -> Factored(%)
+--R fullOutput : % -> OutputForm          gcd : List(%) -> %
+--R gcd : (%,%) -> %                      ground? : % -> Boolean
+--R hash : % -> SingleInteger             inGroundField? : % -> Boolean
+--R index : PositiveInteger -> %          init : () -> %
+--R inv : % -> %                          latex : % -> String
+--R lcm : List(%) -> %                    lcm : (%,%) -> %
+--R lookup : % -> PositiveInteger         maxTower : List(%) -> %
+--R one? : % -> Boolean                   order : % -> PositiveInteger
+--R previousTower : % -> %                prime? : % -> Boolean
+--R primeFrobenius : % -> %               primitive? : % -> Boolean
+--R primitiveElement : () -> %            ?quo? : (%,%) -> %
+--R random : () -> %                      recip : % -> Union(%,"failed")
+--R ?rem? : (%,%) -> %                    retract : % -> K
+--R sample : () -> %                      setTower! : % -> Void
+--R size : () -> NonNegativeInteger       sizeLess? : (%,%) -> Boolean
+--R squareFree : % -> Factored(%)         squareFreePart : % -> %
+--R transcendent? : % -> Boolean          unit? : % -> Boolean
+--R unitCanonical : % -> %                vectorise : (%,%) -> Vector(%)
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (NonNegativeInteger,%) -> %
 --R ?**? : (%,NonNegativeInteger) -> %
 --R Frobenius : % -> % if K has FINITE
@@ -107478,7 +107479,6 @@ Queue(S:SetCategory): QueueAggregate S with
 
 --S 1 of 1
 )show RadicalFunctionField
---R 
 --R RadicalFunctionField(F: UniqueFactorizationDomain,UP: UnivariatePolynomialCategory(F),UPUP: UnivariatePolynomialCategory(Fraction(UP)),radicnd: Fraction(UP),n: NonNegativeInteger)  is a domain constructor
 --R Abbreviation for RadicalFunctionField is RADFF 
 --R This constructor is not exposed in this frame.
@@ -107560,6 +107560,7 @@ Queue(S:SetCategory): QueueAggregate S with
 --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
 --R exquo : (%,%) -> Union(%,"failed") if Fraction(UP) has FIELD
@@ -116670,7 +116671,6 @@ Set(S:SetCategory): FiniteSetAggregate S == add
 
 --S 1 of 1
 )show SetOfMIntegersInOneToN
---R 
 --R SetOfMIntegersInOneToN(m: PositiveInteger,n: PositiveInteger)  is a domain constructor
 --R Abbreviation for SetOfMIntegersInOneToN is SETMN 
 --R This constructor is not exposed in this frame.
@@ -116678,10 +116678,11 @@ Set(S:SetCategory): FiniteSetAggregate S == add
 --R
 --R------------------------------- Operations --------------------------------
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
---R enumerate : () -> Vector(%)           hash : % -> SingleInteger
---R index : PositiveInteger -> %          latex : % -> String
---R lookup : % -> PositiveInteger         random : () -> %
---R size : () -> NonNegativeInteger       ?~=? : (%,%) -> Boolean
+--R enumerate : () -> Vector(%)           enumerate : () -> List(%)
+--R hash : % -> SingleInteger             index : PositiveInteger -> %
+--R latex : % -> String                   lookup : % -> PositiveInteger
+--R random : () -> %                      size : () -> NonNegativeInteger
+--R ?~=? : (%,%) -> Boolean              
 --R delta : (%,PositiveInteger,PositiveInteger) -> NonNegativeInteger
 --R elements : % -> List(PositiveInteger)
 --R incrementKthElement : (%,PositiveInteger) -> Union(%,"failed")
@@ -117629,7 +117630,6 @@ SExpressionOf(Str, Sym, Int, Flt, Expr): Decl == Body where
 
 --S 1 of 1
 )show SimpleAlgebraicExtension
---R 
 --R SimpleAlgebraicExtension(R: CommutativeRing,UP: UnivariatePolynomialCategory(R),M: UP)  is a domain constructor
 --R Abbreviation for SimpleAlgebraicExtension is SAE 
 --R This constructor is not exposed in this frame.
@@ -117697,6 +117697,7 @@ SExpressionOf(Str, Sym, Int, Flt, Expr): Decl == Body where
 --R discreteLog : (%,%) -> Union(NonNegativeInteger,"failed") if R has FFIELDC
 --R discreteLog : % -> NonNegativeInteger if R has FFIELDC
 --R divide : (%,%) -> Record(quotient: %,remainder: %) if R has FIELD
+--R enumerate : () -> List(%) if R has FINITE
 --R euclideanSize : % -> NonNegativeInteger if R has FIELD
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed") if R has FIELD
 --R exquo : (%,%) -> Union(%,"failed") if R has FIELD
@@ -123299,7 +123300,6 @@ SparseUnivariateTaylorSeries(Coef,var,cen): Exports == Implementation where
 
 --S 1 of 1
 )show SplitHomogeneousDirectProduct
---R 
 --R SplitHomogeneousDirectProduct(dimtot: NonNegativeInteger,dim1: NonNegativeInteger,S: OrderedAbelianMonoidSup)  is a domain constructor
 --R Abbreviation for SplitHomogeneousDirectProduct is SHDP 
 --R This constructor is not exposed in this frame.
@@ -123362,6 +123362,7 @@ SparseUnivariateTaylorSeries(Coef,var,cen): Exports == Implementation where
 --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
 --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
diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 38232e5..8bba32f 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -146326,6 +146326,8 @@ radicalRoots([b,c],[x,y])
 --R                                        Type: List(List(Expression(Integer)))
 --E 14
 
+)clear all
+
 --S 15 of 21
 t1:=radicalSolve(x^3 + x^2 - 7 = 0,x)
 --R
diff --git a/changelog b/changelog
index f282c0b..d5f2fd5 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20130526 tpd src/axiom-website/patches.html 20130526.01.tpd.patch
+20130526 tpd src/algebra/Makefile fix failing test cases
+20130526 tpd books/bookvol10.4 fix failing test cases
+20130526 tpd books/bookvol10.3 fix failing test cases
+20130526 tpd books/bookvol10.2 fix failing test cases
 20130522 tpd src/axiom-website/patches.html 20130522.02.tpd.patch
 20130522 tpd buglist remove error message for deleted files
 20130522 tpd src/axiom-website/patches.html 20130522.01.tpd.patch
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 90afa2f..4ec44db 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -17844,7 +17844,6 @@ single stanza:
 	  else \
            echo ')read $*.input' | ${TESTSYS} >${TMP}/trace ; \
 	  fi ; \
-	  rm $*.input ; \
 	  if [ -z "${NOISE}" ] ; then \
            echo ')lisp (regress "$*.output")' | ${TESTSYS} \
                 | egrep -v '(Timestamp|Version)' | tee $*.regress ; \
@@ -18414,7 +18413,7 @@ REGRESS= \
  Kovacic.regress \
  LaplaceTransform.regress \
  LaurentPolynomial.regress \
- LazyRepresentativeAttribute.regress \
+ LazyRepresentationAttribute.regress \
  LazyStreamAggregate.regress \
  LazardSetSolvingPackage.regress \
  LeadingCoefDetermination.regress \
@@ -18541,7 +18540,7 @@ REGRESS= \
  NormRetractPackage.regress \
  NotherianAttribute.regress \
  NottinghamGroup.regress \
- NoZeroDivisors.regress \
+ NoZeroDivisorsAttribute.regress \
  NPCoef.regress \
  NullSquareAttribute.regress \
  NumberFieldIntegralBasis.regress \
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 78e00c1..16d2577 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4179,6 +4179,8 @@ books/bookvol5 merge ht-util.lisp
 src/Makefile fix {OUT} bug
 <a href="patches/20130522.02.tpd.patch">20130522.02.tpd.patch</a>
 buglist remove error message for deleted files
+<a href="patches/20130526.01.tpd.patch">20130526.01.tpd.patch</a>
+books/bookvol10.* fix failing test cases
  </body>
 </html>
 
