Abstract

Software contracts provide a mechanism for programmers to safely provide libraries and quickly pinpoint program errors by specifying certain pre- and post-conditions for function calls. A number of features and extensions have been developed for the field, such as lazy and temporal contracts. Each of these features contributes a new mechanism for contract implementation and evaluation, providing a number of unique approaches to contract enforcement. In this talk we introduce and discuss the state of these extensions, demonstrating the limitations and errors that exist in current implementations. We present the generally-accepted criterion for effective contract implementations and demonstrate how each implementation we consider fails to fulfill one of these requirements.