Powerlist: a structure for parallel recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Correctness of the Fast Fourier Transform: A Structured Proof in ACL2
Formal Methods in System Design
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Using Reflection to Build Efficient and Certified Decision Procedures
TACS '97 Proceedings of the Third International Symposium on Theoretical Aspects of Computer Software
Fix-Point Equations for Well-Founded Recursion in Type Theory
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
A Two-Level Approach Towards Lean Proof-Checking
TYPES '95 Selected papers from the International Workshop on Types for Proofs and Programs
Subtyping by folding an inductive relation into a coinductive one
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Hi-index | 0.00 |
We program the Fast Fourier Transform in type theory, using the tool Coq. We prove its correctness and the correctness of the Inverse Fourier Transform. A type of trees representing vectors with interleaved elements is defined to facilitate the definition of the transform by structural recursion. We define several operations and proof tools for this data structure, leading to a simple proof of correctness of the algorithm. The inverse transform, on the other hand, is implemented on a different representation of the data, that makes reasoning about summations easier. The link between the two data types is given by an isomorphism. This work is an illustration of the two-level approach to proof development and of the principle of adapting the data representation to the specific algorithm under study. CtCoq, a graphical user interface of Coq, helped in the development. We discuss the characteristics and usefulness of this tool.