Proving termination of normalization functions for conditional expressions
Journal of Automated Reasoning
Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
PX: a computational logic
Extracting &ohgr;'s programs from proofs in the calculus of constructions
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Comparing integrated and external logics of functional programs
Science of Computer Programming
The Definition of Standard ML
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
An Experiment with "Edinburgh LCF"
Proceedings of the 5th Conference on Automated Deduction
Reasoning about functional programs and complexity classes associated with type disciplines
SFCS '83 Proceedings of the 24th Annual Symposium on Foundations of Computer Science
ACM Transactions on Programming Languages and Systems (TOPLAS)
Verbalization of high-level formal proofs
AAAI '99/IAAI '99 Proceedings of the sixteenth national conference on Artificial intelligence and the eleventh Innovative applications of artificial intelligence conference innovative applications of artificial intelligence
A Machine-Checked Implementation of Buchberger's Algorithm
Journal of Automated Reasoning
Studies of a Theory of Specifications with Built-in Program Extraction
Journal of Automated Reasoning
Formalizing Stålmarck's Algorithm in Coq
TPHOLs '00 Proceedings of the 13th International Conference on Theorem Proving in Higher Order Logics
A Certified Polynomial-Based Decision Procedure for Propositional Logic
TPHOLs '01 Proceedings of the 14th International Conference on Theorem Proving in Higher Order Logics
Type-Theoretic Functional Semantics
TPHOLs '02 Proceedings of the 15th International Conference on Theorem Proving in Higher Order Logics
TYPES '00 Selected papers from the International Workshop on Types for Proofs and Programs
Intuitionistic Tableau Extracted
TABLEAUX '99 Proceedings of the International Conference on Automated Reasoning with Analytic Tableaux and Related Methods
Formalizing a JVML Verifier for Initialization in a Theorem Prover
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
Proof-assistants using dependent type systems
Handbook of automated reasoning
The Synthesis of a Java Card Tokenization Algorithm
Proceedings of the 16th IEEE international conference on Automated software engineering
Syntax-Directed Amorphous Slicing
Automated Software Engineering
A computational formalization for partial evaluation
Mathematical Structures in Computer Science
Automated complexity analysis of Nuprl extracted programs
Journal of Functional Programming
Tool Support for Proof Engineering
Electronic Notes in Theoretical Computer Science (ENTCS)
Efficient execution in an automated reasoning environment
Journal of Functional Programming
Fixed point semantics and partial recursion in Coq
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Realizability of the Axiom of Choice in HOL. (An Analysis of Krivine's Work)
Fundamenta Informaticae - Logic for Pragmatics
Dependent Types, Theorem Proving, and Applications for a Verifying Compiler
Verified Software: Theories, Tools, Experiments
Program Verification by Using DISCOVERER
Verified Software: Theories, Tools, Experiments
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
A Large-Scale Experiment in Executing Extracted Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
Program extraction in simply-typed higher order logic
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Irrelevance in type theory with a heterogeneous equality judgement
FOSSACS'11/ETAPS'11 Proceedings of the 14th international conference on Foundations of software science and computational structures: part of the joint European conferences on theory and practice of software
Filters on coinductive streams, an application to eratosthenes' sieve
TLCA'05 Proceedings of the 7th international conference on Typed Lambda Calculi and Applications
Light functional interpretation
CSL'05 Proceedings of the 19th international conference on Computer Science Logic
A type theoretic framework for formal metamodelling
Proceedings of the 2004 international conference on Architecting Systems with Trustworthy Components
Generating verifiable java code from verified PVS specifications
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Realizability of the Axiom of Choice in HOL. (An Analysis of Krivine's Work)
Fundamenta Informaticae - Logic for Pragmatics
Rewriting Computation and Proof
Hi-index | 0.00 |
The system Coq (Dowek et al., 1991) is an environment for proof development based on the Calculus of Constructions (Coquand, 1985) (Coquand and Huet, 1985) enhanced with inductive definitions (Coquand and Paulin-Mohring, 1990). From a constructive proof formalized in Coq, one extracts a functional program which can be compiled and executed in ML. This paper describes how to obtain ML programs from proofs in Coq. The methods are illustrated with the example of a propositional tautology checker. We study the specification of the problem, the development of the proof and the extraction of the executable ML program. Part of the example is the development of a normalization function for IF-expressions, whose termination has been studied in several formalisms (Leszczylowski, 1981) (Paulson, 1986) (Dybjer, 1990). We show that the total program using primitive recursive functionals obtained out of a structural proof of termination leads to an (at first) surprisingly efficient algorithm. We explain also how to introduce a fixpoint and get the usual recursive program. Optimizations which are necessary in order to obtain efficient programs from proofs will be explained. We also justify the properties of the final ML program with respect to the initial specification.