diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index 2daf16b..613dce3 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -4194,15 +4194,16 @@ These exports come from \refto{BasicType}():
 \begin{chunk}{category LOGIC Logic}
 )abbrev category LOGIC Logic
 ++ Description:  
-++ `Logic' provides the basic operations for lattices, e.g., boolean algebra.
+++ Logic provides the basic operations for lattices, 
+++ for example, boolean algebra.
 
 Logic: Category == BasicType with
        _~:        % -> %
         ++ ~(x) returns the logical complement of x.
        _/_\:       (%, %) -> %
-        ++ \spadignore { /\ }returns the logical `meet', e.g. `and'.
+        ++ \spadignore{/\} returns the logical `meet', for example, `and'.
        _\_/:       (%, %) -> %
-        ++ \spadignore{ \/ } returns the logical `join', e.g. `or'.
+        ++ \spadignore{\/} returns the logical `join', for example, `or'.
   add
     _\_/(x: %,y: %) == _~( _/_\(_~(x), _~(y)))
 
@@ -7351,7 +7352,7 @@ These exports come from \refto{SetCategory}():
 ++ Date Last Updated: May 20, 1991
 ++ References: Algebra 2d Edition, MacLane and Birkhoff, MacMillan 1979
 ++ Description:
-++ GradedModule(R,E) denotes ``E-graded R-module'', i.e. collection of
+++ GradedModule(R,E) denotes ``E-graded R-module'', that is, collection of
 ++ R-modules indexed by an abelian monoid E.
 ++ An element \spad{g} of \spad{G[s]} for some specific \spad{s} in \spad{E}
 ++ is said to be an element of \spad{G} with degree \spad{s}.
@@ -7362,30 +7363,37 @@ These exports come from \refto{SetCategory}():
 ++ mathematical category of graded modules.
 
 GradedModule(R: CommutativeRing, E: AbelianMonoid): Category ==
-    SetCategory with
-        degree: % -> E
-            ++ degree(g) names the degree of g.  The set of all elements
-            ++ of a given degree form an R-module.
-        0: constant -> %
-            ++ 0 denotes the zero of degree 0.
-        _*: (R, %) -> %
-            ++ r*g is left module multiplication.
-        _*: (%, R) -> %
-            ++ g*r is right module multiplication.
-
-        _-: % -> %
-            ++ -g is the additive inverse of g in the module of elements
-            ++ of the same grade as g.
-        _+: (%, %) -> %
-            ++ g+h is the sum of g and h in the module of elements of
-            ++ the same degree as g and h.  Error: if g and h
-            ++ have different degrees.
-        _-: (%, %) -> %
-            ++ g-h is the difference of g and h in the module of elements of
-            ++ the same degree as g and h.  Error: if g and h
-            ++ have different degrees.
-  add
-        (x: %) - (y: %) == x+(-y)
+  SetCategory with
+
+    degree: % -> E
+      ++ degree(g) names the degree of g.  The set of all elements
+      ++ of a given degree form an R-module.
+
+    0: constant -> %
+      ++ \spad{0} denotes the zero of degree 0.
+
+    _*: (R, %) -> %
+      ++ r*g is left module multiplication.
+
+    _*: (%, R) -> %
+      ++ g*r is right module multiplication.
+
+    _-: % -> %
+      ++ -g is the additive inverse of g in the module of elements
+      ++ of the same grade as g.
+
+    _+: (%, %) -> %
+      ++ g+h is the sum of g and h in the module of elements of
+      ++ the same degree as g and h.  Error: if g and h
+      ++ have different degrees.
+
+    _-: (%, %) -> %
+      ++ g-h is the difference of g and h in the module of elements of
+      ++ the same degree as g and h.  Error: if g and h
+      ++ have different degrees.
+ add
+
+    (x: %) - (y: %) == x+(-y)
 
 \end{chunk}
 \begin{chunk}{GRMOD.dotabb}
@@ -9898,10 +9906,10 @@ These exports come from \refto{SetCategory}():
 ++ with an associative operation \spadop{*}.
 ++
 ++ Axioms\br
-++ \tab{5}\spad{associative("*":(%,%)->%)}\tab{5}\spad{ (x*y)*z = x*(y*z)}
+++ \tab{5}\spad{associative("*":(%,%)->%)}\tab{5}\spad{(x*y)*z = x*(y*z)}
 ++
 ++ Conditional attributes\br
-++ \tab{5}\spad{commutative("*":(%,%)->%)}\tab{5}\spad{ x*y = y*x }
+++ \tab{5}\spad{commutative("*":(%,%)->%)}\tab{5}\spad{x*y = y*x}
 
 SemiGroup(): Category == SetCategory with
 
@@ -13211,23 +13219,29 @@ These exports come from \refto{RetractableTo}(R:CommutativeRing):
 ++ with the same mapping type can be distinguished by name.
 
 GradedAlgebra(R: CommutativeRing, E: AbelianMonoid): Category ==
-    Join(GradedModule(R, E),RetractableTo(R)) with
-        1: constant -> %
-            ++ 1 is the identity for \spad{product}.
-        product: (%, %) -> %
-            ++ product(a,b) is the degree-preserving R-linear product:
-            ++
-            ++   \spad{degree product(a,b) = degree a + degree b}
-            ++   \spad{product(a1+a2,b) = product(a1,b) + product(a2,b)}
-            ++   \spad{product(a,b1+b2) = product(a,b1) + product(a,b2)}
-            ++   \spad{product(r*a,b) = product(a,r*b) = r*product(a,b)}
-            ++   \spad{product(a,product(b,c)) = product(product(a,b),c)}
-  add
-        if not (R is %) then
-            0: % == (0$R)::%
-            1: % == 1$R::%
-            (r: R)*(x: %) == product(r::%, x)
-            (x: %)*(r: R) == product(x, r::%)
+  Join(GradedModule(R, E),RetractableTo(R)) with
+
+    1: constant -> %
+      ++ \spad{1} is the identity for \spad{product}.
+
+    product: (%, %) -> %
+      ++ product(a,b) is the degree-preserving R-linear product:
+      ++
+      ++ \spad{degree product(a,b) = degree a + degree b}
+      ++ \spad{product(a1+a2,b) = product(a1,b) + product(a2,b)}
+      ++ \spad{product(a,b1+b2) = product(a,b1) + product(a,b2)}
+      ++ \spad{product(r*a,b) = product(a,r*b) = r*product(a,b)}
+      ++ \spad{product(a,product(b,c)) = product(product(a,b),c)}
+ add
+   if not (R is %) then
+
+      0: % == (0$R)::%
+
+      1: % == 1$R::%
+
+      (r: R)*(x: %) == product(r::%, x)
+
+      (x: %)*(r: R) == product(x, r::%)
 
 \end{chunk}
 \begin{chunk}{GRALG.dotabb}
@@ -13752,55 +13766,69 @@ These exports come from \refto{Monad}():
 ++ AMS, Providence, 1968
 ++ Description:
 ++ MonadWithUnit is the class of multiplicative monads with unit,
-++ i.e. sets with a binary operation and a unit element.
+++ that is, sets with a binary operation and a unit element.
 ++
 ++ Axioms\br
-++ \tab{5}leftIdentity("*":(%,%)->%,1) e.g. 1*x=x\br
-++ \tab{5}rightIdentity("*":(%,%)->%,1) e.g x*1=x
+++ \tab{5}leftIdentity("*":(%,%)->%,1) for example, 1*x=x\br
+++ \tab{5}rightIdentity("*":(%,%)->%,1) for example, x*1=x
 ++
 ++ Common Additional Axioms\br
 ++ \tab{5}unitsKnown - if "recip" says "failed", it PROVES input wasn't a unit
 
 MonadWithUnit(): Category == Monad with
+
       1: constant ->  %
-        ++ 1 returns the unit element, denoted by 1.
+        ++ \spad{1} returns the unit element, denoted by 1.
+
       one?: % -> Boolean
         ++ one?(a) tests whether \spad{a} is the unit 1.
+
       rightPower: (%,NonNegativeInteger) -> %
         ++ rightPower(a,n) returns the \spad{n}-th right power of \spad{a},
-        ++ i.e. \spad{rightPower(a,n) := rightPower(a,n-1) * a} and
+        ++ that is, \spad{rightPower(a,n) := rightPower(a,n-1) * a} and
         ++ \spad{rightPower(a,0) := 1}.
+
       leftPower: (%,NonNegativeInteger) -> %
         ++ leftPower(a,n) returns the \spad{n}-th left power of \spad{a},
-        ++ i.e. \spad{leftPower(a,n) := a * leftPower(a,n-1)} and
+        ++ that is, \spad{leftPower(a,n) := a * leftPower(a,n-1)} and
         ++ \spad{leftPower(a,0) := 1}.
+
       "**": (%,NonNegativeInteger) -> %
         ++ \spad{a**n} returns the \spad{n}-th power of \spad{a},
         ++ defined by repeated squaring.
+
       recip: % -> Union(%,"failed")
         ++ recip(a) returns an element, which is both a left and a right
         ++ inverse of \spad{a},
         ++ or \spad{"failed"} if such an element doesn't exist or cannot
         ++ be determined (see unitsKnown).
+
       leftRecip: % -> Union(%,"failed")
         ++ leftRecip(a) returns an element, which is a left inverse of 
         ++ \spad{a}, or \spad{"failed"} if such an element doesn't exist 
         ++ or cannot be determined (see unitsKnown).
+
       rightRecip: % -> Union(%,"failed")
         ++ rightRecip(a) returns an element, which is a right inverse of
         ++ \spad{a}, or \spad{"failed"} if such an element doesn't exist
         ++ or cannot be determined (see unitsKnown).
+
     add
+
       import RepeatedSquaring(%)
+
       one? x == x = 1
+
       x:% ** n:NonNegativeInteger ==
          zero? n => 1
          expt(x,n pretend PositiveInteger)
+
       rightPower(a,n) ==
         zero? n => 1
         res := 1
         for i in 1..n repeat res := res * a
         res
+
       leftPower(a,n) ==
         zero? n => 1
         res := 1
@@ -16827,12 +16855,12 @@ These exports come from \refto{Monoid}():
 \begin{chunk}{category GROUP Group}
 )abbrev category GROUP Group
 ++ Description:
-++ The class of multiplicative groups, i.e. monoids with
+++ The class of multiplicative groups, that is, monoids with
 ++ multiplicative inverses.
 ++
 ++ Axioms\br
-++ \tab{5}\spad{leftInverse("*":(%,%)->%,inv)}\tab{5}\spad{ inv(x)*x = 1 }\br
-++ \tab{5}\spad{rightInverse("*":(%,%)->%,inv)}\tab{4}\spad{ x*inv(x) = 1 }
+++ \tab{5}\spad{leftInverse("*":(%,%)->%,inv)}\tab{5}\spad{inv(x)*x = 1}\br
+++ \tab{5}\spad{rightInverse("*":(%,%)->%,inv)}\tab{4}\spad{x*inv(x) = 1}
 
 Group(): Category == Monoid with
       inv: % -> %               
@@ -21611,37 +21639,40 @@ These exports come from \refto{BagAggregate}(S:Type):
 ++ A stack is a bag where the last item inserted is the first item extracted.
 
 StackAggregate(S:Type): Category == BagAggregate S with
+
    finiteAggregate
+
    push_!: (S,%) -> S
-     ++ push!(x,s) pushes x onto stack s, i.e. destructively changing s
+     ++push!(x,s) pushes x onto stack s, that is, destructively changing s
      ++ so as to have a new first (top) element x.
      ++ Afterwards, pop!(s) produces x and pop!(s) produces the original s.
      ++
      ++X a:Stack INT:= stack [1,2,3,4,5]
      ++X push! a
      ++X a
+
    pop_!: % -> S
-     ++ pop!(s) returns the top element x, destructively removing x from s.
+     ++pop!(s) returns the top element x, destructively removing x from s.
      ++ Note that Use \axiom{top(s)} to obtain x without removing it from s.
      ++ Error: if s is empty.
      ++
      ++X a:Stack INT:= stack [1,2,3,4,5]
      ++X pop! a
      ++X a
+
    top: % -> S
-     ++ top(s) returns the top element x from s; s remains unchanged.
+     ++top(s) returns the top element x from s; s remains unchanged.
      ++ Note that Use \axiom{pop!(s)} to obtain x and remove it from s.
      ++
      ++X a:Stack INT:= stack [1,2,3,4,5]
      ++X top a
+
    depth: % -> NonNegativeInteger
-     ++ depth(s) returns the number of elements of stack s.
+     ++depth(s) returns the number of elements of stack s.
      ++ Note that \axiom{depth(s) = #s}.
      ++
      ++X a:Stack INT:= stack [1,2,3,4,5]
      ++X depth a
-
-
 \end{chunk}
 \begin{chunk}{SKAGG.dotabb}
 "SKAGG" [color=lightblue,href="bookvol10.2.pdf#nameddest=SKAGG"];
@@ -24996,14 +25027,16 @@ These exports come from \refto{OrderedSet}():
 ++ Date Last Updated: 29 March 1990
 ++ Description:
 ++ PermutationCategory provides a categorial environment
-++ for subgroups of bijections of a set (i.e. permutations)
+++ for subgroups of bijections of a set (that is, permutations)
 
 PermutationCategory(S:SetCategory): Category  ==  Group with
+
     cycle   :  List S       ->  %
-      ++ cycle(ls) coerces a cycle ls, i.e. a list with not
+      ++ cycle(ls) coerces a cycle ls, that is, a list with not
       ++ repetitions to a permutation, which maps ls.i to
       ++ ls.i+1, indices modulo the length of the list.
       ++ Error: if repetitions occur.
+
     cycles  :  List List S  ->  %
       ++ cycles(lls) coerces a list list of cycles lls
       ++ to a permutation, each cycle being a list with not
@@ -25011,21 +25044,27 @@ PermutationCategory(S:SetCategory): Category  ==  Group with
       ++ ls.i to ls.i+1, indices modulo the length of the list,
       ++ then these permutations are mutiplied.
       ++ Error: if repetitions occur in one cycle.
+
     eval  :  (%,S)          ->  S
       ++ eval(p, el) returns the image of el under the
       ++ permutation p.
+
     elt  :  (%,S)          ->  S
       ++ elt(p, el) returns the image of el under the
       ++ permutation p.
+
     orbit :  (%,S)          ->  Set S
       ++ orbit(p, el) returns the orbit of el under the
-      ++ permutation p, i.e. the set which is given by applications of
+      ++ permutation p, that is, the set which is given by applications of
       ++ the powers of p to el.
+
     "<" : (%,%)             ->  Boolean
       ++ p < q is an order relation on permutations.
       ++ Note that this order is only total if and only if S is totally ordered
       ++ or S is finite.
+
     if S has OrderedSet then OrderedSet
+
     if S has Finite then OrderedSet
 
 \end{chunk}
@@ -31514,9 +31553,9 @@ These exports come from \refto{AbelianGroup}():
 ++ multiplication by elements of the rng.
 ++
 ++ Axioms\br
-++ \tab{5}\spad{ x*(a*b) = (x*a)*b }\br
-++ \tab{5}\spad{ x*(a+b) = (x*a)+(x*b) }\br
-++ \tab{5}\spad{ (x+y)*x = (x*a)+(y*a) }
+++ \tab{5}\spad{x*(a*b) = (x*a)*b}\br
+++ \tab{5}\spad{x*(a+b) = (x*a)+(x*b)}\br
+++ \tab{5}\spad{(x+y)*x = (x*a)+(y*a)}
 
 RightModule(R:Rng):Category == AbelianGroup with
    "*": (%,R) -> %  
@@ -31861,7 +31900,7 @@ These exports come from \refto{RightModule}(S:Ring):
 ++ to potentially different rings.
 ++
 ++ Axiom\br
-++ \tab{5}\spad{ r*(x*s) = (r*x)*s }
+++ \tab{5}\spad{r*(x*s) = (r*x)*s}
 
 BiModule(R:Ring,S:Ring):Category ==
   Join(LeftModule(R),RightModule(S)) with
@@ -39050,31 +39089,39 @@ These exports come from \refto{Ring}():
 ++ \tab{5}\spad{differentiate(x*y,e)=x*differentiate(y,e)+differentiate(x,e)*y}
 
 PartialDifferentialRing(S:SetCategory): Category == Ring with
+
     differentiate: (%, S) -> %
         ++ differentiate(x,v) computes the partial derivative of x
         ++ with respect to v.
+
     differentiate: (%, List S) -> %
         ++ differentiate(x,[s1,...sn]) computes successive partial 
         ++ derivatives,
-        ++ i.e. \spad{differentiate(...differentiate(x, s1)..., sn)}.
+        ++ that is, \spad{differentiate(...differentiate(x, s1)..., sn)}.
+
     differentiate: (%, S, NonNegativeInteger) -> %
-        ++ differentiate(x, s, n) computes multiple partial derivatives, i.e.
-        ++ n-th derivative of x with respect to s.
+        ++ differentiate(x, s, n) computes multiple partial derivatives, 
+        ++ that is, n-th derivative of x with respect to s.
+
     differentiate: (%, List S, List NonNegativeInteger) -> %
         ++ differentiate(x, [s1,...,sn], [n1,...,nn]) computes
-        ++ multiple partial derivatives, i.e.
+        ++ multiple partial derivatives, that is, \spad{D(...D(x, s1)..., sn)}.
+
     D: (%, S) -> %
         ++ D(x,v) computes the partial derivative of x
         ++ with respect to v.
+
     D: (%, List S) -> %
         ++ D(x,[s1,...sn]) computes successive partial derivatives,
-        ++ i.e. \spad{D(...D(x, s1)..., sn)}.
+        ++ that is, \spad{D(...D(x, s1)..., sn)}.
+
     D: (%, S, NonNegativeInteger) -> %
-        ++ D(x, s, n) computes multiple partial derivatives, i.e.
+        ++ D(x, s, n) computes multiple partial derivatives, that is,
         ++ n-th derivative of x with respect to s.
+
     D: (%, List S, List NonNegativeInteger) -> %
         ++ D(x, [s1,...,sn], [n1,...,nn]) computes
-        ++ multiple partial derivatives, i.e.
+        ++ multiple partial derivatives, that is,
         ++ \spad{D(...D(x, s1, n1)..., sn, nn)}.
   add
     differentiate(r:%, l:List S) ==
diff --git a/books/bookvol10.3.pamphlet b/books/bookvol10.3.pamphlet
index 08dd0a3..8914b8f 100644
--- a/books/bookvol10.3.pamphlet
+++ b/books/bookvol10.3.pamphlet
@@ -44028,8 +44028,8 @@ o )show Float
 ++ The decision to choose the base to be binary has some unfortunate
 ++ consequences.  First, decimal numbers like 0.3 cannot be represented
 ++ exactly.  Second, there is a further loss of accuracy during
-++ conversion to decimal for output.  To compensate for this, if d
-++ digits of precision are specified, \spad{1 + ceiling(log2 d)} bits are used.
+++ conversion to decimal for output.  To compensate for this, if d digits
+++ of precision are specified, \spad{1 + ceiling(log2(10^d))} bits are used.
 ++ Two numbers that are displayed identically may therefore be
 ++ not equal.  On the other hand, a significant efficiency loss would
 ++ be incurred if we chose to use a decimal base when the underlying
@@ -85660,6 +85660,7 @@ o )show NumericalOptimizationProblem
 \end{tabular}
 
 \begin{chunk}{domain OPTPROB NumericalOptimizationProblem}
+)abbrev domain OPTPROB NumericalOptimizationProblem
 ++ Author: Brian Dupee
 ++ Date Created: December 1997
 ++ Date Last Updated: December 1997
@@ -85678,7 +85679,7 @@ o )show NumericalOptimizationProblem
 ++ cf:\axiomType{List Expression DoubleFloat},\br
 ++ ub:\axiomType{List OrderedCompletion DoubleFloat})
 ++
-++ and one for least-squares problems that is optimization of a set of
+++ and one for least-squares problems i.e. optimization of a set of
 ++ observations of a data set:
 ++
 ++ \axiomType{Record}(lfn:\axiomType{List Expression DoubleFloat},\br
diff --git a/buglist b/buglist
index 96ebf10..81d466a 100644
--- a/buglist
+++ b/buglist
@@ -11,13 +11,12 @@ typos 40363:
 dup 50006:
 nonextend 60077:
 
-=========================================================================
-warnings 20572:
-
->compiling SGROUP.spad to SGROUP.nrlib
+============================================================================
 
---->-->SemiGroup&(constructor): Missing left brace
-"the class of all multiplicative semigroups, that is, a set with an associative operation \\spadop{*}. \\blankline Axioms\\br \\tab{5}\\spad{associative(\"*\":(\\%,\\%)->\\%)}\\tab{5}\\spad{ (x*y)*z = x*(y*z)} \\blankline Conditional attributes\\br \\tab{5}\\spad{commutative(\"*\":(\\%,\\%)->\\%)}\\tab{5}\\spad{ x*y = \\spad{y*x} }"
+   finalizing nrlib IDPAM 
+   Warnings: 
+      [1] +:  res has no value
+      [2] +:  endcell has no value
 
 =========================================================================
 bug 7236: 
@@ -920,38 +919,6 @@ typos 40354:
 --->bookvol10.2.pamphlet-->BlowUpMethodCategory(constructor): Not documented!!!!
 --->bookvol10.2.pamphlet-->BlowUpMethodCategory(): Missing Description
 
-
-=========================================================================
-typos 40353:
-
->compiling LMODULE.spad to LMODULE.nrlib
-
---->bookvol10.2.pamphlet-->LeftModule(constructor): Missing left brace
-"The category of left modules over an \\spad{rng} (ring not necessarily with unit). This is an abelian group which supports left multiplation by elements of the rng. \\blankline Axioms\\br \\tab{5}\\spad{ (a*b)*x = a*(b*x) }\\br \\tab{5}\\spad{ (a+b)*x = (a*x)+(b*x) }\\br \\tab{5}\\spad{ a*(x+y) = (a*x)+(a*y) }"
-
-=========================================================================
-typos 40352:
-
->compiling LOGIC.spad to LOGIC.nrlib
---->-->Logic&((/\ (% % %))): Missing right brace for \spadignore
-
---->-->Logic&((\/ (% % %))): Missing left brace
---->-->Logic&((\/ (% % %))): Missing left brace
-"\\spadignore{ \\spad{\\/} } returns the logical `join', \\spadignore{e.g.} `or'."
-
---->-->Logic&(constructor): Missing left brace
-"`Logic' provides the basic operations for lattices, \\spadignore{e.g.} boolean algebra."
-
---->bookvol10.2.pamphlet-->Logic((/\ (% % %))): Missing right brace for \spadignore
-
---->bookvol10.2.pamphlet-->Logic((\/ (% % %))): Missing left brace
---->bookvol10.2.pamphlet-->Logic((\/ (% % %))): Missing left brace
-"\\spadignore{ \\spad{\\/} } returns the logical `join', \\spadignore{e.g.} `or'."
-
---->bookvol10.2.pamphlet-->Logic(constructor): Missing left brace
-"`Logic' provides the basic operations for lattices, \\spadignore{e.g.} boolean algebra."
-
-
 =========================================================================
 typos 40349:
 
@@ -972,14 +939,6 @@ typos 40348:
 
 
 =========================================================================
-typos 40344:
-
->compiling RMODULE.spad to RMODULE.nrlib
-
---->bookvol10.2.pamphlet-->RightModule(constructor): Missing left brace
-"The category of right modules over an \\spad{rng} (ring not necessarily with unit). This is an abelian group which supports right multiplication by elements of the rng. \\blankline Axioms\\br \\tab{5}\\spad{ x*(a*b) = (x*a)*b }\\br \\tab{5}\\spad{ x*(a+b) = (x*a)+(x*b) }\\br \\tab{5}\\spad{ (x+y)*x = (x*a)+(y*a) }"
-
-=========================================================================
 typos 40343:
 
 >compiling SETCATD.spad to SETCATD.nrlib
@@ -1062,14 +1021,6 @@ typos 40335:
 "\\indented{1}{A cubic Bezier curve is a simple interpolation between the} \\indented{1}{starting point, a left-middle point,, a right-middle point,} \\indented{1}{and the ending point based on a parameter \\spad{t.}} \\indented{1}{Given a start point a=[x1,y1], the left-middle point b=[x2,y2],} \\indented{1}{the right-middle point c=[x3,y3] and an endpoint d=[x4,y4]} \\indented{1}{f(t) \\spad{==} \\spad{[(1-t)^3} \\spad{x1} + 3t(1-t)^2 \\spad{x2} + 3t^2 (1-t) \\spad{x3} + \\spad{t^3} x4,} \\indented{10}{(1-t)^3 \\spad{y1} + 3t(1-t)^2 \\spad{y2} + 3t^2 (1-t) \\spad{y3} + \\spad{t^3} y4]} \\blankline \\spad{X} n:=cubicBezier([2.0,2.0],[2.0,4.0],[6.0,4.0],[6.0,2.0]) \\spad{X} [n(t/10.0) for \\spad{t} in 0..10 by 1]"
 
 =========================================================================
-typos 40334:
-
->compiling BMODULE.spad to BMODULE.nrlib
-
---->bookvol10.2.pamphlet-->BiModule(constructor): Missing left brace
-"A \\spadtype{BiModule} is both a left and right module with respect to potentially different rings. \\blankline Axiom\\br \\tab{5}\\spad{ r*(x*s) = (r*x)*s }"
-
-=========================================================================
 typos 40333:
 
 >compiling FAMONC.spad to FAMONC.nrlib
@@ -1078,105 +1029,6 @@ typos 40333:
 "\\indented{1}{size(x) returns the number of terms in \\spad{x.}} \\indented{1}{mapGen(f, \\spad{a1\\^e1} \\spad{...} an\\^en) returns} \\spad{f(a1)\\^e1 \\spad{...} f(an)\\^en}."
 
 =========================================================================
-typos 40332:
-
->compiling GROUP.spad to GROUP.nrlib
-
---->-->Group&(constructor): Missing left brace
---->-->Group&(constructor): Missing left brace
-"The class of multiplicative groups, \\spadignore{i.e.} monoids with multiplicative inverses. \\blankline Axioms\\br \\tab{5}\\spad{leftInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{5}\\spad{ inv(x)*x = 1 }\\br \\tab{5}\\spad{rightInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{4}\\spad{ x*inv(x) = 1 }"
-
---->bookvol10.2.pamphlet-->Group(constructor): Missing left brace
---->bookvol10.2.pamphlet-->Group(constructor): Missing left brace
-"The class of multiplicative groups, \\spadignore{i.e.} monoids with multiplicative inverses. \\blankline Axioms\\br \\tab{5}\\spad{leftInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{5}\\spad{ inv(x)*x = 1 }\\br \\tab{5}\\spad{rightInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{4}\\spad{ x*inv(x) = 1 }"
-
-=========================================================================
-typos 40331:
-
->compiling MONADWU.spad to MONADWU.nrlib
-
---->-->MonadWithUnit&(((One) (%) constant)): Improper first word in comments: 
-"1 returns the unit element, denoted by 1."
-
---->-->MonadWithUnit&((rightPower (% % (NonNegativeInteger)))): Missing left brace
-"\\spad{rightPower(a,n)} returns the \\spad{n}-th right power of \\spad{a}, \\spadignore{i.e.} \\spad{rightPower(a,n) \\spad{:=} rightPower(a,n-1) * a} and \\spad{rightPower(a,0) \\spad{:=} 1}."
-
---->-->MonadWithUnit&((leftPower (% % (NonNegativeInteger)))): Missing left brace
-"\\spad{leftPower(a,n)} returns the \\spad{n}-th left power of \\spad{a}, \\spadignore{i.e.} \\spad{leftPower(a,n) \\spad{:=} a * leftPower(a,n-1)} and \\spad{leftPower(a,0) \\spad{:=} 1}."
-
---->-->MonadWithUnit&(constructor): Missing left brace
---->-->MonadWithUnit&(constructor): Missing left brace
-"MonadWithUnit is the class of multiplicative monads with unit, \\spadignore{i.e.} sets with a binary operation and a unit element. \\blankline Axioms\\br \\tab{5}leftIdentity(\"*\":(\\%,\\%)->\\%,1) \\spadignore{e.g.} 1*x=x\\br \\tab{5}rightIdentity(\"*\":(\\%,\\%)->\\%,1) e.g x*1=x \\blankline Common Additional Axioms\\br \\tab{5}unitsKnown - if \"recip\" says \"failed\", it PROVES input wasn't a unit"
-
---->bookvol10.2.pamphlet-->MonadWithUnit(((One) (%) constant)): Improper first word in comments: 
-"1 returns the unit element, denoted by 1."
-
---->bookvol10.2.pamphlet-->MonadWithUnit((rightPower (% % (NonNegativeInteger)))): Missing left brace
-"\\spad{rightPower(a,n)} returns the \\spad{n}-th right power of \\spad{a}, \\spadignore{i.e.} \\spad{rightPower(a,n) \\spad{:=} rightPower(a,n-1) * a} and \\spad{rightPower(a,0) \\spad{:=} 1}."
-
---->bookvol10.2.pamphlet-->MonadWithUnit((leftPower (% % (NonNegativeInteger)))): Missing left brace
-"\\spad{leftPower(a,n)} returns the \\spad{n}-th left power of \\spad{a}, \\spadignore{i.e.} \\spad{leftPower(a,n) \\spad{:=} a * leftPower(a,n-1)} and \\spad{leftPower(a,0) \\spad{:=} 1}."
-
---->bookvol10.2.pamphlet-->MonadWithUnit(constructor): Missing left brace
---->bookvol10.2.pamphlet-->MonadWithUnit(constructor): Missing left brace
-"MonadWithUnit is the class of multiplicative monads with unit, \\spadignore{i.e.} sets with a binary operation and a unit element. \\blankline Axioms\\br \\tab{5}leftIdentity(\"*\":(\\%,\\%)->\\%,1) \\spadignore{e.g.} 1*x=x\\br \\tab{5}rightIdentity(\"*\":(\\%,\\%)->\\%,1) e.g x*1=x \\blankline Common Additional Axioms\\br \\tab{5}unitsKnown - if \"recip\" says \"failed\", it PROVES input wasn't a unit"
-
-=========================================================================
-typos 40330:
-
->compiling PERMCAT.spad to PERMCAT.nrlib
-
---->bookvol10.2.pamphlet-->PermutationCategory((cycle (% (List S)))): Missing left brace
-"\\spad{cycle(ls)} coerces a cycle \\spad{ls,} \\spadignore{i.e.} a list with not repetitions to a permutation, which maps ls.i to ls.i+1, indices modulo the length of the list. Error: if repetitions occur."
-
---->bookvol10.2.pamphlet-->PermutationCategory((orbit ((Set S) % S))): Missing left brace
-"\\spad{orbit(p, el)} returns the orbit of el under the permutation \\spad{p,} \\spadignore{i.e.} the set which is given by applications of the powers of \\spad{p} to el."
-
---->bookvol10.2.pamphlet-->PermutationCategory(constructor): Mismatch: left pren matches right brace
-"PermutationCategory provides a categorial environment for subgroups of bijections of a set (\\spadignore{i.e.} permutations)"
-
-=========================================================================
-typos 40329:
-
->compiling PDRING.spad to PDRING.nrlib
-
---->-->PartialDifferentialRing&((differentiate (% % (List S)))): Missing left brace
-"\\spad{differentiate(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{differentiate(...differentiate(x, s1)..., sn)}."
-
---->-->PartialDifferentialRing&((differentiate (% % S (NonNegativeInteger)))): Missing left brace
-"\\spad{differentiate(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
-
---->-->PartialDifferentialRing&((differentiate (% % (List S) (List (NonNegativeInteger))))): Missing left brace
-"\\spad{differentiate(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.}"
-
---->-->PartialDifferentialRing&((D (% % (List S)))): Missing left brace
-"\\spad{D(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, s1)..., sn)}."
-
---->-->PartialDifferentialRing&((D (% % S (NonNegativeInteger)))): Missing left brace
-"\\spad{D(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
-
---->-->PartialDifferentialRing&((D (% % (List S) (List (NonNegativeInteger))))): Missing left brace
-"\\spad{D(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, \\spad{s1,} n1)..., \\spad{sn,} nn)}."
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % (List S)))): Missing left brace
-"\\spad{differentiate(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{differentiate(...differentiate(x, s1)..., sn)}."
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % S (NonNegativeInteger)))): Missing left brace
-"\\spad{differentiate(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % (List S) (List (NonNegativeInteger))))): Missing left brace
-"\\spad{differentiate(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.}"
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % (List S)))): Missing left brace
-"\\spad{D(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, s1)..., sn)}."
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % S (NonNegativeInteger)))): Missing left brace
-"\\spad{D(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
-
---->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % (List S) (List (NonNegativeInteger))))): Missing left brace
-"\\spad{D(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, \\spad{s1,} n1)..., \\spad{sn,} nn)}."
-
-=========================================================================
 typos 40328:
 
 --->bookvol10.2.pamphlet-->PlacesCategory((+ ((Divisor %) % %))): Not documented!!!!
@@ -1213,23 +1065,6 @@ typos 40326:
 "\\indented{1}{delete!(u,i) destructively deletes the \\axiom{i}th element of u.} \\blankline \\spad{E} Data:=Record(age:Integer,gender:String) \\spad{E} a1:AssociationList(String,Data):=table() \\spad{E} a1.\"tim\":=[55,\"male\"]$Data \\spad{E} delete!(a1,1)"
 
 =========================================================================
-typos 40325:
-
->compiling GRMOD.spad to GRMOD.nrlib
-
---->-->GradedModule&(((Zero) (%) constant)): Improper first word in comments: 
-"0 denotes the zero of degree 0."
-
---->-->GradedModule&(constructor): Missing left brace
-"GradedModule(R,E) denotes ``E-graded R-module'', \\spadignore{i.e.} collection of R-modules indexed by an abelian monoid E. An element \\spad{g} of \\spad{G[s]} for some specific \\spad{s} in \\spad{E} is said to be an element of \\spad{G} with degree \\spad{s}. Sums are defined in each module \\spad{G[s]} so two elements of \\spad{G} have a sum if they have the same degree. \\blankline Morphisms can be defined and composed by degree to give the mathematical category of graded modules."
-
---->bookvol10.2.pamphlet-->GradedModule(((Zero) (%) constant)): Improper first word in comments: 
-"0 denotes the zero of degree 0."
-
---->bookvol10.2.pamphlet-->GradedModule(constructor): Missing left brace
-"GradedModule(R,E) denotes ``E-graded R-module'', \\spadignore{i.e.} collection of R-modules indexed by an abelian monoid E. An element \\spad{g} of \\spad{G[s]} for some specific \\spad{s} in \\spad{E} is said to be an element of \\spad{G} with degree \\spad{s}. Sums are defined in each module \\spad{G[s]} so two elements of \\spad{G} have a sum if they have the same degree. \\blankline Morphisms can be defined and composed by degree to give the mathematical category of graded modules."
-
-=========================================================================
 typos 40324:
 
 >compiling IFAMON.spad to IFAMON.nrlib
@@ -1238,35 +1073,6 @@ typos 40324:
 (|FreeAbelianMonoidCategory| |#1| |#2|)    has no  outputForm : (%,((OutputForm,OutputForm) -> OutputForm),((OutputForm,OutputForm) -> OutputForm),Integer) -> OutputForm 
 
 =========================================================================
-typos 40323:
-
->compiling GRALG.spad to GRALG.nrlib
-
---->-->GradedAlgebra&(((One) (%) constant)): Improper first word in comments: 
-"1 is the identity for \\spad{product}."
-
---->bookvol10.2.pamphlet-->GradedAlgebra(((One) (%) constant)): Improper first word in comments: 
-"1 is the identity for \\spad{product}."
-
-=========================================================================
-typos 40322:
-
->compiling SKAGG.spad to SKAGG.nrlib
-
---->bookvol10.2.pamphlet-->StackAggregate((push! (S S %))): Improper first word in comments: 
---->bookvol10.2.pamphlet-->StackAggregate((push! (S S %))): Missing left brace
-"\\indented{1}{push!(x,s) pushes \\spad{x} onto stack \\spad{s,} \\spadignore{i.e.} destructively changing \\spad{s}} \\indented{1}{so as to have a new first (top) element \\spad{x.}} \\indented{1}{Afterwards, pop!(s) produces \\spad{x} and pop!(s) produces the original \\spad{s.}} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} push! a \\spad{X} a"
-
---->bookvol10.2.pamphlet-->StackAggregate((pop! (S %))): Improper first word in comments: 
-"\\indented{1}{pop!(s) returns the top element \\spad{x,} destructively removing \\spad{x} from \\spad{s.}} \\indented{1}{Note that Use \\axiom{top(s)} to obtain \\spad{x} without removing it from \\spad{s.}} \\indented{1}{Error: if \\spad{s} is empty.} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} pop! a \\spad{X} a"
-
---->bookvol10.2.pamphlet-->StackAggregate((top (S %))): Improper first word in comments: 
-"\\indented{1}{top(s) returns the top element \\spad{x} from \\spad{s;} \\spad{s} remains unchanged.} \\indented{1}{Note that Use \\axiom{pop!(s)} to obtain \\spad{x} and remove it from \\spad{s.}} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} top a"
-
---->bookvol10.2.pamphlet-->StackAggregate((depth ((NonNegativeInteger) %))): Improper first word in comments: 
-"\\indented{1}{depth(s) returns the number of elements of stack \\spad{s.}} \\indented{1}{Note that \\axiom{depth(s) = \\#s}.} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} depth a"
-
-=========================================================================
 typos 40321:
 
 >compiling BSTREE.spad to BSTREE.nrlib
@@ -28623,6 +28429,15 @@ Value = (|RepeatedDoubling|)
 ;; The variable |BiModule;CAT| is undefined.
 ;; The compiler will assume this variable is a global.
 
+=========================================================================
+warnings 20572:
+
+>compiling SGROUP.spad to SGROUP.nrlib
+
+--->-->SemiGroup&(constructor): Missing left brace
+"the class of all multiplicative semigroups, that is, a set with an associative operation \\spadop{*}. \\blankline Axioms\\br \\tab{5}\\spad{associative(\"*\":(\\%,\\%)->\\%)}\\tab{5}\\spad{ (x*y)*z = x*(y*z)} \\blankline Conditional attributes\\br \\tab{5}\\spad{commutative(\"*\":(\\%,\\%)->\\%)}\\tab{5}\\spad{ x*y = \\spad{y*x} }"
+
+
 ============================================================================
 
    finalizing nrlib CACHSET 
@@ -28700,13 +28515,6 @@ Value = (|RepeatedDoubling|)
 
 ============================================================================
 
-   finalizing nrlib IDPAM 
-   Warnings: 
-      [1] +:  res has no value
-      [2] +:  endcell has no value
-
-============================================================================
-
    finalizing nrlib IXAGG 
 ; (DEFUN |IndexedAggregate| ...) is being compiled.
 ;; The variable |IndexedAggregate;AL| is undefined.
@@ -40505,3 +40313,185 @@ typos 40130:
 --->bookvol10.2.pamphlet-->FunctionFieldCategory((rationalPoints ((List (List F))))): Improper first word in comments: 
 "\\indented{1}{rationalPoints() returns the list of all the affine} rational points."
 
+fixed 20130318.02.tpd.patch
+=========================================================================
+typos 40334:
+
+>compiling BMODULE.spad to BMODULE.nrlib
+
+--->bookvol10.2.pamphlet-->BiModule(constructor): Missing left brace
+"A \\spadtype{BiModule} is both a left and right module with respect to potentially different rings. \\blankline Axiom\\br \\tab{5}\\spad{ r*(x*s) = (r*x)*s }"
+
+=========================================================================
+typos 40353:
+
+>compiling LMODULE.spad to LMODULE.nrlib
+
+--->bookvol10.2.pamphlet-->LeftModule(constructor): Missing left brace
+"The category of left modules over an \\spad{rng} (ring not necessarily with unit). This is an abelian group which supports left multiplation by elements of the rng. \\blankline Axioms\\br \\tab{5}\\spad{ (a*b)*x = a*(b*x) }\\br \\tab{5}\\spad{ (a+b)*x = (a*x)+(b*x) }\\br \\tab{5}\\spad{ a*(x+y) = (a*x)+(a*y) }"
+
+=========================================================================
+typos 40352:
+
+>compiling LOGIC.spad to LOGIC.nrlib
+--->-->Logic&((/\ (% % %))): Missing right brace for \spadignore
+
+--->-->Logic&((\/ (% % %))): Missing left brace
+--->-->Logic&((\/ (% % %))): Missing left brace
+"\\spadignore{ \\spad{\\/} } returns the logical `join', \\spadignore{e.g.} `or'."
+
+--->-->Logic&(constructor): Missing left brace
+"`Logic' provides the basic operations for lattices, \\spadignore{e.g.} boolean algebra."
+
+--->bookvol10.2.pamphlet-->Logic((/\ (% % %))): Missing right brace for \spadignore
+
+--->bookvol10.2.pamphlet-->Logic((\/ (% % %))): Missing left brace
+--->bookvol10.2.pamphlet-->Logic((\/ (% % %))): Missing left brace
+"\\spadignore{ \\spad{\\/} } returns the logical `join', \\spadignore{e.g.} `or'."
+
+--->bookvol10.2.pamphlet-->Logic(constructor): Missing left brace
+"`Logic' provides the basic operations for lattices, \\spadignore{e.g.} boolean algebra."
+
+
+=========================================================================
+typos 40344:
+
+>compiling RMODULE.spad to RMODULE.nrlib
+
+--->bookvol10.2.pamphlet-->RightModule(constructor): Missing left brace
+"The category of right modules over an \\spad{rng} (ring not necessarily with unit). This is an abelian group which supports right multiplication by elements of the rng. \\blankline Axioms\\br \\tab{5}\\spad{ x*(a*b) = (x*a)*b }\\br \\tab{5}\\spad{ x*(a+b) = (x*a)+(x*b) }\\br \\tab{5}\\spad{ (x+y)*x = (x*a)+(y*a) }"
+
+=========================================================================
+typos 40332:
+
+>compiling GROUP.spad to GROUP.nrlib
+
+--->-->Group&(constructor): Missing left brace
+--->-->Group&(constructor): Missing left brace
+"The class of multiplicative groups, \\spadignore{i.e.} monoids with multiplicative inverses. \\blankline Axioms\\br \\tab{5}\\spad{leftInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{5}\\spad{ inv(x)*x = 1 }\\br \\tab{5}\\spad{rightInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{4}\\spad{ x*inv(x) = 1 }"
+
+--->bookvol10.2.pamphlet-->Group(constructor): Missing left brace
+--->bookvol10.2.pamphlet-->Group(constructor): Missing left brace
+"The class of multiplicative groups, \\spadignore{i.e.} monoids with multiplicative inverses. \\blankline Axioms\\br \\tab{5}\\spad{leftInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{5}\\spad{ inv(x)*x = 1 }\\br \\tab{5}\\spad{rightInverse(\"*\":(\\%,\\%)->\\%,inv)}\\tab{4}\\spad{ x*inv(x) = 1 }"
+
+=========================================================================
+typos 40331:
+
+>compiling MONADWU.spad to MONADWU.nrlib
+
+--->-->MonadWithUnit&(((One) (%) constant)): Improper first word in comments: 
+"1 returns the unit element, denoted by 1."
+
+--->-->MonadWithUnit&((rightPower (% % (NonNegativeInteger)))): Missing left brace
+"\\spad{rightPower(a,n)} returns the \\spad{n}-th right power of \\spad{a}, \\spadignore{i.e.} \\spad{rightPower(a,n) \\spad{:=} rightPower(a,n-1) * a} and \\spad{rightPower(a,0) \\spad{:=} 1}."
+
+--->-->MonadWithUnit&((leftPower (% % (NonNegativeInteger)))): Missing left brace
+"\\spad{leftPower(a,n)} returns the \\spad{n}-th left power of \\spad{a}, \\spadignore{i.e.} \\spad{leftPower(a,n) \\spad{:=} a * leftPower(a,n-1)} and \\spad{leftPower(a,0) \\spad{:=} 1}."
+
+--->-->MonadWithUnit&(constructor): Missing left brace
+--->-->MonadWithUnit&(constructor): Missing left brace
+"MonadWithUnit is the class of multiplicative monads with unit, \\spadignore{i.e.} sets with a binary operation and a unit element. \\blankline Axioms\\br \\tab{5}leftIdentity(\"*\":(\\%,\\%)->\\%,1) \\spadignore{e.g.} 1*x=x\\br \\tab{5}rightIdentity(\"*\":(\\%,\\%)->\\%,1) e.g x*1=x \\blankline Common Additional Axioms\\br \\tab{5}unitsKnown - if \"recip\" says \"failed\", it PROVES input wasn't a unit"
+
+--->bookvol10.2.pamphlet-->MonadWithUnit(((One) (%) constant)): Improper first word in comments: 
+"1 returns the unit element, denoted by 1."
+
+--->bookvol10.2.pamphlet-->MonadWithUnit((rightPower (% % (NonNegativeInteger)))): Missing left brace
+"\\spad{rightPower(a,n)} returns the \\spad{n}-th right power of \\spad{a}, \\spadignore{i.e.} \\spad{rightPower(a,n) \\spad{:=} rightPower(a,n-1) * a} and \\spad{rightPower(a,0) \\spad{:=} 1}."
+
+--->bookvol10.2.pamphlet-->MonadWithUnit((leftPower (% % (NonNegativeInteger)))): Missing left brace
+"\\spad{leftPower(a,n)} returns the \\spad{n}-th left power of \\spad{a}, \\spadignore{i.e.} \\spad{leftPower(a,n) \\spad{:=} a * leftPower(a,n-1)} and \\spad{leftPower(a,0) \\spad{:=} 1}."
+
+--->bookvol10.2.pamphlet-->MonadWithUnit(constructor): Missing left brace
+--->bookvol10.2.pamphlet-->MonadWithUnit(constructor): Missing left brace
+"MonadWithUnit is the class of multiplicative monads with unit, \\spadignore{i.e.} sets with a binary operation and a unit element. \\blankline Axioms\\br \\tab{5}leftIdentity(\"*\":(\\%,\\%)->\\%,1) \\spadignore{e.g.} 1*x=x\\br \\tab{5}rightIdentity(\"*\":(\\%,\\%)->\\%,1) e.g x*1=x \\blankline Common Additional Axioms\\br \\tab{5}unitsKnown - if \"recip\" says \"failed\", it PROVES input wasn't a unit"
+
+=========================================================================
+typos 40330:
+
+>compiling PERMCAT.spad to PERMCAT.nrlib
+
+--->bookvol10.2.pamphlet-->PermutationCategory((cycle (% (List S)))): Missing left brace
+"\\spad{cycle(ls)} coerces a cycle \\spad{ls,} \\spadignore{i.e.} a list with not repetitions to a permutation, which maps ls.i to ls.i+1, indices modulo the length of the list. Error: if repetitions occur."
+
+--->bookvol10.2.pamphlet-->PermutationCategory((orbit ((Set S) % S))): Missing left brace
+"\\spad{orbit(p, el)} returns the orbit of el under the permutation \\spad{p,} \\spadignore{i.e.} the set which is given by applications of the powers of \\spad{p} to el."
+
+--->bookvol10.2.pamphlet-->PermutationCategory(constructor): Mismatch: left pren matches right brace
+"PermutationCategory provides a categorial environment for subgroups of bijections of a set (\\spadignore{i.e.} permutations)"
+
+=========================================================================
+typos 40329:
+
+>compiling PDRING.spad to PDRING.nrlib
+
+--->-->PartialDifferentialRing&((differentiate (% % (List S)))): Missing left brace
+"\\spad{differentiate(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{differentiate(...differentiate(x, s1)..., sn)}."
+
+--->-->PartialDifferentialRing&((differentiate (% % S (NonNegativeInteger)))): Missing left brace
+"\\spad{differentiate(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
+
+--->-->PartialDifferentialRing&((differentiate (% % (List S) (List (NonNegativeInteger))))): Missing left brace
+"\\spad{differentiate(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.}"
+
+--->-->PartialDifferentialRing&((D (% % (List S)))): Missing left brace
+"\\spad{D(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, s1)..., sn)}."
+
+--->-->PartialDifferentialRing&((D (% % S (NonNegativeInteger)))): Missing left brace
+"\\spad{D(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
+
+--->-->PartialDifferentialRing&((D (% % (List S) (List (NonNegativeInteger))))): Missing left brace
+"\\spad{D(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, \\spad{s1,} n1)..., \\spad{sn,} nn)}."
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % (List S)))): Missing left brace
+"\\spad{differentiate(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{differentiate(...differentiate(x, s1)..., sn)}."
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % S (NonNegativeInteger)))): Missing left brace
+"\\spad{differentiate(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((differentiate (% % (List S) (List (NonNegativeInteger))))): Missing left brace
+"\\spad{differentiate(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.}"
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % (List S)))): Missing left brace
+"\\spad{D(x,[s1,...sn])} computes successive partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, s1)..., sn)}."
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % S (NonNegativeInteger)))): Missing left brace
+"\\spad{D(x, \\spad{s,} \\spad{n)}} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{n}-th derivative of \\spad{x} with respect to \\spad{s.}"
+
+--->bookvol10.2.pamphlet-->PartialDifferentialRing((D (% % (List S) (List (NonNegativeInteger))))): Missing left brace
+"\\spad{D(x, [s1,...,sn], [n1,...,nn])} computes multiple partial derivatives, \\spadignore{i.e.} \\spad{D(...D(x, \\spad{s1,} n1)..., \\spad{sn,} nn)}."
+
+=========================================================================
+typos 40325:
+
+>compiling GRMOD.spad to GRMOD.nrlib
+
+--->-->GradedModule&(((Zero) (%) constant)): Improper first word in comments: 
+"0 denotes the zero of degree 0."
+
+--->-->GradedModule&(constructor): Missing left brace
+"GradedModule(R,E) denotes ``E-graded R-module'', \\spadignore{i.e.} collection of R-modules indexed by an abelian monoid E. An element \\spad{g} of \\spad{G[s]} for some specific \\spad{s} in \\spad{E} is said to be an element of \\spad{G} with degree \\spad{s}. Sums are defined in each module \\spad{G[s]} so two elements of \\spad{G} have a sum if they have the same degree. \\blankline Morphisms can be defined and composed by degree to give the mathematical category of graded modules."
+
+--->bookvol10.2.pamphlet-->GradedModule(((Zero) (%) constant)): Improper first word in comments: 
+"0 denotes the zero of degree 0."
+
+--->bookvol10.2.pamphlet-->GradedModule(constructor): Missing left brace
+"GradedModule(R,E) denotes ``E-graded R-module'', \\spadignore{i.e.} collection of R-modules indexed by an abelian monoid E. An element \\spad{g} of \\spad{G[s]} for some specific \\spad{s} in \\spad{E} is said to be an element of \\spad{G} with degree \\spad{s}. Sums are defined in each module \\spad{G[s]} so two elements of \\spad{G} have a sum if they have the same degree. \\blankline Morphisms can be defined and composed by degree to give the mathematical category of graded modules."
+
+=========================================================================
+typos 40322:
+
+>compiling SKAGG.spad to SKAGG.nrlib
+
+--->bookvol10.2.pamphlet-->StackAggregate((push! (S S %))): Improper first word in comments: 
+--->bookvol10.2.pamphlet-->StackAggregate((push! (S S %))): Missing left brace
+"\\indented{1}{push!(x,s) pushes \\spad{x} onto stack \\spad{s,} \\spadignore{i.e.} destructively changing \\spad{s}} \\indented{1}{so as to have a new first (top) element \\spad{x.}} \\indented{1}{Afterwards, pop!(s) produces \\spad{x} and pop!(s) produces the original \\spad{s.}} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} push! a \\spad{X} a"
+
+--->bookvol10.2.pamphlet-->StackAggregate((pop! (S %))): Improper first word in comments: 
+"\\indented{1}{pop!(s) returns the top element \\spad{x,} destructively removing \\spad{x} from \\spad{s.}} \\indented{1}{Note that Use \\axiom{top(s)} to obtain \\spad{x} without removing it from \\spad{s.}} \\indented{1}{Error: if \\spad{s} is empty.} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} pop! a \\spad{X} a"
+
+--->bookvol10.2.pamphlet-->StackAggregate((top (S %))): Improper first word in comments: 
+"\\indented{1}{top(s) returns the top element \\spad{x} from \\spad{s;} \\spad{s} remains unchanged.} \\indented{1}{Note that Use \\axiom{pop!(s)} to obtain \\spad{x} and remove it from \\spad{s.}} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} top a"
+
+--->bookvol10.2.pamphlet-->StackAggregate((depth ((NonNegativeInteger) %))): Improper first word in comments: 
+"\\indented{1}{depth(s) returns the number of elements of stack \\spad{s.}} \\indented{1}{Note that \\axiom{depth(s) = \\#s}.} \\blankline \\spad{X} a:Stack INT:= stack [1,2,3,4,5] \\spad{X} depth a"
+
diff --git a/changelog b/changelog
index 646158d..660da0d 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20130318 rxb src/axiom-website/patches.html 20130318.02.tpd.patch
+20130318 tpd buglist fix typos
+20130318 tpd books/bookvol10.3 fix typos
+20130318 tpd books/bookvol10.2 fix typos
 20130318 rxb src/axiom-website/patches.html 20130318.01.rxb.patch
 20130318 rxb src/algebra/Makefile add MatrixManipulation
 20130318 rxb books/bookvol5 expose MatrixManipulation, add Raoul Bourquin
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index f2149be..1de25b7 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4101,5 +4101,7 @@ books/bookvol10.2 REAL fix 40345
 books/bookvol10.2 fix multiple typos
 <a href="patches/20130318.01.rxb.patch">20130318.01.rxb.patch</a>
 books/bookvol10.4 add MatrixManipulation
+<a href="patches/20130318.02.tpd.patch">20130318.02.tpd.patch</a>
+books/bookvol10.2, bookvol10.3 fix typos
  </body>
 </html>
