パターンラムダ計算におけるイータ展開


12

Klop、van Oostrom、およびde Vrijerには、パターンを含むラムダ計算に関する論文があります。

http://www.sciencedirect.com/science/article/pii/S0304397508000571

ある意味では、パターンは変数のツリーです。ただし、たとえば((x、y)、z)、(t、s))のように、変数のネストされたタプルと考えています。

論文では、パターン内の変数が繰り返されないという意味で、パターンが線形である場合、ルール

(\p . m) n = m [n/p]

ここで、pは可変パターンで、nはpとまったく同じ形状の用語のタプルで、コンフルエントです。

パターンと追加のイータルール(拡張、縮小、または単なる平等)を備えたラムダ計算の文献に同様の開発があるかどうか、私は興味があります。

特に、イータでは、

m = \lambda p . m p

より直接的に、このようなラムダ計算がどのような特性を持つのか興味があります。たとえば、コンフルエントですか?

次のプロパティを強制するため、分類カテゴリを強制的に閉じます。

m p = n p implies m = n 

間に\ xi-ruleを使用します。しかし、おそらく何かがうまくいかないのでしょうか?


あなたが意味するイータルールを入れて書くことができますか?非常に奇妙でない限り、合計を使用してエンコードし、シミュレーション引数を作成できる必要があります。
マックスニュー

2
@MaxNew:彼は型付けされていない計算について尋ねているようです。パターンについてのすべては型で完全に機能しますが(パターンマッチングに関する独自のフォーカシングを非常に控えめに提案します)、型付けされていないラムダ計算は型付けされたLC(特にwrtイータ)とは十分に異なるため、証明せずに答えようとはしません。
ニールクリシュナスワミ

@MaxNew:合計によるエンコードは何を必要としますか?
ジョナサンギャラガー

@NeelKrishnaswami:私は実際両方に興味があります。イータルールと一緒に製品タイプの変数を使用することに不安があると思います。これは、たとえばdicosmo.org/Articles/JFP96.pdfで行われたと思います。しかし、私が間違っている場合は、私を修正してください。次に、\ lambda x .mx = m = \ lambda(p、q)のような等式があります。たとえば、m(p、q)。論文へのリンクをありがとう!
ジョナサンギャラガー

回答:


7

これは完全な答えではありません。コメントが大きすぎます。

型付きラムダ計算を射影エリミネーター付きの製品(つまり、製品エリミネーターfst(e)およびsnd(e))で拡張する場合、基本的に問題はありません。見つけ出すのに非常に長い時間がかかった理由は、イータ削減ではなくイータ拡張を行う方が自然であることが判明したためです。バリー・ジェイの「イータ拡張の美徳」を参照してください。

製品にパターンスタイルのエリミネーターが必要な場合

let (a,b) = e in t 

そして、問題はより複雑です。パターンマッチングの主な困難は通勤変換です。つまり、これらの計算には次の方程式があります。

C[let (a,b) = e in t] === let (a,b) = e in C[t]

C[-](a)どのコンテキストを使用するか、(b)この方程式をどのように方向付けるかがトリッキーになる。書き換えスタイルのアプローチの最先端のIMOは、Sam Lindleyの Extensions with SumsとGabriel SchererのDeciming Equivalence with Sums and Empty Typeであり、どちらも積と合計の両方の型付きラムダ計算を考慮しています。

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