We propose a formal approach to the problem of prediction based on the following steps: First, a mental-level model is constructed based on the agent’s previous actions; Consequently, the model is updated to account for any new observations by the agent, and finally, we predict the optimal action w.r.t, the agent’s mental state as its next action. This paper formalizes this prediction process. In order to carry out this process we need to understand how a mental state call be ascribed to an agent, and how this mental state should be updated. In [Brafman and Tennenholtz, 1994b] we examined the first stage. Here we investigate a particular update operator, whose use requires making only weak modeling assumptions, and show that this operator has a number of desirable properties. Finally, we provide an algorithm for ascribing the agent’s mental state under this operator.