45

誰かがZ3とcoqの違いを教えてくれるかどうか疑問に思っていますか?coqは、ユーザーが証明手順を入力する必要があるという点で証明アシスタントであるように思われますが、Z3にはその要件がありません。しかし、coqにもZ3と同様の自動戦術があるようです。それとも、coqの証明検索機能はZ3ほど強力ではありませんか?

4

1 に答える 1

79

Coqは、インタラクティブな定理証明者(別名証明アシスタント)です。数学的な定義、アルゴリズム、定理を書くための言語を提供します。また、マシンでチェックされたプルーフを作成するための環境も提供します。Coqは、数学的定理を形式化し、プログラミング言語のセマンティクスを提供するために使用されてきました。今日、私たちはCOqを使用したPOPLで多くの論文を見つけることができます。将来、Coqなどのシステムが数学者によって広く使用されると主張する人もいます。この記事には、数学の正式な証明について説得力のある議論があります。最近、Georges Gonthier はCoqを使用して、4色定理の調査可能な証明を作成しました。Coqには小さな信頼できるコアがあり、高い保証を提供します。

Z3は、SMT(satisfiability modulo理論)ソルバーです。その言語は、算術、ビットベクトル、データ型、配列など、多くのソートされた1次論理+理論です。この言語は、Coqで使用されている言語ほど表現力がありません。Z3は、Coqのようなプルーフ管理もサポートしていません。Z3は、主にソフトウェアのテストと検証に使用されます。また、制約の解決、問題の計画、パズルなどにも使用できます。充足可能な式のモデル(つまり、ソリューション)を見つけることに大きな重点が置かれています。この記事では、Microsoftおよびその他の場所にある多くのZ3アプリケーションについて説明しています。Z3は本質的に自動定理証明者です。Z3では、戦術を使用してドメイン固有の戦略を指定します。つまり、特定のアプリケーションドメインの問題に対してカスタマイズされたソルバーです。Z3は、個別にチェックできる証明/証明書を作成できます。ただし、プルーフの生成はZ3プロジェクトの主な焦点ではありません。さらに、多くのモジュールはプルーフ生成をサポートしていないため、ユーザーがプルーフ生成を要求した場合は無効にする必要があります。Z3はIsabelleなどの証明アシスタントにも統合されており、一部はZ3をCoqに統合することに取り組んでいます。アイデアは、非常に表現力豊かな言語と非常に優れた自動化という、両方の長所を生かすことです。Z3は、より大規模なアプリケーションに組み込むことができる論理推論エンジンと見なすこともできます。実際、これまでのすべてのZ3アプリケーションに当てはまります。エンドユーザーはZ3を直接使用しません。Isabelle、 Pexなどのツールの中に隠されています。VCCなど。Z3用の新しいPythonフロントエンドはそれを変更しようとします。

于 2012-07-17T23:03:32.253 に答える