Pervasive computing systems are interactive systems in the large, whose behaviour must adapt to the user's changing tasks and environment using different interface modalities and devices. Since the system adapts to its changing environment, it is vital that there are close links between the structure of the environment and the corresponding structured behavioural changes. We conjecture that predictability in pervasive computing arises from having a close, structured and easily-grasped relationship between the context and the behavioural change that context engenders. In current systems this relationship is not explicitly articulated but instead exists implicitly in the system's reaction to events. Our aim is to capture the relationship in a way that can be used to both analyse pervasive computing systems and aid their design. Moreover, some applications will have a wide range of behaviours; others will vary less, or more subtly. The point is not so much what a system does as how what it does varies with context. In this paper we address the principles and semantics that underpin truly pervasive systems.