Results 1 -
3 of
3
Structural Recursion with Locally Scoped Names
"... This paper introduces a new recursion principle for inductively defined data modulo α-equivalence of bound names that makes use of Odersky-style local names when recursing over bound names. It is formulated in simply typed λ-calculus extended with names that can be restricted to a lexical scope, tes ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This paper introduces a new recursion principle for inductively defined data modulo α-equivalence of bound names that makes use of Odersky-style local names when recursing over bound names. It is formulated in simply typed λ-calculus extended with names that can be restricted to a lexical scope, tested for equality, explicitly swapped and abstracted. The new recursion principle is motivated by the nominal sets notion of “α-structural recursion”, whose use of names and associated freshness side-conditions in recursive definitions formalizes common practice with binders. The new calculus has a simple interpretation in nominal sets equipped with name restriction operations. It is shown to adequately represent α-structural recursion while avoiding the need to verify freshness side-conditions in definitions and computations. The paper is a revised and expanded version of (Pitts, 2010). 1
Categories and Subject Descriptors D.3.3 [Programming Languages]:
"... A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive. In this pa ..."
Abstract
- Add to MetaCart
A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive. In this paper, we present a novel approach to the problem. Our proposal can be viewed either as a programming language design or as a library: in fact, it is currently implemented within Agda. It provides a safe and expressive means of programming with names and binders. It is abstract enough to support multiple concrete implementations: we present one in nominal style and one in de Bruijn style. We use logical relations to prove that “well-typed programs do not mix names with different scope”. We exhibit an adequate encoding of Pitts-style nominal terms into our system.
Dependent Types for a Nominal Logical Framework
, 2012
"... We present a logical framework based on the nominal approach to representing syntax with binders. First we extend nominal terms, which have a built-in name-abstraction operator and a first-order notion of substitution for variables, with a capture-avoiding substitution operator for names. We then bu ..."
Abstract
- Add to MetaCart
We present a logical framework based on the nominal approach to representing syntax with binders. First we extend nominal terms, which have a built-in name-abstraction operator and a first-order notion of substitution for variables, with a capture-avoiding substitution operator for names. We then build a dependent type system for this extended syntax

