We present a logic-based method for reasoning about action and change. In contrast to most of the other approaches aimed at this kind of inference, our proposal admits actions with abnormal effects. More specifically, with each action A we associate a pair of specifications, S 1 and S 2, representing respectively normal and abnormal performance of A. The intention is that each action is performed according to its normal specification unless the contrary follows from observations.
To represent effects of actions, we use Dijkstra's formalism, originally developed for reasoning about programs. To distinguish between normal and abnormal performances of actions, Dijkstra's approach is combined here with Reiter's default logic.