Proofs and types
Essence of generalized partial computation
Theoretical Computer Science - Images of programming dedicated to the memory of Andrei P. Ershov
Type isomorphisms in a type-assignment framework
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tutorial notes on partial evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type-directed partial evaluation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Second Futamura Projection for Type-Directed Partial Evaluation
Higher-Order and Symbolic Computation
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Isomorphisms of Types: From Lambda-Calculus to Information Retrieval and Language Design
Remarks on Isomorphisms in Typed Lambda Calculi with Empty and Sum Types
LICS '02 Proceedings of the 17th Annual IEEE Symposium on Logic in Computer Science
Type-Directed Partial Evaluation
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Proceedings of the ESPRIT Working Group 8533 on Prospects for Hardware Foundations: NADA - New Hardware Design Methods, Survey Chapters
A Semantic Account of Type-Directed Partial Evaluation
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Program Extraction from Normalization Proofs
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Type Isomorphisms and Proof Reuse in Dependent Type Theory
FoSSaCS '01 Proceedings of the 4th International Conference on Foundations of Software Science and Computation Structures
Strong Normalization by Type-Directed Partial Evaluation and Run-Time Code Generation
TIC '98 Proceedings of the Second International Workshop on Types in Compilation
Categorical Reconstruction of a Reduction Free Normalization Proof
CTCS '95 Proceedings of the 6th International Conference on Category Theory and Computer Science
Reduction-free normalisation for a polymorphic system
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
Normalization by Evaluation for Typed Lambda Calculus with Coproducts
LICS '01 Proceedings of the 16th Annual IEEE Symposium on Logic in Computer Science
Intuitionistic model constructions and normalization proofs
Mathematical Structures in Computer Science
Normalization by evaluation with typed abstract syntax
Journal of Functional Programming
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
Extensional normalisation and type-directed partial evaluation for typed lambda calculus with sums
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the static and dynamic extents of delimited continuations
Science of Computer Programming
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
A static simulation of dynamic delimited control
Higher-Order and Symbolic Computation
A substructural type system for delimited continuations
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Subtyping delimited continuations
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We use a code generator--type-directed partial evaluation-- to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the functions and type-directed partial evaluation provides a convenient setting to obtain the normal form of their composition. However, off-the-shelf type-directed partial evaluation turns out to yield gigantic normal forms.We identify that this gigantism is due to redundancies, and that these redundancies originate in the handling of sums, which uses delimited continuations. We successfully eliminate these redundancies by extending type-directed partial evaluation with memoization capabilities. The result only works for pure functional programs, but it provides an unexpected use of code generation and it yields orders-of-magnitude improvements both in time and in space for type isomorphisms.