diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index 4d83d51..f8a3ab2 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -2716,6 +2716,7 @@ AlgebraGivenByStructuralConstants(R:Field, n : PositiveInteger,_
 --R knownInfBasis : NonNegativeInteger -> Void
 --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
@@ -3226,6 +3227,7 @@ AlgebraicFunctionField(F, UP, UPUP, modulus): Exports == Implementation where
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
 --R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
@@ -15136,6 +15138,7 @@ BalancedBinaryTree(S: SetCategory): Exports == Implementation where
 --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) -> %
@@ -15340,6 +15343,7 @@ BalancedPAdicInteger(p:Integer) == InnerPAdicInteger(p,false$Boolean)
 --R fractionPart : % -> % if BalancedPAdicInteger(p) has EUCDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R init : () -> % if BalancedPAdicInteger(p) has STEP
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R map : ((BalancedPAdicInteger(p) -> BalancedPAdicInteger(p)),%) -> %
 --R max : (%,%) -> % if BalancedPAdicInteger(p) has ORDSET
 --R min : (%,%) -> % if BalancedPAdicInteger(p) has ORDSET
@@ -33277,6 +33281,7 @@ DesingTree(S: SetCategory): T==C where
 --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 -> %)
@@ -41161,6 +41166,7 @@ EqTable(Key: SetCategory, Entry: SetCategory) ==
 --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")
@@ -41592,6 +41598,7 @@ Exit: SetCategory == add
 --R fractionPart : % -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has EUCDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R init : () -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has STEP
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R limitPlus : % -> Union(OrderedCompletion(FE),"failed")
 --R map : ((UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) -> UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen)),%) -> %
 --R max : (%,%) -> % if UnivariatePuiseuxSeriesWithExponentialSingularity(R,FE,var,cen) has ORDSET
@@ -43072,6 +43079,7 @@ Expression(R:OrderedSet): Exports == Implementation where
 --R integrate : % -> % if FE has ALGEBRA(FRAC(INT))
 --R lcm : (%,%) -> % if FE has FIELD
 --R lcm : List(%) -> % if FE has FIELD
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if FE has FIELD
 --R log : % -> % if FE has ALGEBRA(FRAC(INT))
 --R monomial : (%,List(SingletonAsOrderedSet),List(Fraction(Integer))) -> %
 --R monomial : (%,SingletonAsOrderedSet,Fraction(Integer)) -> %
@@ -46756,6 +46764,7 @@ 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.
@@ -46826,6 +46835,7 @@ FiniteDivisor(F, UP, UPUP, R): Exports == Implementation where
 --R generator : () -> % if PrimeField(p) has FINITE
 --R index : PositiveInteger -> % if PrimeField(p) has FINITE
 --R init : () -> % if PrimeField(p) has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(PrimeField(p))) -> % if PrimeField(p) has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(PrimeField(p)),"failed") if PrimeField(p) has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(PrimeField(p)) if PrimeField(p) has FINITE
@@ -47015,6 +47025,7 @@ 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.
@@ -47086,6 +47097,7 @@ FiniteField(p:PositiveInteger, n:PositiveInteger): _
 --R getZechTable : () -> PrimitiveArray(SingleInteger)
 --R index : PositiveInteger -> % if PrimeField(p) has FINITE
 --R init : () -> % if PrimeField(p) has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(PrimeField(p))) -> % if PrimeField(p) has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(PrimeField(p)),"failed") if PrimeField(p) has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(PrimeField(p)) if PrimeField(p) has FINITE
@@ -47288,6 +47300,7 @@ 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.
@@ -47358,6 +47371,7 @@ FiniteFieldCyclicGroup(p,extdeg):_
 --R getZechTable : () -> PrimitiveArray(SingleInteger)
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -47561,6 +47575,7 @@ 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.
@@ -47631,6 +47646,7 @@ FiniteFieldCyclicGroupExtension(GF,extdeg):_
 --R getZechTable : () -> PrimitiveArray(SingleInteger)
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -48101,6 +48117,7 @@ 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.
@@ -48170,6 +48187,7 @@ FiniteFieldCyclicGroupExtensionByPolynomial(GF,defpol):_
 --R generator : () -> % if GF has FINITE
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -48361,6 +48379,7 @@ 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.
@@ -48430,6 +48449,7 @@ FiniteFieldExtension(GF, n): Exports == Implementation where
 --R generator : () -> % if GF has FINITE
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -48821,6 +48841,7 @@ 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.
@@ -48893,6 +48914,7 @@ FiniteFieldExtensionByPolynomial(GF:FiniteFieldCategory,_
 --R getMultiplicationTable : () -> Vector(List(Record(value: PrimeField(p),index: SingleInteger)))
 --R index : PositiveInteger -> % if PrimeField(p) has FINITE
 --R init : () -> % if PrimeField(p) has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(PrimeField(p))) -> % if PrimeField(p) has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(PrimeField(p)),"failed") if PrimeField(p) has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(PrimeField(p)) if PrimeField(p) has FINITE
@@ -49106,6 +49128,7 @@ 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.
@@ -49177,6 +49200,7 @@ FiniteFieldNormalBasis(p,extdeg):_
 --R getMultiplicationTable : () -> Vector(List(Record(value: GF,index: SingleInteger)))
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -49390,6 +49414,7 @@ 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.
@@ -49461,6 +49486,7 @@ FiniteFieldNormalBasisExtension(GF,extdeg):_
 --R getMultiplicationTable : () -> Vector(List(Record(value: GF,index: SingleInteger)))
 --R index : PositiveInteger -> % if GF has FINITE
 --R init : () -> % if GF has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(GF)) -> % if GF has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(GF),"failed") if GF has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(GF) if GF has FINITE
@@ -60189,6 +60215,7 @@ GeneralTriangularSet(R,E,V,P) : Exports == Implementation where
 --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)) -> %
@@ -69307,6 +69334,7 @@ InfinitlyClosePointOverPseudoAlgebraicClosureOfFiniteField(K,symb,BLMET):_
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R is? : (%,BasicOperator) -> Boolean
 --R kernel : (BasicOperator,List(%)) -> %
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R mainKernel : % -> Union(Kernel(%),"failed")
 --R map : ((% -> %),Kernel(%)) -> %
 --R minPoly : Kernel(%) -> SparseUnivariatePolynomial(%) if $ has RING
@@ -69618,6 +69646,7 @@ 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.
@@ -69689,6 +69718,7 @@ InnerAlgebraicNumber(): Exports == Implementation where
 --R generator : () -> % if InnerPrimeField(p) has FINITE
 --R index : PositiveInteger -> % if InnerPrimeField(p) has FINITE
 --R init : () -> % if InnerPrimeField(p) has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(InnerPrimeField(p))) -> % if InnerPrimeField(p) has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(InnerPrimeField(p)),"failed") if InnerPrimeField(p) has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(InnerPrimeField(p)) if InnerPrimeField(p) has FINITE
@@ -70260,6 +70290,7 @@ InnerIndexedTwoDimensionalArray(R,mnRow,mnCol,Row,Col):_
 --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) -> %
@@ -70607,6 +70638,7 @@ 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.
@@ -70675,6 +70707,7 @@ InnerPAdicInteger(p,unBalanced?): Exports == Implementation where
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer))
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R generator : () -> % if $ has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(%)) -> % if $ has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(%) if $ has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(%),"failed") if $ has FINITE
@@ -74880,6 +74913,7 @@ contains?(t3,0.3)
 --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: %)
@@ -76516,6 +76550,7 @@ KeyedAccessFile(Entry): KAFcategory == KAFcapsule where
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has FIELD
 --R lcm : (%,%) -> % if R has FIELD
 --R lcm : List(%) -> % if R has FIELD
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has FIELD
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has FIELD
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has FIELD
 --R ?quo? : (%,%) -> % if R has FIELD
@@ -82349,6 +82384,7 @@ 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.
@@ -82482,6 +82518,7 @@ LyndonWord(VarSet:OrderedSet):Public == Private where
 --R inv : % -> % if MachineFloat has FIELD
 --R lcm : (%,%) -> % if MachineFloat has EUCDOM
 --R lcm : List(%) -> % if MachineFloat has EUCDOM
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if MachineFloat has EUCDOM
 --R lift : % -> SparseUnivariatePolynomial(MachineFloat)
 --R log : % -> % if MachineFloat has TRANFUN
 --R lookup : % -> PositiveInteger if MachineFloat has FINITE
@@ -82832,6 +82869,7 @@ MachineComplex():Exports == Implementation where
 --R float : (Integer,Integer,PositiveInteger) -> %
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R increasePrecision : Integer -> PositiveInteger if $ has arbitraryPrecision
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R max : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
 --R maximumExponent : Integer -> Integer
 --R min : () -> % if not(has($,arbitraryExponent)) and not(has($,arbitraryPrecision))
@@ -83327,6 +83365,7 @@ MachineFloat(): Exports == Implementation where
 --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 maxint : PositiveInteger -> PositiveInteger
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
 --R nextItem : % -> Union(%,"failed")
@@ -86940,6 +86979,7 @@ 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.
@@ -86971,8 +87011,8 @@ Matrix(R): Exports == Implementation where
 --R pseudoRemainder : (%,%) -> %          recip : % -> Union(%,"failed")
 --R reduce : Rep -> %                     reductum : % -> %
 --R retract : % -> R                      sample : () -> %
---R setPoly : Rep -> Rep                  zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R setPoly : Rep -> Rep                  unvectorise : Vector(R) -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (NonNegativeInteger,%) -> %
@@ -87060,6 +87100,7 @@ Matrix(R): Exports == Implementation where
 --R karatsubaDivide : (%,NonNegativeInteger) -> Record(quotient: %,remainder: %)
 --R lcm : (%,%) -> % if R has GCDDOM
 --R lcm : List(%) -> % if R has GCDDOM
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R lookup : % -> PositiveInteger if R has FINITE
 --R mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
@@ -87510,6 +87551,7 @@ ModMonic(R,Rep): C == T
 --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")
@@ -89908,6 +89950,7 @@ MultivariatePolynomial(vl:List Symbol, R:Ring)
 --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
@@ -90180,7 +90223,8 @@ MyExpression(q: Symbol, R): Exports == Implementation where
 --R pseudoRemainder : (%,%) -> %          recip : % -> Union(%,"failed")
 --R reductum : % -> %                     retract : % -> Symbol
 --R retract : % -> R                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R unvectorise : Vector(R) -> %          zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (NonNegativeInteger,%) -> %
@@ -90265,6 +90309,7 @@ MyExpression(q: Symbol, R): Exports == Implementation where
 --R karatsubaDivide : (%,NonNegativeInteger) -> Record(quotient: %,remainder: %)
 --R lcm : (%,%) -> % if R has GCDDOM
 --R lcm : List(%) -> % if R has GCDDOM
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
 --R mapExponents : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
@@ -90653,6 +90698,7 @@ MyUnivariatePolynomial(x:Symbol, R:Ring):
 --R insert : (Record(k: Integer,c: K),%,Integer) -> %
 --R last : % -> Record(k: Integer,c: K)
 --R last : (%,NonNegativeInteger) -> %
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R leaves : % -> List(Record(k: Integer,c: K))
 --R less? : (%,NonNegativeInteger) -> Boolean
 --R map : ((Record(k: Integer,c: K) -> Record(k: Integer,c: K)),%) -> %
@@ -91268,6 +91314,7 @@ by means of triangular sets.
 --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 leadingCoefficient : (%,VarSet) -> %
 --R mainContent : % -> % if R has GCDDOM
 --R mainPrimitivePart : % -> % if R has GCDDOM
@@ -91945,7 +91992,8 @@ constructur {\bf SparseUnivariatePolynomial}.
 --R one? : % -> Boolean                   pseudoRemainder : (%,%) -> %
 --R recip : % -> Union(%,"failed")        reductum : % -> %
 --R retract : % -> R                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R unvectorise : Vector(R) -> %          zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (NonNegativeInteger,%) -> %
@@ -92042,6 +92090,7 @@ constructur {\bf SparseUnivariatePolynomial}.
 --R lazyResidueClass : (%,%) -> Record(polnum: %,polden: R,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 mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
 --R mapExponents : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
@@ -98351,6 +98400,7 @@ OrderlyDifferentialVariable(S:OrderedSet):DifferentialVariableCategory(S)
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%) if R has FIELD
 --R lcm : (%,%) -> % if R has FIELD
 --R lcm : List(%) -> % if R has FIELD
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has FIELD
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed") if R has FIELD
 --R prime? : % -> Boolean if R has FIELD
 --R principalIdeal : List(%) -> Record(coef: List(%),generator: %) if R has FIELD
@@ -99411,6 +99461,7 @@ OutputForm(): SetCategory with
 --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) -> %
@@ -99616,6 +99667,7 @@ PAdicInteger(p:Integer) == InnerPAdicInteger(p,true$Boolean)
 --R fractionPart : % -> % if PAdicInteger(p) has EUCDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R init : () -> % if PAdicInteger(p) has STEP
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R map : ((PAdicInteger(p) -> PAdicInteger(p)),%) -> %
 --R max : (%,%) -> % if PAdicInteger(p) has ORDSET
 --R min : (%,%) -> % if PAdicInteger(p) has ORDSET
@@ -99879,6 +99931,7 @@ PAdicRational(p:Integer) == PAdicRationalConstructor(p,PAdicInteger p)
 --R fractionPart : % -> % if PADIC has EUCDOM
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R init : () -> % if PADIC has STEP
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R max : (%,%) -> % if PADIC has ORDSET
 --R min : (%,%) -> % if PADIC has ORDSET
 --R multiEuclidean : (List(%),%) -> Union(List(%),"failed")
@@ -105297,6 +105350,7 @@ non-interactive environment (library), HACKPI would not exist.
 --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 retractIfCan : % -> Union(Fraction(Integer),"failed")
@@ -111461,6 +111515,7 @@ 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.
@@ -111529,6 +111584,7 @@ PositiveInteger: Join(AbelianSemiGroup,OrderedSet,Monoid) with
 --R factorsOfCyclicGroupSize : () -> List(Record(factor: Integer,exponent: Integer))
 --R gcdPolynomial : (SparseUnivariatePolynomial(%),SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
 --R generator : () -> % if $ has FINITE
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %)
 --R linearAssociatedExp : (%,SparseUnivariatePolynomial(%)) -> % if $ has FINITE
 --R linearAssociatedLog : % -> SparseUnivariatePolynomial(%) if $ has FINITE
 --R linearAssociatedLog : (%,%) -> Union(SparseUnivariatePolynomial(%),"failed") if $ has FINITE
@@ -112957,6 +113013,7 @@ 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.
@@ -113024,6 +113081,7 @@ PseudoAlgebraicClosureOfAlgExtOfRationalNumber(downLevel:K):Exp == Impl where
 --R extensionDegree : () -> OnePointCompletion(PositiveInteger)
 --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")
@@ -113574,6 +113632,7 @@ PseudoAlgebraicClosureOfFiniteField(K):Exports == Implementation where
 --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")
@@ -115721,6 +115780,7 @@ 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.
@@ -115828,6 +115888,7 @@ Queue(S:SetCategory): QueueAggregate S with
 --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
@@ -125246,6 +125307,7 @@ SetOfMIntegersInOneToN(m, n): Exports == Implementation where
 --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 leader : % -> SequentialDifferentialVariable(Symbol)
 --R mainVariable : % -> Union(SequentialDifferentialVariable(Symbol),"failed")
 --R makeVariable : % -> (NonNegativeInteger -> %) if R has DIFRING
@@ -125872,6 +125934,7 @@ 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.
@@ -125954,6 +126017,7 @@ SExpressionOf(Str, Sym, Int, Flt, Expr): Decl == Body where
 --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
@@ -127180,10 +127244,11 @@ SingletonAsOrderedSet(): OrderedSet with
 
 --S 1 of 1
 )show SparseEchelonMatrix
+--R 
 --R SparseEchelonMatrix(C: OrderedSet,D: Ring)  is a domain constructor
 --R Abbreviation for SparseEchelonMatrix is SEM 
 --R This constructor is exposed in this frame.
---R Issue )edit /research/ref/SEM.spad to see algebra source code for SEM 
+--R Issue )edit bookvol10.3.pamphlet to see algebra source code for SEM 
 --R
 --R------------------------------- Operations --------------------------------
 --R ?*? : (Matrix(D),%) -> %              allIndices : % -> List(C)
@@ -128131,6 +128196,7 @@ SparseEchelonMatrix(C : OrderedSet, D : Ring) : Cat == Def where
 --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 mapExponents : ((IndexedExponents(VarSet) -> IndexedExponents(VarSet)),%) -> %
 --R max : (%,%) -> % if R has ORDSET
@@ -129815,6 +129881,7 @@ SparseTable(Key:SetCategory, Ent:SetCategory, dent:Ent) ==
 --R laurent : (Integer,SparseUnivariateTaylorSeries(Coef,var,cen)) -> %
 --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 : ((SparseUnivariateTaylorSeries(Coef,var,cen) -> SparseUnivariateTaylorSeries(Coef,var,cen)),%) -> % if Coef has FIELD
 --R max : (%,%) -> % if SparseUnivariateTaylorSeries(Coef,var,cen) has OINTDOM and Coef has FIELD or SparseUnivariateTaylorSeries(Coef,var,cen) has ORDSET and Coef has FIELD
@@ -130279,7 +130346,8 @@ SparseUnivariateLaurentSeries(Coef,var,cen): Exports == Implementation where
 --R one? : % -> Boolean                   pseudoRemainder : (%,%) -> %
 --R recip : % -> Union(%,"failed")        reductum : % -> %
 --R retract : % -> R                      sample : () -> %
---R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
+--R unvectorise : Vector(R) -> %          zero? : % -> Boolean
+--R ?~=? : (%,%) -> Boolean              
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (NonNegativeInteger,%) -> %
@@ -130364,6 +130432,7 @@ SparseUnivariateLaurentSeries(Coef,var,cen): Exports == Implementation where
 --R karatsubaDivide : (%,NonNegativeInteger) -> Record(quotient: %,remainder: %)
 --R lcm : (%,%) -> % if R has GCDDOM
 --R lcm : List(%) -> % if R has GCDDOM
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
 --R mapExponents : ((NonNegativeInteger -> NonNegativeInteger),%) -> %
@@ -130988,8 +131057,8 @@ unfortunately.
 --R one? : % -> Boolean                   pi : () -> % if R has TRANFUN
 --R pseudoRemainder : (%,%) -> %          recip : % -> Union(%,"failed")
 --R reductum : % -> %                     retract : % -> R
---R sample : () -> %                      zero? : % -> Boolean
---R ?~=? : (%,%) -> Boolean              
+--R sample : () -> %                      unvectorise : Vector(R) -> %
+--R zero? : % -> Boolean                  ?~=? : (%,%) -> Boolean
 --R ?*? : (Fraction(Integer),%) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (%,Fraction(Integer)) -> % if R has ALGEBRA(FRAC(INT))
 --R ?*? : (NonNegativeInteger,%) -> %
@@ -131093,6 +131162,7 @@ unfortunately.
 --R karatsubaDivide : (%,NonNegativeInteger) -> Record(quotient: %,remainder: %)
 --R lcm : (%,%) -> % if R has GCDDOM
 --R lcm : List(%) -> % if R has GCDDOM
+--R lcmCoef : (%,%) -> Record(llcmres: %,coeff1: %,coeff2: %) if R has GCDDOM
 --R log : % -> % if R has TRANFUN
 --R mainVariable : % -> Union(SingletonAsOrderedSet,"failed")
 --R makeSUP : % -> SparseUnivariatePolynomial(R)
@@ -131491,6 +131561,7 @@ SparseUnivariatePolynomialExpressions(R: Ring): Exports == Implementation where
 --R laurentRep : % -> SparseUnivariateLaurentSeries(Coef,var,cen)
 --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)) -> %
@@ -146723,6 +146794,7 @@ UnivariateFormalPowerSeries(Coef: Ring) ==
 --R laurent : (Integer,UnivariateTaylorSeries(Coef,var,cen)) -> %
 --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 : ((UnivariateTaylorSeries(Coef,var,cen) -> UnivariateTaylorSeries(Coef,var,cen)),%) -> % if Coef has FIELD
 --R max : (%,%) -> % if UnivariateTaylorSeries(Coef,var,cen) has OINTDOM and Coef has FIELD or UnivariateTaylorSeries(Coef,var,cen) has ORDSET and Coef has FIELD
@@ -147154,6 +147226,7 @@ UnivariateLaurentSeries(Coef,var,cen): Exports == Implementation where
 --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 UTS has ORDSET and Coef has FIELD
@@ -148728,6 +148801,7 @@ UnivariatePolynomial(x:Symbol, R:Ring):
 --R laurentRep : % -> UnivariateLaurentSeries(Coef,var,cen)
 --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)) -> %
@@ -149166,6 +149240,7 @@ UnivariatePuiseuxSeries(Coef,var,cen): Exports == Implementation where
 --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)) -> %
diff --git a/changelog b/changelog
index 0f3d9c2..b9f9089 100644
--- a/changelog
+++ b/changelog
@@ -1,4 +1,6 @@
-20141124 tpd src/axiom-website/patches.html 20141124.02.rhx.patch
+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
 20141124 tpd books/bookvol10.4 help docs for MatrixManipulation
 20141124 rhx src/axiom-website/patches.html 20141124.01.rhx.patch
 20141124 rhx buglist bug 7265: interpreter does early retract to Taylor series
diff --git a/patch b/patch
index c4f8880..1d3285e 100644
--- a/patch
+++ b/patch
@@ -1,7 +1 @@
-books/bookvol10.4 help docs for MatrixManipulation
-
-add )help and )d op documentation for
-
-MatrixManipulation, element, aRow, rows, aColumn, columns, subMatrix,
-diagonalMatrix, bandMatrix, horizConcat, vertConcat, blockConcat,
-vertSplit, horizSplit, blockSplit
+books/bookvol10.3 fix failing domain tests
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index f637d7d..4bfad16 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4730,6 +4730,8 @@ buglist bug 7264: 2.7@DoubleFloat failed to coerce to DoubleFloat<br/>
 buglist bug 7265: interpreter does early retract to Taylor series
 <a href="patches/20141124.02.tpd.patch">20141124.02.tpd.patch</a>
 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/>
  </body>
 </html>
 
