diff --git a/books/bookvol10.2.pamphlet b/books/bookvol10.2.pamphlet
index d205772..bd431b0 100644
--- a/books/bookvol10.2.pamphlet
+++ b/books/bookvol10.2.pamphlet
@@ -3404,6 +3404,102 @@ digraph pic {
\end{chunk}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagehead{Comparable}{COMPAR}
+\pagepic{ps/v102compar.eps}{COMPAR}{1.00}
+
+\begin{chunk}{Comparable.input}
+)set break resume
+)sys rm -f Comparable.output
+)spool Comparable.output
+)set message test on
+)set message auto off
+)clear all
+
+--S 1 of 1
+)show Comparable
+--R Comparable is a category constructor
+--R Abbreviation for Comparable is COMPAR
+--R This constructor is not exposed in this frame.
+--R Issue )edit bookvol10.2.pamphlet to see algebra source code for COMPAR
+--R
+--R------------------------------- Operations --------------------------------
+--R ?=? : (%,%) -> Boolean coerce : % -> OutputForm
+--R hash : % -> SingleInteger latex : % -> String
+--R smaller? : (%,%) -> Boolean ?~=? : (%,%) -> Boolean
+--E 1
+
+)spool
+)lisp (bye)
+\end{chunk}
+\begin{chunk}{Comparable.help}
+====================================================================
+Comparable examples
+====================================================================
+
+See Also:
+o )show Comparable
+
+\end{chunk}
+{\bf See:}
+
+\begin{tabular}{llllll}
+\cross{COMPAR}{?=?} &
+\cross{COMPAR}{coerce} &
+\cross{COMPAR}{hash} &
+\cross{COMPAR}{latex} &
+\cross{COMPAR}{smaller?} &
+\cross{COMPAR}{?\~{}=?}
+\end{tabular}
+
+\begin{chunk}{category COMPAR Comparable}
+)abbrev category COMPAR Comparable
+++ Description:
+++ The class of set equipped with possibly unnatural linear order
+++ (needed for technical reasons).
+Comparable(): Category == SetCategory with
+ --operations
+ smaller?: (%,%) -> Boolean
+ ++ smaller?(x, y) is a strict total ordering on the elements of the set.
+
+\end{chunk}
+\begin{chunk}{COMPAR.dotabb}
+"COMPAR" [color=lightblue,href="bookvol10.2.pdf#nameddest=COMPAR"];
+"COMPAR" -> "SETCAT"
+
+\end{chunk}
+\begin{chunk}{COMPAR.dotfull}
+"Comparable()"
+ [color=lightblue,href="bookvol10.2.pdf#nameddest=COMPAR"];
+"Comparable()" -> "SetCategory()"
+
+\end{chunk}
+\begin{chunk}{COMPAR.dotpic}
+digraph pic {
+ fontsize=10;
+ bgcolor="#ECEA81";
+ node [shape=box, color=white, style=filled];
+
+"Comparable()" [color=lightblue];
+"Comparable()" -> "SetCatgory()"
+
+"SetCategory()" [color=lightblue];
+"SetCategory()" -> "BasicType()"
+"SetCategory()" -> "CoercibleTo(OutputForm)"
+
+"BasicType()" [color=lightblue];
+"BasicType()" -> "Category"
+
+"CoercibleTo(OutputForm)" [color=seagreen];
+"CoercibleTo(OutputForm)" -> "CoercibleTo(a:Type)"
+
+"CoercibleTo(a:Type)" [color=lightblue];
+"CoercibleTo(a:Type)" -> "Category"
+
+"Category" [color=lightblue];
+}
+
+\end{chunk}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pagehead{EltableAggregate}{ELTAGG}
\pagepic{ps/v102eltableaggregate.ps}{ELTAGG}{0.75}
@@ -91830,6 +91926,7 @@ Note that this code is not included in the generated catdef.spad file.
\getchunk{category CLAGG Collection}
\getchunk{category CFCAT CombinatorialFunctionCategory}
\getchunk{category COMBOPC CombinatorialOpsCategory}
+\getchunk{category COMPAR Comparable}
\getchunk{category COMRING CommutativeRing}
\getchunk{category COMPCAT ComplexCategory}
\getchunk{category KONVERT ConvertibleTo}
@@ -92074,6 +92171,7 @@ digraph dotabb {
\getchunk{CHARZ.dotabb}
\getchunk{CLAGG.dotabb}
\getchunk{COMBOPC.dotabb}
+\getchunk{COMPAR.dotabb}
\getchunk{COMPCAT.dotabb}
\getchunk{COMRING.dotabb}
\getchunk{DIAGG.dotabb}
@@ -92300,6 +92398,7 @@ digraph dotfull {
\getchunk{CHARZ.dotfull}
\getchunk{CLAGG.dotfull}
\getchunk{COMBOPC.dotfull}
+\getchunk{COMPAR.dotfull}
\getchunk{COMPCAT.dotfull}
\getchunk{COMRING.dotfull}
\getchunk{DIAGG.dotfull}
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index c00ca25..f25338b 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -24831,6 +24831,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed.
(|CombinatorialFunctionCategory| . CFCAT)
(|CombinatorialOpsCategory| . COMBOPC)
(|CommutativeRing| . COMRING)
+ (|Comparable| . COMPAR)
(|ComplexCategory| . COMPCAT)
(|ConvertibleTo| . KONVERT)
(|DequeueAggregate| . DQAGG)
diff --git a/books/ps/v102compar.eps b/books/ps/v102compar.eps
new file mode 100644
index 0000000..413252c
--- /dev/null
+++ b/books/ps/v102compar.eps
@@ -0,0 +1,273 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: graphviz version 2.26.3 (20100126.1600)
+%%Title: pic
+%%Pages: 1
+%%BoundingBox: 36 36 120 152
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+ dup dup findfont dup length dict begin
+ { 1 index /FID ne { def }{ pop pop } ifelse
+ } forall
+ /Encoding EncodingVector def
+ currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+ dup 1 exch div /InvScaleFactor exch def
+ scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage { % i j npages
+ /npages exch def
+ /j exch def
+ /i exch def
+ /str 10 string def
+ npages 1 gt {
+ gsave
+ coordfont setfont
+ 0 0 moveto
+ (\() show i str cvs show (,) show j str cvs show (\)) show
+ grestore
+ } if
+} bind def
+
+/set_font {
+ findfont exch
+ scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext { % width text
+ /text exch def
+ /width exch def
+ gsave
+ width 0 gt {
+ [] 0 setdash
+ text stringwidth pop width exch sub text length div 0 text ashow
+ } if
+ grestore
+} def
+
+/boxprim { % xcorner ycorner xsize ysize
+ 4 2 roll
+ moveto
+ 2 copy
+ exch 0 rlineto
+ 0 exch rlineto
+ pop neg 0 rlineto
+ closepath
+} bind def
+
+/ellipse_path {
+ /ry exch def
+ /rx exch def
+ /y exch def
+ /x exch def
+ matrix currentmatrix
+ newpath
+ x y translate
+ rx ry scale
+ 0 0 1 0 360 arc
+ setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+ [ % layer color sequence - darkest to lightest
+ [0 0 0]
+ [.2 .8 .8]
+ [.4 .8 .8]
+ [.6 .8 .8]
+ [.8 .8 .8]
+ ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+ layercolorseq curlayer 1 sub layerlen mod get
+ aload pop sethsbcolor
+ /nodecolor {nopcolor} def
+ /edgecolor {nopcolor} def
+ /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+ /myupper exch def
+ /mylower exch def
+ curlayer mylower lt
+ curlayer myupper gt
+ or
+ {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+ userdict (<<) cvn ([) cvn load put
+ userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 36 36 120 152
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+36 36 84 116 boxprim clip newpath
+1 1 set_scale 0 rotate 40 41 translate
+0.16355 0.45339 0.92549 graphcolor
+newpath -4 -5 moveto
+-4 112 lineto
+81 112 lineto
+81 -5 lineto
+closepath fill
+1 setlinewidth
+0.16355 0.45339 0.92549 graphcolor
+newpath -4 -5 moveto
+-4 112 lineto
+81 112 lineto
+81 -5 lineto
+closepath stroke
+% COMPAR
+gsave
+[ /Rect [ 0 72 76 108 ]
+ /Border [ 0 0 0 ]
+ /Action << /Subtype /URI /URI (bookvol10.2.pdf#nameddest=COMPAR) >>
+ /Subtype /Link
+/ANN pdfmark
+0.53725 0.24706 0.90196 nodecolor
+newpath 76 108 moveto
+0 108 lineto
+0 72 lineto
+76 72 lineto
+closepath fill
+1 setlinewidth
+filled
+0.53725 0.24706 0.90196 nodecolor
+newpath 76 108 moveto
+0 108 lineto
+0 72 lineto
+76 72 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+7.5 86.4 moveto 61 (COMPAR) alignedtext
+grestore
+% SETCAT
+gsave
+0 0 1 nodecolor
+newpath 73 36 moveto
+3 36 lineto
+3 0 lineto
+73 0 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 1 nodecolor
+newpath 73 36 moveto
+3 36 lineto
+3 0 lineto
+73 0 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /Times-Roman set_font
+10.5 14.4 moveto 55 (SETCAT) alignedtext
+grestore
+% COMPAR->SETCAT
+gsave
+1 setlinewidth
+0 0 0 edgecolor
+newpath 38 71.83 moveto
+38 64.13 38 54.97 38 46.42 curveto
+stroke
+0 0 0 edgecolor
+newpath 41.5 46.41 moveto
+38 36.41 lineto
+34.5 46.41 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 41.5 46.41 moveto
+38 36.41 lineto
+34.5 46.41 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/changelog b/changelog
index bddbac9..5bc6f8a 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,8 @@
+20130423 tpd src/axiom-website/patches.html 20130423.01.tpd.patch
+20130423 tpd books/ps/v102compar.eps add Comparable
+20130423 tpd src/algebra/Makefile add Comparable
+20130423 tpd books/bookvol5 add Comparable
+20130423 tpd books/bookvol10.2 add Comparable
20130422 tpd src/axiom-website/patches.html 20130422.01.tpd.patch
20130422 tpd src/share/algebra/users.daase/users.daase/index.kaf FINITE
20130422 tpd src/share/algebra/operation.daase add enumerate to FINITE
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
index 4b628e5..e348280 100644
--- a/src/algebra/Makefile.pamphlet
+++ b/src/algebra/Makefile.pamphlet
@@ -698,7 +698,8 @@ MONAD ORDSET PATMAB RETRACT RMODULE SGROUP
LAYER1=\
${OUT}/AGG.o ${OUT}/AGG-.o ${OUT}/ANON.o ${OUT}/ANY1.o \
${OUT}/BLMETCT.o \
- ${OUT}/COLOR.o ${OUT}/COMBOPC.o ${OUT}/COMM.o ${OUT}/COMPPROP.o \
+ ${OUT}/COLOR.o ${OUT}/COMBOPC.o ${OUT}/COMM.o ${OUT}/COMPAR.o \
+ ${OUT}/COMPPROP.o \
${OUT}/DROPT1.o ${OUT}/ELTAGG.o ${OUT}/ELTAGG-.o ${OUT}/EQ2.o \
${OUT}/EXIT.o ${OUT}/FILECAT.o ${OUT}/FINITE.o ${OUT}/FINITE-.o \
${OUT}/FNCAT.o \
@@ -773,6 +774,10 @@ LAYER1=\
"COMM" -> "BASTYPE/KOERCE"
/*"COMM" -> {"KOERCE"; "BOOLEAN"}*/
+"COMPAR" [color="#4488FF",href="bookvol10.2.pdf#nameddest=COMPAR"]
+/*"COMPAR" -> "SETCAT"*/
+"COMPAR" -> "BASTYPE/KOERCE"
+
"COMPPROP" [color="#88FF44",href="bookvol10.3.pdf#nameddest=COMPPROP"]
/*"COMPPROP" -> "SETCAT"*/
"COMPPROP" -> "BASTYPE/KOERCE"
@@ -17931,6 +17936,7 @@ REGRESS= \
CommutativeRing.regress \
Commutator.regress \
CommuteUnivariatePolynomialCategory.regress \
+ Comparable.regress \
Complex.regress \
ComplexCategory.regress \
ComplexDoubleFloatMatrix.regress \
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 16d73fb..af7efab 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4141,5 +4141,7 @@ src/axiom-website/documentation.html add quote
books/bookvol0 fix Jenks book format issues
20130422.01.tpd.patch
books/bookvol10.2 add enumerate to FINITE
+20130423.01.tpd.patch
+books/bookvol10.2 add Comparable