タグ付けされた質問 「curry-howard」

2
Yコンビネータは、カレー-ハワード通信と矛盾しますか?
Yコンビネータのタイプはです。Curry-Howard Correspondenceでは、型(a → a )→ aが存在するため、真の定理に対応しなければなりません。ただし、a → aは常にtrueであるため、Yコンビネータの型は定理aに対応するように見えますが、これは常にtrueとは限りません。どうすればいいの?(a→a)→a(a→a)→a(a \rightarrow a) \rightarrow a(a→a)→a(a→a)→a(a \rightarrow a) \rightarrow aa→aa→aa \rightarrow aaaa

1
任意の証明が円形であるかどうかのテスト?
私は証明について考えていて、興味深い観察に出会いました。そのため、証明はカリー・ハワード同型写像によるプログラムと同等であり、循環証明は無限再帰に対応します。しかし、停止する問題から、任意のプログラムが永久に再帰するかどうかを一般的にテストすることは決定できないことがわかります。カリー・ハワードによると、それは、証明が循環推論を使用するかどうかを判断できる「証明チェッカー」がないことを意味しますか? 私はいつも、証明は簡単に確認できるステップ(推論ルールの適用に対応する)で構成されると考えられていました。すべてのステップを確認することで、結論が続くという確信が得られます。しかし、今私は不思議に思っています:停止問題を回避して循環推論を検出する方法がないため、そのような証明チェッカーを書くことは実際には不可能ですか?

1
カテゴリー理論(のサブセット)と関係代数の間に同型はありますか?
ビッグデータの観点から来ています。基本的に、多くのフレームワーク(Apache Sparkなど)は、Functor / Monadのようなインターフェイスを提供することにより、リレーショナル操作の欠如を「補償」し、cats-to-SQL変換(ScalaのSlick)への同様の動きがあります。たとえば、SQLパースペクティブからの要素ごとのベクトルの乗算には、自然な結合(インデックスの繰り返しがないと仮定)が必要です。これは、カテゴリ理論のアプリケーションでzip + map(multiply) (SparkのMLibが既に持っているElementwiseProduct)と見なすことができます。 簡単に言うと(以下の例はScalaにあります): 参加の参照サブケースは、その順番で私たちを与えるのApplicativeファンクタ(オーバー分別収集)、と考えることができますzip:List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b))- > (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2)。さらに、いくつかの前処理(groupBy演算子または単なる射影、または一般に-エピモーフィズム)を想定して、他の結合に誘導することができます。 他の結合と選択はモナドと考えることができます。たとえば、WHERE次のとおりです。- List(1,2,2,4).flatMap(x => if (x < 3) List(x) else List.empty)>List(1,2,2,4).filter(_ < 3) データ自体は単なるADT(GADTでもあります)であり、単純なSet-category(またはより一般的に言えば-デカルト閉)のように見えるため、Setベースの操作(カリーによるHoward-Lambek自体)およびRENAME(少なくとも実際には)同様の操作。 集約はfold/reduce(カタモフィズム)に対応 だから、私が求めているのは、カテゴリ理論(のおそらくサブセット)と(全体の)関係代数の間の同型を構築できるか、または何かが明らかにされているということですか?それが機能する場合、カテゴリの正確な「サブセット」は正代数と同型ですか? logic-cats-lambdaのCurry-Howard-Lambek対応のような正式なソリューションはより正確ですが、実際には、完成した研究への参照を求めています(直接的な関係を示しています) )Scala / Haskellでさらに例を示します。 編集:受け入れられた答えは、私がモナドとして結合と条件を表現しすぎていると考えさせました(特に事実上FALSEをインスタンス化する空の値を使用して)、少なくともSQLのrelalgebraサブセットについてはプルバックで十分だと思います。モナドは、GROUP BYのような高次(ネスト)のものに適しています。これは、代数の一部ではありません。

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

1
カレーハワードの述語論理への対応?
だから私は頭をカリーハワードに回そうとしている。(私は何度か試してみましたが、ゲル化していない/抽象的すぎるとは思われません)。具体的な問題に取り組むために、私はウィキペディアからリンクされたいくつかのHaskellチュートリアル、特にTim Newshamのチュートリアルに取り組んでいます。Newshamがチュートリアルを投稿したときにも役立つディスカッションがあります。 (しかし、私はNewshamとPiponiのdataラッパーを無視し、基礎となる型について話します。)ヒルベルトの公理スキーム(S、Kコンビネーターとして表されます)があります。タイプとしての命題があります。関数矢印としての意味; および関数アプリケーションとしてのModus Ponens: axK :: p -> q -> p axK = const axS :: (p -> q -> r) -> (p -> q) -> p -> r axS f g x = f x (g x) modPons = ($); infixl 0 `modPons` -- infix Left, cp ($) …

2
なぜ教会でエンコードされたタイプでは帰納的証明を表現するのに十分ではないのですか?
帰納的型のない構造の計算は、帰納法によって証明を表現するのに十分強力ではないという主張を聞いたことがあります。あれは正しいですか?もしそうなら、なぜそれを教会エンコーディングは十分ではないのですか?

2
Hindley-Milner型に適用されるCurry-Howard同型では、どの命題がa-> [a]に対応しますか?
(質問はHaskellに触発されているため、Haskell構文を使用しますが、SMLやElmなどの一般的なHindley-Milnerポリモーフィック型システムに適用されます)。 型シグネチャがある場合f :: a -> [a]、その型シグネチャによってエンコードされる論理命題は何ですか? 私はそのコンストラクタは好きなタイプを知って->、(,)あなたのロジックで「操作」に対応して:->「意味」シンボルに対応。→→\rightarrow 私[]も型コンストラクタであると想定しており、答えは再帰的な定義と関係があるかもしれないと感じています。これは次のように実装できることがわかっています。 data List a = Cons a (List a) | Nil しかし、これが論理の意味で何を意味するのかはわかりません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.