FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Substitution: a formal methods case study using monads and transformations
TAPSOFT '93 Selected papers of the colloquium on Formal approaches of software engineering
Monadic Presentations of Lambda Terms Using Generalized Inductive Types
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
MPC '98 Proceedings of the Mathematics of Program Construction
Type-based termination of recursive definitions
Mathematical Structures in Computer Science
de Bruijn notation as a nested datatype
Journal of Functional Programming
Disciplined, efficient, generalised folds for nested datatypes
Formal Aspects of Computing
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
Recursion on Nested Datatypes in Dependent Type Theory
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
An induction principle for nested datatypes in intensional type theory
Journal of Functional Programming
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
(Co-) iteration for higher-order nested datatypes
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Map fusion for nested datatypes in intensional type theory
Science of Computer Programming
Map fusion for nested datatypes in intensional type theory
Science of Computer Programming
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
A definitional extension LNGMIt of the Calculus of Inductive Constructions (CIC), that underlies the proof assistant Coq, is presented that allows also to program with nested datatypes that are not legal datatype definitions of CIC since they are ''truly nested''. LNGMIt ensures termination of recursively defined functions that follow iteration schemes in the style of N. Mendler. Characteristically for them, termination comes from polymorphic typing instead of structural requirements on recursive calls. LNGMIt comes with an induction principle and generalized Mendler-style iteration that allows a very clean representation of substitution for an untyped lambda calculus with explicit flattening, as an extended case study. On the generic level, a notion of naturality adapted to generalized Mendler-style iteration is developed, and criteria for it are established, in particular, a map fusion theorem for the obtained iterative functions. Concerning the case study, substitution is proven to fulfill two of the three monad laws, the third one only for ''hereditarily canonical'' terms, but this is rectified by a relativization of the whole construction to those terms. All the generic results and the case study have been fully formalized with the Coq system.