Yコンビネータは、「ラムダ計算の不整合」をどのように例示しますか?


44

Fixed Point Combinatorsの Wikipediaページには、かなり神秘的なテキストが書かれています

Yコンビネータは、ラムダ計算が矛盾する原因の例です。したがって、それは疑いをもって考慮されるべきです。ただし、数学ロジックでのみ定義されている場合は、Yコンビネータを考慮するのが安全です。

ある種のスパイ小説を始めましたか?計算は「一貫性がなく」「疑いを考慮してすべきだという声明は、世界で何を意味するのでしょうか。λ


3
FWIW、その段落は、2014年1月以来、Wikipediaの記事にあり、記事のほぼ全体の大規模な書き換えで導入されました。
イルマリカロネン

回答:


51

それは実際の出来事からインスピレーションを得ていますが、それが述べられている方法はかろうじて認識できず、「疑いをもって見なされるべきです」はナンセンスです。

一貫性は論理において正確な意味を持ちます。一貫性のある理論とは、すべてのステートメントを証明できるわけではない理論です。古典論理では、これは矛盾がないことに相当し、すなわち理論があれば矛盾していると、ステートメントがある場合のみ理論は、両方の証明するように、 Aとその否定 ¬ AはAA¬A

では、これはラムダ計算に関して何を意味するのでしょうか?なし。ラムダ計算は書き換えシステムであり、論理理論ではありません。

ロジックに関連してラムダ計算を表示することができます。変数を証明で仮説を表すものとして、ラムダ抽象化を特定の仮説(変数で表される)の下での証明として、アプリケーションを条件付き証明と仮説の証明をまとめるものとして考えてください。次に、ベータ規則は、論理の基本原理である方法論ポネンを適用することにより証明を単純化することに対応します。

n=3n=2

カリー=ハワード同型対応はとの間に並列で入力された結石と証明システム。

  • タイプは論理ステートメントに対応しています。
  • 用語は証明に対応します。
  • 居住型(つまり、その型の用語があるような型)は、真のステートメント(つまり、そのステートメントの証拠があるようなステートメント)に対応します。
  • プログラム評価(ベータなどのルール)は、証明の変換(正しい証明を正しい証明に変換した方がよい)に対応します。

YY(λx.x)

これは、純粋なラムダ計算、つまり型のないラムダ計算では意味がありません。

多くの型付き計算では、固定小数点コンビネータを定義することは不可能です。これらの型付き計算は、論理的な解釈に関しては有用ですが、チューリング完全プログラミング言語の基礎としてではありません。一部の型付き計算では、固定小数点コンビネータを定義できます。これらの型付き計算は、チューリング完全プログラミング言語の基礎として役立ちますが、論理的な解釈に関しては役立ちません。

結論として:

  • ラムダ計算は「不整合」ではなく、その概念は適用されません。
  • 型付きすべてのラムダ項にタイプを割り当てラムダ計算は矛盾しています。型付きラムダ計算にはそのようなものもあれば、一部の用語を入力不可能にして一貫性のあるものもあります。
  • 型付きラムダ計算は、ラムダ計算の唯一の存在理由ではなく、一貫性のない型付きラムダ計算でさえ非常に便利なツールです-物事を証明するだけではありません。

2
うわー、ここで開梱することがたくさんあります。詳細な説明をありがとう。すべてを理解しようとするのに少し時間がかかります。
ベンI.

4
技術的には、国連として型指定されていない見て、私はタイプされた、あなたは型なしラムダ計算とロジック間のCH対応を行うことができます。これは、非常に退屈な(そして確かに一貫性のない)ロジックです。NuPRLのような証明アシスタントは水域を少し濁らせます。NuPRLのオブジェクト言語には、型指定されていないラムダ計算が含まれており、Yコンビネータを簡単に定義できます。NuPRLは物事を少し異なるように分割するため、型システムではなく型洗練システムを使用します。また、適切に型付けされた用語を生成するのではなく、型の派生を生成します。
デレクエルキンズ

型付けされていないラムダ計算に「型としての命題」パラダイムを課すのは私だけですか、それとも奇妙ですか?特定のオブジェクトをブール値trueおよびfalseに導入することで、型指定されていないラムダ計算のロジックについて人々が話すことを常に見てきました。命題はブール値の出力を持つものでした。(そして、それブール値を出力するもののドメイン上の命題のみと見なされました)。

些細な(すべてのステートメントを証明)と矛盾が含まれている2つの異なるプロパティです。古典的なロジックでは同等ですが、パラコンシステントロジックの場合、システムは一貫性がなく、自明ではありません。
-Taemyr

1
λ計算ベースのロジックの「一貫性のない」とは、「すべてのタイプをすべての用語に割り当てる」ではなく、「すべてのタイプを特定の用語に割り当てる」ことを意味します。一貫性のない論理に対応しているが、すべてのλ計算用語が入力可能であるわけではない、λ計算ベースの言語がたくさんあります。
ジョナサンキャスト

6

@Gilesが言ったことに1つ追加したいと思います。

λλ

λx.λy.xa(ba)ababa(ba)λx.λy.xy(ab)(ab)(ab)(ab)

λf.(λx.f(xx))(λx.f(xx))(aa)a(aa)a

(aa)aaa(¬a¬a)(¬a)¬a¬a

(aa)a

  • (aa)aλ
  • 論理的推論のシステムとして一貫性のない型システムで生きる。

1
a,b.aba.(aa)a
デレクエルキンス

@DerekElkins、どのような原始的な用語ですか?また、私が正しく理解していれば、これは単に(a-> a)-> aが常に存在し、矛盾が生じると仮定することですか?したがって、終了証明を必要とするプログラミング言語との矛盾はもうありませんか?または、型なしラムダ計算またはHindley‑Milner型ラムダ計算に矛盾の原因は他にありますか?
Hibou57

1
fixfixAAfix(λx.x)δfix
デレクエルキンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.