diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 44a6905..281796a 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -4534,6 +4534,7 @@ digraph pic {
 
 --S 1 of 1
 )show Comparable
+--R 
 --R Comparable  is a category constructor
 --R Abbreviation for Comparable is COMPAR 
 --R This constructor is exposed in this frame.
@@ -4543,6 +4544,7 @@ digraph pic {
 --R ?=? : (%,%) -> Boolean                coerce : % -> OutputForm
 --R hash : % -> SingleInteger             latex : % -> String
 --R smaller? : (%,%) -> Boolean           ?~=? : (%,%) -> Boolean
+--R
 --E 1
 
 )spool
@@ -20908,6 +20910,7 @@ digraph pic {
 
 --S 1 of 1
 )show OrderedAbelianSemiGroup
+--R 
 --R OrderedAbelianSemiGroup  is a category constructor
 --R Abbreviation for OrderedAbelianSemiGroup is OASGP 
 --R This constructor is exposed in this frame.
@@ -20917,12 +20920,10 @@ digraph pic {
 --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 ?>=? : (%,%) -> Boolean               coerce : % -> OutputForm
+--R hash : % -> SingleInteger             latex : % -> String
+--R max : (%,%) -> %                      min : (%,%) -> %
+--R ?~=? : (%,%) -> Boolean              
 --R
 --E 1
 
@@ -51547,6 +51548,7 @@ digraph pic {
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
 --R
@@ -52560,6 +52562,7 @@ digraph pic {
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R retractIfCan : % -> Union(Integer,"failed")
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
@@ -53306,6 +53309,7 @@ digraph pic {
 --R expressIdealMember : (List(%),%) -> Union(List(%),"failed")
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
@@ -53557,6 +53561,7 @@ digraph pic {
 --R characteristic : () -> NonNegativeInteger
 --R exquo : (%,%) -> Union(%,"failed")
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R subtractIfCan : (%,%) -> Union(%,"failed")
 --R unitNormal : % -> Record(unit: %,canonical: %,associate: %)
 --R
@@ -54085,6 +54090,7 @@ digraph pic {
 --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 subtractIfCan : (%,%) -> Union(%,"failed")
@@ -54965,6 +54971,7 @@ digraph pic {
 --R factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%))
 --R factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%))
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)),SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)),"failed")
 --R squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%))
 --R subtractIfCan : (%,%) -> Union(%,"failed")
@@ -55803,6 +55810,7 @@ digraph pic {
 --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 subtractIfCan : (%,%) -> Union(%,"failed")
@@ -56162,6 +56170,7 @@ digraph pic {
 --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 nextItem : % -> Union(%,"failed")
 --R patternMatch : (%,Pattern(Integer),PatternMatchResult(Integer,%)) -> PatternMatchResult(Integer,%)
@@ -56791,6 +56800,7 @@ digraph pic {
 --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 monomial : (%,SingletonAsOrderedSet,Integer) -> %
 --R monomial : (%,List(SingletonAsOrderedSet),List(Integer)) -> %
 --R monomial2series : (List(%),List(NonNegativeInteger),Integer) -> %
@@ -57223,6 +57233,7 @@ digraph pic {
 --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 root : (SparseUnivariatePolynomial(Integer),Integer) -> %
@@ -57585,6 +57596,7 @@ digraph pic {
 --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
@@ -60100,6 +60112,7 @@ digraph pic {
 --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 -> %)
@@ -60942,6 +60955,7 @@ digraph pic {
 --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 order : % -> OnePointCompletion(PositiveInteger)
 --R primeFrobenius : (%,NonNegativeInteger) -> %
@@ -61660,6 +61674,7 @@ digraph pic {
 --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
@@ -63297,6 +63312,7 @@ digraph pic {
 --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 lift : (%,%) -> SparseUnivariatePolynomial(%)
 --R lift : % -> SparseUnivariatePolynomial(%)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -63712,6 +63728,7 @@ digraph pic {
 --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 max : (%,%) -> % if S has ORDSET
 --R min : (%,%) -> % if S has ORDSET
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -64387,6 +64404,7 @@ digraph pic {
 --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 mainDefiningPolynomial : % -> Union(SparseUnivariatePolynomial(%),"failed")
 --R mainForm : % -> Union(OutputForm,"failed")
 --R mainValue : % -> Union(SparseUnivariatePolynomial(%),"failed")
@@ -64931,6 +64949,7 @@ digraph pic {
 --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 patternMatch : (%,Pattern(Float),PatternMatchResult(Float,%)) -> PatternMatchResult(Float,%)
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %)
@@ -65434,6 +65453,7 @@ digraph pic {
 --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
@@ -67387,6 +67407,7 @@ digraph pic {
 --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
 --R log : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R monomial : (%,List(SingletonAsOrderedSet),List(Integer)) -> %
 --R monomial : (%,SingletonAsOrderedSet,Integer) -> %
@@ -68041,6 +68062,7 @@ digraph pic {
 --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
 --R log : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R monomial : (%,List(SingletonAsOrderedSet),List(Fraction(Integer))) -> %
 --R monomial : (%,SingletonAsOrderedSet,Fraction(Integer)) -> %
@@ -68561,6 +68583,7 @@ digraph pic {
 
 --S 1 of 4
 )show UnivariatePolynomialCategory
+--R 
 --R UnivariatePolynomialCategory(R: Ring)  is a category constructor
 --R Abbreviation for UnivariatePolynomialCategory is UPOLYC 
 --R This constructor is exposed in this frame.
@@ -68739,6 +68762,7 @@ digraph pic {
 --R unmakeSUP : SparseUnivariatePolynomial(R) -> %
 --R variables : % -> List(SingletonAsOrderedSet)
 --R vectorise : (%,NonNegativeInteger) -> Vector(R)
+--R
 --E 1
 
 --S 2 of 4
@@ -69910,6 +69934,7 @@ 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 lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
 --R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
@@ -70606,6 +70631,7 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R extensionDegree : () -> OnePointCompletion(PositiveInteger)
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R order : % -> OnePointCompletion(PositiveInteger) if F has CHARNZ or F has FINITE
 --R primeFrobenius : % -> % if F has CHARNZ or F has FINITE
@@ -70964,6 +70990,7 @@ 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.
@@ -71016,6 +71043,7 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer))
 --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)
@@ -71610,6 +71638,7 @@ digraph pic {
 --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($,arbitraryPrecision)) and not(has($,arbitraryExponent))
 --R min : () -> % if not(has($,arbitraryPrecision)) and not(has($,arbitraryExponent))
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -72363,6 +72392,7 @@ 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.
@@ -72422,6 +72452,7 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer))
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R lift : % -> SparseUnivariatePolynomial(%)
 --R lift : (%,%) -> SparseUnivariatePolynomial(%)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -72886,6 +72917,7 @@ digraph pic {
 --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
 --R log : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R map : ((UTS -> UTS),%) -> % if Coef has FIELD
 --R max : (%,%) -> % if and(has(UTS,OrderedSet),has(Coef,Field))
@@ -73718,6 +73750,7 @@ digraph pic {
 --R laurentIfCan : % -> Union(ULS,"failed")
 --R lcm : (%,%) -> % if Coef has FIELD
 --R lcm : List(%) -> % if Coef has FIELD
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Coef has FIELD
 --R log : % -> % if Coef has ALGEBRA(FRAC(INT))
 --R monomial : (%,List(SingletonAsOrderedSet),List(Fraction(Integer))) -> %
 --R monomial : (%,SingletonAsOrderedSet,Fraction(Integer)) -> %
@@ -74242,6 +74275,7 @@ 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.
@@ -74311,6 +74345,7 @@ digraph pic {
 --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
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(F) if F has FINITE
@@ -75056,6 +75091,7 @@ 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.
@@ -75138,6 +75174,7 @@ digraph pic {
 --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
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has FIELD
@@ -75752,6 +75789,7 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R extensionDegree : () -> OnePointCompletion(PositiveInteger)
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R lift : (%,%) -> SparseUnivariatePolynomial(%)
 --R lift : % -> SparseUnivariatePolynomial(%)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -76093,6 +76131,7 @@ 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.
@@ -76220,6 +76259,7 @@ digraph pic {
 --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
@@ -77236,6 +77276,7 @@ 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.
@@ -77343,6 +77384,7 @@ digraph pic {
 --R inverseIntegralMatrixAtInfinity : () -> Matrix(Fraction(UP))
 --R lcm : (%,%) -> % if Fraction(UP) has FIELD
 --R lcm : List(%) -> % if Fraction(UP) has FIELD
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if Fraction(UP) has FIELD
 --R lookup : % -> PositiveInteger if Fraction(UP) has FINITE
 --R minimalPolynomial : % -> UPUP if Fraction(UP) has FIELD
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if Fraction(UP) has FIELD
@@ -78509,6 +78551,7 @@ digraph pic {
 --R extendedEuclidean : (%,%) -> Record(coef1: %,coef2: %,generator: %)
 --R extensionDegree : () -> OnePointCompletion(PositiveInteger)
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R lift : (%,%) -> SparseUnivariatePolynomial(%)
 --R lift : % -> SparseUnivariatePolynomial(%)
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index f8a3ab2..739b4d0 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -103271,7 +103271,7 @@ Permutation(S:SetCategory): public == private where
 )set message auto off
 )clear all
 
---S 1 of 68
+--S 1 of 13
 x : PERM INT := [[1,3,5],[7,11,9]]
 --R 
 --R
@@ -103279,7 +103279,7 @@ x : PERM INT := [[1,3,5],[7,11,9]]
 --R                                                   Type: Permutation(Integer)
 --E 1
 
---S 2 of 68
+--S 2 of 13
 y : PERM INT := [[3,5,7,9]]
 --R 
 --R
@@ -103287,7 +103287,7 @@ y : PERM INT := [[3,5,7,9]]
 --R                                                   Type: Permutation(Integer)
 --E 2
 
---S 3 of 68
+--S 3 of 13
 z : PERM INT := [1,3,11]
 --R 
 --R
@@ -103295,7 +103295,7 @@ z : PERM INT := [1,3,11]
 --R                                                   Type: Permutation(Integer)
 --E 3
 
---S 4 of 68
+--S 4 of 13
 g1 : PERMGRP INT := [ x , y ]
 --R 
 --R
@@ -103303,7 +103303,7 @@ g1 : PERMGRP INT := [ x , y ]
 --R                                              Type: PermutationGroup(Integer)
 --E 4
 
---S 5 of 68
+--S 5 of 13
 g2 : PERMGRP INT := [ x , z ]
 --R 
 --R
@@ -103311,7 +103311,7 @@ g2 : PERMGRP INT := [ x , z ]
 --R                                              Type: PermutationGroup(Integer)
 --E 5
 
---S 6 of 68
+--S 6 of 13
 g3 : PERMGRP INT := [ y , z ]
 --R 
 --R
@@ -103319,7 +103319,7 @@ g3 : PERMGRP INT := [ y , z ]
 --R                                              Type: PermutationGroup(Integer)
 --E 6
 
---S 7 of 68
+--S 7 of 13
 order g1
 --R 
 --R
@@ -103327,7 +103327,7 @@ order g1
 --R                                                        Type: PositiveInteger
 --E 7
 
---S 8 of 68
+--S 8 of 13
 degree g3
 --R 
 --R
@@ -103335,7 +103335,7 @@ degree g3
 --R                                                        Type: PositiveInteger
 --E 8
 
---S 9 of 68
+--S 9 of 13
 movedPoints g2
 --R 
 --R
@@ -103343,7 +103343,7 @@ movedPoints g2
 --R                                                           Type: Set(Integer)
 --E 9
 
---S 10 of 68
+--S 10 of 13
 orbit (g1, 3)
 --R 
 --R
@@ -103351,7 +103351,7 @@ orbit (g1, 3)
 --R                                                           Type: Set(Integer)
 --E 10
 
---S 11 of 68
+--S 11 of 13
 orbits g3
 --R 
 --R
@@ -103359,7 +103359,7 @@ orbits g3
 --R                                                      Type: Set(Set(Integer))
 --E 11
 
---S 12 of 68
+--S 12 of 13
 member? ( y , g2 )
 --R 
 --R
@@ -103367,7 +103367,7 @@ member? ( y , g2 )
 --R                                                                Type: Boolean
 --E 12
 
---S 13 of 68
+--S 13 of 13
 )sh PERMGRP
 --R 
 --R PermutationGroup(S: SetCategory)  is a domain constructor
diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index 5bcf68b..cf88308 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -4212,44 +4212,45 @@ credits()
 --RChristian Aistleitner  Richard Anderson       George Andrews
 --RS.J. Atkins            Henry Baker            Martin Baker
 --RStephen Balzac         Yurij Baransky         David R. Barton
---RGerald Baumgartner     Gilbert Baumslag       Michael Becker
---RNelson H. F. Beebe     Jay Belanger           David Bindel
---RFred Blair             Vladimir Bondarenko    Mark Botch
---RRaoul Bourquin         Alexandre Bouyer       Karen Braman
---RPeter A. Broadbery     Martin Brock           Manuel Bronstein
---RStephen Buchwald       Florian Bundschuh      Luanne Burns
---RWilliam Burge          Ralph Byers            Quentin Carpent
---RRobert Caviness        Bruce Char             Ondrej Certik
---RTzu-Yi Chen            Cheekai Chin           David V. Chudnovsky
---RGregory V. Chudnovsky  Mark Clements          James Cloos
---RJia Zhao Cong          Josh Cohen             Christophe Conil
---RDon Coppersmith        George Corliss         Robert Corless
---RGary Cornell           Meino Cramer           Jeremy Du Croz
---RDavid Cyganski         Nathaniel Daly         Timothy Daly Sr.
---RTimothy Daly Jr.       James H. Davenport     David Day
---RJames Demmel           Didier Deshommes       Michael Dewar
---RJack Dongarra          Jean Della Dora        Gabriel Dos Reis
---RClaire DiCrescendo     Sam Dooley             Lionel Ducos
---RIain Duff              Lee Duhem              Martin Dunstan
---RBrian Dupee            Dominique Duval        Robert Edwards
---RHeow Eide-Goodman      Lars Erickson          Richard Fateman
---RBertfried Fauser       Stuart Feldman         John Fletcher
---RBrian Ford             Albrecht Fortenbacher  George Frances
---RConstantine Frangos    Timothy Freeman        Korrinn Fu
---RMarc Gaetano           Rudiger Gebauer        Van de Geijn
---RKathy Gerber           Patricia Gianni        Samantha Goldrich
---RHolger Gollan          Teresa Gomez-Diaz      Laureano Gonzalez-Vega 
---RStephen Gortler        Johannes Grabmeier     Matt Grayson
---RKlaus Ebbe Grue        James Griesmer         Vladimir Grinberg
---ROswald Gschnitzer      Ming Gu                Jocelyn Guidry
---RGaetan Hache           Steve Hague            Satoshi Hamaguchi
---RSven Hammarling        Mike Hansen            Richard Hanson
---RRichard Harke          Bill Hart              Vilya Harvey
---RMartin Hassner         Arthur S. Hathaway     Dan Hatton
---RWaldek Hebisch         Karl Hegbloom          Ralf Hemmecke
---RHenderson              Antoine Hersen         Roger House
---RGernot Hueber          Pietro Iglio           Alejandro Jakubi
---RRichard Jenks          William Kahan          Kai Kaminski
+--RThomas Baruchel        Gerald Baumgartner     Gilbert Baumslag
+--RMichael Becker         Nelson H. F. Beebe     Jay Belanger
+--RDavid Bindel           Fred Blair             Vladimir Bondarenko
+--RMark Botch             Raoul Bourquin         Alexandre Bouyer
+--RKaren Braman           Peter A. Broadbery     Martin Brock
+--RManuel Bronstein       Stephen Buchwald       Florian Bundschuh
+--RLuanne Burns           William Burge          Ralph Byers
+--RQuentin Carpent        Robert Caviness        Bruce Char
+--ROndrej Certik          Tzu-Yi Chen            Cheekai Chin
+--RDavid V. Chudnovsky    Gregory V. Chudnovsky  Mark Clements
+--RJames Cloos            Jia Zhao Cong          Josh Cohen
+--RChristophe Conil       Don Coppersmith        George Corliss
+--RRobert Corless         Gary Cornell           Meino Cramer
+--RJeremy Du Croz         David Cyganski         Nathaniel Daly
+--RTimothy Daly Sr.       Timothy Daly Jr.       James H. Davenport
+--RDavid Day              James Demmel           Didier Deshommes
+--RMichael Dewar          Jack Dongarra          Jean Della Dora
+--RGabriel Dos Reis       Claire DiCrescendo     Sam Dooley
+--RLionel Ducos           Iain Duff              Lee Duhem
+--RMartin Dunstan         Brian Dupee            Dominique Duval
+--RRobert Edwards         Heow Eide-Goodman      Lars Erickson
+--RRichard Fateman        Bertfried Fauser       Stuart Feldman
+--RJohn Fletcher          Brian Ford             Albrecht Fortenbacher
+--RGeorge Frances         Constantine Frangos    Timothy Freeman
+--RKorrinn Fu             Marc Gaetano           Rudiger Gebauer
+--RVan de Geijn           Kathy Gerber           Patricia Gianni
+--RGustavo Goertkin       Samantha Goldrich      Holger Gollan
+--RTeresa Gomez-Diaz      Laureano Gonzalez-Vega Stephen Gortler
+--RJohannes Grabmeier     Matt Grayson           Klaus Ebbe Grue
+--RJames Griesmer         Vladimir Grinberg      Oswald Gschnitzer
+--RMing Gu                Jocelyn Guidry         Gaetan Hache
+--RSteve Hague            Satoshi Hamaguchi      Sven Hammarling
+--RMike Hansen            Richard Hanson         Richard Harke
+--RBill Hart              Vilya Harvey           Martin Hassner
+--RArthur S. Hathaway     Dan Hatton             Waldek Hebisch
+--RKarl Hegbloom          Ralf Hemmecke          Henderson
+--RAntoine Hersen         Roger House            Gernot Hueber
+--RPietro Iglio           Alejandro Jakubi       Richard Jenks
+--RWilliam Kahan          Kyriakos Kalorkoti     Kai Kaminski
 --RGrant Keady            Wilfrid Kendall        Tony Kennedy
 --RTed Kosan              Paul Kosinski          Klaus Kusche
 --RBernhard Kutzler       Tim Lahey              Larry Lambe
@@ -4287,19 +4288,15 @@ credits()
 --RStephen Watt           Jaap Weel              Juergen Weiss
 --RM. Weller              Mark Wegman            James Wen
 --RThorsten Werther       Michael Wester         R. Clint Whaley
---RJohn M. Wiley          Berhard Will           Clifton J. Williamson
---RStephen Wilson         Shmuel Winograd        Robert Wisbauer
---RSandra Wityak          Waldemar Wiwianka      Knut Wolf
---RLiu Xiaojun            Clifford Yapp          David Yun
---RVadim Zhytnikov        Richard Zippel         Evelyn Zoernack
---RBruno Zuercher         Dan Zwillinger
+--RJames T. Wheeler       John M. Wiley          Berhard Will
+--RClifton J. Williamson  Stephen Wilson         Shmuel Winograd
+--RRobert Wisbauer        Sandra Wityak          Waldemar Wiwianka
+--RKnut Wolf              Liu Xiaojun            Clifford Yapp
+--RDavid Yun              Vadim Zhytnikov        Richard Zippel
+--REvelyn Zoernack        Bruno Zuercher         Dan Zwillinger
 --R                                                                   Type: Void
 --E 3
 
-\end{chunk}
-The summary command simply types out the contents of the file
-\$AXIOM/lib/summary so no output is captured in the spool file.
-\begin{chunk}{ApplicationProgramInterface.input}
 --S 4 of 9
 summary()
 --R 
@@ -4318,6 +4315,7 @@ summary()
 --R credits : () -> Void                  getDomains : Symbol -> Set(Symbol)
 --R summary : () -> Void                 
 --R getAncestors : Symbol -> Set(Symbol)
+--R reportInstantiations : Boolean -> Void
 --R
 --E 5
 
@@ -4369,6 +4367,15 @@ reportInstantiations(true)
 reportInstantiations(true)
 --R 
 --R                                                                   Type: Void
+--R# instantiated/# dropped/domain name
+--R------------------------------------
+--R Totals: 0 instantiated
+--R         0 inside coerceInteractive
+--R         0 inside canCoerceFrom
+--R         0 inside evalMmCond
+--R         0 reinstantiated
+--R         0 dropped
+--R         0 distinct domains instantiated/dropped
 --E 9
 
 )spool
@@ -42729,7 +42736,7 @@ GraphicsDefaults(): Exports == Implementation where
 )set message auto off
 )clear all
 
---S 1 of 6
+--S 1 of 5
 header:=standardDotHeader()
 --R 
 --R
@@ -42739,7 +42746,7 @@ header:=standardDotHeader()
 --R                                                           Type: List(String)
 --E 1
 
---S 2 of 6
+--S 2 of 5
 graph:=sampleDotGraph()
 --R 
 --R
@@ -42759,29 +42766,25 @@ graph:=sampleDotGraph()
 --R                                                           Type: List(String)
 --E 2
 
---S 3 of 6
+--S 3 of 5
 writeDotGraph(header,graph,"NeuralNet")
 --R 
 --R                                                                   Type: Void
 --E 3
 
---S 4 of 6
+--S 4 of 5
 dot2eps "NeuralNet"
 --R 
 --R                                                                   Type: Void
 --E 4
 
---S 5 of 6
--- dotview("evince","NeuralNet")
---S 5
-
---S 6 of 6
+--S 5 of 5
 )show Graphviz
 --R 
 --R Graphviz  is a package constructor
 --R Abbreviation for Graphviz is GRAPHVIZ 
 --R This constructor is exposed in this frame.
---R Issue )edit /research/silver/books/bookvol10.4.pamphlet to see algebra source code for GRAPHVIZ 
+--R Issue )edit bookvol10.4.pamphlet to see algebra source code for GRAPHVIZ 
 --R
 --R------------------------------- Operations --------------------------------
 --R dot2eps : String -> Void              dotview : (String,String) -> Void
@@ -42789,7 +42792,11 @@ dot2eps "NeuralNet"
 --R standardDotHeader : () -> List(String)
 --R writeDotGraph : (List(String),List(String),String) -> Void
 --R
---E 6
+--E 5
+
+-- 6 of 6
+-- dotview("evince","NeuralNet")
+-- 6
 
 )spool
 )lisp (bye)
@@ -148664,7 +148671,7 @@ t1:=radicalSolve(x^3 + x^2 - 7 = 0,x)
 --E 15
 
 --S 16 of 21
-(2) -> t2:=rhs(t1.1)
+t2:=rhs(t1.1)
 --R
 --R   (2)
 --R                        +------------------+2
@@ -148691,7 +148698,7 @@ t1:=radicalSolve(x^3 + x^2 - 7 = 0,x)
 --E 16
 
 --S 17 of 21
-(3) -> t3:=rhs(t1.2)
+t3:=rhs(t1.2)
 --R
 --R   (3)
 --R                        +------------------+2
@@ -148718,7 +148725,7 @@ t1:=radicalSolve(x^3 + x^2 - 7 = 0,x)
 --E 17
 
 --S 18 of 21
-(4) -> t4:=rhs(t1.3)
+t4:=rhs(t1.3)
 --R
 --R           +------------------+2     +------------------+
 --R           |  +----+       +-+       |  +----+       +-+
@@ -148737,21 +148744,21 @@ t1:=radicalSolve(x^3 + x^2 - 7 = 0,x)
 --E 18
 
 --S 19 of 21
-(5) -> t2^3+t2^2-7
+t2^3+t2^2-7
 --R
 --R   (5)  0
 --R                                                    Type: Expression(Integer)
 --E 19
 
 --S 20 of 21
-(6) -> t3^3+t3^2-7
+t3^3+t3^2-7
 --R
 --R   (6)  0
 --R                                                    Type: Expression(Integer)
 --E 20
 
 --S 21 of 21
-(7) -> t4^3+t4^2-7
+t4^3+t4^2-7
 --R
 --R   (7)  0
 --R                                                    Type: Expression(Integer)
diff --git a/changelog b/changelog
index b9f9089..216714b 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20141124 tpd src/axiom-website/patches.html 20141124.04.tpd.patch
+20141124 tpd books/bookvol10.4 fix failing domain tests
+20141124 tpd books/bookvol10.3 fix failing domain tests
+20141124 tpd books/bookvol10.2 fix failing domain tests
 20141124 tpd src/axiom-website/patches.html 20141124.03.tpd.patch
 20141124 tpd books/bookvol10.3 fix failing domain tests
 20141124 tpd src/axiom-website/patches.html 20141124.02.tpd.patch
diff --git a/patch b/patch
index 1d3285e..9d7323e 100644
--- a/patch
+++ b/patch
@@ -1 +1 @@
-books/bookvol10.3 fix failing domain tests
+books/bookvol10.{2,3,4} fix failing domain tests
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 4bfad16..3aef07f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4732,6 +4732,8 @@ buglist bug 7265: interpreter does early retract to Taylor series
 books/bookvol10.4 help docs for MatrixManipulation<br/>
 <a href="patches/20141124.03.tpd.patch">20141124.03.tpd.patch</a>
 books/bookvol10.3 fix failing domain tests<br/>
+<a href="patches/20141124.04.tpd.patch">20141124.04.tpd.patch</a>
+books/bookvol10.{2,3,4} fix failing domain tests<br/>
  </body>
 </html>
 
