diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index d72b9c0..a9e9008 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -15690,6 +15690,17 @@ The function containsVars tests whether term t contains a * variable.
\end{chunk}
+\defun{isPatternVar}{isPatternVar}
+\begin{chunk}{defun isPatternVar}
+(defun |isPatternVar| (v)
+ (and (identp v)
+ (member v
+ '(** *1 *2 *3 *4 *5 *6 *7 *8 *9 *10 *11 *12 *13 *14 *15
+ *16 *17 *18 *19 *20))
+ t))
+
+\end{chunk}
+
\defun{containsVars1}{containsVars1}
The function containsVars1 tests whether term t contains a * variable.
This is a recursive version, which works on a list.
@@ -44727,6 +44738,7 @@ This needs to work off the internal exposure list, not the file.
\getchunk{defun isListOfIdentifiers}
\getchunk{defun isListOfIdentifiersOrStrings}
\getchunk{defun isPartialMode}
+\getchunk{defun isPatternVar}
\getchunk{defun isSharpVar}
\getchunk{defun isSharpVarWithNum}
\getchunk{defun isSubForRedundantMapName}
diff --git a/changelog b/changelog
index d1c602f..6456484 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+20130314 tpd src/axiom-website/patches.html 20130314.05.tpd.patch
+20130314 tpd src/interp/i-funsel.lisp remove functions
+20130314 tpd src/interp/g-util.lisp remove functions
+20130314 tpd books/bookvol5 treeshake interpreter code
20130314 tpd src/axiom-website/patches.html 20130314.04.jzc.patch
20130314 jzc books/bookvol1 fix typo
20130314 jzc books/bookvol0 fix typo
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 84d0e8b..2eee39e 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4037,5 +4037,7 @@ readme add Jia Zhao Cong
changlog. fix jzc email address
20130314.04.jzc.patch
books/bookvol0, books/bookvol1 fix typo
+20130314.05.tpd.patch
+books/bookvol5 treeshake interpreter code