diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 915c1f9..6284835 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -4368,6 +4368,95 @@ An angry JHD - August 15th., 1984
 
 @
 
+\defplist{String}{compString}
+<<postvars>>=
+(eval-when (eval load)
+ (setf (get '|String| 'special) '|compString|))
+
+@
+
+\defun{compString}{compString}
+\calls{compString}{resolve}
+\usesdollar{compString}{StringCategory}
+<<defun compString>>=
+(defun |compString| (x m e)
+ (declare (special |$StringCategory|))
+ (list x (|resolve| |$StringCategory| m) e))
+
+@
+
+\defplist{SubDomain}{compSubDomain}
+<<postvars>>=
+(eval-when (eval load)
+ (setf (get '|SubDomain| 'special) '|compSubDomain|))
+
+@
+
+\defun{compSubDomain}{compSubDomain}
+\calls{compSubDomain}{compSubDomain1}
+\calls{compSubDomain}{compCapsule}
+\usesdollar{compSubDomain}{addFormLhs}
+\usesdollar{compSubDomain}{NRTaddForm}
+\usesdollar{compSubDomain}{addForm}
+\usesdollar{compSubDomain}{addFormLhs}
+<<defun compSubDomain>>=
+(defun |compSubDomain| (arg m e)
+ (let (|$addFormLhs| |$addForm| domainForm predicate tmp1)
+ (declare (special |$addFormLhs| |$addForm| |$NRTaddForm| |$addFormLhs|))
+  (setq domainForm (second arg))
+  (setq predicate (third arg))
+  (setq |$addFormLhs| domainForm)
+  (setq |$addForm| nil)
+  (setq |$NRTaddForm| domainForm)
+  (setq tmp1 (|compSubDomain1| domainForm predicate m e))
+  (setq |$addForm| (first tmp1))
+  (setq e (third tmp1))
+  (|compCapsule| (list 'capsule) m e)))
+
+@
+
+\defun{compSubDomain1}{compSubDomain1}
+\calls{compSubDomain1}{compMakeDeclaration}
+\calls{compSubDomain1}{addDomain}
+\calls{compSubDomain1}{compOrCroak}
+\calls{compSubDomain1}{stackSemanticError}
+\calls{compSubDomain1}{lispize}
+\calls{compSubDomain1}{evalAndRwriteLispForm}
+\usesdollar{compSubDomain1}{CategoryFrame}
+\usesdollar{compSubDomain1}{op}
+\usesdollar{compSubDomain1}{lisplibSuperDomain}
+\usesdollar{compSubDomain1}{Boolean}
+\usesdollar{compSubDomain1}{EmptyMode}
+<<defun compSubDomain1>>=
+(defun |compSubDomain1| (domainForm predicate m e)
+ (let (u prefixPredicate opp dFp)
+ (declare (special |$CategoryFrame| |$op| |$lisplibSuperDomain| |$Boolean|
+                   |$EmptyMode|))
+  (setq e (third
+   (|compMakeDeclaration| (list '|:| '|#1| domainForm)
+     |$EmptyMode| (|addDomain| domainForm e))))
+   (setq u (|compOrCroak| predicate |$Boolean| e))
+   (unless u
+    (|stackSemanticError|
+     (list '|predicate: | predicate 
+           '| cannot be interpreted with #1: | domainForm) nil))
+   (setq prefixPredicate (|lispize| (first u)))
+   (setq |$lisplibSuperDomain| (list domainForm predicate))
+   (|evalAndRwriteLispForm| '|evalOnLoad2|
+    (list 'setq '|$CategoryFrame|
+     (list '|put|
+      (setq opp (list 'quote |$op|))
+       ''|SuperDomain|
+        (setq dFp (list 'quote domainForm))
+         (list '|put| dFp ''|SubDomain|
+          (list 'cons (list 'quote (cons |$op| prefixPredicate))
+          (list 'delasc opp (list '|get| dFp ''|SubDomain| '|$CategoryFrame|)))
+          '|$CategoryFrame|))))
+   (list domainForm m e)))
+
+@
+
+
 \defplist{vector}{compVector}
 <<postvars>>=
 (eval-when (eval load)
@@ -11625,6 +11714,9 @@ if \verb|$InteractiveMode| then use a null outputstream
 <<defun setqSingle>>
 <<defun compSetq>>
 <<defun compSetq1>>
+<<defun compString>>
+<<defun compSubDomain>>
+<<defun compSubDomain1>>
 <<defun compSymbol>>
 <<defun compTopLevel>>
 <<defun compTypeOf>>
diff --git a/changelog b/changelog
index f434b3b..10c373f 100644
--- a/changelog
+++ b/changelog
@@ -1,8 +1,13 @@
+20101206 tpd src/axiom-website/patches.html 20101206.03.tpd.patch
+20101206 tpd src/interp/postprop.lisp treeshake compiler
+20101206 tpd src/interp/define.lisp treeshake compiler
+20101206 tpd src/interp/compiler.lisp treeshake compiler
+20101206 tpd books/bookvol9 treeshake compiler
 20101206 tpd src/axiom-website/patches.html 20101206.02.tpd.patch
 20101206 tpd books/bookvolbib [Loe09], [Mar07], [Wei03], [Wei06]
 20101206 tpd books/bookvol12 add discussion of GTFL
 20101206 tpd src/axiom-website/patches.html 20101206.01.tpd.patch
-20101206 tpd src/interp/postprop.lisp treeshake comiler
+20101206 tpd src/interp/postprop.lisp treeshake compiler
 20101206 tpd src/interp/compiler.lisp treeshake compiler
 20101206 tpd books/bookvol9 treeshake compiler
 20101205 tpd src/axiom-website/patches.html 20101205.02.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 081707b..18f09db 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3299,5 +3299,7 @@ books/bookvol9 treeshake compiler<br/>
 books/bookvol9 treeshake compiler<br/>
 <a href="patches/20101206.02.tpd.patch">20101206.02.tpd.patch</a>
 books/bookvol12 add discussion of GTFL<br/>
+<a href="patches/20101206.03.tpd.patch">20101206.03.tpd.patch</a>
+books/bookvol9 treeshake compiler<br/>
  </body>
 </html>
diff --git a/src/interp/compiler.lisp.pamphlet b/src/interp/compiler.lisp.pamphlet
index d1ed42f..0c13237 100644
--- a/src/interp/compiler.lisp.pamphlet
+++ b/src/interp/compiler.lisp.pamphlet
@@ -854,16 +854,6 @@
 
 @
 
-\section{Special evaluation functions}
-\subsection{compString}
-<<*>>=
-;compString(x,m,e) == [x,resolve($StringCategory,m),e]
-
-(DEFUN |compString| (|x| |m| |e|)
-  (declare (special |$StringCategory|))
-  (CONS |x| (CONS (|resolve| |$StringCategory| |m|) (CONS |e| NIL))))
-
-@
 \subsection{compSubsetCategory}
 Compile SubsetCategory
 <<*>>=
diff --git a/src/interp/define.lisp.pamphlet b/src/interp/define.lisp.pamphlet
index d077ed5..66c404f 100644
--- a/src/interp/define.lisp.pamphlet
+++ b/src/interp/define.lisp.pamphlet
@@ -4868,113 +4868,6 @@
                                           (CONS |i| (CONS |x| NIL)))
                                          G169701))))))))))))
 
-;compSubDomain(["SubDomain",domainForm,predicate],m,e) ==
-;  $addFormLhs: local:= domainForm
-;  $addForm: local := nil
-;  $NRTaddForm := domainForm
-;  [$addForm,.,e]:= compSubDomain1(domainForm,predicate,m,e)
-;--+
-;  compCapsule(['CAPSULE],m,e)
-
-(DEFUN |compSubDomain| (G169740 |m| |e|)
-  (PROG (|$addFormLhs| |$addForm| |domainForm| |predicate| |LETTMP#1|)
-    (DECLARE (SPECIAL |$addFormLhs| |$addForm| |$NRTaddForm| |$addFormLhs|))
-    (RETURN
-      (PROGN
-        (COND ((EQ (CAR G169740) '|SubDomain|) (CAR G169740)))
-        (SPADLET |domainForm| (CADR G169740))
-        (SPADLET |predicate| (CADDR G169740))
-        (SPADLET |$addFormLhs| |domainForm|)
-        (SPADLET |$addForm| NIL)
-        (SPADLET |$NRTaddForm| |domainForm|)
-        (SPADLET |LETTMP#1|
-                 (|compSubDomain1| |domainForm| |predicate| |m| |e|))
-        (SPADLET |$addForm| (CAR |LETTMP#1|))
-        (SPADLET |e| (CADDR |LETTMP#1|))
-        (|compCapsule| (CONS 'CAPSULE NIL) |m| |e|)))))
-
-;compSubDomain1(domainForm,predicate,m,e) ==
-;  [.,.,e]:=
-;    compMakeDeclaration([":","#1",domainForm],$EmptyMode,addDomain(domainForm,e))
-;  u:=
-;    compOrCroak(predicate,$Boolean,e) or
-;      stackSemanticError(["predicate: ",predicate,
-;        " cannot be interpreted with #1: ",domainForm],nil)
-;  prefixPredicate:= lispize u.expr
-;  $lisplibSuperDomain:=
-;    [domainForm,predicate]
-;  evalAndRwriteLispForm('evalOnLoad2,
-;    ['SETQ,'$CategoryFrame,['put,op':= ['QUOTE,$op],'
-;     (QUOTE SuperDomain),dF':= ['QUOTE,domainForm],['put,dF','(QUOTE SubDomain),[
-;       'CONS,['QUOTE,[$op,:prefixPredicate]],['DELASC,op',['get,dF','
-;         (QUOTE SubDomain),'$CategoryFrame]]],'$CategoryFrame]]])
-;  [domainForm,m,e]
-
-(DEFUN |compSubDomain1| (|domainForm| |predicate| |m| |e|)
-  (PROG (|LETTMP#1| |u| |prefixPredicate| |op'| |dF'|)
-  (declare (special |$CategoryFrame| |$op| |$lisplibSuperDomain| |$Boolean|
-                    |$EmptyMode|))
-    (RETURN
-      (PROGN
-        (SPADLET |LETTMP#1|
-                 (|compMakeDeclaration|
-                     (CONS '|:| (CONS '|#1| (CONS |domainForm| NIL)))
-                     |$EmptyMode| (|addDomain| |domainForm| |e|)))
-        (SPADLET |e| (CADDR |LETTMP#1|))
-        (SPADLET |u|
-                 (OR (|compOrCroak| |predicate| |$Boolean| |e|)
-                     (|stackSemanticError|
-                         (CONS '|predicate: |
-                               (CONS |predicate|
-                                     (CONS
-                                      '| cannot be interpreted with #1: |
-                                      (CONS |domainForm| NIL))))
-                         NIL)))
-        (SPADLET |prefixPredicate| (|lispize| (CAR |u|)))
-        (SPADLET |$lisplibSuperDomain|
-                 (CONS |domainForm| (CONS |predicate| NIL)))
-        (|evalAndRwriteLispForm| '|evalOnLoad2|
-            (CONS 'SETQ
-                  (CONS '|$CategoryFrame|
-                        (CONS (CONS '|put|
-                                    (CONS
-                                     (SPADLET |op'|
-                                      (CONS 'QUOTE (CONS |$op| NIL)))
-                                     (CONS ''|SuperDomain|
-                                      (CONS
-                                       (SPADLET |dF'|
-                                        (CONS 'QUOTE
-                                         (CONS |domainForm| NIL)))
-                                       (CONS
-                                        (CONS '|put|
-                                         (CONS |dF'|
-                                          (CONS ''|SubDomain|
-                                           (CONS
-                                            (CONS 'CONS
-                                             (CONS
-                                              (CONS 'QUOTE
-                                               (CONS
-                                                (CONS |$op|
-                                                 |prefixPredicate|)
-                                                NIL))
-                                              (CONS
-                                               (CONS 'DELASC
-                                                (CONS |op'|
-                                                 (CONS
-                                                  (CONS '|get|
-                                                   (CONS |dF'|
-                                                    (CONS ''|SubDomain|
-                                                     (CONS
-                                                      '|$CategoryFrame|
-                                                      NIL))))
-                                                  NIL)))
-                                               NIL)))
-                                            (CONS '|$CategoryFrame|
-                                             NIL)))))
-                                        NIL)))))
-                              NIL))))
-        (CONS |domainForm| (CONS |m| (CONS |e| NIL)))))))
-
 ;--% PROCESS FUNCTOR CODE
 ;
 ;processFunctor(form,signature,data,localParList,e) ==
diff --git a/src/interp/postprop.lisp.pamphlet b/src/interp/postprop.lisp.pamphlet
index 3302fcb..c7dcf06 100644
--- a/src/interp/postprop.lisp.pamphlet
+++ b/src/interp/postprop.lisp.pamphlet
@@ -87,8 +87,8 @@
 ;          (LET              |compSetq|)      
 ;          (SETQ             |compSetq|)
 ;          (SEQ              |compSeq|)
-          (|String|         |compString|)
-          (|SubDomain|      |compSubDomain|)
+;          (|String|         |compString|)
+;          (|SubDomain|      |compSubDomain|)
           (|SubsetCategory| |compSubsetCategory|)
           (\|               |compSuchthat|)
 ;          (VECTOR           |compVector|)
