Results 1 -
9 of
9
Alpha-structural recursion and induction
- Journal of the ACM
, 2006
"... The nominal approach to abstract syntax deals with the issues of bound names and α-equivalence by considering constructions and properties that are invariant with respect to permuting names. The use of permutations gives rise to an attractively simple formalisation of common, but often technically i ..."
Abstract
-
Cited by 38 (6 self)
- Add to MetaCart
The nominal approach to abstract syntax deals with the issues of bound names and α-equivalence by considering constructions and properties that are invariant with respect to permuting names. The use of permutations gives rise to an attractively simple formalisation of common, but often technically incorrect uses of structural recursion and induction for abstract syntax modulo α-equivalence. At the heart of this approach is the notion of finitely supported mathematical objects. This paper explains the idea in as concrete a way as possible and gives a new derivation within higher-order logic of principles of α-structural recursion and induction for α-equivalence classes from the ordinary versions of these principles for abstract syntax trees.
Macros as multi-stage computations: Type-safe, generative, binding macros in MacroML
- in MacroML. In the International Conference on Functional Programming (ICFP ’01
, 2001
"... ..."
Algorithms for Equality and Unification in the Presence of Notational Definitions
- Types for Proofs and Programs
, 1998
"... this paper we investigate the interaction of notational definitions with algorithms for testing equality and unification. We propose a syntactic criterion on definitions which avoids their expansion in many cases without losing soundness or completeness with respect to fi ffi-conversion. Our setting ..."
Abstract
-
Cited by 17 (9 self)
- Add to MetaCart
this paper we investigate the interaction of notational definitions with algorithms for testing equality and unification. We propose a syntactic criterion on definitions which avoids their expansion in many cases without losing soundness or completeness with respect to fi ffi-conversion. Our setting is the dependently typed -calculus [HHP93], but, with minor modifications, our results should apply to richer type theories and logics. The question when definitions need to be expanded is surprisingly subtle and of great practical importance. Most algorithms for equality and unification rely on decomposing a problem
An implementation of F<:
- DEC Systems Research Center
, 1993
"... F<: is a highly expressive typed -calculus with subtyping. This paper describes an implementation of F<: (extended with recursive types), and documents the algorithms used. Using this implementation, one can test F<: programs and examine typing deriva- tions. ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
F<: is a highly expressive typed -calculus with subtyping. This paper describes an implementation of F<: (extended with recursive types), and documents the algorithms used. Using this implementation, one can test F<: programs and examine typing deriva- tions.
Extensible grammars for language specialization
- In Proceedings of the Fourth International Workshop on Database Programming Languages
, 1993
"... A frequent dilemma in the design of a database programming language is the choice between a language with a rich set of tailored notations for schema definitions, query expressions, etc., and a small, simple core language. We address this dilemma by proposing extensible grammars, a syntax-definition ..."
Abstract
-
Cited by 12 (2 self)
- Add to MetaCart
A frequent dilemma in the design of a database programming language is the choice between a language with a rich set of tailored notations for schema definitions, query expressions, etc., and a small, simple core language. We address this dilemma by proposing extensible grammars, a syntax-definition formalism for incremental language extensions and restrictions based on an initial core language. The translation of programs written in rich object languages into a small core language is defined via syntax-directed patterns. In contrast to macro-expansion and program-rewriting tools, our extensible grammars respect scoping rules. Therefore, we can introduce binding constructs while avoiding problems with unwanted name clashes. We develop extensible grammars and illustrate their use by extend-ing the lambda calculus with let-bindings, conditionals, and SQL-style query expressions. We then give a formal description of the underlying parsing, transformat,ion, and substitution rules. Finally, we sketch how these rules are exploit,ed in the implementation of a generic, extensible parser package. 1
A confluent calculus of macro expansion and evaluation
- PROC. 1992 ACM CONFERENCE ON LISP AND FUNCTIONAL PROGRAMMING
, 1992
"... ..."
Alpha-structural recursion and induction (extended abstract
- Theorem Proving in Higher Order Logics, 18th International Conference, TPHOLs 2005, Oxford UK, August 2005, Proceedings, volume 3603 of Lecture Notes in Computer Science
, 2005
"... Abstract. There is growing evidence for the usefulness of name permutations when dealing with syntax involving names and name-binding. In particular they facilitate an attractively simple formalisation of common, but often technically incorrect uses of structural recursion and induction for abstract ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
Abstract. There is growing evidence for the usefulness of name permutations when dealing with syntax involving names and name-binding. In particular they facilitate an attractively simple formalisation of common, but often technically incorrect uses of structural recursion and induction for abstract syntax trees modulo α-equivalence. At the heart of this formalisation is the notion of finitely supported mathematical objects. This paper explains the idea in as concrete a way as possible and gives a new derivation within higher-order logic of principles of α-structural recursion and induction for α-equivalence classes from the ordinary versions of these principles for abstract syntax trees. 1
Staged Notational Definitions
- GENERATIVE PROGRAMMING AND COMPONENT ENGINEERING (GPCE), LECTURE NOTES IN COMPUTER SCIENCE
, 2003
"... Recent work proposed defining type-safe macros via interpretation into a multi-stage language. The utility of this approach was illustrated with a language called MacroML, in which all type checking is carried out before macro expansion. Building on this work, the goal of this paper is to develo ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
Recent work proposed defining type-safe macros via interpretation into a multi-stage language. The utility of this approach was illustrated with a language called MacroML, in which all type checking is carried out before macro expansion. Building on this work, the goal of this paper is to develop a macro language that makes it easy for programmers to reason about terms locally. We show that defining the semantics of macros in this manner helps in developing and verifying not only type systems for macro languages but also equational reasoning principles. Because the MacroML calculus is sensetive to renaming of (what appear locally to be) bound variables, we present a calculus of staged notational definitions (SND) that eliminates the renaming problem but retains MacroML's phase distinction. Additionally, SND incorporates the generality of Griffin's account of notational definitions. We exhibit a formal equational theory for SND and prove its soundness.
An implementation of F<:
"... F<: is a highly expressive typed #-calculus with subtyping. This paper describes an implementation of F<: (extended with recursive types), and documents the algorithms used. Using this implementation, one can test F<: programs and examine typing derivations. To facilitate the writing of complex F ..."
Abstract
- Add to MetaCart
F<: is a highly expressive typed #-calculus with subtyping. This paper describes an implementation of F<: (extended with recursive types), and documents the algorithms used. Using this implementation, one can test F<: programs and examine typing derivations. To facilitate the writing of complex F<: encodings, we provide a flexible syntax-extension mechanism. New syntax can be defined from scratch, and the existing syntax can be extended on the fly. It is possible to introduce new binding constructs, while avoiding problems with variable capture. To reduce the syntactic clutter, we provide a practical type inference mechanism that is applicable to any explicitly typed polymorphic language. Syntax extension and type inference interact in useful ways. SRC Research Report 97, February 23, 1993. (Revised June 1997.) Digital Equipment Corporation 1993. This work may not be copied or reproduced in whole or in part for any commercial purpose. Permission to copy in whole or in part without...

