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
Algebra of programming
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
Extensional Equality in Intensional Type Theory
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
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
An induction principle for nested datatypes in intensional type theory
Journal of Functional Programming
Initial algebra semantics is enough!
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Extensionality in the calculus of constructions
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Map fusion for nested datatypes in intensional type theory
Science of Computer Programming
Hi-index | 0.00 |
Nested datatypes are families of datatypes that are indexed over all types such that the constructors may relate different family members. Moreover, the argument types of the constructors refer to indices given by expressions where the family name may occur. Especially in this case of true nesting, there is no direct support by theorem provers to guarantee termination of functions that traverse these data structures.A joint article with A. Abel and T. Uustalu (TCS 333(1---2), pp. 3---66, 2005) proposes iteration schemes that guarantee termination not by structural requirements but just by polymorphic typing. They are generic in the sense that no specific syntactic form of the underlying datatype "functor" is required. In subsequent work (accepted for the Journal of Functional Programming), the author introduced an induction principle for the verification of programs obtained from Mendler-style iteration of rank 2, which is one of those schemes, and justified it in the Calculus of Inductive Constructions through an implementation in the theorem prover Coq.The new contribution is an extension of this work to generalized Mendler iteration (introduced in Abel et al, cited above), leading to a map fusion theorem for the obtained iterative functions. The results and their implementation in Coq are used for a case study on a representation of untyped lambda calculus with explicit flattening. Substitution is proven to fulfill two of the three monad laws, the third only for "hereditarily canonical" terms, but this is rectified by a relativisation of the whole construction to those terms.