Dino P. Oliva’s research while affiliated with Northeastern University and other places

What is this page?


This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.

Publications (2)


The VLISP verified PreScheme compiler
  • Article

March 1995

·

37 Reads

·

27 Citations

Higher-Order and Symbolic Computation

Dino P. Oliva

·

·

Mitchell Wand

. This paper describes a verified compiler for PreScheme, the implementation language for the vlisp run-time system. The compiler and proof were divided into three parts: A transformational front end that translates source text into a core language, a syntax-directed compiler that translates the core language into a combinator-based tree-manipulation language, and a linearizer that translates combinator code into code for an abstract stored-program machine with linear memory for both data and code. This factorization enabled different proof techniques to be used for the different phases of the compiler, and also allowed the generation of good code. Finally, the whole process was made possible by carefully defining the semantics of vlisp PreScheme rather than just adopting Scheme's. We believe that the architecture of the compiler and its correctness proof can easily be applied to compilers for languages other than PreScheme. Table of Contents 1 Introduction : : : : : : : : : : : : : :...


Proving the Correctness of Storage Representations.

January 1992

·

4 Reads

·

17 Citations

ACM SIGPLAN Lisp Pointers

Conventional techniques for semantics-directed compiler derivation yield abstract machines that manipulate trees. However, in order to produce a real compiler, one has to represent these trees in memory. In this paper we show how the technique of storage-layout relations can be applied to verify the correctness of storage representations in a very general way. This technique allows us to separate denotational from operational reasoning, so that each can be used when needed. As an example, we show the correctness of a stack implementation of a language including dynamic catch and throw. The representation uses static and dynamic links to thread the environment and continuation through the stack. We discuss other uses of these techniques.

Citations (2)


... Despite a large body of work [CM75,MP67,Mor73,Moo89,You89,WO92] in the area of compiler verification we are still far from being able to prove automatically that a given optimizing compiler always produces target programs that are semantically equivalent to their source versions. But if we cannot prove that a compiler is always correct maybe we can at least check the correctness of each compilation. ...

Reference:

Translation Validation for an Optimizing Compiler
Proving the Correctness of Storage Representations.
  • Citing Conference Paper
  • January 1992

ACM SIGPLAN Lisp Pointers

... Lambda-lifting: where. Today, a number of systems use lambda-lifting as an intermediate phase: the PAKCS implementation of Curry [23,24], the Stratego optimizer [44], the Escher compiler [19, Section 3.2.3.1], the PreScheme compiler [37], the Pell-Mell partial evaluator [32], the Schism partial evaluator [13], and the Similix partial evaluator [10] all lambda-lift source programs and generate scope-free recursive equations. Compilers such as Larceny [12] and Moby [40] use local, incremental versions of lambda-lifting in their optimizations, and so did an experimental version of the Glasgow Haskell Compiler [41]. ...

The VLISP verified PreScheme compiler
  • Citing Article
  • March 1995

Higher-Order and Symbolic Computation