ラムダ計算:評価コンテキストが「機能する」方法


8

純粋なラムダ計算には、帰納的に定義された一連の用語(文法)があります:

e::=xλx.ee1e2

値による呼び出し評価戦略では、ベータ削減の推論規則とアプリケーションの評価方法に関する規則(合同規則)があります。私は、実際に言語の構文を変更することなく、評価コンテキストが合同ルールをどのように置き換えることができるかを理解しようとしています。評価コンテキストがなければ、次のようになります。

e2e2

e1e1e1e2e1e2
および
e2e2ve2ve2.

式がある場合、これはという形式で、したがってE 1 、E 2E ' 1、E 2λ F λ X F X λ Y Y λ Z Z λt=(λf.λx.fx)((λy.y)λz.z)λw.we1e2e1e2

(λf.λx.fx)((λy.y)λz.z)λw.w(λf.λx.fx)(λz.z)λw.w

合同ルールを評価コンテキストに置き換えた場合: 場合、言語の合同ルールを表すのに必要なルールは1つだけです: E E "

E::=[]EevE
eeE[e]E[e].

言語の構文を変更せずに、評価コンテキストが上から式を評価する方法を教えてくれるのではないかと混乱しています。私は評価コンテキストを書き換えることなく、「働く」を理解していないとttt

Et=(λf.λx.fx)[]λw.w

ここで、です。知識がなければ、値を評価するアプリオリな理由は明らかではありません。私はどこが間違っているのか本当にわかりません。誰かが私の考えを正すのを手伝ってくれる?t=Et[((λy.y)λz.z)]tEt


削減は、値による呼び出しなどの削減戦略と一致しません。こちらもご覧ください
Martin Berger 14年

私はあなたの答えを理解していません。動詞としての「合同」の使用は、私には意味がありません。私はあなたが提供したリンクで答えを読みましたが、が構文形式として提示されている理由はまだわかりませんが、が定義されている言語の構文で実際に使用されることはありません。E
baffld 14年

動詞として合同を使用していません。どういう意味かわかりません。Eは、評価コンテキストにわたるメタ変数です。評価コンテキストは、コンテキストの適切なサブセットです。コンテキストは、穴のあいたプログラムです。
Martin Berger 14年

回答:


8

微妙なところは、言語とメタ言語の区別がどこにあるかにあります。ルネ・マグリットはそれを置きます:

Ceci n'est pas une pipe。

(λf.λx.fx)((λy.y)(λz.z))(λw.w)はラムダ項であり、ラムダ項の構文で記述されています。このラムダ項をと呼びましょう。してみましょうラムダ用語も。私はと書くことができます(これは真の等価です):サブタームに名前を付けるだけでした。この等式の右側「」を検討すると、ラムダ項の構文には記述されていません。ラムダ項を表す文字を許可する数学表記で書かれています。tM(λf.λx.fx)((λy.y)(λz.z))t=M(λw.w)M(λw.w)

ようなルールを記述する場合 、次の公理を示します:ラムダ項およびと値(場合)減少しその後、に減少し。ここでも、メタ表記(つまり、言語について推論する数学的表記)を使用しています。矢印は、縮約関係を表します。文字がソートを示すメタ変数(ラムダ項の場合は、

e2e2ve2ve2
e2e2ve2e2ve2ve2ev値の場合)および添え字と素数は、同じ種類のメタ変数を区別します。帰納的な公理を書くための分数表記。

我々はルールを記述する際 再度メタ表記、ラムダのメタ言語としないの一部であります-term構文。ルールは、ラムダ項およびと評価コンテキストについて、が減少する場合、が減少することを意味します。

eeE[e]vE[e]
E[]eeE[]eeE[e]E[e]

コンテキストを(メタ)名と、。繰り返しますが、これは2つのラムダ項間の等式です。つまり、同じラムダ項が等号の両側にあります。左側と右側にあるのは、同じラムダ項に対する2つの異なるメタ表記: 1つは、私たちが付けた名前を使用するもので、もう1つは、名前を付けたコンテキストを含むもう少し複雑なものです。(λf.λx.fx)[](λw.w)Ett=Et[(λy.y)(λz.z)](λf.λx.fx)((λy.y)(λz.z))(λw.w)

という用語を考えると、どのようにしてそれを削減できるかをどのようにして見つけますか?t

  • 複数のルールを使用した表記では、演繹ツリーを見つける必要があります(一般に、ここでは、導出は線形なので、公理につながるチェーンを見つけるだけです)。
  • 評価コンテキストを使用した表記では、適切な評価コンテキストを見つける必要があります。

評価コンテキストの文法は評価ルールの構造に従うため、これらは実際には実際には2つの方法ではなく、同じ定義を表現する2つの異なる方法です。

これを理解するために、次の演習を強くお勧めします。お好みの言語で、ラムダ項を表す型と1つの縮小ステップを実行する関数を使用して、ラムダ項の値による呼び出し評価を簡単な方法で実装します。


2
最後の段落に関連して:すべての論理学者と構文を研究する人は誰でも、置換を実装する必要があります。
Andrej Bauer 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.