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)
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 describe the design and implementation of λJVM, a functional representation of Java bytecode that makes data flow explicit, verification simple, and that is well-suited for translation into lower-level representations such as those used in optimizing compilers. It is a good alternative to stack-based Java bytecode for virtual machines or ahead-of-time(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)
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)
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)
The extensible markup language XML has become indispensable in many areas, but a significant disadvantage is its size: tagging a set of data increases the space needed to store it, the bandwidth needed to transmit it, and the time needed to parse it. We present a new compression technique based on the document type, expressed as a Relax NG schema. Assuming(More)