Revision e3862ce7468552c8a353af42c2e26cbe428b8029

CoqExtraction/Letouzey

#Certified functional programming Program extraction within Coq proof assistant

these_letouzey_English.ps.gz

##Acknowledgments ##Introduction

###The need for certified programs Today, it is obvious to say that software occupies a dominating place in our modern socienties, including in critical roles. The list of these missions of confidence now filled by programs lengthens unceasingly. It can be a matter of controlling high-risk equipments like planes or nuclear thermal power stations, but it can also be more prosaic operations like the management of electronic payments. In any case, whether human lives or money are in questions, the stakes are huge.

今日、ソフトウェアが重大な役割に含む私たちの現代のsocientiesの中で支配する場所を占領すると言うことは明白です。今、プログラムによって満たされた確信のこれらの使命のリストは、不断に延長します。それは、飛行機あるいは核火力発電所のようなハイリスクの設備をコントロールする問題でありえます。しかし、さらに、それは電子支払いの管理のようなより単調なオペレーションでありえます。どんな場合も、人命または金銭が質問中でも、棒は巨大です。

The Curry-Howard isomorphism

The extraction in Coq

The contributions of this thesis

Complete support of the universes

Solving the typing problems

Correctness of strict evaluation

Support of the system’s evolutions

Modules and interfaces

Our contributions in brief

Comparison with other extraction systems

Deletion of logical parts in proofs

Translation to a true functional language

Summary

This work begins with a progressive introduction to the Coq proof assistant. The first part of the chapter 1 presents via examples the principal features of this system, and in particular those which influence the extraction. The second part of this chapter exposes more formally the CIC, which is Coq’s underlying theoretical system.

この仕事は耐Coq性の助手への進歩的な入門から始まります。章1の最初の部分は、例によってこのシステムの主要な特徴を示します、そしての中で、特別、抽出に影響を及ぼすもの。本章の第2の部分はCICをより形式的に露出します。それはCoqの根本的な理論体系です。

After this brief review of Coq and CIC, we start a first half of this manuscript dedicated to the presentation of our new extraction. The chapter 2 first of all present our redesign of the extraction function E for terms, and complementary two proofs of its correctness. The first proof is syntactic proof stating that reduction of extracted terms cannot not fail, the second proof is a semantic proof ensuring the correctness of extracted terms with respect to theirs specifications.

CoqとCICのこの短レビューの後、私たちは、私たちの新しい抽出のプレゼンテーションに専心的なこの原稿の前半を始めます。章2は、第一に期間の抽出関数Eの私たちのデザイン変更およびその正確さの補足的な2つの証拠を示します。最初の証明は抽出された用語の縮小が失敗しないわけではない場合があると述べる構文的な証明です、第2の証明は、それらのものに関して抽出された用語の正確さを保証する意味的な証明です、仕様書。

The chapter 3 is then dedicated to the typing of the extracted terms. We start by studying in detail, which kind of non-typability the extracted terms may presents in a ML-like typing system, then we propose a solution for skirting these difficulties.

その後、章3は抽出された用語のタイピングに専心的です。私たちは詳細に勉強することにより出発します、どの種類の非kind、抽出された用語はするかもしれません、MLのようなタイプするシステムでその後示す、私たちはこれらの障害の回避のためにソリューションを提案します。

Lastly, the chapter 4 supplements the description of our new extraction by presenting the last aspects of our work: extraction of modules, of co-inductive types, of record types, and lastly optimization of the extracted code. Finally we briefly present the implementation carried out, from both developer’s and user’s point of view.

結局、章4は、私たちの仕事の最後の様相を示すことで私たちの新しい抽出の記述を補います:共同誘導のタイプのレコード形式のモジュールおよび結局抽出されたコードの最適化の抽出。最後に、私たちは、開発者とユーザ両者の視点から見て、行なわれたインプリメンテーションを簡潔に示します。

The chapter 5 starts the second half of the manuscript, devoted to case studies. In this chapter, we first review the users contributions from the point of view of extraction, these users contributions forming an already consequent library of examples of Coq developments. Then we detail the case of two of these contributions, which put at fault the old extraction: the first on exceptions by continuations, due to J. -F. Monin, and the second on Higman’s lemma, by H. Herbelin.

章5は、事例研究に専念して、原稿の後半を始めます。本章では、私たちは、最初に抽出の視点から見てユーザ貢献を調査します(Coq開発の例の既に必然のライブラリーを形成するこれらのユーザ貢献)。その後、私たちは、これらの貢献のうちの2つの場合を詳述します。それは古い抽出を故障したように置きます:J.-Fによる継続による例外上の1番目。モニン、およびHigmanのH.Herbelinによる外花穎上の第2。

The chapter 6 gives a progress report on an ambitious project consisting in developing a library of arithmetic real exact by extraction of a development of constructive real analysis. The development in question if the C-CoRN project at the university of Nijmegen. We will see that one is still far from the goal, but that at the same time enormous progress were already accomplished. In addtion, we present a small alternative expreimentation around constructive reals made in collaboration with H. Schwichtenberg.

章6は、建設的な実物分析の開発の抽出によってまったく正確な算術の図書館の開発にある大がかりなプロジェクト上の経過報告書を示します。C-CoRNがナイメーヘンの大学で突き出るかという疑問での開発。私たちは、一つがゴールからまだ遠いように取り計らうでしょう、しかしその同時に巨大な進行、既に遂行されていました。addtionでは、私たちは、H.Schwichtenbergと共同で作られた建設的な実数のまわりの小さな代替のexpreimentationを示します。

Lastly, the chapter 7 presents the certification of the Ocaml library of finite sets which we carried out in collaboration with J. -C. Filliatre. This development is one of first to combine modules, functors and extraction.

結局、章7は、私たちがJ.-Cと共同で行なった有限集合のOcaml図書館の証明を示します。Filliatre。この開発はモジュール、関数定数および抽出を組み合わせるために1位のうちの1つです。

##Syntactic conventions

#Table of Contents - 1. A presentation of Coq - 2. The extraction of Coq terms - 3. Typing the extracted terms - 4. Extraction in practice: refinements and implementation - 5. Examples of extraction - 6. Constructive reals and extraction - 7. A formalization of finite sets - Conclusion