  We present a method to simplify expressions in the context of an equational
theory. The basic ideas and concepts of the method have been presented
previously elsewhere but here we tackle the difficult task of making it
efficient in practice, in spite of its great generality. We first recall the
notion of a collection of structures, which allows us to manipulate very large
(possibly infinite) sets of terms as a whole, i.e., without enumerating their
elements. Then we use this tool to construct algorithms to simplify
expressions. We give various reasons why it is difficult to make these
algorithms precise and efficient. We then propose a number of approches to
solve the raised issues. Finally, and importantly, we provide a detailed
experimental evaluation of the method and a comparison of several variants of
it. Although the method is completely generic, we use (arbitrary, not only
two-level) boolean expressions as the application field for these experiments
because impressive simplifications can be obtained in spite of the hardness of
the problem.
