Moving Between Contexts Alan Dix School of Computing and Mathematics University of Huddersfield Queensgate Huddersfield, UK, HD1 3DH email: alan@zeus.hud.ac.uk Abstract. Any action is performed in a particular context. So what does it mean to do the ‘same’ thing in a different context? There is no simple answer to this question , it depends on the interpretation of the operation and even then may be ambiguous. This is not a purely theoretical problem, but occurs in practical computational problems. This paper examines this issue looking at three different problems: multi-user undo, distributed update and the simultaneous development of a document in multiple formats. In each case, we find formal rules which any sensible translation must obey. We also see that dynamic pointers, a generic specification and implementation concept defined in previous work, can be used to generate default translation rules which suffice in many circumstances. This is because dynamic pointers can themselves be seen as a translation of location information between different contexts. 1 Introduction In this paper we are going to look at three different situations where operations which have been formulated in one context have to be reinterpreted in another. If you stand up in the morning, it is pretty clear what it means to do the same thing in the evening. But, if you face the east in the morning, what is the equivalent action in the evening? Do you still face east, or do you face west towards the setting sun? As is evident, a general answer to the question involves the meaning and purpose of an operation. However, we will see that there are many situations where there is an obvious and computable meaning to this concept. The first situation we will consider is the issue of undo in a multi-user interactive system. One of the solutions to this involves switching the order of commands. So, the first command has to be understood in the context before the second and vice versa. In the second example, we will consider the simultaneous update of the same object in a distributed environment. In order to merge these updates it is necessary to reinterpret updates as if they had been performed one after another, rather than simultaneously. Finally, and perhaps most exciting, we will look at the parallel development of related documents in different formats. One of the most difficult things about cooperative writing is finding a single word-processor or text proocessing package to use. Often one resorts to using plain ASCII files! However, we will see that it is possible to work on different formats translating updates formulated in one format into equivalent ones on the other. Throughout the paper, we will consider the general properties required of different forms of translation between contexts. In addition, we will see how dynamic pointers, which en- capsulate the translation of location information between contexts, can be used as a generic