λ
しかし、最初に、おそらくさまざまな問題を解き明かそうとする必要があります。Coqの対話型定理証明器は、基礎となる型理論に基づいており、時には愛を込めて宇宙を伴う帰納的構成の計算と呼ばれます。これは、単に「計算の計算」というよりも口いっぱいのものであり、実際、CoCだけでなく他にも多くのものがあります。特に、どの機能がCoC固有であるかについて正確に混乱していると思います。特に、Set / Propの区別とユニバースはCoCには表示されません。
ここではPure Type Systemsの完全な概要を説明しませんが、重要なルール(CoCのような機能的なPTSの場合)は次のとおりです。
Γ ⊢ A :SΓ 、X :A ⊢ B :KΓ ⊢ Πは、xは:Aを。B :k (S 、K )∈ R
s 、kS(s 、k )RS
SRΠは、xは:Aを。B
S
{ ∗ 、□ }
R = { (∗ 、∗ )、(□ 、□ )、(□、∗ )、(∗ 、□ )}
したがって、4つの異なる目的に対応する4つのルールがあります。
(∗ 、∗ )
(□ 、□ )
(□ 、∗ )
(∗ 、□ )
これらのそれぞれについて詳しく説明します。
A → BΠは、xは:Aを。BバツB
∗nトンbO O Lx = yバツy∗
タイプファミリー:これはあなたに家族について話す能力を与えますリットルのI S Tl i s t:∗→∗lI S TN トン、L I s tB O O L∗ → ∗(□ 、□ )
ΠのT :* 。t → t
λ (t :∗ )(x :t )。バツΠのT :* 。_(□ 、∗ )t → t(∗ 、∗ )
A ∧ B := Π T :* 。(A → B → t )→ t
A ∨ B := Π T :* 。(A → t )→ (B → t )→ t
⊥ := Π T :* 。t
⊤ := Π T :* 。t → t
∃ X :A 。P (X ):= Π T :* 。(Π Y :A 。P (y)→ t )→ t
(∗ 、□ )
∗∗(□ 、∗ )
(□ 、□ )
Πc:∗→∗. c nat→c nat
依存型:これは、型としての命題パラダイムを機能させる方法です。実際、すべての可能な証明を表す型が必要です。0=1
= : nat→nat→∗
= : Πt:∗. t→t→∗
nat→nat→∗(∗,□)
わかりましたが、宇宙はどうですか?CoCでは、実際に次のようなことを書くことができないことがわかります□→□□ □□ii=1,2,3,…□i:□i+1
(□i,□i)
Γ⊢A:□iΓ⊢A:□j i≤j
これらの余分なソートやルールを使用すると、何かを取得しませ PTS、何かの近くに。これは、(ほぼ)拡張構造計算法であり、Coqの基底に近いものです。ここでの大きな欠落部分は誘導型であり、ここでは説明しません。
編集:機能的なプログラミング言語の中間表現の良い候補であるPTSを記述することにより、PTSのフレームワークにおけるプログラミング言語のさまざまな機能を記述するかなり良いリファレンスがあります:
Henk:型付き中間言語、SPジョーンズ&E.メイジャー。
soft-question
。ここには実際に技術的な質問はありません。おそらく、あなたが求めていることに関してもう少し具体的になることができますか?