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
20130613.02.tpd.patch
books/bookvol5 move code from br-con.lisp
+20130618.01.tpd.patch
+books/bookvol5 move code from br-con.lisp