De Bruijn Notation as a Nested Datatype

@article{Bird1999DeBN,
  title={De Bruijn Notation as a Nested Datatype},
  author={R. Bird and R. Paterson},
  journal={J. Funct. Program.},
  year={1999},
  volume={9},
  pages={77-91}
}
“I have no data yet. It is a capital mistake to theorise before one has data.” Sir Arthur Conan Doyle The Adventures of Sherlock Holmesde Bruijn notation is a coding of lambda terms in which each occurrence of a bound variable x is replaced by a natural number, indicating the ‘distance’ from the occurrence to the abstraction that introduced x. One might suppose that in any datatype for representing de Bruijn terms, the distance restriction on numbers would have to be maintained as an explicit… Expand
A unified treatment of syntax with binders
TLDR
An abstract interface to names and binders that rules out many of these errors is proposed, and it is proved that a world-polymorphic term transformation function must commute with any renaming of the free variables. Expand
Functional pearl: i am not a number--i am a free variable
TLDR
This paper shows how to manipulate syntax with binding using a mixed representation of names for free variables (with respect to the task in hand) and de Bruijn indices and gives a hierarchical representation for names which naturally reflects the structure of the operations the authors implement. Expand
A Datastructure for Iterated Powers
TLDR
The article uses the “refined conventional iteration” from the cited article for the extraction and describes a verification that has been formally verified inside Coq with its predicative notion of set. Expand
An induction principle for nested datatypes in intensional type theory
TLDR
A representation of nested datatypes in intensional type theory that is still generic and covers true nesting, guarantees termination of all expressible programs, and has an induction principle that allows to prove functoriality of monotonicity witnesses (maps for nested dat atypes) and naturality properties of iteratively defined polymorphic functions. Expand
Verification of Programs on Truly Nested Datatypes in Intensional Type Theory
  • R. Matthes
  • Computer Science, Mathematics
  • MSFP@MPC
  • 2006
TLDR
A representation of nested datatypes in intensional type theory that is still generic, guarantees termination of all expressible programs and has induction principles that allow to prove functoriality of monotonicity witnesses and naturality properties of iteratively defined polymorphic functions. Expand
Binding Structures as an Abstract Data Type
TLDR
This work proposes to represent binding structures by means of an abstract data type, equipped with high level operations allowing to manipulate terms with binding with a degree of abstraction comparable to that of informal proofs, and proves that the abstract representation is sound by providing a de Bruijn model. Expand
Nameless, painless
TLDR
This work proposes a safer programming interface implemented as a library, indexing the types of names and terms by a numerical bound, and index them by worlds, a different notion of index that is both finer and more abstract. Expand
Everybody's Got To Be Somewhere
TLDR
This paper introduces a nameless 'co-de-Bruijn' representation which makes the opposite canonical choice, delaying discarding minimally, as near as possible to the root. Expand
Recursion on Nested Datatypes in Dependent Type Theory
TLDR
The author proposes an abstract description of nested datatypes and an extension of this abstract description to full primitive recursion and its illustration by way of examples that have been carried out in Coq. Expand
A principled approach to programming with nested types in Haskell
TLDR
This paper shows that standard folds are, in fact, sufficiently expressive for programming with nested types in Haskell, and defines buildcombinators and fold/build fusion rules for nested types. Expand
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 29 REFERENCES
Nested Datatypes
TLDR
The aim of this paper is to suggest a functorial semantics for nested datatypes, with an associated calculational theory that mirrors and extends the standard theory for regular datatype. Expand
Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem
Abstract In ordinary lambda calculus the occurrences of a bound variable are made recognizable by the use of one and the same (otherwise irrelevant) name at all occurrences. This convention is knownExpand
Multi-Stage Programming with Explicit Annotations
TLDR
A thesis of this paper is that multi-stage languages are useful as programming languages in their own right, and should support features that make it possible for programmers to write staged computations without significantly changing their normal programming style. Expand
Generalised folds for nested datatypes
TLDR
It is shown how to construct generalised folds systematically for each nested datatype, and it is shown that they possess a uniqueness property analogous to that of ordinary folds. Expand
Revised4 report on the algorithmic language scheme
The report gives a defining description of the programming language Scheme. Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy LewisExpand
Introduction to functional programming
  • R. Bird, P. Wadler
  • Computer Science
  • Prentice Hall International series in computer science
  • 1988
TLDR
This is a thorough introduction to the fundamental concepts of functional programming that includes a simple, yet coherent treatment of the Haskell class; a calculus of time complexity; and new coverage of monadic input-output. Expand
ML for the working programmer
TLDR
In teaching the methods of functional programming, how to program in Standard ML, a functional language recently developed at Edinburgh University, the author shows how to use such concepts as lists, trees, higher-order functions and infinite data structures. Expand
Theorems for free!
TLDR
From the type of a polymorphic function the authors can derive a theorem that it satisfies, courtesy of Reynolds’ abstraction theorem for the polymorphic lambda calculus, which provides a free source of useful theorems. Expand
Algebra of programming
  • R. Bird, O. Moor
  • Mathematics, Computer Science
  • Prentice Hall International series in computer science
  • 1996
TLDR
This paper presents a meta-modelling framework that automates the very labor-intensive and therefore time-heavy and therefore expensive and expensive process of designing and testing algorithms for dynamic programming. Expand
Toposes, Triples and Theories
1. Categories.- 2. Toposes.- 3. Triples.- 4. Theories.- 5. Properties of Toposes.- 6. Permanence Properties of Toposes.- 7. Representation Theorems.- 8. Cocone Theories.- 9. More on Triples.- IndexExpand
...
1
2
3
...