CoqのOCamlの形式的なセマンティクス


14

OCamllightと呼ばれるOCamlの大きなサブセットのセマンティクスは、数年前にOwensによってHOLで形式化されました。最近、OCamlのより小さなサブセットの型理論セマンティクスが、Kreitz 、Hayden、およびHickeyによってNuprlに実装されました。

Coqに同様の開発はありますか?


CakeML:cakeml.orgに興味があるかもしれません。ただし、特にOCamlではありません。
-jmite

回答:


12

ArthurCharguéraudの博士論文、機械化プログラム検証の特性式を見たことがありますか?

型システムと小さなステップのセマンティクスを帰納的関係として構築するのではなく、Camlプログラムを特性式に変換する手法を提供します。これは基本的に、Ocamlの非常に大きなサブセットをサポートするための述語トランスフォーマセマンティクスの一般化ですObj.magic。特に、のような安全でないキャストを含みます。彼の論文から引用するには:

私はOCamlプログラミング言語のサブセットに焦点を当てました。これは、シーケンシャルな、値渡しの、高レベルのプログラミング言語です。CFMLの現在の実装は、高次関数、再帰、相互再帰、および多相再帰を含むコアλ計算をサポートしています。タプル、データコンストラクタ、パターンマッチング、参照セル、レコード、配列をサポートしています。nullポインターと強力な更新のサポートを追加する追加のCamlライブラリーを提供します。

特定のCamlプログラムが正しいことを証明したい場合、非常に魅力的なアプローチです(ただし、そのメタ理論に興味がある場合はそうではありません)。


したがって、私が正しいことを理解すれば、Ocamlのセマンティクスの仕様がシステムに組み込まれます。(システムのいくつかの重要な機能)システムの特性式をそのような仕様として解釈することは可能ですか?また、システムはOCamlで書かれていると思います。システム自体でその正確性を特定し、証明することは可能ですか?
アンドレアアスペルティ

特定のOCamlプログラムでは、その特徴的な式は、プログラムの望ましい特性を証明するために使用できる「最も一般的でない」仕様である表示的意味論と考えることができます。CFML自体の「正確さ」について話す場合、質問は次のとおりです。どの代替形式のセマンティクスに関して?
ガッシュ

ソフトウェアを認定することになっていて、その動作を指定できないプログラムがあるのは奇妙です:)
アンドレアアスペルティ

@AndreaAsperti「システムに組み込まれている」とはどういう意味ですか?特性式(CF)の背後にある考え方は非常に簡単です。論理式(通常は事前条件と事後条件)にプログラムをマッピングし、式がプログラムのセマンティクスを正確に記述するようにします。言い換えれば、2つのプログラムは、文脈上区別できない場合に限り、同じCFを満たします。プログラムからCFへのマップは、プログラムの構造の誘導によって行われ、十分に表現力のあるロジックをターゲットにすることができます。A.CharguéraudターゲットのCoqのロジックですが、それは偶発的な選択です。
マーティンバーガー

1
@MartinBerger:Guéneauet alの論文は、派生したpre / postが派生したプログラムを特徴付けていないため、健全性のみを証明しています。CFは型付けされていないCakeMLのセマンティクスから派生していますが、型付けされた言語には異なる観測的等価性があります。(実際の検証では、これはそれほど重要ではなく、簡単です。)
ニールクリシュナ

8

ジャック・Garrigueの者に興味がすることができ、構造多型と再帰型とMLのA認定の実装静的および動的なセマンティクスの健全性確立、およびこれの1を形式、(再帰と)構造多型を有するML言語のための型推論の性質をOCamlのより高度なコーナー(ポリモーフィックバリアントとオブジェクトタイプ)。

とはいえ、この作業は、既存のOCamlプログラムの機能セットをカバーすることよりも、型システムのより高度な部分の健全性を検証することをより目的としています。既存のOCamlプログラムの正しさを証明しようとするという点では、CFMLの方が良い選択だと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.