An Object-Oriented Event Calculus by Jeremiah S. Patterson Abstract Despite the rising popularity and usefulness of events, or implicit invocation, in software design, the availability of general-purpose event mechanisms are rare. Further, most event mechanisms available for software design are implemented as libraries or sets of macros that are constrained by the language in which they are used; making such mechanisms inconvenient to use as well as error-prone. Event mechanisms that are part of a programming language can do away with such constraints; thus making events easier to use. However, there a few languages that offer built-in the events and even fewer languages that have a built-in general-purpose event mechanism. In order to promote the study of implicit invocation programming languages, this thesis presents a formal programming language foundation for events. This thesis expands the, object based, imps-caluculus to create a calculus for objects and events, the rws-calculus. The rws-calculus has a formal syntax, semantics, and a sound type system that is useful for defining practical programming languages that include built-in events. This, along with the ability of the calculus to easily simulate many different event mechanisms makes it a good start toward a formal understanding of implicit invocation. Keywords: Implicit invocation, event handling, constrol primitives, control abstractions, operational semantics, Eventua language, Abadi and Cardelli's object calculus. 2001 CR Categories: D.1.m [Software Engineering] Miscellaneous --- event-based programming; D.3.1 [Programming Languages] Formal Definitions and Theory --- semantics; D.3.2 [Programming Languages] Languages Classifications --- object-oriented languages, very high level languages; D.3.3 [Programming Languages] Languages Constructs and Features --- abstract data types, control structures, procedures, functions, and subroutines; D.3.m [Programming Languages] Miscellaneous --- event-based programming, implicit invocation; F.3.2 [Logics and Meanings of Programs] Semantics of Programming Languages --- denotational semantics, operational semantics; F.3.3 [Logics and Meanings of Programs] Studies of Program Constructs --- control primitives, object-oriented constructs, type structure. F.4.1 [Mathematical Logic and Formal Languages] Mathematical Logic --- Lambda calculus and related systems; Copyright (c) 2002 by Jeremiah S. Patterson