diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet
index a24a47c..057850e 100644
--- a/books/bookvol10.4.pamphlet
+++ b/books/bookvol10.4.pamphlet
@@ -4175,7 +4175,7 @@ AnyFunctions1(S:Type): with
)set message test on
)set message auto off
)clear all
---S 1 of 6
+--S 1 of 9
getDomains 'Collection
--R
--R
@@ -4193,7 +4193,7 @@ getDomains 'Collection
--R Type: Set(Symbol)
--E 1
---S 2 of 6
+--S 2 of 9
difference(getDomains 'IndexedAggregate,getDomains 'Collection)
--R
--R
@@ -4204,7 +4204,7 @@ difference(getDomains 'IndexedAggregate,getDomains 'Collection)
--R Type: Set(Symbol)
--E 2
---S 3 of 6
+--S 3 of 9
credits()
--R
--RAn alphabetical listing of contributors to AXIOM:
@@ -4300,13 +4300,13 @@ credits()
The summary command simply types out the contents of the file
\$AXIOM/lib/summary so no output is captured in the spool file.
\begin{chunk}{ApplicationProgramInterface.input}
---S 4 of 6
+--S 4 of 9
summary()
--R
--R Type: Void
--E 4
---S 5 of 6
+--S 5 of 9
)show API
--R
--R ApplicationProgramInterface is a package constructor
@@ -4321,7 +4321,7 @@ summary()
--R
--E 5
---S 6 of 6
+--S 6 of 9
getAncestors 'IndexedAggregate
--R
--R
@@ -4330,6 +4330,47 @@ getAncestors 'IndexedAggregate
--R HomogeneousAggregate, InnerEvalable, SetCategory, Type}
--R Type: Set(Symbol)
--E 6
+
+--S 7 of 9
+reportInstantiations(true)
+--R
+--R Type: Void
+--R# instantiated/# dropped/domain name
+--R------------------------------------
+--R Totals: 0 instantiated
+--R 0 inside coerceInteractive
+--R 0 inside canCoerceFrom
+--R 0 inside evalMmCond
+--R 0 reinstantiated
+--R 0 dropped
+--R 0 distinct domains instantiated/dropped
+--E 7
+
+--S 8 of 9
+1
+--R
+--R
+--R (7) 1
+--R Type: PositiveInteger
+--R# instantiated/# dropped/domain name
+--R------------------------------------
+--R1 0 PositiveInteger
+--R1 0 NonNegativeInteger
+--R Totals: 2 instantiated
+--R 0 inside coerceInteractive
+--R 0 inside canCoerceFrom
+--R 0 inside evalMmCond
+--R 0 reinstantiated
+--R 0 dropped
+--R 2 distinct domains instantiated/dropped
+--E 8
+
+--S 9 of 9
+reportInstantiations(true)
+--R
+--R Type: Void
+--E 9
+
)spool
)lisp (bye)
\end{chunk}
@@ -4384,6 +4425,70 @@ getAncestors 'IndexedAggregate
HomogeneousAggregate, InnerEvalable, SetCategory, Type}
Type: Set(Symbol)
+The reportInstantiations function information about what domains
+are instantiated by an expression. In a clean Axiom you'll see
+
+(1) -> reportInstantiations(true)
+ Type: Void
+# instantiated/# dropped/domain name
+------------------------------------
+1 0 Void
+1 0 String
+1 0 SingleInteger
+1 0 PrimitiveArray(OutputForm)
+1 0 OutputForm
+1 0 List(OutputForm)
+1 0 Integer
+1 0 Character
+ Totals: 8 instantiated
+ 0 inside coerceInteractive
+ 0 inside canCoerceFrom
+ 0 inside evalMmCond
+ 0 reinstantiated
+ 0 dropped
+ 8 distinct domains instantiated/dropped
+
+Which shows that 8 domains were instantiated.
+If a new domain is requested, more will be instantiated.
+
+(2) -> 1
+
+ (2) 1
+ Type: PositiveInteger
+# instantiated/# dropped/domain name
+------------------------------------
+1 0 PositiveInteger
+1 0 NonNegativeInteger
+ Totals: 2 instantiated
+ 0 inside coerceInteractive
+ 0 inside canCoerceFrom
+ 0 inside evalMmCond
+ 0 reinstantiated
+ 0 dropped
+ 2 distinct domains instantiated/dropped
+
+However, this happens only once. Invoking already instantiated
+domains does nothing since they already exist.
+
+(3) -> 1
+
+ (3) 1
+ Type: PositiveInteger
+# instantiated/# dropped/domain name
+------------------------------------
+ Totals: 0 instantiated
+ 0 inside coerceInteractive
+ 0 inside canCoerceFrom
+ 0 inside evalMmCond
+ 0 reinstantiated
+ 0 dropped
+ 0 distinct domains instantiated/dropped
+
+We call the function with false to turn off this information.
+
+(4) -> reportInstantiations(false)
+ Type: Void
+
\end{chunk}
\pagehead{ApplicationProgramInterface}{API}
\pagepic{ps/v104applicationprograminterface.ps}{API}{1.00}
@@ -4420,6 +4525,13 @@ ApplicationProgramInterface(): Exports == Implementation where
++ summary() prints a short list of useful console commands
++
++X summary()
+ reportInstantiations: Boolean -> Void
+ ++ A debugging tool to show instantiation information
+ ++
+ ++X reportInstantiations(true)
+ ++X 1
+ ++X reportInstantiations(false)
+
Implementation ==> add
getDomains(cat:Symbol):Set(Symbol) ==
set [symbol car first destruct a _
@@ -4433,6 +4545,10 @@ ApplicationProgramInterface(): Exports == Implementation where
summary() == ( summary()$Lisp ; void() )
+ reportInstantiations(b:Boolean): Void ==
+ REPORTINSTANTIATIONS(b)$Lisp
+ void
+
\end{chunk}
\begin{chunk}{API.dotabb}
"API" [color="#FF4488",href="bookvol10.4.pdf#nameddest=APPRULE"]
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index b7a8b88..fd5bb63 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -39208,6 +39208,13 @@ but the Axiom semantics are not the same. Because Axiom was originally
written in Maclisp, then VMLisp, and then Common Lisp some of these old
semantics survive.
+\section{ApplicationProgramInterface}
+\defun{reportinstantiations}{Report what domains get instantiated}
+\begin{chunk}{defun reportinstantiations}
+(defun reportinstantiations (b)
+ (setq |$reportInstantiations| b))
+\end{chunk}
+
\section{InputForm}
\defun{unparseInputForm}{unparseInputForm}
This fixes bug 7217. The default title generation is bogus.
@@ -54815,6 +54822,7 @@ digits in TechExplorer. Since Saturn is gone we can remove it.
\getchunk{defun replaceSharps}
\getchunk{defun reportAO}
\getchunk{defun reportCategory}
+\getchunk{defun reportinstantiations}
\getchunk{defun reportOperations}
\getchunk{defun reportOpsFromLisplib}
\getchunk{defun reportOpsFromLisplib0}
diff --git a/changelog b/changelog
index 9d562e3..1557497 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20140610 tpd src/axiom-website/patches.html 20140610.04.tpd.patch
+20140610 tpd books/bookvol10.4,bookvol5 add reportInstantiations to API package
20140610 tpd src/axiom-website/patches.html 20140610.03.tpd.patch
20140610 tpd book/*.txt email cleanup
20140610 tpd src/axiom-website/patches.html 20140610.02.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 774ae4d..d175135 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -4414,6 +4414,8 @@ books/bookvolbib add reference Yapp07
src/doc/msgs/s2-us.msgs remove .as extension from compiler msg
20140610.03.tpd.patch
book/*.txt email cleanup
+20140610.04.tpd.patch
+books/bookvol10.4,bookvol5 add reportInstantiations to API package