Results 1  10
of
150
Featherweight Java: A Minimal Core Calculus for Java and GJ
 ACM Transactions on Programming Languages and Systems
, 1999
"... Several recent studies have introduced lightweight versions of Java: reduced languages in which complex features like threads and reflection are dropped to enable rigorous arguments about key properties such as type safety. We carry this process a step further, omitting almost all features of the fu ..."
Abstract

Cited by 548 (20 self)
 Add to MetaCart
Several recent studies have introduced lightweight versions of Java: reduced languages in which complex features like threads and reflection are dropped to enable rigorous arguments about key properties such as type safety. We carry this process a step further, omitting almost all features of the full language (including interfaces and even assignment) to obtain a small calculus, Featherweight Java, for which rigorous proofs are not only possible but easy. Featherweight Java bears a similar relation to Java as the lambdacalculus does to languages such as ML and Haskell. It offers a similar computational “feel, ” providing classes, methods, fields, inheritance, and dynamic typecasts with a semantics closely following Java’s. A proof of type safety for Featherweight Java thus illustrates many of the interesting features of a safety proof for the full language, while remaining pleasingly compact. The minimal syntax, typing rules, and operational semantics of Featherweight Java make it a handy tool for studying the consequences of extensions and variations. As an illustration of its utility in this regard, we extend Featherweight Java with generic classes in the style of GJ (Bracha, Odersky, Stoutamire, and Wadler) and give a detailed proof of type safety. The extended system formalizes for the first time some of the key features
Dynamic typing in a statically typed language
 ACM Trans. Program. Lang. Syst
, 1991
"... Abstract. Dynamic typing can be useful in statically typed languages. We extend the simply typed λcalculus with dynamic typing and elaborate additional features like polymorphism and subtyping. 1 ..."
Abstract

Cited by 156 (4 self)
 Add to MetaCart
Abstract. Dynamic typing can be useful in statically typed languages. We extend the simply typed λcalculus with dynamic typing and elaborate additional features like polymorphism and subtyping. 1
Simple Consequence Relations
 Information and Computation
, 1991
"... We provide a general investigation of Logic in which the notion of a simple consequence relation is taken to be fundamental. Our notion is more general than the usual one since we give up monotonicity and use multisets rather than sets. We use our notion for characterizing several known logics (incl ..."
Abstract

Cited by 98 (18 self)
 Add to MetaCart
We provide a general investigation of Logic in which the notion of a simple consequence relation is taken to be fundamental. Our notion is more general than the usual one since we give up monotonicity and use multisets rather than sets. We use our notion for characterizing several known logics (including Linear Logic and nonmonotonic logics) and for a general, semanticsindependent classification of standard connectives via equations on consequence relations (these include Girard's "multiplicatives" and "additives"). We next investigate the standard methods for uniformly representing consequence relations: Hilbert type, Natural Deduction and Gentzen type. The advantages and disadvantages of using each system and what should be taken as good representations in each case (especially from the implementation point of view) are explained. We end by briefly outlining (with examples) some methods for developing nonuniform, but still efficient, representations of consequence relations.
Engineering formal metatheory
 In ACM SIGPLANSIGACT Symposium on Principles of Programming Languages
, 2008
"... Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in th ..."
Abstract

Cited by 86 (9 self)
 Add to MetaCart
Machinechecked proofs of properties of programming languages have become a critical need, both for increased confidence in large and complex designs and as a foundation for technologies such as proofcarrying code. However, constructing these proofs remains a black art, involving many choices in the formulation of definitions and theorems that make a huge cumulative difference in the difficulty of carrying out large formal developments. The representation and manipulation of terms with variable binding is a key issue. We propose a novel style for formalizing metatheory, combining locally nameless representation of terms and cofinite quantification of free variable names in inductive definitions of relations on terms (typing, reduction,...). The key technical insight is that our use of cofinite quantification obviates the need for reasoning about equivariance (the fact that free names can be renamed in derivations); in particular, the structural induction principles of relations
Analysis and Caching of Dependencies
, 1996
"... We address the problem of dependency analysis and caching in the context of the calculus. The dependencies of a  term are (roughly) the parts of the term that contribute to the result of evaluating it. We introduce a mechanism for keeping track of dependencies, and discuss how to use these depend ..."
Abstract

Cited by 70 (6 self)
 Add to MetaCart
We address the problem of dependency analysis and caching in the context of the calculus. The dependencies of a  term are (roughly) the parts of the term that contribute to the result of evaluating it. We introduce a mechanism for keeping track of dependencies, and discuss how to use these dependencies in caching.
Programming with Intersection Types and Bounded Polymorphism
, 1991
"... representing the official policies, either expressed or implied, of the U.S. Government. ..."
Abstract

Cited by 67 (4 self)
 Add to MetaCart
representing the official policies, either expressed or implied, of the U.S. Government.
A General Formulation of Simultaneous InductiveRecursive Definitions in Type Theory
 Journal of Symbolic Logic
, 1998
"... The first example of a simultaneous inductiverecursive definition in intuitionistic type theory is MartinLöf's universe à la Tarski. A set U0 of codes for small sets is generated inductively at the same time as a function T0 , which maps a code to the corresponding small set, is defined by recursi ..."
Abstract

Cited by 65 (10 self)
 Add to MetaCart
The first example of a simultaneous inductiverecursive definition in intuitionistic type theory is MartinLöf's universe à la Tarski. A set U0 of codes for small sets is generated inductively at the same time as a function T0 , which maps a code to the corresponding small set, is defined by recursion on the way the elements of U0 are generated. In this paper we argue that there is an underlying general notion of simultaneous inductiverecursive definition which is implicit in MartinLöf's intuitionistic type theory. We extend previously given schematic formulations of inductive definitions in type theory to encompass a general notion of simultaneous inductionrecursion. This enables us to give a unified treatment of several interesting constructions including various universe constructions by Palmgren, Griffor, Rathjen, and Setzer and a constructive version of Aczel's Frege structures. Consistency of a restricted version of the extension is shown by constructing a realisability model ...
Algebraic Process Verification
 Handbook of Process Algebra, chapter 17
"... This chapter addresses the question how to verify distributed and communicating systems in an e#ective way from an explicit process algebraic standpoint. This means that all calculations are based on the axioms and principles of the process algebras. ..."
Abstract

Cited by 62 (16 self)
 Add to MetaCart
This chapter addresses the question how to verify distributed and communicating systems in an e#ective way from an explicit process algebraic standpoint. This means that all calculations are based on the axioms and principles of the process algebras.