証明アシスタントを使用して数学的な証明を書きたいです。すべては、一次論理(平等)と自然推論を使用して記述されます。背景は集合論(ZF)です。たとえば、次の証明をどのように書くことができますか?
公理:
定理:
つまり、空のセットは一意です。
紙とペンを使ってそれを達成するのは簡単なことではありませんが、本当に必要なのは、証拠が正しいかどうかを確認するのに役立つソフトウェアです。
ありがとうございました。
証明アシスタントを使用して数学的な証明を書きたいです。すべては、一次論理(平等)と自然推論を使用して記述されます。背景は集合論(ZF)です。たとえば、次の証明をどのように書くことができますか?
公理:
定理:
つまり、空のセットは一意です。
紙とペンを使ってそれを達成するのは簡単なことではありませんが、本当に必要なのは、証拠が正しいかどうかを確認するのに役立つソフトウェアです。
ありがとうございました。
回答:
CoqとIsabelleの両方がこれを行うことができます。
[Coq] CoqがベースにしているCICでZFCをエンコードする方法を説明した論文があります。
Benjamin Werner:タイプのセット、セットのタイプ(1997)。 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.1709
[Isabelle] ZFのライブラリがあります。
http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/ZF/index.html
Kavehの提案でコメントから移動
まず、証明アシスタントを選択する必要があります。Coqは私が使用するものですが、他にもたくさんあります。Coqは、高階論理(いわゆる誘導構造の計算)に基づいています。他の証明アシスタントは、一次論理に基づいているため、ニーズにより適している場合があります(上記のコメントを修正してください)。
次に、証明アシスタントの学習に取り組む必要があります。リンクされたドキュメントは、Coqを活用するためのチュートリアルです。Coqの専門家になるには何年もの献身と実践が必要ですが、午後には簡単な定理が証明されます。Coqまたは他の証明アシスタントを学習するための鍵は、リンクされた論文にあるような証明を行うことです。プルーフアシスタントとやり取りするすべての経験を紙に伝えることができないため、論文を読むだけではほとんど役に立ちません。
数日以内に、上記のような単純な定理をエンコードし、それらを証明できるはずです。私たちがあなたのためにこれをすることを期待しないでください。あなたはそのように何も学びません。
これらの定理の証明に成功したら、ここに答えを投稿してください。そして、あなたの経験についていくつかコメントを残してください。
あなたは挑戦する準備ができていますか?
Dave ClarkeはCoqを提案しますが、実際にはIsabelleはZFのAライブラリがあるため、はるかに優れたアイデアのようです。イザベルも非常に成熟しており、さまざまな戦術と拡張機能が含まれています。
私は個人的にMizarを使用したことはありませんが、同様に良いかもしれません。
次の証明をどのように書くことができますか?
Isabelle / ZFでは、このようなものを書くことができます
theory csthquestion imports Main
begin
theorem empty_unique:
shows "\<forall> x.\<forall>y.(\<forall>z. (z\<notin>x)) \<and> (\<forall>z.(z\<notin>y)) \<longrightarrow> x=y"
by auto
end
ご覧のとおり、Isabelleはこれを自動的に証明します。もちろん、本当に必要な場合は、より詳細な証明を書くことができます。
この定理は、DC Proof 2.0ソフトウェアに含まれているチュートリアルの有効な例(例11を参照)です。私のウェブサイトhttp://www.dcproof.comから無料でダウンロードしてください。