diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 41c203c..f488f0d 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -6039,7 +6039,64 @@ $\rightarrow$
\item \verb|where| \refto{compWhere}(form mode eInit) $\rightarrow$
\end{itemize}
-\section{Direct called comp routines}
+\section{Functions which handle == statements}
+
+\defun{compDefineAddSignature}{compDefineAddSignature}
+\calls{compDefineAddSignature}{hasFullSignature}
+\calls{compDefineAddSignature}{assoc}
+\calls{compDefineAddSignature}{lassoc}
+\calls{compDefineAddSignature}{getProplist}
+\calls{compDefineAddSignature}{comp}
+\usesdollar{compDefineAddSignature}{EmptyMode}
+\begin{chunk}{defun compDefineAddSignature}
+(defun |compDefineAddSignature| (form signature env)
+ (let (sig declForm)
+ (declare (special |$EmptyMode|))
+ (if
+ (and (setq sig (|hasFullSignature| (rest form) signature env))
+ (null (|assoc| (cons '$ sig)
+ (lassoc '|modemap| (|getProplist| (car form) env)))))
+ (progn
+ (setq declForm
+ (list '|:|
+ (cons (car form)
+ (loop for x in (rest form)
+ for m in (rest sig)
+ collect (list '|:| x m)))
+ (car signature)))
+ (third (|comp| declForm |$EmptyMode| env)))
+ env)))
+
+\end{chunk}
+
+\defun{hasFullSignature}{hasFullSignature}
+\tpdhere{test with BASTYPE}
+\calls{hasFullSignature}{get}
+\begin{chunk}{defun hasFullSignature}
+(defun |hasFullSignature| (argl signature env)
+ (let (target ml u)
+ (setq target (first signature))
+ (setq ml (rest signature))
+ (when target
+ (setq u
+ (loop for x in argl for m in ml
+ collect (or m (|get| x '|mode| env) (return 'failed))))
+ (unless (eq u 'failed) (cons target u)))))
+
+\end{chunk}
+
+\defun{addEmptyCapsuleIfNecessary}{addEmptyCapsuleIfNecessary}
+\calls{addEmptyCapsuleIfNecessary}{kar}
+\usesdollar{addEmptyCapsuleIfNecessary}{SpecialDomainNames}
+\begin{chunk}{defun addEmptyCapsuleIfNecessary}
+(defun |addEmptyCapsuleIfNecessary| (target rhs)
+ (declare (special |$SpecialDomainNames|) (ignore target))
+ (if (member (kar rhs) |$SpecialDomainNames|)
+ rhs
+ (list '|add| rhs (list 'capsule))))
+
+\end{chunk}
+
\section{Indirect called comp routines}
In the {\bf compExpression} function there is the code:
\begin{verbatim}
@@ -6052,7 +6109,7 @@ In the {\bf compExpression} function there is the code:
\defplist{@}{compAdd plist}
\begin{chunk}{postvars}
(eval-when (eval load)
- (setf (get '|add| 'special) '|compAdd|))
+ (setf (get '|add| 'special) 'compAdd))
\end{chunk}
@@ -6095,7 +6152,7 @@ in the body of the add.
\usesdollar{compAdd}{functorForm}
\usesdollar{compAdd}{bootStrapMode}
\begin{chunk}{defun compAdd}
-(defun |compAdd| (form mode env)
+(defun compAdd (form mode env)
(let (|$addForm| |$addFormLhs| code domainForm predicate tmp3 tmp4)
(declare (special |$addForm| |$addFormLhs| |$EmptyMode| |$NRTaddForm|
|$packagesUsed| |$functorForm| |$bootStrapMode| /editfile))
@@ -6161,7 +6218,7 @@ in the body of the add.
\defplist{@}{compAtSign plist}
\begin{chunk}{postvars}
(eval-when (eval load)
- (setf (get '|@| 'special) '|compAtSign|))
+ (setf (get '|@| 'special) 'compAtSign))
\end{chunk}
@@ -6170,7 +6227,7 @@ in the body of the add.
\calls{compAtSign}{comp}
\calls{compAtSign}{coerce}
\begin{chunk}{defun compAtSign}
-(defun |compAtSign| (form mode env)
+(defun compAtSign (form mode env)
(let ((newform (second form)) (mprime (third form)) tmp)
(setq env (|addDomain| mprime env))
(when (setq tmp (|comp| newform mprime env)) (|coerce| tmp mode))))
@@ -7234,7 +7291,7 @@ An angry JHD - August 15th., 1984
(cond
(sig1
(setq ress
- (|compAtSign|
+ (compAtSign
(list '@
(list '+-> arg1 body)
(cons '|Mapping| (cons target sig1))) mode env))
@@ -7973,7 +8030,7 @@ An angry JHD - August 15th., 1984
(when (setq tmp1 (|comp| p |$Boolean| env))
(setq pp (first tmp1))
(setq env (third tmp1))
- (setq e (|put| xp '|condition| pp env))
+ (setq env (|put| xp '|condition| pp env))
(list xp mp env)))))
\end{chunk}
@@ -15145,6 +15202,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun action}
\getchunk{defun addclose}
+\getchunk{defun addEmptyCapsuleIfNecessary}
\getchunk{defun add-parens-and-semis-to-line}
\getchunk{defun Advance-Char}
\getchunk{defun advance-token}
@@ -15183,6 +15241,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun compConstructorCategory}
\getchunk{defun compDefine}
\getchunk{defun compDefine1}
+\getchunk{defun compDefineAddSignature}
\getchunk{defun compElt}
\getchunk{defun compExit}
\getchunk{defun compExpression}
@@ -15267,6 +15326,7 @@ if \verb|$InteractiveMode| then use a null outputstream
\getchunk{defun hackforis1}
\getchunk{defun hasAplExtension}
\getchunk{defun hasFormalMapVariable}
+\getchunk{defun hasFullSignature}
\getchunk{defun indent-pos}
\getchunk{defun infixtok}
diff --git a/changelog b/changelog
index 0f0140e..c9833aa 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20110515 tpd src/axiom-website/patches.html 20110515.01.tpd.patch
+20110515 tpd src/interp/define.lisp treeshake compiler
+20110515 tpd books/bookvol9 treeshake compiler
20110514 tpd src/axiom-website/patches.html 20110514.02.tpd.patch
20110514 tpd books/bookvol9 normalize argument names to top level functions
20110514 tpd src/axiom-website/patches.html 20110514.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 38da88e..8c41447 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3474,5 +3474,7 @@ books/bookvol9 treeshake compiler
books/bookvol* set textlength 400
20110514.02.tpd.patch
books/bookvol9 normalize argument names to top level functions
+20110515.01.tpd.patch
+books/bookvol9 treeshake compiler