Results 11 - 20
of
20
A Generic Formal Metatheory Framework for First-Order Representations
"... This paper presents GMETA: a generic framework for first-order representations of variable binding that provides once and for all many of the so-called infrastructure lemmas and definitions required in mechanizations of formal metatheory. The framework employs datatype-generic programming and modula ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
This paper presents GMETA: a generic framework for first-order representations of variable binding that provides once and for all many of the so-called infrastructure lemmas and definitions required in mechanizations of formal metatheory. The framework employs datatype-generic programming and modular programming techniques to provide a universe representing a family of datatypes. This universe is generic in two different ways: it is language-generic in the sense that several object languages can be represented within the universe; and it is representation-generic, meaning that it is parameterizable over the particular choice of firstorder representations for binders (for example, locally nameless or de Bruijn). Using this universe, several libraries providing generic infrastructure lemmas and definitions are implemented. These libraries are used in case studies based on the POPLmark challenge, showing that dealing with challenging binding constructs, like the ones found in System F<:, is possible with GMETA. All of GMETA’s generic infrastructure is implemented in the Coq theorem prover, ensuring the soundness of that infrastructure. Furthermore, due to GMETA’s modular design, the libraries can be easily used, extended and customized by end users. 1.
Algorithms in Logic and Cognitive Systems Permissive
"... nominal terms and their unification: an infinite, co-infinite approach to nominal techniques ..."
Abstract
- Add to MetaCart
(Show Context)
nominal terms and their unification: an infinite, co-infinite approach to nominal techniques
LAMBDA CALCULUS FOR ENGINEERS
"... Abstract. In pure functional programming it is awkward to use a stateful sub-computation in a predominantly stateless computation. The problem is that the state of the subcomputation has to be passed around using ugly plumbing. Classical examples of the plumbing problem are: providing a supply of fr ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract. In pure functional programming it is awkward to use a stateful sub-computation in a predominantly stateless computation. The problem is that the state of the subcomputation has to be passed around using ugly plumbing. Classical examples of the plumbing problem are: providing a supply of fresh names, and providing a supply of random numbers. We propose to use (deterministic) inductive definitions rather than recursion equations as a basic paradigm and show how this makes it easier to add the plumbing.
Abstract
"... This paper is concerned with the form of typed name binding used by the FreshML family of languages. Its characteristic feature is that a name binding is represented by an abstract (name,value)-pair that may only be deconstructed via the generation of fresh bound names. The paper proves a new result ..."
Abstract
- Add to MetaCart
(Show Context)
This paper is concerned with the form of typed name binding used by the FreshML family of languages. Its characteristic feature is that a name binding is represented by an abstract (name,value)-pair that may only be deconstructed via the generation of fresh bound names. The paper proves a new result about what operations on names can coexist with this construct. In FreshML the only observation one can make of names is to test whether or not they are equal. This restricted amount of observation was thought necessary to ensure that there is no observable difference between α-equivalent name binders. Yet from an algorithmic point of view it would be desirable to allow other operations and relations on names, such as a total ordering. This paper shows that, contrary to expectations, one may add not just ordering, but almost any relation or numerical function on names without disturbing the fundamental correctness result about this form of typed name binding (that object-level α-equivalence precisely corresponds to contextual equivalence at the programming meta-level), so long as one takes the state of dynamically created names into account. 1
Generic Datatypes a ̀ la Carte
"... Formal reasoning in proof assistants, also known as mechaniza-tion, has high development costs. Building modular reusable com-ponents is a key issue in reducing these costs. A stumbling block for reuse is that inductive definitions and proofs are closed to ex-tension. This is a manifestation of the ..."
Abstract
- Add to MetaCart
(Show Context)
Formal reasoning in proof assistants, also known as mechaniza-tion, has high development costs. Building modular reusable com-ponents is a key issue in reducing these costs. A stumbling block for reuse is that inductive definitions and proofs are closed to ex-tension. This is a manifestation of the expression problem that has been addressed by the Meta-Theory a ̀ la Carte (MTC) framework in the context of programming language meta-theory. However, MTC’s use of extensible Church-encodings is unsatisfactory. This paper takes a better approach to the problem with datatype-generic programming (DGP). It applies well-known DGP tech-niques to represent modular datatypes, to build functions from functor algebras with folds and to compose proofs from proof alge-bras by means of induction. Moreover, for certain functionality and proofs our approach can achieve more reuse than MTC: instead of composing modular components we provide a single generic defi-nition once and for all.
unknown title
"... Permissive nominal terms and their unification: an infinite, co-infinite approach to nominal techniques ..."
Abstract
- Add to MetaCart
(Show Context)
Permissive nominal terms and their unification: an infinite, co-infinite approach to nominal techniques
Type-safe cast does not harm
, 2007
"... Generic functions can specialize their behaviour depending on the types of their arguments, and can even recurse over the structure of the types of their arguments. Such functions can be programmed using type representations. Generic functions programmed this way possess certain parametricity proper ..."
Abstract
- Add to MetaCart
Generic functions can specialize their behaviour depending on the types of their arguments, and can even recurse over the structure of the types of their arguments. Such functions can be programmed using type representations. Generic functions programmed this way possess certain parametricity properties, which become interesting in the presence of higher-order polymorphism. In this Theoretical Pearl, we give a rigorous roadmap through the proof of parametricity for a calculus with higher-order polymorphism and type representations. We then use parametricity to derive the partial correctness of type-safe cast.