CoqExtraction/LetouzeyOverview/1

1 Introduction

This article describes the current status of the extraction mechanism available in the Coq proof assistant [7, 8]. The extraction mechanism of Coq is a tool for automatic generation of programs out of Coq proofs and functions. These extracted programs are expressed in functional languages such as Ocaml, Haskell or Scheme, these three languages being the ones currently supported by Coq extraction. The main motivation for this extraction mechanism is to produce certied programs: each property proved in Coq will still be valid after extraction.

この記事は、耐Coq性の助手[7および8]において利用可能な抽出メカニズムの現在のステータスについて記述します。Coqの抽出メカニズムは、Coq証拠および機能からのプログラムの自動生成用のツールです。これらの抽出されたプログラムは、Ocaml、ハスケルあるいはスキームのような関数型言語の中で表現されます(Coq抽出に現在支援されたものであるこれらの3つの言語)。この抽出メカニズムの主な動機はcertiedされたプログラムを作成することです:Coqの中で証明された財産はそれぞれまだ抽出の後に有効になります。

Through a series of examples about Euclidean division, we will review several alternatives that allow the user to express in Coq an algorithm that does not fit naturally in this system. We will also see how these alternatives influence the shape of the program obtained by extraction. We will then mention two advanced situations that illustrate the fact that Coq’s current extraction can handle any Coq objects, even the ones defined via high-end features of Coq and without direct counterpart in Ocaml or Haskell. We will summarize the key features of Coq extraction, mention some significant Coq developments taking advantage of the extraction, and conclude on the current strengths of this tool, its limitations and future research perspectives.

ユークリッドの区分に関する一連の例によって、私たちは、Coqの中でユーザがこのシステムに当然入らないアルゴリズムを表現することを可能にするいくつかの選択肢を調査するでしょう。さらに、私たちは、これらの選択肢が抽出によって得られたプログラムの形にどのように影響を及ぼすか分かるでしょう。その後、私たちは、2がCoqの現在の抽出がどんなCoqオブジェクトも扱うことができるという事実どころかOcamlにCoqの高額の特徴によって、および直接の相当物なしで定義されたものあるいはハスケルを説明する状況を進めたと言うでしょう。私たちは、Coq抽出の重要な特徴を要約し、抽出を利用するいくつかの著しいCoq開発に言及し、このツール、その制限および将来研究展望の電流の強さの上で終えるでしょう。