\section{Conclusion}

\label{s:conclusion}
We have developed a theoretical model of reuse libraries that provides
good agreement, we feel, with our intuitions, the literature, and the
preliminary experimental data we have collected on reuse on Unix
machines.  Much of what we have done has served to emphasize the
importance of this one quantity, $\Hdomain$, the entropy rate we
associate with a problem domain.  It determines if we can have
strong reuse ($\Hdomain \rightarrow 0$), or whether we can have
weak reuse $(0 < \Hdomain < 1)$, and how much code we might be able
to reuse from libraries: at most $1-\Hdomain$. 

We have shown that libraries allow us to ``compress the incompressible,''
reducing the size of programs that are Kolmo\-gorov-incompressible
by taking advantage of the commonality exhibited by programs within
a problem domain.  We have also shown that libraries are essentially
incomplete, and there will always be room for more useful components
in any problem domain.  

\ignore{***
Interestingly, the invariance theorem of
Kolmogorov complexity (\refthm{fact:invariance}) implies that
domain-specific \emph{languages}, if assumed to have a fixed and finite 
definition, cannot achieve any asymptotic reduction in program size
for a problem domain.
However, domain-specific \emph{libraries}, if considered ever-growing 
approximations to a ``Platonic library,'' can get arbitrarily close 
to the optimal amount of compression allowed by the parameter $\Hdomain$.
***}

The arguments made here are quite general and might adapt easily
to other description systems, for example, the reuse of
abstractions, lemmas and theorems in mathematical proofs.

