diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index b5885a9..ebc9eee 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -53021,6 +53021,117 @@ There are 8 parts of an htPage:
\end{chunk}
+\defun{mkConArgSublis}{mkConArgSublis}
+\calls{mkConArgSublis}{pname}
+\calls{mkConArgSublis}{maxindex}
+\calls{mkConArgSublis}{digitp}
+\calls{mkConArgSublis}{digits2Names}
+\begin{chunk}{defun mkConArgSublis}
+(defun |mkConArgSublis| (args)
+ (loop for arg in args
+ when
+ (and
+ (setq s (pname arg))
+ (some #'identity
+ (loop for i from 0 to (maxindex s)
+ collect (digitp (elt s i)))))
+ collect (cons arg (intern (|digits2Names| (pname arg))))))
+
+\end{chunk}
+
+This is necessary since arguments of conforms CANNOT have
+digits in TechExplorer. Since Saturn is gone we can remove it.
+
+\defun{digits2Names}{digits2Names}
+\calls{digits2Names}{digit-char-p}
+\calls{digits2Names}{concat}
+\begin{chunk}{defun digits2Names}
+(defun |digits2Names| (s)
+ (let (str c n segment)
+ (setq str "")
+ (for i from 0 to (maxindex s) do
+ (setq c (elt s i))
+ (setq segment
+ (cond
+ ((setq n (digit-char-p c))
+ (elt
+ '("Zero" "One" "Two" "Three" "Four" "Five" "Six" "Seven" "Eight" "Nine")
+ n))
+ (t c)))
+ (concat str segment))
+ str))
+
+\end{chunk}
+
+\defun{lefts}{lefts}
+\calls{lefts}{hkeys}
+\uses{lefts}{hascategory-hash}
+\begin{chunk}{defun lefts}
+(defun |lefts| (u)
+ (let (keys)
+ (setq keys (hkeys *hascategory-hash*))
+ (loop for x in keys when (equal (cdr x) u) collect x)))
+
+\end{chunk}
+
+\subsection{Build Library Database (libdb.text,...)}
+
+\defun{dbMkForm}{dbMkForm}
+\begin{chunk}{defun dbMkForm}
+(defun |dbMkForm| (x)
+ (or (and (atom x) (cons x nil)) x))
+
+\end{chunk}
+
+\defun{libConstructorSig}{libConstructorSig}
+\calls{libConstructorSig}{getdatabase}
+\calls{libConstructorSig}{take}
+\calls{libConstructorSig}{length}
+\calls{libConstructorSig}{sublislis}
+\calls{libConstructorSig}{form2LispString}
+\calls{libConstructorSig}{ncParseFromString}
+\calls{libConstructorSig}{sayBrightly}
+\usesdollar{libConstructorSig}{TriangleVariableList}
+\begin{chunk}{defun libConstructorSig}
+(defun |libConstructorSig| (arg)
+ (labels (
+ (fn (x)
+ (cond
+ ((atom x) x)
+ ((and (consp x) (eq (qcar x) '|Join|) (consp (qcdr x)))
+ (list '|Join| (fn (qcadr x)) '|etc|))
+ ((and (consp x) (eq (qcar x) 'category))
+ '|etc|)
+ (t
+ (loop for y in x collect (fn y)))))
+ (g (x u i)
+ "does x appear in any but i-th element of u?"
+ (some #'identity
+ (loop for y in u for j from 1
+ when (not (= i j))
+ collect (contained x y)))))
+ (let (conname argl formals keys sig sigpart)
+ (declare (special |$TriangleVariableList|))
+ (setq conname (car arg))
+ (setq argl (cdr arg))
+ (setq sig (cdar (getdatabase conname 'constructormodemap)))
+ (setq formals (take (|#| argl) |$FormalMapVariableList|))
+ (setq sig (sublislis formals |$TriangleVariableList| sig))
+ (setq keys
+ (loop for f in formals for i from 1
+ collect (g f sig i)))
+ (setq sig
+ (fn (sublislis argl |$FormalMapVariableList| sig)))
+ (setq sig (cons (car sig)
+ (loop for a in argl for s in (cdr sig) for k in keys
+ collect (if k (list #\: a s) s))))
+ (setq sigpart (|form2LispString| (cons '|Mapping| sig)))
+ (unless (|ncParseFromString| sigpart)
+ (|sayBrightly| (list "Won't parse: " sigpart)))
+ sigpart)))
+
+\end{chunk}
+
\chapter{The Interpreter}
\begin{chunk}{Interpreter}
(setq *print-array* nil)
@@ -53635,6 +53746,7 @@ There are 8 parts of an htPage:
\getchunk{defun dbGetDocTable}
\getchunk{defun dbGetDocTable,gn}
\getchunk{defun dbGetDocTable,hn}
+\getchunk{defun dbMkForm}
\getchunk{defun dbNonEmptyPattern}
\getchunk{defun dbSearchOrder}
\getchunk{defun dbSelectCon}
@@ -53678,6 +53790,7 @@ There are 8 parts of an htPage:
\getchunk{defun diffAlist}
\getchunk{defun digit?}
\getchunk{defun digitp}
+\getchunk{defun digits2Names}
\getchunk{defun disableHist}
\getchunk{defun display}
\getchunk{defun displayCondition}
@@ -54056,10 +54169,12 @@ There are 8 parts of an htPage:
\getchunk{defun lastTokPosn}
\getchunk{defun leader?}
\getchunk{defun leaveScratchpad}
+\getchunk{defun lefts}
\getchunk{defun letPrint}
\getchunk{defun letPrint2}
\getchunk{defun letPrint3}
\getchunk{defun lfkey}
+\getchunk{defun libConstructorSig}
\getchunk{defun library}
\getchunk{defun line?}
\getchunk{defun linearFinalRequest}
@@ -54118,6 +54233,7 @@ There are 8 parts of an htPage:
\getchunk{defun messageprint}
\getchunk{defun messageprint-1}
\getchunk{defun messageprint-2}
+\getchunk{defun mkConArgSublis}
\getchunk{defun mkConform}
\getchunk{defun mkCurryFun}
\getchunk{defun mkDomPvar}
diff --git a/changelog b/changelog
index f555171..b312204 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20130625 tpd src/axiom-website/patches.html 20130625.02.tpd.patch
+20130625 tpd src/interp/br-con.lisp move code to bookvol5
+20130625 tpd books/bookvol5 move code from br-con.lisp
20130625 tpd src/axiom-website/patches.html 20130625.01.tpd.patch
20130625 tpd src/sman/Makefile cleanup
20130625 tpd src/share/Makefile cleanup
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 4c5990f..dd04a8d 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4220,6 +4220,8 @@ books/bookvol5 move code from br-con.lisp
books/bookvol5 move code from br-con.lisp
20130625.01.tpd.patch
Makefiles cleanup
+20130625.02.tpd.patch
+books/bookvol5 move code from br-con.lisp