diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 038128f..12cfc11 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -66,7 +66,7 @@ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTIUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
@@ -22118,6 +22118,37 @@ preferred to the underlying representation -- RDJ 9/12/83
\end{chunk}
+\defun{substituteIntoFunctorModemap}{substituteIntoFunctorModemap}
+\calls{substituteIntoFunctorModemap}{nequal}
+\calls{substituteIntoFunctorModemap}{keyedSystemError}
+\calls{substituteIntoFunctorModemap}{eqsubstlist}
+\calls{substituteIntoFunctorModemap}{compOrCroak}
+\calls{substituteIntoFunctorModemap}{sublis}
+\begin{chunk}{defun substituteIntoFunctorModemap}
+(defun |substituteIntoFunctorModemap| (argl modemap env)
+ (let (dc sig tmp1 tl substitutionList)
+ (setq dc (caar modemap))
+ (setq sig (cdar modemap))
+ (cond
+ ((nequal (|#| dc) (|#| sig))
+ (|keyedSystemError| 'S2GE0016
+ (list "substituteIntoFunctorModemap" "Incompatible maps")))
+ ((equal (|#| argl) (|#| (cdr sig)))
+ (setq sig (eqsubstlist argl (cdr dc) sig))
+ (setq tl
+ (loop for a in argl for m in (rest sig)
+ collect (progn
+ (setq tmp1 (|compOrCroak| a m env))
+ (setq env (caddr tmp1))
+ tmp1)))
+ (setq substitutionList
+ (loop for x in (rest dc) for tt in tl
+ collect (cons x (car tt))))
+ (list (sublis substitutionList modemap) env))
+ (t nil))))
+
+\end{chunk}
+
\defun{compFormPartiallyBottomUp}{compFormPartiallyBottomUp}
\calls{compFormPartiallyBottomUp}{compForm3}
\calls{compFormPartiallyBottomUp}{compFormMatch}
@@ -23611,6 +23642,7 @@ The current input line.
\getchunk{defun stripOffSubdomainConditions}
\getchunk{defun subrname}
\getchunk{defun substituteCategoryArguments}
+\getchunk{defun substituteIntoFunctorModemap}
\getchunk{defun substNames}
\getchunk{defun substVars}
\getchunk{defun s-process}
diff --git a/changelog b/changelog
index e440a30..a7dd1e7 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20111113 tpd src/axiom-website/patches.html 20111113.01.tpd.patch
+20111113 tpd src/interp/Makefile remove apply.lisp
+20111113 tpd src/interp/apply.lisp removed, merged with bookvol9
+20111113 tpd books/bookvol9 treeshake compiler
20111112 tpd src/axiom-website/patches.html 20111112.01.tpd.patch
20111112 tpd src/interp/apply.lisp treeshake compiler
20111112 tpd books/bookvol9 treeshake compiler
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 0f90319..e667b7f 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3678,5 +3678,7 @@ src/axiom-website/documentation.html add Knuth quote
books/bookvol5 treeshake interpreter
20111112.01.tpd.patch
books/bookvol9 treeshake compiler
+20111113.01.tpd.patch
+books/bookvol9 treeshake compiler, remove apply.lisp