This article presents the event calculus, a logic-based formalism
for representing actions and their effects. A circumscriptive solution
to the frame problem is deployed which reduces to monotonic predicate
completion. Using a number of benchmark examples from the literature,
the formalism is shown to apply to a variety of domains, including
those featuring actions with indirect effects, actions with
non-deterministic effects, concurrent actions, and continuous change.