Results 1  10
of
12
Synthesizing proofs from programs in the Calculus of Inductive Constructions
 In Proceedings of the International Conference on Mathematics for Programs Constructions. SpringerVerlag LNCS 947
, 1995
"... . We want to prove "automatically" that a program is correct with respect to a set of given properties that is a specification. Proofs of specifications contain logical parts and computational parts. Programs can be seen as computational parts of proofs. They can then be extracted from pro ..."
Abstract

Cited by 21 (1 self)
 Add to MetaCart
. We want to prove "automatically" that a program is correct with respect to a set of given properties that is a specification. Proofs of specifications contain logical parts and computational parts. Programs can be seen as computational parts of proofs. They can then be extracted from proofs and be certified to be correct. We focus on the inverse problem : is it possible to reconstruct proof obligations from a program and its specification ? The framework is the type theory where a proof can be represented as a typed term [Con86, NPS90] and particularly the Calculus of Inductive Constructions [Coq85]. A notion of coherence is introduced between a specification and a program containing annotations as in the Hoare sense. This notion is based on the definition of an extraction function called the weak extraction. Such an annotated program can give a method to reconstruct a set of proof obligations needed to have a proof of the initial specification. This can be seen either as a method o...
CoInductive Types in Coq: An Experiment with the Alternating Bit Protocol
, 1995
"... We describe an experience concerning the implementation and use of coinductive types in the proof editor Coq. Coinductive types are recursive types which, opposite to inductive ones, may be inhabited by infinite objects. In order to illustrate their use in Coq, we describe an axiomatisation of ..."
Abstract

Cited by 12 (1 self)
 Add to MetaCart
We describe an experience concerning the implementation and use of coinductive types in the proof editor Coq. Coinductive types are recursive types which, opposite to inductive ones, may be inhabited by infinite objects. In order to illustrate their use in Coq, we describe an axiomatisation of a calculus of broadcasting systems where recursive processes are represented using infinite objects. This calculus is used for developing a verification proof of the alternating bit protocol.
Verifying programs in the Calculus of Inductive Constructions
, 1997
"... . This paper deals with a particular approach to the verification of functional programs. A specification of a program can be represented by a logical formula [Con86, NPS90]. In a constructive framework, developing a program then corresponds to proving this formula. Given a specification and a progr ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
. This paper deals with a particular approach to the verification of functional programs. A specification of a program can be represented by a logical formula [Con86, NPS90]. In a constructive framework, developing a program then corresponds to proving this formula. Given a specification and a program, we focus on reconstructing a proof of the specification whose algorithmic contents corresponds to the given program. The best we can hope is to generate proof obligations on atomic parts of the program corresponding to logical properties to be verified. First, this paper studies a weak extraction of a program from a proof that keeps track of intermediate specifications. From such a program, we prove the determinism of retrieving proof obligations. Then, heuristic methods are proposed for retrieving the proof from a natural program containing only partial annotations. Finally, the implementation of this method as a tactic of the Coq proof assistant is presented. 1. Introduction A large p...
A Comparative Study of Coq and HOL
 In Gunter and Felty [GF97
, 1997
"... . This paper illustrates the differences between the style of theory mechanisation of Coq and of HOL. This comparative study is based on the mechanisation of fragments of the theory of computation in these systems. Examples from these implementations are given to support some of the arguments discus ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
. This paper illustrates the differences between the style of theory mechanisation of Coq and of HOL. This comparative study is based on the mechanisation of fragments of the theory of computation in these systems. Examples from these implementations are given to support some of the arguments discussed in this paper. The mechanisms for specifying definitions and for theorem proving are discussed separately, building in parallel two pictures of the different approaches of mechanisation given by these systems. 1 Introduction This paper compares the different theorem proving approaches of the HOL [10] and Coq [5] proof assistants. This comparison is based on a case study involving the mechanisation of parts of the theory of computation in the two systems. This paper does not illustrate these mechanisations but rather discusses the differences between the two systems and backs up certain points by examples taken from the case studies. One motivation of this work is that many users of theo...
The Coq Proof Assistant  Reference Manual Version 6.1
, 1997
"... : Coq is a proof assistant based on a higherorder logic allowing powerful definitions of functions. Coq V6.1 is available by anonymous ftp at ftp.inria.fr:/INRIA/Projects/coq/V6.1 and ftp.enslyon.fr:/pub/LIP/COQ/V6.1 Keywords: Coq, Proof Assistant, Formal Proofs, Calculus of Inductives Constru ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
: Coq is a proof assistant based on a higherorder logic allowing powerful definitions of functions. Coq V6.1 is available by anonymous ftp at ftp.inria.fr:/INRIA/Projects/coq/V6.1 and ftp.enslyon.fr:/pub/LIP/COQ/V6.1 Keywords: Coq, Proof Assistant, Formal Proofs, Calculus of Inductives Constructions (R'esum'e : tsvp) This research was partly supported by ESPRIT Basic Research Action "Types" and by the GDR "Programmation " cofinanced by MREPRC and CNRS. Unit'e de recherche INRIA Rocquencourt Domaine de Voluceau, Rocquencourt, BP 105, 78153 LE CHESNAY Cedex (France) T'el'ephone : (33 1) 39 63 55 11  T'el'ecopie : (33 1) 39 63 53 30 Manuel de r'ef'erence du syst`eme Coq version V6.1 R'esum'e : Coq est un syst`eme permettant le d'eveloppement et la v'erification de preuves formelles dans une logique d'ordre sup'erieure incluant un riche langage de d'efinitions de fonctions. Ce document constitue le manuel de r'ef'erence de la version V6.1 qui est distribu 'ee par ftp ...
LogiCal Project
, 2004
"... This document is the Reference Manual of version 8.0 of the COQ proof assistant. A companion volume, the COQ Tutorial, is provided for the beginners. It is advised to read the Tutorial first. A new book [13] on practical uses of the COQ system will be published in 2004 and is a good support for both ..."
Abstract
 Add to MetaCart
This document is the Reference Manual of version 8.0 of the COQ proof assistant. A companion volume, the COQ Tutorial, is provided for the beginners. It is advised to read the Tutorial first. A new book [13] on practical uses of the COQ system will be published in 2004 and is a good support for both the beginner and the advanced user.
The Coq Proof Assistant  Reference Manual V 5.10
, 1995
"... ion All Axiom Begin Cd Chapter Check CheckGuard CoFixpoint Compute Defined Definition Drop Elimination End Eval Explain Extraction Fact Fixpoint Focus for Go Goal Hint Hypothesis Immediate Induction Inductive Infix Inspect Lemma Let Local Minimality ML Module Modules Mutual Node Opaque Parameter Par ..."
Abstract
 Add to MetaCart
ion All Axiom Begin Cd Chapter Check CheckGuard CoFixpoint Compute Defined Definition Drop Elimination End Eval Explain Extraction Fact Fixpoint Focus for Go Goal Hint Hypothesis Immediate Induction Inductive Infix Inspect Lemma Let Local Minimality ML Module Modules Mutual Node Opaque Parameter Parameters Print Proofs Prop Pwd Qed Remark Require Restart Resume Save Scheme Script Search Section Set Show Silent States Suspend Syntactic Theorem Token Transparent Tree Type TypeSet Undo Unfocus Variable Variables Write Other keywords and user's tokens The following sequences of characters are also keywords:  : := = ? ?? !? !! ! ? ; # * , ? @ :: / ! You can add new tokens with the command Token (see section 5.7.4). New tokens must be sequences, without blanks, of characters taken from the following list: ! ? / "  + = ; ,  ! @ # % & ? * : ~ $ a..z A..Z ' 0..9 that do not start with a character from $ a..z A..Z ' 0..9 Lexical ambiguities are resolved according to the "longest m...
Verifying Functional Bulk Synchronous Parallel Programs Using the Coq System
, 2003
"... The Bulk Synchronous Parallel ML (BSML) is a functional language for Bulk Synchronous Parallel (BSP) programming. It is based on an extension of the #calculus by parallel operations on a parallel data structure named parallel vector, which is given by intention. We present the formal proofs of c ..."
Abstract
 Add to MetaCart
The Bulk Synchronous Parallel ML (BSML) is a functional language for Bulk Synchronous Parallel (BSP) programming. It is based on an extension of the #calculus by parallel operations on a parallel data structure named parallel vector, which is given by intention. We present the formal proofs of correctness of BSML programs in the Coq proof assistant. Such development demonstrates the usefulness of higherorder logic in the process of software certification and parallel applications. They also show that proof of rather complex parallel algorithms may be made with inductive types by using the certified programs.
Synthesizing proofs from programs in the Calculus of Inductive Constructions
, 1994
"... In type theory, a proof can be represented as a typed term [Con86, NPS90]. There exist methods to mark logical parts in proofs and extract their algorithmic contents. The result is a correct program with respect to a specification. This paper focuses on the inverse problem : how to generate a proof ..."
Abstract
 Add to MetaCart
In type theory, a proof can be represented as a typed term [Con86, NPS90]. There exist methods to mark logical parts in proofs and extract their algorithmic contents. The result is a correct program with respect to a specification. This paper focuses on the inverse problem : how to generate a proof from its specification. The framework is the Calculus of Inductive Constructions [Coq85]. A notion of coherence is introduced between a specification and a program containing types but no logical proofs. This notion is based on the definition of an extraction function called the weak extraction. Such a program can give a method to reconstruct a set of logical properties needed to have a proof of the initial specification. This can be seen either as a method of proving programs or as a method of synthetically describing proofs. Keywords: program proving, extraction, Calculus of Constructions, lambdacalculus R'esum'e En th'eorie des types, une preuve peut etre repr'esent'ee par un terme t...
Proof of Imperative Programs in Type Theory
 In International Workshop, TYPES '98, Kloster Irsee
, 1997
"... Proofs of correctness of imperative programs are traditionally done in first order frameworks derived from Hoare logic [8]. On the other hand, correctness proofs of purely functional programs are almost always done in higher order logics. In particular, the realizability [10] allow to extract cor ..."
Abstract
 Add to MetaCart
Proofs of correctness of imperative programs are traditionally done in first order frameworks derived from Hoare logic [8]. On the other hand, correctness proofs of purely functional programs are almost always done in higher order logics. In particular, the realizability [10] allow to extract correct functional programs from constructive proofs of existential formulae. In this paper, we establish a relation between these two approaches and show how proofs in Hoare logic can be interpreted in type theory, yielding a translation of imperative programs into functional ones. Starting from this idea, we propose an interpretation of correctness formulae in type theory for a programming language mixing imperative and functional features. One consequence is a good and natural solution to the problems of procedures and sideeffects in expressions. Keywords: Program validation, Hoare logic, Realizability, Type Theory R'esum'e Les preuves de correction de programmes imp'eratifs sont ...