タグ付けされた質問 「proof-assistants」

6
自動定理証明の学習
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 これらのトピックは、(数学的な)ロジックの背景なしでは簡単に要約できないことに注意してください。基本用語に問題がある場合は、M。HuthとM. Ryanによるコンピューターサイエンスのロジック(特に、第1章、第2章、第4章)またはPによる数学論理と型理論の紹介を読んでください。アンドリュース。 高次ロジック(HOL)の簡単な紹介については、こちらを参照してください。 私はCoqを見て、とりわけイザベルへの導入の最初の章を読みました。自動定理証明の種類 私は数十年にわたってPrologを知っていて、現在F#を学んでいるので、ML、O'Caml、およびLISPはボーナスです。Haskellは別の獣です。 私は次の本を持っています アラン・ロビンソンとアンドレイ・ボルンコフによる「自動推論のハンドブック」 ジョン・ハリソンによる「実践的論理と自動推論のハンドブック」 フランツ・バーダーとトビアス・ニプコウによる「用語の書き換えとすべて」 CoqとIsabelleの違いは何ですか? IsabelleまたはCoq、またはその両方を学習する必要がありますか? イザベルまたはCoqを最初に学習することには利点がありますか? ここでシリーズの次の質問を見つけます。

2
入れ子になったコンポーネントを持つ帰納的なタイプの再帰的な定義
入れ子になっているが厳密に正の場所で再帰的に発生する誘導型を考えてください。たとえば、一般的なリストデータ構造を使用して子を格納するノードを使用した有限分岐を持つツリー。 Inductive LTree : Set := Node : list LTree -> LTree. これらのツリーとツリーのリストを再帰的に再帰的に定義する単純な方法は機能しません。以下sizeは、ノードの数を計算する関数の例です。 Fixpoint size (t : LTree) : nat := match t with Node l => 1 + (size_l l) end with size_l (l : list LTree) : nat := match l with | nil => 0 | cons …

1
自動定理証明の種類
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 関連する自動定理証明者はどれですか?定理証明のレビューを見つけました これはまだ最新ですか? どれがまだ非常にアクティブであるか、つまり、それを作成したグループ以外で現在使用されているのはどれですか? ここでシリーズの次の質問を見つけます。

4
仕様からコンピュータプログラムを書くシステムを実際に作成した人はいますか?
コンピュータプログラムを生成するシステム(ソフトウェアまたは簡単な例を含む紙の詳細な説明)を実際に書いた人はいますか?I入力、それがリスト素数10未満ことプログラム作成 のP rがiは、mは、E (Xの)単にように定義される 1 &lt; X ∧ ∄ APrime(x)∧x&lt;10Prime(x)∧x&lt;10Prime(x) \wedge x<10Prime(x)Prime(x)Prime(x) 教授は、彼らができると言う誰も実際の完全な例を与えません。1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1&lt;x∧∄As.t.1&lt;A∧A&lt;x∧x=A×B, with A,B∈N1<x \wedge \not\exists A\; s.t. 1<A \wedge A<x \wedge x=A\times B,\mbox{ with } A,B\in \mathbb{N}

3
推論エンジンにとって統一がなぜそれほど重要なのですか?
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 私は統一アルゴリズムについて読み続けています。 それは何で、なぜ推論エンジンにとってそれほど重要なのですか? なぜコンピューターサイエンスにとってこれほど重要なのですか?

2
なぜ一部の推論エンジンには人間の支援が必要なのに、他の推論エンジンには必要ないのですか
私は自動定理証明 / SMTソルバー / 証明アシスタントを自分で学んでおり、ここからプロセスに関する一連の質問を投稿しています。 自動化された定理証明者、つまりACL2とSMTソルバーが人間の支援を必要としない一方で、証明アシスタント、つまりイザベルとCoqは必要ないのはなぜですか? ここでシリーズの次の質問を見つけます。

4
プルーフの階層のリポジトリはありますか?
私は自己学習のプルーフアシスタントであり、いくつかの基本的なプルーフから始めて、さらに上に進むことを決めました。プルーフは他のプルーフに基づいているため、階層を形成するため、プルーフの階層のリポジトリはありますか? 特定の証明アシスタントを選択し、そのライブラリを分析してその階層を抽出できることは知っていますが、証明するためにチェーン内の次の証明を見つけたい場合、それがライブラリにない場合は見つけることができません。 私の頭の中では、おそらく写真を使った証明ではなく、英語のステートメントを使って表現できる既知の数学的証明のすべてのグラフ、おそらくDAG を描きます。これはマスターマップ(ある地点から始まり、中間地点を経由して別の地点に移動するという意味のマップ)であり、特定の証明アシスタントの場合、マスターマップのサブグラフがあります。次に、サブグラフ上ではなくマスター上にある証明アシスタントを使用して証明を作成したい場合、2つのグラフを比較することで、証明アシスタントの欠落している証明の作成に必要な作業のアイデアを得ることができます。 数学的な証明は、証明アシスタントで使用するために必ずしも簡単に変換できるわけではないことを承知していますが、何をするかについての一般的な考えは、まったくないよりもはるかに優れています。 また、マスターマップを作成することで、ある地点から他の地点までの複数のパスがあるかどうかを確認し、特定の証明アシスタントが受け入れやすいパスを選択できます。 編集 検索で数学関数に類似するものを見つけました。NISTで証明用のものを見つけられませんでした

1
「CPS」アプローチは、SML / NJのパフォーマンスに大きな悪影響を与えました。推論が望ましい
Learning F# へのコメント:関数の概念を学ぶために、他のプログラミング言語を使用してF#に翻訳できる書籍はどれですか。マカリウスは述べた: 「CPS」アプローチは、SML / NJのパフォーマンスに大きな悪影響を与えていることに注意してください。その物理的評価モデルは、ハードウェアに組み込まれているあまりにも多くの仮定に違反しています。Isabelle / HOLのようなSMLの大きなシンボリックアプリケーションを使用する場合、CPSを使用したSML / NJは約5倍になります。従来のスタックのPoly / MLよりも100倍遅い。 誰かがこの理由を説明できますか?(できればいくつかの例で)インピーダンスの不一致はありますか?

2
Coqの定理証明
バックグラウンド 私はCoqだけで支援を学んでいます。これまでのところ、急いでイヴベルトットのコックを読み終えました。現在、私の目標は、いわゆる除算アルゴリズムで終わる、自然数に関するいくつかの基本的な結果を証明することです。しかし、私はその目標に向かう途中でいくつかの後退に遭遇しました。特に、次の2つの結果は、私が最初に想像したよりもCoqで証明するのが難しいことを示しています(しゃれた意図)。実際、多くの実りのない試みの後、私はそれらを手動で証明する手段を講じました(以下に示すように)。これは明らかに、私がCoqの処理に習熟するのに役立つわけではありません。これが私がこのフォーラムを利用する理由です。私の希望は、このサイトの誰かが有能で喜んでいることです下記の証明をCoqが受け入れる証明に変換するのに役立ちます。すべての助けに心から感謝しています! 定理A すべてのための証明:x,y∈Nx,y∈Nx,y \in N x&lt;S(y)⊂x&lt;y∨I(N,x,y)x&lt;S(y)⊂x&lt;y∨I(N,x,y)\begin{equation} x < S(y) \subset x < y \lor \text{I}(N,x,y) \end{equation} と仮定します。したがって、と ため、(Peano 1bおよび3)x&lt;S(y)x&lt;S(y)x < S(y)z∈Nz∈Nz \in NI(N,x+S(z),S(y))(*)(*)I(N,x+S(z),S(y))\begin{equation} \text{I}(N,x+S(z),S(y)) \tag{*}\end{equation}I(N,x+z,y)I(N,x+z,y)\begin{equation} \text{I}(N,x+z,y) \end{equation} 述語を定義しQ(u):=(I(N,x+u,y)⊂x&lt;y∨I(N,x,y)Q(u):=(I(N,x+u,y)⊂x&lt;y∨I(N,x,y)\begin{equation} Q(u):=(\text{I}(N,x+u,y) \subset xy¬I(N,x,y)¬I(N,x,y)\neg \text{I}(N,x,y)x&gt;yx&gt;yx>y y&gt;xy&gt;xy>xI(N,x,y)I(N,x,y)\text{I}(N,x,y) 我々は維持上に固定し、入会を。場合我々は全てに対して基本ケースを証明します。次に、定理がについて成立するとします。ここで、定理を証明したいと思います。のトリコトミーから、と 3つのケースがあり。もし、次いで明確。もし、次いで、(ASのためのすべて)。最後に、yyyxxxI(N,0,y)I(N,0,y)\text{I}(N,0,y)0&lt;y∨I(N,0,y)0&lt;y∨I(N,0,y)0 < y \lor \text{I}(N,0,y)yyyxxxS(x)S(x)S(x)xxxx&lt;y,I(N,x,y)x&lt;y,I(N,x,y)xyx&gt;yx&gt;yx>yS(x)&gt;yS(x)&gt;yS(x) >yI(N,x,y)I(N,x,y)\text{I}(N,x,y)S(x)&gt;yS(x)&gt;yS(x) >yS(x)&gt;xS(x)&gt;xS(x) >xx∈Nx∈Nx\in \mathbb{N}x&lt;yx&lt;yx <y次に、定理Aによってまたはが得られ、どちらの場合も完了です。 S(x)&lt;yS(x)&lt;yS(x) < yI(N,S(x),y)I(N,S(x),y)\text{I}(N,S(x),y)(□)(◻)\begin{equation} \tag{$\square$} \end{equation} …

1
型システムは、外部関数の証明アシスタントとして機能できますか?
とすれば: 非常に表現力豊かな型システムを持つ言語(例:Idris)は、外部関数インターフェース/ unsafePerformIOのようなエスケープメカニズムを持つこともできます。 これらのプロパティを表現できる型システムがない言語で書かれたプログラムのいくつかのプロパティを証明するために使用できる証明アシスタントがあります。 Curry–Howardの対応は、特定の型の関数の型チェックが正常に実装されていることが、その型で表現されているものの証明であることを示しています。 母国語の型システムで外国語コードのいくつかのプロパティの自明でない証明を表現できますか? たとえば、すでに等しい要素の順序を維持しながら数値を非常に賢く効率的な方法でソートするstable_qsortと呼ばれるC関数と、FFIを介してstable_qsortを呼び出すIdrisプログラムがあるとしますが、これは比較的あいまいですC関数。別の証明アシスタントを使用する代わりに、関数がすべての入力に対して、イドリスコードで等しい要素を並べ替えないことを証明できますか?

1
Coqは合成ですか、それとも分析ですか?
CMUのHoTTコースの講義1で、ここにあります:https ://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=0945cc7f-48b7-4803-81af-e7193a3f461d ハーパーは33:52に、合成理論と分析理論を並行して比較し、PL理論に到達したとき、Coqは分析的であり、Coqは文法で言語を証明するだけでパーサー自体は証明しないと述べた。 私はどういうわけか反対することを強く望んでいますが、なぜそれをしたいのか明確な考えがありません。Coqは非常に総合的であり、依存型理論に基づく他の証明アシスタントもそうだと思います。これらの言語はすべてプログラムをビルドするだけなので、また、たとえば型クラスを使用してCoqで公理代数を表現し、必要に応じて具体化することもできます。このパターンは特にAgdaに当てはまります。 だから私の質問は、ハーパーは正しいのですか?彼が正しい場合、私の見解のどの部分が私の誤解を引き起こしますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.