Results 1 
7 of
7
Parametric HigherOrder Abstract Syntax for Mechanized Semantics
, 2008
"... We present parametric higherorder abstract syntax (PHOAS), a new approach to formalizing the syntax of programming languages in computer proof assistants based on type theory. Like higherorder abstract syntax (HOAS), PHOAS uses the meta language’s binding constructs to represent the object language ..."
Abstract

Cited by 23 (2 self)
 Add to MetaCart
(Show Context)
We present parametric higherorder abstract syntax (PHOAS), a new approach to formalizing the syntax of programming languages in computer proof assistants based on type theory. Like higherorder abstract syntax (HOAS), PHOAS uses the meta language’s binding constructs to represent the object language’s binding constructs. Unlike HOAS, PHOAS types are definable in generalpurpose type theories that support traditional functional programming, like Coq’s Calculus of Inductive Constructions. We walk through how Coq can be used to develop certified, executable program transformations over several staticallytyped functional programming languages formalized with PHOAS; that is, each transformation has a machinechecked proof of type preservation and semantic preservation. Our examples include CPS translation and closure conversion for simplytyped lambda calculus, CPS translation for System F, and translation from a language with MLstyle pattern matching to a simpler language with no variablearity binding constructs. By avoiding the syntactic hassle associated with firstorder representation techniques, we achieve a very high degree of proof automation.
A Computational Approach to Reflective MetaReasoning about Languages with Bindings
 In MERLIN ’05: Proceedings of the 3rd ACM SIGPLAN workshop on Mechanized
, 2005
"... We present a foundation for a computational metatheory of languages with bindings implemented in a computeraided formal reasoning environment. Our theory provides the ability to reason abstractly about operators, languages, openended languages, classes of languages, etc. The theory is based on th ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
We present a foundation for a computational metatheory of languages with bindings implemented in a computeraided formal reasoning environment. Our theory provides the ability to reason abstractly about operators, languages, openended languages, classes of languages, etc. The theory is based on the ideas of higherorder abstract syntax, with an appropriate induction principle parameterized over the language (i.e. a set of operators) being used. In our approach, both the bound and free variables are treated uniformly and this uniform treatment extends naturally to variablelength bindings. The implementation is reflective, namely there is a natural mapping between the metalanguage of the theoremprover and the object language of our theory. The object language substitution operation is mapped to the metalanguage substitution and does not need to be defined recursively. Our approach does not require designing a custom type theory; in this paper we describe the implementation of this foundational theory within a generalpurpose type theory. This work is fully implemented in the MetaPRL theorem prover, using the preexisting NuPRLlike MartinL ofstyle computational type theory. Based on this implementation, we lay out an outline for a framework for programming language experimentation and exploration as well as a general reflective reasoning framework. This paper also includes a short survey of the existing approaches to syntactic reflection. 1
MetaPRL  A Modular Logical Environment
, 2003
"... MetaPRL is the latest system to come out of over twenty five years of research by the Cornell PRL group. While initially created at Cornell, MetaPRL is currently a collaborative project involving several universities in several countries. The MetaPRL system combines the properties of an interactive ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
(Show Context)
MetaPRL is the latest system to come out of over twenty five years of research by the Cornell PRL group. While initially created at Cornell, MetaPRL is currently a collaborative project involving several universities in several countries. The MetaPRL system combines the properties of an interactive LCFstyle tacticbased proof assistant, a logical framework, a logical programming environment, and a formal methods programming toolkit. MetaPRL is distributed under an opensource license and can be downloaded from http://metaprl.org/. This paper provides an overview of the system focusing on the features that did not exist in the previous generations of PRL systems.
Implementing Reflection in Nuprl
, 2006
"... We present an implementation of reflection for the Nuprl theorem prover, based on combining intuitions from programming languages and logical languages. We reflect a logical language, adapting the common practice from Lisp dialects of avoiding redundant coding whenever it is possible to expose inter ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
(Show Context)
We present an implementation of reflection for the Nuprl theorem prover, based on combining intuitions from programming languages and logical languages. We reflect a logical language, adapting the common practice from Lisp dialects of avoiding redundant coding whenever it is possible to expose internal functionality. In particular, concepts of the logical language such as term syntax and substitution are directly reflected as primitives. The resulting notation has both the expressiveness and the simplicity needed for ordinary syntactic explanations and arguments. The system is demonstrated by formalizing Tarski’s result regarding the internal undefinability of a Truth predicate, closely following a standard “paper proof”. We believe this shows to good effect our rather transparent quotelike notation, especially by exploiting colors. 1
Abstract A SelfHosting Evaluator using HOAS
"... We demonstrate a tiny, yet nontrivial evaluator that is powerful enough to run practical code, including itself. This is made possible using a HigherOrder Abstract Syntax (HOAS) representation — a technique that has become popular in syntaxrelated research during the past decade. With a HOAS enco ..."
Abstract
 Add to MetaCart
(Show Context)
We demonstrate a tiny, yet nontrivial evaluator that is powerful enough to run practical code, including itself. This is made possible using a HigherOrder Abstract Syntax (HOAS) representation — a technique that has become popular in syntaxrelated research during the past decade. With a HOAS encoding, we use functions to encode binders in syntax values, leading to an advantages of reflecting binders rather than reimplementing them. In Scheme, hygienic macros cover problems that are associated with binders in an elegant way, but only when extending the language, i.e., when we work at the metalevel. In contrast, HOAS is a useful objectlevel technique, used when we need to represent syntax values that contain bindings — and this is achieved in a way that is simple, robust, and efficient. We gradually develop the code, explaining the technique and its benefits, while playing with the evaluator. 1.
Abstract A SelfHosting Evaluator using HOAS
"... We demonstrate a tiny, yet nontrivial evaluator that is powerful enough to run practical code, including itself. This is made possible using a HigherOrder Abstract Syntax (HOAS) representation — a technique that has become popular in syntaxrelated research during the past decade. With a HOAS enco ..."
Abstract
 Add to MetaCart
(Show Context)
We demonstrate a tiny, yet nontrivial evaluator that is powerful enough to run practical code, including itself. This is made possible using a HigherOrder Abstract Syntax (HOAS) representation — a technique that has become popular in syntaxrelated research during the past decade. With a HOAS encoding, we use functions to encode binders in syntax values, leading to an advantages of reflecting binders rather than reimplementing them. In Scheme, hygienic macros cover problems that are associated with binders in an elegant way, but only when extending the language, i.e., when we work at the metalevel. In contrast, HOAS is a useful objectlevel technique, used when we need to represent syntax values that contain bindings — and this is achieved in a way that is simple, robust, and efficient. We gradually develop the code, explaining the technique and its benefits, while playing with the evaluator. 1.