タグ付けされた質問 「dependent-types」

型理論と型システムの重複する特徴。

3
依存型と改良型
誰かが依存型と絞り込み型の違いを説明できますか?私が理解しているように、絞り込み型には、述語を満たす型のすべての値が含まれます。それらを区別する依存型の機能はありますか? それが役立つ場合、Liquid Haskellプロジェクトを介して洗練された型、CoqおよびAgdaを介して依存型に出会いました。とはいえ、私は理論がどのように異なるかについての説明を探しています。

1
依存型の型推論を決定できないのはなぜですか?
依存型システムは推論可能ではないが、確認可能であることを述べました。なぜそうなのか、また、型が値によってインデックス付けできる「依存性」の限界があるかどうか、それより下では型推論が可能で、それより上ではできないという簡単な説明があるのだろうかと思いました。

2
イドリスはチューリングの完全性をあきらめることで何ができないのでしょうか?
Idrisには依存型があることは知っていますが、完全にはチューリングしていません。チューリングの完全性をあきらめることで何ができませんか?これは依存型を持つことに関連していますか? これは非常に具体的な質問だと思いますが、依存型と関連する型システムについてはあまり知りません。

1
推論を決定できる最も強力な既知の型システムは何ですか?
Hindley-Milner型推論(多型を持つ単純に型付けされた -calculus)には決定可能な型推論があることはよく知られています:注釈なしでプログラムの基本型を再構築できます。λλ\lambda Haskellスタイルのタイプクラスを追加すると、この決定可能性が保持されるように見えますが、さらに追加すると、注釈のない推論が決定不能になります(タイプファミリー、GADT、依存タイプ、ランクNタイプ、システムなど)ωω\omega 私は疑問に思っています:完全に決定可能な推論を持つ最も強力な既知の型システムは何ですか?Hindley-Milner(完全に決定可能)と依存型(完全に決定不能)の間のどこかにあります。推論の決定可能性を保持する追加可能なDTの側面はありますか?これをどれだけプッシュできるかを調べるために、どのような研究が行われましたか? 単一の最強システムは存在せず、推論を維持しながらHMに追加できる無限の小さな増分的な変更が存在する可能性が高いことを認識しています。しかし、システムの実用的な候補がいくつか発見されている可能性があります。 編集:「最強の」システムがないことを考えると、決定可能な推論でHindley Milnerを拡張する注目すべきシステムの概要を示す回答を受け入れます。例としては、液体タイプ、ランク2などがあります。


1
Dependent type、refinement typeおよびHoare Logicの違い
私はほとんど依存型理論を知っていません。ウィキペディアから: 依存型とは、定義が値に依存する型です。 そして、私のタイプ理論のコースから、依存型は次のとおりであることを思い出します: タイプによってインデックス付けされたタイプのファミリー。 しかし、私は依存型と絞り込み型とhoareロジックに関して混乱しています。 Depenedentとリファインメントタイプから、リファインメントタイプはHoareロジックのように見えるためです。満たさなければならない述語を述べることを許可する以外に、さらに多くの電力調整タイプが提供します(Hoare Logicとほぼ同じように見えます)。 依存型は、絞り込み型と比較してどのような追加物を提供しますか?依存型は、洗練型+飽和/制約ソルバーよりも強力です。 誰でも例で空気をきれいにすることができます。

2
「最小限の」直観主義型理論?
型理論に人々が新しい型を追加し続けていることに驚いていますが、最小理論について言及している人はいないようです(または、私はそれを見つけられません)。数学者は最小限のものが大好きだと思いませんか? 私が正しく理解すれば、命令型のPropλ-abstractionとΠ-typesの型理論で十分です。十分だと言うことで、直観主義的な論理として使用できるということです。他のタイプは次のように定義できます。 ⊥=defΠα:Prop.α¬A=defA→⊥A∧B=defΠC:Prop.(A→B→C)→CA∨B=defΠC:Prop.(A→C)→(B→C)→C∃x:S(P(x))=defΠα:Prop.(Πx:S.Px→α)→α⊥=defΠα:Prop.α¬A=defA→⊥A∧B=defΠC:Prop.(A→B→C)→CA∨B=defΠC:Prop.(A→C)→(B→C)→C∃x:S(P(x))=defΠα:Prop.(Πx:S.Px→α)→α \bot \stackrel{def}{=} \Pi \alpha: Prop. \alpha \\ \neg A \stackrel{def}{=} A \to \bot \\ A \land B \stackrel{def}{=} \Pi C: Prop. (A \to B \to C) \to C \\ A \lor B \stackrel{def}{=} \Pi C: Prop. (A \to C) \to (B \to C) \to C \\ \exists_{x: …

3
経路誘導は建設的ですか?
HoTTの本を読んでいますが、経路誘導に苦労しています。 私はセクションタイプを見たとき1.12.1: それが何を意味するのかを理解するのに問題はありません(それを確認するために、メモリから型を書きました)。ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),ind=A:∏C:∏x,y:A(x=Ay)→U((∏x:AC(x,x,reflx))→∏x,y:A∏p:x=AyC(x,y,p)),\text{ind}_{=_A}:\prod_{C:\prod\limits_{x,y:A}(x=_Ay)\to \mathcal{U}} \left( \left(\prod_{x:A}C(x,x,\text{refl}_x)\right) \to \prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p) \right), 私が問題にしているのは次のステートメントです: 私の第一印象は、この最後の式はないということであった定義得られた関数 ちょうどそのを述べプロパティ。 F :Πは、xは、Y :A ΠのP :X = A Y C (X 、Y 、P )、with the equalityind=A(C,c,x,x,reflx):≡c(x)with the equalityind=A(C,c,x,x,reflx):≡c(x)\text{with the equality}\quad \text{ind}_{=_A}(C,c,x,x,\text{refl}_x):\equiv c(x)f:∏x,y:A∏p:x=AyC(x,y,p),f:∏x,y:A∏p:x=AyC(x,y,p),f:\prod_{x,y:A}\prod_{p:x=_Ay} C(x,y,p), すなわち、誘導原理の以前の実施例とは対照的である、または -がされている方程式の定義これらの要素のために-私たちは、実際に施設が与えられた機能を構築する方法を知っています。これは、この章全体で宣伝されている型理論の「建設性」と一致しています。 ind A + B ind NindA×BindA×B\text{ind}_{A\times B}indA+BindA+B\text{ind}_{A+B}indNindN\text{ind}_\mathbb{N} に戻ると、それが定義されていない(と思われる)ことを疑っていました。要素がちょうど存在するということは、この章の残りの部分とは調和していないように思われました。そして実際、セクション1.12.1は、私の印象は間違っていると、ストレスに思えるし、実際に我々は定義されました find=Aind=A\text{ind}_{=_A}fff ... 関数 によって定義される から経路誘導、さらに …

2
「従属連産品タイプ」を持つことはできますか?
私はHoTT本を読んでいますが、第1章の内容について(おそらく非常に素朴な)質問があります。 この章では、関数型 を紹介し、を依存させることで一般化します。 そして、それは従属関数型と呼ばれます。B x :A B :A → U、f:A → Bf:A→B f:A\to B BBBx :Ax:Ax:A B :A → U、g:∏x :AB (x )B:A→U,g:∏x:AB(x)B:A\to\mathcal{U},\qquad g:\prod_{x:A}B(x) 次に、この章では製品タイプ を紹介し、を依存させることで一般化します およびそれは依存ペアタイプと呼ばれます。B x :A B :A → U、f:A × Bf:A×B f:A\times BBBBx :Ax:Ax:A B :A → U、g:∑x :AB (x )B:A→U,g:∑x:AB(x)B:A\to\mathcal{U},\qquad g:\sum_{x:A}B(x) ここでパターンを間違いなく見ることができます。 次に、この章 では連産品タイプ および... …

1
CoqのSetとTypeの違いは何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、コンピューターサイエンススタック交換のトピックになるようにします。 2年前に閉店。 AFAIU型は、Setその要素がプログラムである、またはproposition要素が証明であるにすることができます。したがって、この理解に基づいて: Inductive prod (X Y: Type) : Set := | pair: X -> Y -> prod X Y. 次のコードはコンパイルされるはずですが、次のエラーが原因ではありません。私が変更された場合SetにType、または他TypeとのSetそれは罰金をコンパイルします。誰かが次のエラーの意味を理解するのを手伝ってくれる?Software Foundationsの本を使ってCoqを教えようとしています。 エラー: Error: Large non-propositional inductive types must be in Type.

2
HoTTの製品を教会/スコットエンコーディングに削減
だから私は現在、何人かの人と一緒にHoTTの本を読んでいます。私が目にするほとんどの帰納的な型は、同等の型のインスピレーションとして再帰子の型を取ることにより、依存する関数型とユニバースのみを含む型に還元できると主張しました。私はこれがどのように機能するかをスケッチし始めました、そしていくつかのつまずきの後に私は私が答えであると思ったものに行きました。 (⋅ 、⋅ )≡ λ A :A 。λ B :B 。λ C :U。λ G :A → B → C 。g (a )(b )i n d⋅×⋅≡∏A,B,C:U(A→B→C)→C⋅×⋅≡∏A,B,C:U(A→B→C)→C\cdot \times \cdot \equiv \prod_{A, B, C : \mathcal{U}} (A \to B \to C) \to C (⋅,⋅)≡λa:A.λb:B.λC:U.λg:A→B→C.g(a)(b)(⋅,⋅)≡λa:A.λb:B.λC:U.λg:A→B→C.g(a)(b) (\cdot, \cdot) \equiv \lambda a : A. \lambda b …

1
関数のメモリ使用量などのプロパティは、依存型付き言語で表現できますか?
全体性や関数の純粋さなどを超えてコードのプロパティについて推論したいとしましょう。メモリの消費や関数のアルゴリズムの複雑さについても気にします。これは、依存するタイピングおよびエフェクトシステムを介して実行できますか?

1
何である
私は構造の計算とラムダキューブ内のその場所を見ています。 私が正しく理解していれば、立方体の各軸は、単純に型付けされた計算型を含む別の演算を追加するものと考えることができます。最初の軸は、型から用語への演算子、2番目の型から型への演算子、3番目の依存型付け、または用語から型への演算子を追加します。CoCには3つすべてがあります。λ→λ→\lambda_\to しかしながら、COCが用語の導入こと、および状態のP R O P :T Yのp個のEによって推論ルールが、それ以外は使用されません。私はそれが代名詞の命題に対するものであることを理解していますが、論理的な命題はそれに関して定義されていません。PR O PPropPropPr o p :Typ個の電子Prop:TypeProp : Type が何のためにあるか、どこに/いつ現れるか、そしてキューブの軸の観点から説明してください(実際にそうすることが可能な場合)。PR O PPropProp

2
依存型理論の宇宙
依存型理論については、ホモトピー型理論のオンラインブックで読んでいます。 セクション1.3にタイプ理論章、それの階層構造の概念導入ユニバース:U0:U1:U2:⋯U0:U1:U2:⋯\mathcal{U}_0 : \mathcal{U}_1 : \mathcal{U}_2 : \cdots、ここで すべてのユニバースUiUi\mathcal{U}_iは、次のユニバース要素ですUi+1Ui+1\mathcal{U}_{i+1}。さらに、私たちの宇宙は累積的であると仮定します。つまり、ithithi^{\mathrm{th}}宇宙のすべての要素は(i+1)th(i+1)th(i+1)^{\mathrm{th}}宇宙の要素でもあるということです。 それでも、付録Aのさまざまなタイプの形成ルールを見ると、一見したところ、宇宙がバーの上に前提として表示されている場合、同じ宇宙が下に表示されています。たとえば、連産品タイプ形成ルールの場合: Γ⊢A:UiΓ⊢B:UiΓ⊢A+B:Ui(+-FORM)Γ⊢A:UiΓ⊢B:UiΓ⊢A+B:Ui(+-FORM)\dfrac{\Gamma \vdash A : \mathcal{U}_i \quad \Gamma \vdash B : \mathcal{U}i}{\Gamma \vdash A + B : \mathcal{U}_i}(+\mbox{-}FORM) だから私の質問は、なぜ階層が必要なのですか?どのような状況で、宇宙から階層の1つ上の階層にジャンプする必要がありますか?任意の組み合わせで与えられたか、本当に私には明らかにされていませんメートルを:U私は、あなたがタイプで終わることができますBでないでU I。より詳細には:付録A.2.4、A.2.5、A.2.6、A.2.7、A.2.8、A.2.9、A.2.10、A.3.2、いずれかのセクションで形成ルール言及U Iで前提と判断、または判断のみ。Am:UiAm:UiA_m: \mathcal{U}_iBBBUiUi\mathcal{U}_iUiUi\mathcal{U}_i この本は、ユニバースを割り当てる正式な方法があることも示唆しています: 引数が正しいかどうか疑わしい場合は、その引数をチェックする方法は、引数に出現するすべてのユニバースに一貫してレベルを割り当てることを試みることです。 レベルを一貫して割り当てるためのプロセスは何ですか? U:UU:U\mathcal{U}:\mathcal{U}UjUj\mathcal{U}_jUiUi\mathcal{U}_ij>ij>ij > i

1
依存型システムの証明のプリミティブとして再帰型が必要なのはなぜですか?
型理論と依存プログラミングは比較的新しいです。私は構造計算(CoC)やその他の純粋型システムについて研究してきました。特にコンパイラシステムの証明を保存する中間表現として使用することに興味があります。 (共)再帰型は、を唯一の型コンストラクタとして使用して、計算上表現できることを理解しています。しかし、それらは帰納法による証明の構築には使用できないことを許しました(許してください、今どこにあるかわかりません!)、たとえば、プレーンなCoC でであることを証明できませんでした(ただし、は)。0 ≠ 1 ナット Π (N:* )。Π (S :N → N)。Π (Z :N)。NΠΠ\Pi0 ≠ 10≠10\neq 1ナットNat\texttt{Nat}Π (N:∗ )。Π (S:N → N)。Π (Z:N)。NΠ(N:∗).Π(S:N→N).Π(Z:N).N\Pi(\mathbb{N}:*).\Pi(S:\mathbb{N}\rightarrow\mathbb{N}).\Pi(Z:\mathbb{N}).\mathbb{N} これが、彼らが帰納的構造(CIC)の計算を構築した理由だと思います。これは正しいです?しかし、なぜ?(共)帰納型をプリミティブとして使用しないと、そのような証明を表現できない理由を説明する資料は見つかりませんでした。これが当てはまらない場合、CICでそれらをプリミティブとして追加するのはなぜですか?

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