TAPSOFT '89 2nd international joint conference on Theory and practice of software development
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Compiling Haskell by Program Transformation: A Report from the Trenches
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Simplification of Girard's Paradox
TLCA '95 Proceedings of the Second International Conference on Typed Lambda Calculi and Applications
TPHOLs '99 Proceedings of the 12th International Conference on Theorem Proving in Higher Order Logics
Generic Programming within Dependently Typed Programming
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Generic Programming: Advanced Lectures
Generic Programming: Advanced Lectures
Journal of Functional Programming
Universes for generic programs and proofs in dependent type theory
Nordic Journal of Computing
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Boxy types: inference for higher-rank types and impredicativity
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Journal of Functional Programming
Lectures on the Curry-Howard Isomorphism, Volume 149 (Studies in Logic and the Foundations of Mathematics)
Constructing strictly positive families
CATS '07 Proceedings of the thirteenth Australasian symposium on Theory of computing - Volume 65
Inductive and Coinductive Components of Corecursive Functions in Coq
Electronic Notes in Theoretical Computer Science (ENTCS)
Comparing libraries for generic programming in haskell
Proceedings of the first ACM SIGPLAN symposium on Haskell
Type-based termination of generic programs
Science of Computer Programming
Science of Computer Programming
Generic programming with fixed points for mutually recursive datatypes
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Complete and decidable type inference for GADTs
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
LICS '09 Proceedings of the 2009 24th Annual IEEE Symposium on Logic In Computer Science
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Exploring the regular tree types
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Filters on coinductive streams, an application to eratosthenes' sieve
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Generic programming with dependent types
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Hi-index | 0.00 |
The aim of our work is to be able to do fully formal, machine verified proofs over Generic Haskell-style polytypic programs. In order to achieve this goal, we embed polytypic programming in the proof assistant Coq and provide an infrastructure for polytypic proofs. Polytypic functions are reified within Coq as a datatype and can then be specialized by applying a dependently typed term specialization function. Polytypic functions are thus first class citizens and can be passed as arguments or returned as results. Likewise, we reify polytypic proofs as a datatype, and provide a lemma that a polytypic proof can be specialized to any datatype in the universe. The correspondence between polytypic functions and their polytypic proofs is very clear: programmers need to give proofs for, and only for, the same cases that they need to give instances for when they define the polytypic function itself. Finally, we discuss how we can write (co)recursive functions and do (co)recursive proofs in a similar way that recursion is handled in Generic Haskell.