Results 1  10
of
16
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 39 (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.
Focusing on binding and computation
 In IEEE Symposium on Logic in Computer Science
, 2008
"... ..."
(Show Context)
A Universe of Binding and Computation
"... We construct a logical framework supporting datatypes that mix binding and computation, implemented as a universe in the dependently typed programming language Agda 2. We represent binding pronominally, using wellscoped de Bruijn indices, so that types can be used to reason about the scoping of var ..."
Abstract

Cited by 20 (5 self)
 Add to MetaCart
(Show Context)
We construct a logical framework supporting datatypes that mix binding and computation, implemented as a universe in the dependently typed programming language Agda 2. We represent binding pronominally, using wellscoped de Bruijn indices, so that types can be used to reason about the scoping of variables. We equip our universe with datatypegeneric implementations of weakening, substitution, exchange, contraction, and subordinationbased strengthening, so that programmers need not reimplement these operations for each individual language they define. In our mixed, pronominal setting, weakening and substitution hold only under some conditions on types, but we show that these conditions can be discharged automatically in many cases. Finally, we program a variety of standard difficult test cases from the literature, such as normalizationbyevaluation for the untyped λcalculus, demonstrating that we can express detailed invariants about variable usage in a program’s type while still writing clean and clear code.
A.P.: Twolevel Hybrid: A system for reasoning using higherorder abstract syntax
 Proceedings of the International Workshop on Logical Frameworks and MetaLanguages: Theory and Practice (LFMTP 2008). Volume 228 of Electronic Notes in Theoretical Computer Science
, 2009
"... Logical frameworks supporting higherorder abstract syntax (HOAS) allow a direct and concise specification of a wide variety of languages and deductive systems. Reasoning about such systems within the same framework is wellknown to be problematic. We describe the new version of the Hybrid system, i ..."
Abstract

Cited by 15 (2 self)
 Add to MetaCart
(Show Context)
Logical frameworks supporting higherorder abstract syntax (HOAS) allow a direct and concise specification of a wide variety of languages and deductive systems. Reasoning about such systems within the same framework is wellknown to be problematic. We describe the new version of the Hybrid system, implemented on top of Isabelle/HOL (as well as Coq), in which a de Bruijn representation of λterms provides a definitional layer that allows the user to represent object languages in HOAS style, while offering tools for reasoning about them at the higher level. We briefly describe how to carry out twolevel reasoning in the style of frameworks such as Linc, and briefly discuss our system’s capabilities for reasoning using tactical theorem proving and principles of induction and coinduction.
Dependently Typed Programming with DomainSpecific Logics
 SUBMITTED TO POPL ’09
, 2008
"... We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, ..."
Abstract

Cited by 6 (3 self)
 Add to MetaCart
(Show Context)
We define a dependent programming language in which programmers can define and compute with domainspecific logics, such as an accesscontrol logic that statically prevents unauthorized access to controlled resources. Our language permits programmers to define logics using the LF logical framework, whose notion of binding and scope facilitates the representation of the consequence relation of a logic, and to compute with logics by writing functional programs over LF terms. These functional programs can be used to compute values at runtime, and also to compute types at compiletime. In previous work, we studied a simplytyped framework for representing and computing with variable binding [LICS 2008]. In this paper, we generalize our previous type theory to account for dependently typed inference rules, which are necessary to adequately represent domainspecific logics, and we present examples of using our type theory for certified software and mechanized metatheory.
Contributions to the Theory of Syntax with Bindings and to Process Algebra
, 2010
"... We develop a theory of syntax with bindings, focusing on: methodological issues concerning the convenient representation of syntax; techniques for recursive definitions and inductive reasoning. Our approach consists of a combination of FOAS (FirstOrder Abstract Syntax) and HOAS (HigherOrder Abst ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
(Show Context)
We develop a theory of syntax with bindings, focusing on: methodological issues concerning the convenient representation of syntax; techniques for recursive definitions and inductive reasoning. Our approach consists of a combination of FOAS (FirstOrder Abstract Syntax) and HOAS (HigherOrder Abstract Syntax) and tries to take advantage of the best of both worlds. The connection between FOAS and HOAS follows some general patterns and is presented as a (formally certified) statement of adequacy. We also develop a general technique for proving bisimilarity in process algebra Our technique, presented as a formal proof system, is applicable to a wide range of process algebras. The proof system is incremental, in that it allows building incrementally an a priori unknown bisimulation, and patternbased, in that it works on equalities of process patterns (i.e., universally quantified equations of process terms containing process variables), thus taking advantage of equational reasoning in a “circular ” manner, inside coinductive proof loops. All the work presented here has been formalized in the Isabelle theorem prover. The formalization is performed in a general setting: arbitrary manysorted syntax with bindings and arbitrary SOSspecified process algebra in de Simone format. The usefulness of our techniques is illustrated by several formalized case studies: a development of callbyname and callbyvalue λcalculus with constants, including ChurchRosser theorems, connection with de Bruijn representation, connection with other Isabelle formalizations, HOAS representation, and contituationpassingstyle (CPS) transformation; a proof in HOAS of strong normalization for the polymorphic secondorder λcalculus (a.k.a. System F). We also indicate the outline and some details of the formal development. ii to Leili R. Marleene iii
The Representational Adequacy of HYBRID
"... The Hybrid system (Ambler et al., 2002b), implemented within Isabelle/HOL, allows object logics to be represented using higher order abstract syntax (HOAS), and reasoned about using tactical theorem proving in general and principles of (co)induction in particular. The form of HOAS provided by Hybrid ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
The Hybrid system (Ambler et al., 2002b), implemented within Isabelle/HOL, allows object logics to be represented using higher order abstract syntax (HOAS), and reasoned about using tactical theorem proving in general and principles of (co)induction in particular. The form of HOAS provided by Hybrid is essentially a lambda calculus with constants. Of fundamental interest is the form of the lambda abstractions provided by Hybrid. The user has the convenience of writing lambda abstractions using names for the binding variables. However each abstraction is actually a definition of a de Bruijn expression, and Hybrid can unwind the user’s abstractions (written with names) to machine friendly de Bruijn expressions (without names). In this sense the formal system contains a hybrid of named and nameless bound variable notation. In this paper, we present a formal theory in a logical framework which can be viewed as a model of core Hybrid, and state and prove that the model is representationally adequate for HOAS. In particular, it is the canonical translation function from λexpressions to Hybrid that witnesses adequacy. We also prove two results that characterise how Hybrid represents certain classes of λexpressions. The Hybrid system contains a number of different syntactic classes of expression, and associated abstraction mechanisms. Hence this paper also aims to provide a selfcontained theoretical introduction to both the syntax and key ideas of the system; background in automated theorem proving is not essential, although this paper will be of considerable interest to those who wish to work with Hybrid in Isabelle/HOL.
Higher Order Abstract Syntax in Type Theory
"... We develop a general tool to formalize higherorder languages and reason about them in a prooftool based on type theory (Coq). A language is specified by its signature, which consists of sets of sort and operation names and typing rules. These rules prescribe the sorts and bindings of each operat ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We develop a general tool to formalize higherorder languages and reason about them in a prooftool based on type theory (Coq). A language is specified by its signature, which consists of sets of sort and operation names and typing rules. These rules prescribe the sorts and bindings of each operation. An algebra of terms is associated to a signature, using de Bruijn notation. Then a higherorder notation is built on top of the de Bruijn level, so that the user can work with metavariables instead of de Bruijn indices. We also provide recursion and induction principles formulated directly on the higherorder syntax. This generalizes work on the Hybrid approach to higherorder syntax in Isabelle and our earlier work on a constructive extension to Hybrid formalized in Coq. In particular, a large class of theorems that must be repeated for each object language in Hybrid is done once in our new approach and can be applied directly to each object language.
Reasoning Using HigherOrder Abstract Syntax in a HigherOrder Logic Proof Environment: Improvements to Hybrid and a Case Study
"... is a joint program with Carleton University, administered by the Ottawa ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
(Show Context)
is a joint program with Carleton University, administered by the Ottawa
N.: Names for free: polymorphic views of names and binders
 In: Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
, 2013
"... We propose a novel technique to represent names and binders in Haskell. The dynamic (runtime) representation is based on de Bruijn indices, but it features an interface to write and manipulate variables conviently, using Haskelllevel lambdas and variables. The key idea is to use rich types: a su ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
We propose a novel technique to represent names and binders in Haskell. The dynamic (runtime) representation is based on de Bruijn indices, but it features an interface to write and manipulate variables conviently, using Haskelllevel lambdas and variables. The key idea is to use rich types: a subterm with an additional free variable is viewed either as ∀v.v → Term(a + v) or ∃v.v × Term(a + v) depending on whether it is constructed or analysed. We demonstrate on a number of examples how this approach permits to express term construction and manipulation in a natural way, while retaining the good properties of representations based on de Bruijn indices.