タグ付けされた質問 「type-theory」

オブジェクトのプロパティを指定する正式なシステム

5
関数パラメーター型としてボトム型の使用例はありますか?
関数の戻り値の型が⊥(bottom type)の場合、戻り値がないことを意味します。たとえば、どちらもかなり普通の状況で終了またはスローできます。 おそらく、関数にtype型のパラメーターがある場合、(安全に)呼び出すことはできません。そのような関数を定義する理由はありますか?

4
主要な改札口オペレーターとはどういう意味ですか?
著者はプログラミング言語のセマンティクスを表すために異なる表記法を使用することを知っています。実際のところ、ガイ・スティールは興味深いビデオでこの問題に取り組んでいます。 主要な回転式改札口のオペレーターが十分に認識されている意味を持っているかどうかを誰かが知っているかどうかを知りたい。たとえば、次の分母の先頭にある先頭の演算子がわかりません。⊢⊢\vdash x:T1⊢t2:T2⊢λx:T1.t2 : T1→T2x:T1⊢t2:T2⊢λx:T1.t2 : T1→T2\frac{x:T_1 \vdash t_2:T_2}{\vdash \lambda x:T_1 . t_2 ~:~ T_1 \to T_2} 誰かが私を理解するのを助けることができますか?ありがとう。

1
コンパイル時間の保証に向けてさらに調査しないのはなぜですか?
私はそれがすべてコンパイル時間であり、プログラムをコンパイルするとその実行について多くの保証が行われるという考えが大好きです。一般的に、静的型システム(Has​​kell、C ++など)は、動的型システムよりも強力なコンパイル時保証を提供するようです。 私が理解していることから、Adaはコンパイル時のチェックに関してさらに進んでおり、実行前にさまざまなバグを検出することができます。また、ある時点で、デリケートなフィールド(プログラミングエラーが人命にかかわる可能性がある場合)に選択されたことを考えると、かなり安全だと考えられています。 今、私は疑問に思う:より強力な静的保証が、より文書化され安全なコードにつながるなら、なぜ私たちはその方向でもっと研究しないのか? 欠落しているように見えるものの例はint、基礎となるアーキテクチャのビット数によって決定される範囲を持つジェネリック型を定義する代わりに、範囲を持つことができる言語です(次の例でInt [a..b]は、 aおよびbを含む): a : Int [1..24] b : Int [1..12] a + b : Int [2..36] a - b : Int [-11..23] b - a : Int [-23..11] または(これをAdaから): a : Int [mod 24] b : Int [mod 24] a + b : Int [mod …

3
ラッセル型理論と型システムの関係
私は最近、例えばHaskellに見られるように、ラッセル型の理論と型システムの間に何らかの関係があることに気付きました。実際、Haskellの型の表記法の一部には、型理論の先駆者がいるようです。しかし、1908年のIMHO、ラッセルの動機はラッセルのパラドックスを避けることであり、それがコンピュータサイエンスの型システムにどのように関係しているかはわかりません。 ラッセルのパラドックスは、たとえば、特定の言語で適切な型システムがなかった場合など、心配しなければならない何らかの形ですか?

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

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

1
代数的データによる制約ベースの型推論
私はML系図の表現ベースの言語に取り組んでいるので、当然、型推論が必要です> :) 現在、EOPL(Friedman and Wand)の単純な実装に基づいて、制約ベースのソリューションを型推論の問題に拡張しようとしていますが、それらはエレガントに代数的データ型を回避しています。 これまでのところ、スムーズに機能しています。式がある場合eでa + b、e : Int、a : Intとb : Int。e一致する場合、 match n with | 0 -> 1 | n' -> n' * fac(n - 1)`, 私は当然と推論することができt(e) = t(the whole match expression)、t(n) = t(0) = t(n')、t(match) = t(1) = t(n' * fac(n - 1)のように... しかし、代数的データ型に関しては、私は非常に確信が持てません。filterのような関数を想定します。 let filter …

2
普遍的/既存の定量化?
タイプの普遍的かつ実存的な定量化の目的を理解するのに苦労しています。私は、構造の計算に基づいておもちゃの言語を書いて遊んでいます。理解を深めるために、モルトとヘンクについて読んでいます。 CoCにラムダとフォーラルの両方の抽象化がある理由がわかりません。 (∀ X :A 。B )(λ X :A 。B )(λバツ:あ。B)(\lambda x:A . B) (∀ X :A 。B )(∀バツ:あ。B)(\forall x:A . B) ラムダは、型が手動で渡されるシステムではすべてを包括しているようです。つまり、次のこと (∀ X :* 。λ A :X 。)(∀バツ:∗。λa:バツ。a)(\forall x : *. \lambda a : x. a) と置き換えることができます (λ X :* 。λ A :X 。)(λバツ:∗。λa:バツ。a)(\lambda x : *. \lambda …

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
ML型推論の指数コストの簡潔な例
OCamlのような関数型言語での型推論のコストは非常に高くなる可能性があることに私の注意が向けられました。各式について、対応する型の長さが式の長さに対して指数関数的であるような一連の式があるという主張です。 以下のシーケンスを考案しました。私の質問は次のとおりです。同じ型を実現する、より簡潔な式のシーケンスを知っていますか? # fun a -> a;; - : 'a -> 'a = <fun> # fun b a -> b a;; - : ('a -> 'b) -> 'a -> 'b = <fun> # fun c b a -> c b (b a);; - : (('a -> 'b) -> 'b -> …

1
誘導誘導とは何ですか?
誘導誘導とは何ですか? 私が見つけたリソースは次のとおりです。 5.7章の最後にあるHoTT本。 nLabの記事 帰納的帰納的定義と呼ばれる論文 このブログの投稿では、帰納的誘導型についても触れています 最初の2つの参照は私には短すぎますが、後の2つは専門的すぎます。誰でも簡単に説明できますか?Agdaコードがあればもっと良いでしょう。

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でそれらをプリミティブとして追加するのはなぜですか?

2
厳格な陽性
この参照から:厳密な陽性 厳密な陽性条件は、次のような宣言を除外します data Bad : Set where bad : (Bad → Bad) → Bad A B C -- A is in a negative position, B and C are OK なぜAは負ですか?また、なぜBが許可されるのですか?Cが許可される理由を理解しています。

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