An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
Programming: the derivation of algorithms
Programming: the derivation of algorithms
Categories, relations and dynamic programming
Categories, relations and dynamic programming
Algebra of programming
Parallelization in calculational forms
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Algebras for tree algorithms
Interactive Theorem Proving and Program Development
Interactive Theorem Proving and Program Development
Proceedings of the ACM SIGPLAN workshop on Generic programming
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Dependently typed programming in Agda
Proceedings of the 4th international workshop on Types in language design and implementation
Polytypic properties and proofs in Coq
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Algebra of programming in agda: Dependent types for relational program derivation
Journal of Functional Programming
A survey of strategies in rule-based program transformation systems
Journal of Symbolic Computation
A declarative language for the coq proof assistant
TYPES'07 Proceedings of the 2007 international conference on Types for proofs and programs
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Hi-index | 0.00 |
Program calculation, being a programming technique that derives programs from specification by means of formula manipulation, is a challenging activity. It requires human insights and creativity, and needs systems to help human to focus on clever parts of the derivation by automating tedious ones and verifying correctness of transformations. Different from many existing systems, we show in this paper that Coq, a popular theorem prover, provides a cheap way to implement a powerful system to support program calculation, which has not been recognized so far. We design and implement a set of tactics for the Coq proof assistant to help the user to derive programs by program calculation and to write proofs in calculational form. The use of these tactics is demonstrated through program calculations in Coq based on the theory of lists.