This paper presents an approach for modelling interactions between users and systems in the Unifying Theories of Programming. Working in the predicate calculus, we outline generic techniques for calculating a user’s observations of a system and, in turn, for identifying the information that a user can deduce about the system’s behaviour from those observations. To demonstrate how this approach can be applied in practical software development, we propose some alternative refinement relations that offer greater flexibility than classical refinement by utilising knowledge of the observational abilities of users.
Michael J. Banks, Jeremy L. Jacob