Program Verification Techniques as a Tool for Reasoning about Action and Change

We apply Dijkstra's semantics for programming languages to formalize reasoning about action and change. The basic idea is to view an action A as a transformation which to each formula β assigns a formula α, with the intention that α represents the set of all initial states such that execution of A begun in any one of them is guaranteed to terminate in a state satisfying β.