diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index f49c843..bd7e2fa 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -4990,6 +4990,23 @@ of the symbol being parsed. The original list read:
\end{chunk}
+\defun{parseLhs}{parseLhs}
+\calls{parseLhs}{parseTran}
+\calls{parseLhs}{transIs}
+\begin{chunk}{defun parseLhs}
+(defun |parseLhs| (x)
+ (let (result)
+ (cond
+ ((atom x) (|parseTran| x))
+ ((atom (car x))
+ (cons (|parseTran| (car x))
+ (dolist (y (cdr x) (nreverse result))
+ (push (|transIs| (|parseTran| y)) result))))
+ (t (|parseTran| x)))))
+
+\end{chunk}
+
+
\defplist{dollargreaterthan}{parseDollarGreaterthan}
\begin{chunk}{postvars}
(eval-when (eval load)
@@ -5149,6 +5166,19 @@ of the symbol being parsed. The original list read:
\end{chunk}
+\defun{parseHas}{parseHas}
+\calls{parseHas}{unabbrevAndLoad}
+\calls{parseHas}{qcar}
+\calls{parseHas}{qcdr}
+\calls{parseHas}{getdatabase}
+\calls{parseHas}{opOf}
+\calls{parseHas}{makeNonAtomic}
+\calls{parseHas}{parseHasRhs}
+\calls{parseHas}{member}
+\calls{parseHas}{parseType}
+\calls{parseHas}{nreverse0}
+\usesdollar{parseHas}{InteractiveMode}
+\usesdollar{parseHas}{CategoryFrame}
\begin{chunk}{defun parseHas}
(defun |parseHas| (arg)
(labels (
@@ -5203,7 +5233,33 @@ of the symbol being parsed. The original list read:
(qcar tmp2)
(cons '|and| tmp2)))))
+\end{chunk}
+\defun{parseHasRhs}{parseHasRhs}
+\calls{parseHasRhs}{get}
+\calls{parseHasRhs}{qcar}
+\calls{parseHasRhs}{qcdr}
+\calls{parseHasRhs}{member}
+\calls{parseHasRhs}{abbreviation?}
+\calls{parseHasRhs}{loadIfNecessary}
+\calls{parseHasRhs}{unabbrevAndLoad}
+\usesdollar{parseHasRhs}{CategoryFrame}
+\begin{chunk}{defun parseHasRhs}
+(defun |parseHasRhs| (u)
+ (let (tmp1 y)
+ (declare (special |$CategoryFrame|))
+ (setq tmp1 (|get| u '|value| |$CategoryFrame|))
+ (cond
+ ((and (pairp tmp1) (pairp (qcdr tmp1))
+ (pairp (qcdr (qcdr tmp1))) (eq (qcdr (qcdr (qcdr tmp1))) nil)
+ (|member| (second tmp1)
+ '((|Mode|) (|Domain|) (|SubDomain| (|Domain|)))))
+ (second tmp1))
+ ((setq y (|abbreviation?| u))
+ (if (|loadIfNecessary| y)
+ (list (|unabbrevAndLoad| y))
+ (list (list 'attribute u))))
+ (t (list (list 'attribute u))))))
\end{chunk}
@@ -14820,6 +14876,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun parseGreaterEqual}
\getchunk{defun parseGreaterThan}
\getchunk{defun parseHas}
+\getchunk{defun parseHasRhs}
\getchunk{defun parseIf}
\getchunk{defun parseIf,ifTran}
\getchunk{defun parseImplies}
@@ -14832,6 +14889,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun parseLessEqual}
\getchunk{defun parseLET}
\getchunk{defun parseLETD}
+\getchunk{defun parseLhs}
\getchunk{defun parseMDEF}
\getchunk{defun parseNot}
\getchunk{defun parseNotEqual}
diff --git a/changelog b/changelog
index ccdaac4..56c6096 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20110303 tpd src/axiom-website/patches.html 20110303.01.tpd.patch
+20110303 tpd src/interp/parsing.lisp treeshake compiler
+20110303 tpd books/bookvol9 treeshake compiler
20110301 tpd src/axiom-website/patches.html 20110301.04.tpd.patch
20110301 tpd src/interp/parsing.lisp treeshake compiler
20110301 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 1848530..1986ec2 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3423,5 +3423,7 @@ books/bookvol9 treeshake compiler
books/bookvol9 treeshake compiler
20110301.04.tpd.patch
books/bookvol9 treeshake compiler
+20110303.01.tpd.patch
+books/bookvol9 treeshake compiler