diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 5a2c1b7..4055e41 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -50424,7 +50424,7 @@ Given \verb|("one" "two" "three")| generate \verb|"(one,two,three)"|
 \end{chunk}
 
 \chapter{Browser Support Code}
-
+\section{Pages Initiated from HyperDoc Pages}
 \defun{conPage}{conPage}
 \calls{conPage}{form2HtString}
 \calls{conPage}{downcase}
@@ -50742,6 +50742,8 @@ There are 8 parts of an htPage:
 \item comments
 \end{enumerate}
 
+\section{Branches of Constructor Page}
+
 \defun{kiPage}{kiPage}
 \calls{kiPage}{htpProperty}
 \calls{kiPage}{mkConform}
@@ -51771,6 +51773,8 @@ There are 8 parts of an htPage:
 
 \end{chunk}
 
+\section{Operation Page for a Domain Form from Scratch}
+
 \defun{conOpPage}{conOpPage}
 \calls{conOpPage}{dbCompositeWithMap}
 \calls{conOpPage}{htpProperty}
@@ -51890,6 +51894,8 @@ There are 8 parts of an htPage:
 
 \end{chunk}
 
+\section{Operation Page from Main Page}
+
 \defun{koPage}{koPage}
 \calls{koPage}{htpProperty}
 \calls{koPage}{concat}
@@ -52008,6 +52014,8 @@ There are 8 parts of an htPage:
 
 \end{chunk}
 
+\section{Get Constructor Documentation}
+
 \defun{dbConstructorDoc,hn}{dbConstructorDoc,hn}
 \calls{dbConstructorDoc,hn}{length}
 \calls{dbConstructorDoc,hn}{sublislis}
@@ -52022,6 +52030,261 @@ There are 8 parts of an htPage:
 
 \end{chunk}
 
+\defun{dbConstructorDoc,gn}{dbConstructorDoc,gn}
+\calls{dbConstructorDoc,gn}{dbConstructorDoc,hn}
+\usesdollar{dbConstructorDoc,gn}{op}
+\begin{chunk}{defun dbConstructorDoc,gn}
+(defun |dbConstructorDoc,gn| (arg)
+ (let (op alist sig doc)
+ (declare (special |$op|))
+  (setq op (car arg))
+  (setq alist (cdr arg))
+  (and |$op| 
+   (some #'identity 
+    (loop for item in alist when (|dbConstructorDoc,hn| (car item))
+     collect (or (cdr item) '("")))))))
+
+\end{chunk}
+
+\defun{dbConstructorDoc}{dbConstructorDoc}
+\calls{dbConstructorDoc}{dbConstructorDoc,fn}
+\usesdollar{dbConstructorDoc}{sig}
+\usesdollar{dbConstructorDoc}{op}
+\begin{chunk}{defun dbConstructorDoc}
+(defun |dbConstructorDoc| (conform |$op| |$sig|)
+  (declare (special |$op| |$sig|))
+  (|dbConstructorDoc,fn| conform))
+
+\end{chunk}
+
+\defun{dbDocTable}{dbDocTable}
+\calls{dbDocTable}{hget}
+\calls{dbDocTable}{make-hashtable}
+\calls{dbDocTable}{originsInOrder}
+\calls{dbDocTable}{dbAddDocTable}
+\usesdollar{dbDocTable}{docTable}
+\usesdollar{dbDocTable}{docTableHash}
+\begin{chunk}{defun dbDocTable}
+(defun |dbDocTable| (conform)
+ (let (|$docTable| table)
+ (declare (special |$docTable| |$docTableHash|))
+  (cond
+   ((setq table (hget |$docTableHash| conform))
+    table)
+   (t
+    (setq |$docTable| (make-hashtable 'id))
+    (loop for x in (|originsInOrder| conform) do (|dbAddDocTable| x))
+    (|dbAddDocTable| conform)
+    (hput |$docTableHash| conform |$docTable|)
+    |$docTable|))))
+
+\end{chunk}
+
+\defun{originsInOrder}{originsInOrder}
+\calls{originsInOrder}{getdatabase}
+\calls{originsInOrder}{assocleft}
+\calls{originsInOrder}{ancestorsOf}
+\calls{originsInOrder}{parentsOf}
+\calls{originsInOrder}{originsInOrder}
+\calls{originsInOrder}{insert}
+\begin{chunk}{defun originsInOrder}
+(defun |originsInOrder| (conform)
+ (let (con argl acc)
+  (setq con (car conform))
+  (setq argl (cdr conform))
+  (cond
+   ((eq (getdatabase con 'constructorkind) '|category|)
+     (assocleft (|ancestorsOf| conform nil)))
+   (t 
+     (setq acc (assocleft (|parentsOf| con)))
+     (loop for x in acc do
+       (loop for y in (|originsInOrder| x) do
+        (setq acc (|insert| y acc))))
+     acc))))
+
+\end{chunk}
+
+\defun{dbAddDocTable}{dbAddDocTable}
+\calls{dbAddDocTable}{opOf}
+\calls{dbAddDocTable}{getConstructorForm}
+\calls{dbAddDocTable}{sublislis}
+\calls{dbAddDocTable}{getdatabase}
+\calls{dbAddDocTable}{hput}
+\calls{dbAddDocTable}{hget}
+\usesdollar{dbAddDocTable}{docTable}
+\begin{chunk}{defun dbAddDocTable}
+(defun |dbAddDocTable| (conform)
+ (let (conname storedArgs op alist op1 sig doc tmp)
+ (declare (special |$docTable|))
+  (setq conname (|opOf| conform))
+  (setq storedArgs (cdr (|getConstructorForm| conname)))
+  (setq tmp (sublislis (cons '$ (cdr conform)) (cons '% storedArgs)
+                       (getdatabase (|opOf| conform) 'documentation)))
+  (loop for item in tmp do
+   (setq op (car item))
+   (setq alist (cdr item))
+   (setq op1
+    (cond
+     ((eq op '(|Zero|)) 0)
+     ((eq op '(|One|)) 1)
+     (t op)))
+   (loop for item1 in alist do
+    (setq sig (first item1))
+    (setq doc (second item1))
+    (hput |$docTable| op1 (cons (cons conform alist)
+                                (hget |$docTable| op1)))))))
+
+\end{chunk}
+
+\defun{dbGetDocTable,hn}{dbGetDocTable,hn}
+\calls{dbGetDocTable,hn}{sublislis}
+\calls{dbGetDocTable,hn}{kdr}
+\calls{dbGetDocTable,hn}{qcdr}
+\calls{dbGetDocTable,hn}{qcar}
+\usesdollar{dbGetDocTable,hn}{which}
+\usesdollar{dbGetDocTable,hn}{conform}
+\usesdollar{dbGetDocTable,hn}{sig}
+\usesdollar{dbGetDocTable,hn}{FormalMapVariableList}
+\begin{chunk}{defun dbGetDocTable,hn}
+(defun |dbGetDocTable,hn| (arg)
+ (let (sig doc alteredSig pred r)
+ (declare (special |$which| |$conform| |$sig| |$FormalMapVariableList|))
+  (setq sig (car arg))
+  (setq doc (cdr arg))
+  (if (string= |$which| "attribute")
+   (and (consp sig) (eq (qcar sig) '|attribute|) (equal (qcdr sig) |$sig|)
+        doc)
+   (progn
+    (setq pred 
+     (and 
+      (eql (|#| |$sig|) (|#| sig))
+      (setq alteredSig 
+       (sublislis (kdr |$conform|) |$FormalMapVariableList| sig))
+      (equal alteredSig |$sig|)))
+    (when (and pred doc
+           (and (consp doc) (eq (qcar doc) '|constant|)) (qcdr doc) doc)
+      '(""))))))
+
+\end{chunk}
+
+\defun{dbGetDocTable,gn}{dbGetDocTable,gn}
+\calls{dbGetDocTable,gn}{lastatom}
+\calls{dbGetDocTable,gn}{dbGetDocTable,hn}
+\usesdollar{dbGetDocTable,gn}{conform}
+\begin{chunk}{defun dbGetDocTable,gn}
+(defun |dbGetDocTable,gn| (u)
+ (let (code p comments)
+ (declare (special |$conform|))
+  (setq |$conform| (car u))
+  (when (atom |$conform|) (setq |$conform| (list |$conform|)))
+  (setq code (lastatom u))
+  (setq comments
+   (some #'identity
+    (loop for entry in (cdr u) 
+          when (setq p (|dbGetDocTable,hn| entry))
+          collect p)))
+  (when comments (cons |$conform| (cons (car comments) code)))))
+
+\end{chunk}
+
+\defun{dbGetDocTable}{dbGetDocTable}
+\calls{dbGetDocTable}{stringimage}
+\calls{dbGetDocTable}{string2Integer}
+\calls{dbGetDocTable}{dbConstructorDoc}
+\calls{dbGetDocTable}{qcdr}
+\calls{dbGetDocTable}{hget}
+\calls{dbGetDocTable}{dbGetDocTable,gn}
+\usesdollar{dbGetDocTable}{sig}
+\usesdollar{dbGetDocTable}{which}
+\usesdollar{dbGetDocTable}{conform}
+\usesdollar{dbGetDocTable}{op}
+\begin{chunk}{defun dbGetDocTable}
+(defun |dbGetDocTable| (op |$sig| docTable |$which| aux)
+ (declare (special |$sig| |$which|))
+ (let (doc origin)
+ (declare (special |$conform| |$op|))
+  (when (and (null (integerp op)) (digitp (elt (setq s (stringimage op)) 0)))
+   (setq op (|string2Integer| s)))
+  (cond
+   ((and (consp aux) (consp (qcar aux)))
+     (setq doc (|dbConstructorDoc| (car aux) |$op| |$sig|))
+     (setq origin (if (qcdr aux) (cons '|ifp| aux) (car aux)))
+     (cons origin doc))
+   (t
+    (some #'identity 
+     (loop for x in (hget docTable op) 
+      collect (|dbGetDocTable,gn| x)))))))
+
+\end{chunk}
+
+\defun{kTestPred}{kTestPred}
+\calls{kTestPred}{testBitVector}
+\calls{kTestPred}{simpHasPred}
+\usesdollar{kTestPred}{predvec}
+\usesdollar{kTestPred}{domain}
+\begin{chunk}{defun kTestPred}
+(defun |kTestPred| (n)
+ (declare (special |$predvec| |$domain|))
+ (cond
+   ((eql n 0) t)
+   (|$domain| (|testBitVector| |$predvec| n))
+   (t (|simpHasPred| (elt |$predvec| (1- n))))))
+
+\end{chunk}
+
+\defun{dbAddChainDomain}{dbAddChainDomain}
+\calls{dbAddChainDomain}{dbInfovec}
+\calls{dbAddChainDomain}{dbSubConform}
+\calls{dbAddChainDomain}{kFormatSlotDomain}
+\calls{dbAddChainDomain}{devaluate}
+\usesdollar{dbAddChainDomain}{infovec}
+\begin{chunk}{defun dbAddChainDomain}
+(defun |dbAddChainDomain| (conform)
+ (let (name args template form)
+ (declare (special |$infovec|))
+  (setq name (car conform))
+  (setq args (cdr conform))
+  (setq |$infovec| (|dbInfovec| name))
+  (when |$infovec|
+   (setq template (elt |$infovec| 0))
+   (when (setq form (elt template 5))
+    (|dbSubConform| args (|kFormatSlotDomain| (|devaluate| form)))))))
+
+\end{chunk}
+
+\defun{dbSubConform}{dbSubConform}
+\calls{dbSubConform}{position}
+\calls{dbSubConform}{dbSubConform}
+\usesdollar{dbSubConform}{FormalMapVariableList}
+\begin{chunk}{defun dbSubConform}
+(defun |dbSubConform| (args u)
+ (let (n y)
+ (declare (special |$FormalMapVariableList|))
+  (cond
+   ((atom u)
+     (if (>= (setq n (|position| u |$FormalMapVariableList|)) 0)
+       (elt args n)
+       u))
+   ((and (consp u) (eq (car u) '|local|) (consp (cdr u)) (eq (cddr u) nil))
+     (setq y (cadr u))
+     (|dbSubConform| args y))
+   (t
+    (loop for x in u collect (|dbSubConform| args x))))))
+
+\end{chunk}
+
+\defun{dbAddChain}{dbAddChain}
+\calls{dbAddChain}{dbAddChainDomain}
+\calls{dbAddChain}{dbAddChain}
+\begin{chunk}{defun dbAddChain}
+(defun |dbAddChain| (conform)
+ (let (u)
+  (when (setq u (|dbAddChainDomain| conform))
+   (unless (atom u)
+    (cons (cons u t) (|dbAddChain| u))))))
+
+\end{chunk}
+
 \chapter{The Interpreter}
 \begin{chunk}{Interpreter}
 (setq *print-array* nil)
@@ -52620,11 +52883,21 @@ There are 8 parts of an htPage:
 \getchunk{defun countCache}
 
 \getchunk{defun DaaseName}
+\getchunk{defun dbAddChain}
+\getchunk{defun dbAddChainDomain}
+\getchunk{defun dbAddDocTable}
 \getchunk{defun dbCompositeWithMap}
+\getchunk{defun dbConstructorDoc}
 \getchunk{defun dbConstructorDoc,hn}
+\getchunk{defun dbConstructorDoc,gn}
+\getchunk{defun dbDocTable}
 \getchunk{defun dbExtractUnderlyingDomain}
+\getchunk{defun dbGetDocTable}
+\getchunk{defun dbGetDocTable,gn}
+\getchunk{defun dbGetDocTable,hn}
 \getchunk{defun dbNonEmptyPattern}
 \getchunk{defun dbSearchOrder}
+\getchunk{defun dbSubConform}
 \getchunk{defun decideHowMuch}
 \getchunk{defun defaultTargetFE}
 \getchunk{defun defiostream}
@@ -53024,6 +53297,7 @@ There are 8 parts of an htPage:
 \getchunk{defun koPageInputAreaUnchanged?}
 \getchunk{defun ksPage}
 \getchunk{defun kcuPage}
+\getchunk{defun kTestPred}
 
 \getchunk{defun lassocSub}
 \getchunk{defun lastTokPosn}
@@ -53390,6 +53664,7 @@ There are 8 parts of an htPage:
 \getchunk{defun optionError}
 \getchunk{defun optionUserLevelError}
 \getchunk{defun orderBySlotNumber}
+\getchunk{defun originsInOrder}
 
 \getchunk{defun parseAndEval}
 \getchunk{defun parseAndEval1}
diff --git a/changelog b/changelog
index b5fbe06..2470b64 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20130618 tpd src/axiom-website/patches.html 20130618.01.tpd.patch
+20130618 tpd src/interp/br-con.lisp move code to bookvol5
+20130618 tpd books/bookvol5 move code from br-con.lisp
 20130613 tpd src/axiom-website/patches.html 20130613.02.tpd.patch
 20130613 tpd src/interp/br-con.lisp move code to bookvol5
 20130613 tpd books/bookvol5 move code from br-con.lisp
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 7933b09..b1c4321 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4210,6 +4210,8 @@ books/bookvol8.1 add crc test section 2.5, 2.6, 2.7
 books/bookvol8.1 add crc test section 2.8, 2.9
 <a href="patches/20130613.02.tpd.patch">20130613.02.tpd.patch</a>
 books/bookvol5 move code from br-con.lisp
+<a href="patches/20130618.01.tpd.patch">20130618.01.tpd.patch</a>
+books/bookvol5 move code from br-con.lisp
  </body>
 </html>
 
diff --git a/src/interp/br-con.lisp.pamphlet b/src/interp/br-con.lisp.pamphlet
index 1c1bf04..995f5c0 100644
--- a/src/interp/br-con.lisp.pamphlet
+++ b/src/interp/br-con.lisp.pamphlet
@@ -13,428 +13,6 @@
 (IN-PACKAGE "BOOT" )
 
 ;--=======================================================================
-;--                  Get Constructor Documentation
-;--=======================================================================
-;dbConstructorDoc(conform,$op,$sig) == fn conform where
-;  fn (conform := [conname,:$args]) ==
-;    or/[gn y for y in GETDATABASE(conname,'DOCUMENTATION)]
-;  gn([op,:alist]) ==
-;    op = $op and or/[doc or '("") for [sig,:doc] in alist | hn sig]
-;  hn sig ==
-;    #$sig = #sig and $sig = SUBLISLIS($args,$FormalMapVariableList,sig)
-
-(DEFUN |dbConstructorDoc,gn| (G167206)
-  (PROG (|op| |alist| |sig| |doc|)
-  (declare (special |$op|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |op| (CAR G167206))
-             (SPADLET |alist| (CDR G167206))
-             G167206
-             (AND (BOOT-EQUAL |op| |$op|)
-                  (PROG (G167218)
-                    (SPADLET G167218 NIL)
-                    (RETURN
-                      (DO ((G167226 NIL G167218)
-                           (G167227 |alist| (CDR G167227))
-                           (G167199 NIL))
-                          ((OR G167226 (ATOM G167227)
-                               (PROGN
-                                 (SETQ G167199 (CAR G167227))
-                                 NIL)
-                               (PROGN
-                                 (PROGN
-                                   (SPADLET |sig| (CAR G167199))
-                                   (SPADLET |doc| (CDR G167199))
-                                   G167199)
-                                 NIL))
-                           G167218)
-                        (SEQ (EXIT (COND
-                                     ((|dbConstructorDoc,hn| |sig|)
-                                      (SETQ G167218
-                                       (OR G167218 (OR |doc| '(""))
-                                                               )))))))))))))))
-
-(DEFUN |dbConstructorDoc,fn| (|conform|)
-  (PROG (|conname|)
-  (declare (special |$args|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |conname| (CAR |conform|))
-             (SPADLET |$args| (CDR |conform|))
-             |conform|
-             (PROG (G167251)
-               (SPADLET G167251 NIL)
-               (RETURN
-                 (DO ((G167257 NIL G167251)
-                      (G167258 (GETDATABASE |conname| 'DOCUMENTATION)
-                          (CDR G167258))
-                      (|y| NIL))
-                     ((OR G167257 (ATOM G167258)
-                          (PROGN (SETQ |y| (CAR G167258)) NIL))
-                      G167251)
-                   (SEQ (EXIT (SETQ G167251
-                                    (OR G167251
-                                     (|dbConstructorDoc,gn| |y|)))))))))))))
-
-(DEFUN |dbConstructorDoc| (|conform| |$op| |$sig|)
-  (DECLARE (SPECIAL |$op| |$sig|))
-  (|dbConstructorDoc,fn| |conform|))
-
-;dbDocTable conform ==
-;--assumes $docTableHash bound --see dbExpandOpAlistIfNecessary
-;  table := HGET($docTableHash,conform) => table
-;  $docTable : local := MAKE_-HASHTABLE 'ID
-;  --process in reverse order so that closest cover up farthest
-;  for x in originsInOrder conform repeat dbAddDocTable x
-;  dbAddDocTable conform
-;  HPUT($docTableHash,conform,$docTable)
-;  $docTable
-
-(DEFUN |dbDocTable| (|conform|)
-  (PROG (|$docTable| |table|)
-    (DECLARE (SPECIAL |$docTable| |$docTableHash|))
-    (RETURN
-      (SEQ (COND
-             ((SPADLET |table| (HGET |$docTableHash| |conform|))
-              |table|)
-             ('T (SPADLET |$docTable| (MAKE-HASHTABLE 'ID))
-              (DO ((G167280 (|originsInOrder| |conform|)
-                       (CDR G167280))
-                   (|x| NIL))
-                  ((OR (ATOM G167280)
-                       (PROGN (SETQ |x| (CAR G167280)) NIL))
-                   NIL)
-                (SEQ (EXIT (|dbAddDocTable| |x|))))
-              (|dbAddDocTable| |conform|)
-              (HPUT |$docTableHash| |conform| |$docTable|) |$docTable|))))))
-
-;originsInOrder conform ==  --domain = nil or set to live domain
-;--from dcCats
-;  [con,:argl] := conform
-;  GETDATABASE(con,'CONSTRUCTORKIND) = 'category =>
-;      ASSOCLEFT ancestorsOf(conform,nil)
-;  acc := ASSOCLEFT parentsOf con
-;  for x in acc repeat
-;    for y in originsInOrder x repeat acc := insert(y,acc)
-;  acc
-
-(DEFUN |originsInOrder| (|conform|)
-  (PROG (|con| |argl| |acc|)
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |con| (CAR |conform|))
-             (SPADLET |argl| (CDR |conform|))
-             (COND
-               ((BOOT-EQUAL (GETDATABASE |con| 'CONSTRUCTORKIND)
-                    '|category|)
-                (ASSOCLEFT (|ancestorsOf| |conform| NIL)))
-               ('T (SPADLET |acc| (ASSOCLEFT (|parentsOf| |con|)))
-                (DO ((G167300 |acc| (CDR G167300)) (|x| NIL))
-                    ((OR (ATOM G167300)
-                         (PROGN (SETQ |x| (CAR G167300)) NIL))
-                     NIL)
-                  (SEQ (EXIT (DO ((G167309 (|originsInOrder| |x|)
-                                      (CDR G167309))
-                                  (|y| NIL))
-                                 ((OR (ATOM G167309)
-                                      (PROGN
-                                        (SETQ |y| (CAR G167309))
-                                        NIL))
-                                  NIL)
-                               (SEQ (EXIT
-                                     (SPADLET |acc|
-                                      (|insert| |y| |acc|))))))))
-                |acc|)))))))
-
-;dbAddDocTable conform ==
-;  conname := opOf conform
-;  storedArgs := rest getConstructorForm conname
-;  for [op,:alist] in SUBLISLIS(["$",:rest conform],
-;    ["%",:storedArgs],GETDATABASE(opOf conform,'DOCUMENTATION))
-;      repeat
-;       op1 :=
-;         op = '(Zero) => 0
-;         op = '(One) => 1
-;         op
-;       for [sig,doc] in alist repeat
-;         HPUT($docTable,op1,[[conform,:alist],:HGET($docTable,op1)])
-
-(DEFUN |dbAddDocTable| (|conform|)
-  (PROG (|conname| |storedArgs| |op| |alist| |op1| |sig| |doc|)
-  (declare (special |$docTable|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |conname| (|opOf| |conform|))
-             (SPADLET |storedArgs|
-                      (CDR (|getConstructorForm| |conname|)))
-             (DO ((G167342
-                      (SUBLISLIS (CONS '$ (CDR |conform|))
-                          (CONS '% |storedArgs|)
-                          (GETDATABASE (|opOf| |conform|)
-                              'DOCUMENTATION))
-                      (CDR G167342))
-                  (G167328 NIL))
-                 ((OR (ATOM G167342)
-                      (PROGN (SETQ G167328 (CAR G167342)) NIL)
-                      (PROGN
-                        (PROGN
-                          (SPADLET |op| (CAR G167328))
-                          (SPADLET |alist| (CDR G167328))
-                          G167328)
-                        NIL))
-                  NIL)
-               (SEQ (EXIT (PROGN
-                            (SPADLET |op1|
-                                     (COND
-                                       ((BOOT-EQUAL |op| '(|Zero|)) 0)
-                                       ((BOOT-EQUAL |op| '(|One|)) 1)
-                                       ('T |op|)))
-                            (DO ((G167353 |alist| (CDR G167353))
-                                 (G167323 NIL))
-                                ((OR (ATOM G167353)
-                                     (PROGN
-                                       (SETQ G167323 (CAR G167353))
-                                       NIL)
-                                     (PROGN
-                                       (PROGN
-                                         (SPADLET |sig|
-                                          (CAR G167323))
-                                         (SPADLET |doc|
-                                          (CADR G167323))
-                                         G167323)
-                                       NIL))
-                                 NIL)
-                              (SEQ (EXIT
-                                    (HPUT |$docTable| |op1|
-                                     (CONS (CONS |conform| |alist|)
-                                      (HGET |$docTable| |op1|)))))))))))))))
-
-;    --note opOf is needed!!! for some reason, One and Zero appear within prens
-;dbGetDocTable(op,$sig,docTable,$which,aux) == main where
-;--docTable is [[origin,entry1,...,:code] ...] where
-;--  each entry is [sig,doc] and code is NIL or else a topic code for op
-;  main ==
-;    if null FIXP op and
-;      DIGITP (s := STRINGIMAGE op).0 then op := string2Integer s
-;    -- the above hack should be removed after 3/94 when 0 is not |0|
-;    aux is [[packageName,:.],:pred] =>
-;      doc := dbConstructorDoc(first aux,$op,$sig)
-;      origin :=
-;        pred => ['ifp,:aux]
-;        first aux
-;      [origin,:doc]
-;    or/[gn x for x in HGET(docTable,op)]
-;  gn u ==  --u is [origin,entry1,...,:code]
-;    $conform := CAR u              --origin
-;    if ATOM $conform then $conform := [$conform]
-;    code     := LASTATOM u         --optional topic code
-;    comments := or/[p for entry in CDR u | p := hn entry] or return nil
-;    [$conform,first comments,:code]
-;  hn [sig,:doc] ==
-;    $which = '"attribute" => sig is ['attribute,: =$sig] and doc
-;    pred := #$sig = #sig and
-;      alteredSig := SUBLISLIS(KDR $conform,$FormalMapVariableList,sig)
-;      alteredSig = $sig
-;    pred =>
-;      doc =>
-;        doc is ['constant,:r] => r
-;        doc
-;      '("")
-;    false
-
-(DEFUN |dbGetDocTable,hn| (G167382)
-  (PROG (|sig| |doc| |alteredSig| |pred| |r|)
-  (declare (special |$which| |$conform| |$sig| |$FormalMapVariableList|))
-    (RETURN
-      (SEQ (PROGN
-             (SPADLET |sig| (CAR G167382))
-             (SPADLET |doc| (CDR G167382))
-             G167382
-             (SEQ (IF (BOOT-EQUAL |$which| "attribute")
-                      (EXIT (AND (AND (CONSP |sig|)
-                                      (EQ (QCAR |sig|) '|attribute|)
-                                      (EQUAL (QCDR |sig|) |$sig|))
-                                 |doc|)))
-                  (SPADLET |pred|
-                           (AND (BOOT-EQUAL (|#| |$sig|) (|#| |sig|))
-                                (SEQ (SPADLET |alteredSig|
-                                      (SUBLISLIS (KDR |$conform|)
-                                       |$FormalMapVariableList| |sig|))
-                                     (EXIT
-                                      (BOOT-EQUAL |alteredSig| |$sig|)))))
-                  (IF |pred|
-                      (EXIT (SEQ (IF |doc|
-                                     (EXIT
-                                      (SEQ
-                                       (IF
-                                        (AND (CONSP |doc|)
-                                         (EQ (QCAR |doc|) '|constant|)
-                                         (PROGN
-                                           (SPADLET |r| (QCDR |doc|))
-                                           'T))
-                                        (EXIT |r|))
-                                       (EXIT |doc|))))
-                                 (EXIT '("")))))
-                  (EXIT NIL)))))))
-
-(DEFUN |dbGetDocTable,gn| (|u|)
-  (PROG (|code| |p| |comments|)
-  (declare (special |$conform|))
-    (RETURN
-      (SEQ (SPADLET |$conform| (CAR |u|))
-           (IF (ATOM |$conform|)
-               (SPADLET |$conform| (CONS |$conform| NIL)) NIL)
-           (SPADLET |code| (LASTATOM |u|))
-           (SPADLET |comments|
-                    (OR (PROG (G167401)
-                          (SPADLET G167401 NIL)
-                          (RETURN
-                            (DO ((G167408 NIL G167401)
-                                 (G167409 (CDR |u|) (CDR G167409))
-                                 (|entry| NIL))
-                                ((OR G167408 (ATOM G167409)
-                                     (PROGN
-                                       (SETQ |entry| (CAR G167409))
-                                       NIL))
-                                 G167401)
-                              (SEQ (EXIT
-                                    (COND
-                                      ((SPADLET |p|
-                                        (|dbGetDocTable,hn| |entry|))
-                                       (SETQ G167401
-                                        (OR G167401 |p|)))))))))
-                        (RETURN NIL)))
-           (EXIT (CONS |$conform| (CONS (CAR |comments|) |code|)))))))
-
-(DEFUN |dbGetDocTable| (|op| |$sig| |docTable| |$which| |aux|)
-  (DECLARE (SPECIAL |$sig| |$which|))
-  (PROG (|s| |ISTMP#1| |packageName| |pred| |doc| |origin|)
-  (declare (special |$conform| |$op|))
-    (RETURN
-      (SEQ (PROGN
-             (COND
-               ((AND (NULL (integerp |op|))
-                     (DIGITP (ELT (SPADLET |s| (STRINGIMAGE |op|)) 0)))
-                (SPADLET |op| (|string2Integer| |s|))))
-             (COND
-               ((AND (CONSP |aux|)
-                     (PROGN
-                       (SPADLET |ISTMP#1| (QCAR |aux|))
-                       (AND (CONSP |ISTMP#1|)
-                            (PROGN
-                              (SPADLET |packageName| (QCAR |ISTMP#1|))
-                              'T)))
-                     (PROGN (SPADLET |pred| (QCDR |aux|)) 'T))
-                (SPADLET |doc|
-                         (|dbConstructorDoc| (CAR |aux|) |$op| |$sig|))
-                (SPADLET |origin|
-                         (COND
-                           (|pred| (CONS '|ifp| |aux|))
-                           ('T (CAR |aux|))))
-                (CONS |origin| |doc|))
-               ('T
-                (PROG (G167432)
-                  (SPADLET G167432 NIL)
-                  (RETURN
-                    (DO ((G167438 NIL G167432)
-                         (G167439 (HGET |docTable| |op|)
-                             (CDR G167439))
-                         (|x| NIL))
-                        ((OR G167438 (ATOM G167439)
-                             (PROGN (SETQ |x| (CAR G167439)) NIL))
-                         G167432)
-                      (SEQ (EXIT (SETQ G167432
-                                       (OR G167432
-                                        (|dbGetDocTable,gn| |x|)))))))))))))))
-
-;kTestPred n ==
-;  n = 0 => true
-;  $domain => testBitVector($predvec,n)
-;  simpHasPred $predvec.(n - 1)
-
-(DEFUN |kTestPred| (|n|)
-  (declare (special |$predvec| |$domain|))
-  (COND
-    ((EQL |n| 0) 'T)
-    (|$domain| (|testBitVector| |$predvec| |n|))
-    ('T (|simpHasPred| (ELT |$predvec| (SPADDIFFERENCE |n| 1))))))
-
-;dbAddChainDomain conform ==
-;  [name,:args] := conform
-;  $infovec := dbInfovec name or return nil  --exit for categories
-;  template := $infovec . 0
-;  null (form := template . 5) => nil
-;  dbSubConform(args,kFormatSlotDomain devaluate form)
-
-(DEFUN |dbAddChainDomain| (|conform|)
-  (PROG (|name| |args| |template| |form|)
-  (declare (special |$infovec|))
-    (RETURN
-      (PROGN
-        (SPADLET |name| (CAR |conform|))
-        (SPADLET |args| (CDR |conform|))
-        (SPADLET |$infovec| (OR (|dbInfovec| |name|) (RETURN NIL)))
-        (SPADLET |template| (ELT |$infovec| 0))
-        (COND
-          ((NULL (SPADLET |form| (ELT |template| 5))) NIL)
-          ('T
-           (|dbSubConform| |args|
-               (|kFormatSlotDomain| (|devaluate| |form|)))))))))
-
-;dbSubConform(args,u) ==
-;  atom u =>
-;    (n := position(u,$FormalMapVariableList)) >= 0 => args . n
-;    u
-;  u is ['local,y] => dbSubConform(args,y)
-;  [dbSubConform(args,x) for x in u]
-
-(DEFUN |dbSubConform| (|args| |u|)
-  (PROG (|n| |ISTMP#1| |y|)
-    (RETURN
-      (SEQ (COND
-             ((ATOM |u|)
-              (COND
-                ((>= (SPADLET |n|
-                              (|position| |u| |$FormalMapVariableList|))
-                     0)
-                 (ELT |args| |n|))
-                ('T |u|)))
-             ((AND (CONSP |u|) (EQ (QCAR |u|) '|local|)
-                   (PROGN
-                     (SPADLET |ISTMP#1| (QCDR |u|))
-                     (AND (CONSP |ISTMP#1|) (EQ (QCDR |ISTMP#1|) NIL)
-                          (PROGN (SPADLET |y| (QCAR |ISTMP#1|)) 'T))))
-              (|dbSubConform| |args| |y|))
-             ('T
-              (PROG (G167484)
-                (SPADLET G167484 NIL)
-                (RETURN
-                  (DO ((G167489 |u| (CDR G167489)) (|x| NIL))
-                      ((OR (ATOM G167489)
-                           (PROGN (SETQ |x| (CAR G167489)) NIL))
-                       (NREVERSE0 G167484))
-                    (SEQ (EXIT (SETQ G167484
-                                     (CONS (|dbSubConform| |args| |x|)
-                                      G167484)))))))))))))
-
-;dbAddChain conform ==
-;  u := dbAddChainDomain conform =>
-;    atom u => nil
-;    [[u,:true],:dbAddChain u]
-;  nil
-
-(DEFUN |dbAddChain| (|conform|)
-  (PROG (|u|)
-    (RETURN
-      (COND
-        ((SPADLET |u| (|dbAddChainDomain| |conform|))
-         (COND
-           ((ATOM |u|) NIL)
-           ('T (CONS (CONS |u| 'T) (|dbAddChain| |u|)))))
-        ('T NIL)))))
-
-;--=======================================================================
 ;--                Constructor Page Menu
 ;--=======================================================================
 ;dbShowCons(htPage,key,:options) ==
