MiniMAO1: Investigating the Semantics of Proceed by Curtis Clifton and Gary T. Leavens TR #05-01b January 2005, revised March 2005 This paper describes MiniMAO1, a core aspect-oriented calculus. Unlike previous aspect-oriented calculi, it allows around advice to change the target object of an advised operation before proceeding. MiniMAO1 accurately models the ways AspectJ allows changing the target object, e.g., at call join points. Practical uses for changing the target object using advice include proxies and other wrapper objects. In addition to accurate modeling of bindings for around advice, MiniMAO1 has several other features that make it suitable for the study of aspect- oriented mechanisms, such as those found in AspectJ. Like AspectJ, the calculus consists of an imperative, object-oriented base language plus aspect-oriented extensions. MiniMAO1 has a sound static type system, facilitated by a slightly different form of proceed than in AspectJ. This paper gives an operational semantics, type system, and proof of soundness for MiniMAO1. Keywords: MiniMAO calculus, aspect-oriented programming, AspectJ, advice, proceed, target 2003 CR Categories: D.3.1 [Programming Languages] Formal Definitions and Theory--Semantics D.3.2 [Programming Languages] Language Classifications--object-oriented languages D.3.3 [Programming Languages] Language Constructs and Features--classes and objects