タグ付けされた質問 「coq」

Coqはインタラクティブな定理の証明者です。

3
浅い埋め込みと深い埋め込み
CoqやIsabelleなどの証明アシスタントにロジックをエンコードする場合、浅い埋め込みと深い埋め込みのどちらを使用するかを選択する必要があります。浅い埋め込みでは、論理式は定理証明器のロジックに直接記述されますが、深い埋め込みでは、論理式はデータ型として表されます。 さまざまなアプローチの利点と制限は何ですか? 使用するものを決定するために利用可能なガイドラインはありますか? 2つの表現を体系的に切り替えることは可能ですか? 動機として、セキュリティ関連のさまざまなロジックをCoqにエンコードし、さまざまなアプローチの長所と短所を知りたいと思っています。


3
CoqにPropがあるのはなぜですか?
Coqには、関係のない命題のProp型があり、抽出中に破棄されます。Coqを証明にのみ使用する場合、これがある理由は何ですか。Propは命令型であるため、Prop:Propですが、Coqは自動的にユニバースインデックスを推測し、代わりにType(i)をどこでも使用できます。Propはすべてを複雑にしているようです。 Luoの本にはSetとPropを分離する哲学的な理由があると読みましたが、本にはそれらが見つかりませんでした。彼らは何ですか?

2
AgdaとCoqが厳密な肯定性に同意しないのはなぜですか?
私は、AgdaとCoqの間の紛らわしい不一致に出くわしました。これは、型理論間の最もよく知られている区別(たとえば、(im)predicativity、帰納再帰など)に明らかに関連していません。 特に、Agdaは次の定義を受け入れています。 data Ty : Set0 -> Set0 where c1 : Ty ℕ c2 : Ty (Ty ℕ) 一方、c2での[Ty _]自体のインデックスとしての出現は、厳密な陽性に違反すると見なされるため、同等のCoq定義は拒否されます。 Inductive Ty : Set -> Set := | c1 : Ty nat | c2 : Ty (Ty nat). 実際、このケースは、厳密な積極性に違反するCoq'Artセクション14.1.2.1の例のほぼ逐語的な例です。 Inductive T : Set -> Set := c : (T (T …
24 type-theory  coq 


1
Coq + Excluded Middleが一貫しているという証拠はどこにありますか
除外されたミドルの古典的な公理をCoqに追加するのが安全であると主張しました(そして聞いた)が、この主張を支持する論文を見つけることができないようです。Coq wikiで除外されたミドルについてリストされている私が見る論文は、命令セットとの矛盾を示しています。 確かに、Coquandは除外中東(の住人追加すると述べているようだ)彼のセクション4.5.3にCoC認証のための矛盾している記述のCoCのmetatheoryの(PDF)。しかし、このセクションは私にとっては少し難解ですので、私は彼を誤解しているかもしれません。A + ¬ AA+¬AA+\neg A

2
なぜ無限の型階層なのか?
Coq、Agda、およびIdrisには、無限のタイプ階層があります(タイプ1:タイプ2:タイプ3:...)。しかし、なぜその代わりλC、唯一の2種類、持っている構造の計算に最も近いですラムダキューブのシステムのようにそれをしない∗∗*と、及びこれらのルールを?◽◽◽ ∅⊢∗:◽∅⊢∗:◽\frac {} {∅ ⊢ * : ◽} Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)\frac {Γ ⊢ T _ 1 : s _ 1 \qquad Γ, \: x : T _ 1 ⊢ t : T _ 2} {Γ ⊢ (λ \: x : T _ 1, \: t) : (Π \: x : T _ …

1
Coqで証明の無関係性を証明しますか?
Coqで次の定理を証明する方法はありますか? Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2. 編集:「証拠の無関係性」とは何かについて簡単な説明をしようとする試み(間違っているか不正確な場合は誰かを修正する) 基本的な考え方は、命題の世界(またはPropCoq の種類)で、あなたが本当に気にするのは、命題の証明ではなく、命題の証明可能性であり、多くの(またはまったくない)かもしれないということです。証明可能性の観点から複数の証明がある場合、それらは同じ命題を証明するという意味で同等です。したがって、それらの区別はまったく関係ありません。これは、あなたが実際には2つの用語の違いを気に計算の観点からは異なり、例えば、基本的に、あなたは二住民たくないタイプ(またはすなわちコックの言葉で)、と等しくなるように。しかし、それらを入れると、それらは等しく扱われます。boolSettruefalseProp

3
型理論の帰納的定義における偏見の役割は何ですか?
私たちは、多くの場合、オブジェクト定義したいいくつかの推論規則に従って。これらのルールは、生成関数示すFが単調である場合、最小不動点得、μ Fを。私たちは取るA := μ Fの「誘導的な定義」であることをA。さらに、Fの単調性により、セットにAが含まれるとき(つまり、プロパティがAに普遍的に保持されるとき)を決定するために、「帰納の原理」を推論できます。A∈UA∈うんA \in UFFFμFμF\mu FA:=μFA:=μFA := \mu FAAAFFFAAAAAA Coqでは、これは、明示的な導入用語を使用してAの定義を記述することに対応します。この定義は特定の関数Fを示していますが、その関数は必ずしも単調ではありません。したがって、Coqはいくつかの構文チェックを使用して、定義の「整形式」を保証します。近似的に、それはの発生を拒否しますInductiveInductive\mathtt{Inductive}AAAFFFAAA的には、導入用語のタイプの負の位置でのます。 (これまでの私の理解に欠陥がある場合、私を修正してください!) 最初に、Coqのコンテキストでのいくつかの質問: 1)Coqの構文チェックは、の定義がAAA述語ですか?(もしそうなら、定義が不明確になる唯一の方法は不可逆性ですか?)それとも単調性をチェックしていますか?(それに対応して、非単調性はそれを殺すかもしれませんか?) 2)そのような否定的な発生は、必然的にAAAAAAAの定義はimpredicative /非単調ですか?または、その場合にCoqが明確に定義されていることを確認できませんか? より一般的に: 3)帰納的定義の偏見とその定義の生成関数の単調性との関係は何ですか?それらは同じコインの両面ですか?それらは無関係ですか?非公式に、どちらが重要ですか?

2
Coq証明でのcofixの排除
Coqの共誘導型を使用していくつかの基本的なプロパティを証明しようとすると、次の問題にぶつかり続け、回避できません。次のように、単純なCoqスクリプトに問題を抽出しました。 タイプTreeは、タイプAの要素でラベル付けされたブランチを持つ無限ツリーを定義します。ブランチは、すべての要素のために定義する必要はありませんA。値Univは、すべてのAブランチが常に定義されている無限ツリーです。isUnivは、指定されたツリーがUnivと等しいかどうかをテストします。補題は、UnivがisUnivを実際に満たしていると述べています。 Parameter A : Set. CoInductive Tree: Set := Node : (A -> option Tree) -> Tree. Definition derv (a : A) (t: Tree): option Tree := match t with Node f => f a end. CoFixpoint Univ : Tree := Node (fun _ => Some Univ). CoInductive isUniv …

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

1
Coqの2つの引数に帰納的に関数を定義する方法は?
以下に示す再帰関数が終了することをCoqに納得させるにはどうすればよいですか?この関数は、2つの帰納的引数を取ります。直感的に、どちらかの引数が分解されるため、再帰は終了します。 具体的には、この関数は入力として2つのツリーを取ります。 Inductive Tree := | Tip: Tree | Bin: Tree -> Tree -> Tree. Treesでは、次のスタイルの誘導を行うのが好きです。 Inductive TreePair := | TipTip : TreePair | TipBin : Tree -> Tree -> TreePair | BinTip : Tree -> Tree -> TreePair | BinBin : TreePair -> TreePair -> TreePair. Fixpoint pair (l …

4
依存型理論におけるモデリングオブジェクト(OOP)
私は、オブジェクト指向プログラミングから、依存型理論におけるオブジェクトのモデリングに興味があります。可能なアプリケーションとして、命令型プログラミング言語のさまざまな機能を説明できるモデルが必要です。 依存型理論におけるオブジェクトのモデリングに関する論文は1つしか見つかりませんでした 。A。Setzerによる依存型理論におけるオブジェクト指向プログラミング(2006) 私が見逃したトピックに関するさらなる参照はありますか、おそらく最近のものがありますか? CoqやAgdaのような定理証明者に利用可能な実装(すなわち証明)はおそらくありますか?


3
タイプチェッカーの正当性の証明は実際に何を証明すべきですか?
私は数年プログラミングをしてきましたが、理論上のCSにはあまり慣れていません。私は最近プログラミング言語を研究しようと試みており、その一環として、型チェックと推論を行っています。 私の質問は、プログラミング言語の型推論およびチェックプログラムを作成しようとして、タイプチェッカーが機能することを証明したい場合、私が探している証拠は何ですか? 平易な言葉で言えば、実行時に発生する可能性のあるコードの一部のエラーをタイプチェッカーで識別できるようにしたいと思います。Coqのようなものを使用して私の実装が正しいことを証明しようとした場合、この「正確性の証明」は何を表示しようとするのでしょうか。

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