Pattern analysis consists in determining the shape of the set of solutions of the constraint store at some program points. Our basic claim is that pattern analyses can all be described within a unified framework of constraint domains. We show the basic blocks of such a framework as well as construction techniques which induce a hierarchy of domains. In particular, we propose a general methodology for domain combination with asynchronous interaction. The interaction among domains is asynchronous in that it can occur at any time: before, during, and after the product operation in a completely homogeneous way. That is achieved by regarding semantic domains as particular kinds of (ask-and-tell) constraint systems. These constraint systems allow to express communication among domains in a very simple way. The techniques we propose allow for smooth integration within an appropriate framework for the definition of non-standard semantics of constraint logic-based languages. The effectivene...