Christopher League

Learn More
indication of the content of the cited equation, and many pages include a dozen or more such references, often from previous chapters. Each chapter of the book is concluded with sections of exercises, open questions, unsolved problems and commentary. The preface indicates that the exercises contain problems of "varying difficulty," and many are diiticult or(More)
Symbolic mode, checking has proved highly successful for large finite-state systems, in which states can be compactly encoded using binary decision diagrams (BDDs) or their variants. The inherent limitation of this approach is that it cannot be applied to systems with an infinite number of states --- even those with a single unbounded integer.Alternatively,(More)
There has been a surge of progress in automated verification methods based on state exploration. In areas like hardware design, these technologies are rapidly augmenting key phases of testing and validation. To date, one of the most successful of these methods has been symbolic model-checking, in which large finite-state machines are encoded into compact(More)
Popular mobile code architectures (Java and .NET) include verifiers to check for memory safety and other security properties. Since their formats are relatively high level, supporting a wide range of source language features is awkward. Further compilation and optimization, necessary for efficiency, must be trusted. We describe the design and implementation(More)
We present an efficient encoding of core Java constructs in a simple, implementable typed intermediate language. The encoding, after type erasure, has the same operational behavior as a standard implementation using vtables and self-application for method invocation. Classes inherit super-class methods with no overhead. We support mutually recursive classes(More)
We propose a conservative extension of the polymorphic lambda calculus (<i>F</i><sup>&amp;omega;</sup>) as an intermediate language for compiling languages with name-based class and interface hierarchies. Our extension enriches standard <i>F</i><sup>&amp;omega;</sup> with recursive types, existential types, and row polymorphism, but only ordered records(More)
Much recent work on proof-carrying code aims to build certifying compilers for single-inheritance object-oriented languages, such as Java or C#. Some advanced object-oriented languages support compiling a derived class without complete information about its base class. This strategy—though necessary for supporting features such as mixins, traits, and(More)