Lambda Calculusは特定のタイプの用語作成システムですか?


13

これで、教会 単に型付きラムダ計算に関連付けられていたことがわかります。確かに、ラムダ計算についての誤解を減らすために、単純型付きラムダ計算を説明したようです。

ジョンマッカーシーがLispを作成したとき、彼はそれをラムダ計算基づいていました。これは、「シンボリック式の再帰関数とその機械による計算、パートI」を発表したときの彼自身の承認によるものです。ここで読むことができます

今、私たちはのコアであることを知っているのMathematicaのLispライクなシステムが、その代わりにラムダ計算に純粋に基づいているの、それがされ用語書き換えシステムに基づきます

ここで著者は次のように述べています:

Mathematicaは基本的に用語書き換えシステムです... Lispの背後にあるラムダ計算よりも一般的な概念です。

ラムダ計算は、はるかに一般的なカテゴリのごく一部であるようです。(これは基本的な概念であると考えられていたので、かなり目を見張るものがあります)。私はこれについてもっと読むことを試みています。

私の質問は次のとおりです。LambdaCalculusは特定のタイプの用語作成システムですか。

回答:


15

答えは、Term Rewrite Systemの意味に依存します

これを導入した場合の概念用語書き換えシステム、またはTRSesは、今やいわゆる説明一次TRSesを、単にフォームの計算規則のセットであります

lr

ここで、rの形式の一次項です。lr

t:= バツ  ft1tn

ここで、変数であり、fはある関数記号いくつかの任意から採取するが、固定されたセットΣと呼ばれる、署名もそれぞれの引数の数固定、F ΣをバツfΣfΣ

そこのルールに課せられた共通の制限のカップル、例えばあるしかし、我々はここではそれらに行く必要はありません。VarrVarl

この定義と、を有する通常のラムダ計算、ルール: λ X T U T [ U / X ] 表現できない、コンストラクタ「としてλ結合の発生XにおけるT(アプリケーションでも結構です)。可能な解決策の1つ、および書き換えシステム自体の理論よりも古い解決策は、各λの用語を別の種類の用語に変えることです。β

λバツt あなたはt[あなたは/バツ]
λバツtλ

1つの方法は、有名なコンビネーター計算です。これは、シグニチャーΣ = { S K a p p }とルール a p pa p pK x y x を 持つ書き換えルールです。a p pa p pa p pS x y SKΣ={S Kapp}

appappKバツyバツ
appappappSバツyzappappバツzappyz

de Bruijnインデックスと明示的な置換を持つラムダ項を含む、より直感的な別のエンコーディングがありますが、ここでは説明しません。


一次エンコードにもかかわらず、計算の縮約動作に関する技術的な問題は、バインダーを持つコンストラクターを含むようにTRSの概念を拡張することにより、より適切に対処されることが明らかになりました。これは、用語Higher Order Rewrite Systemsによってしばしば参照されます。用語は次の形式になりましたλ

t := バツt1tn  fバツ11バツ11t1バツ1nバツnntn

どこに再びが、現在は各X I jがされてバインドT I。署名では、各引数によってバインドされる変数の数を指定する必要があります。今、私たちは書くことができるB SX トンを表す用語についてλ xとトン。少しの作業で、適切な置換の概念を定義できます。fΣバツjtabsバツtλバツt

βηβ

したがって、左側はいくつかの素晴らしいサブセット、多くの場合「ミラーパターン」に制限されます。いくつかの厄介な驚きがありますが、1次の場合の結果の数は一般化します。

λ βη

λβ

appabsバツyバツzyz

定義と基本的な結果のかなりまともな概要は、NipkowとPrehoferによってここに示されています


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