可能な限り最小の汎用コンビネーター


17

私は、ラムダ計算でこのようなコンビネータを指定するために必要な抽象化とアプリケーションの数で測定される、可能な限り最小の汎用コンビネータを探しています。ユニバーサルコンビネータの例は次のとおりです。

  • サイズ23: λf.f(fS(KKKI))K
  • サイズ18: λf.f(fS(KK))K
  • サイズ14: λf.fKSK
  • サイズ12: λf.fS(λxyz.x)
  • サイズ11: λf.fSK

ここで、サイズ6の S =λxyz.xz(yz)とサイズ2の K =λxy.x は、SKコンビネーター計算のコンビネーターです。このホワイトペーパーでは、最初の4つの例について説明します。

私の質問は:

  • サイズが小さいユニバーサルコンビネーターはありますか?
  • 可能な限り最小のユニバーサルコンビネータとは何ですか?

編集:https : //math.stackexchange.com/a/180263/76284も参照してください。これはλazbc.bc(a(λy.c))サイズが8で、SKベースのサイズの合計に一致します。このコンビネータからSとKを表現する方法を知っている人はいますか?



サイズの定義は何ですか?関数として書くことはできますか?
ジョシュアハーマン

6 + 2 = 8 <11なので、これは{S、K}が合計サイズで測定されるコンビネーターの最小基底であるかどうか疑問に思いますか?
ノアム・ツァイルバーガー

最近の編集は(部分的な)回答のように聞こえます。
エミールイェジャベクはモニカをサポートします

コンビネータ」をどの程度厳密に定義していますか?抽象化のない形式λx*.Eである必要Eがありますか?
ピーターテイラー

回答:


9

特定のリダクションプロパティを持つコンビネーターを見つけることは常に困難であり、そのような最小のコンビネーターを見つけることは容易に決定できない場合があることに注意する必要があります(コンビネーターの特定のアプリケーションが停止することさえ証明できないため、些細な理由で)。

同様のフレーバーの単純な未解決の質問がいくつかあります。たとえば、未解決の問題のTLCAリストの問題#4、#6、#10 です。

注意すべきことの1つは、コンビネーターには少なくとも2つのバインドされた変数が必要であり、そのうちの1つは複製され(コンビネーターの完全なセットと同様)、1つは消去する必要があることです。これにより、下限が4になります(変数の2つの抽象化と2つの出現)。これは、11の上限からそれほど遠くありません。

編集:Noamのコメントとリファレンスが下限を5に押し上げます!証拠に追加の変数も表示する必要がある場合でも、6にプッシュされることに驚かないでしょう。


3
実際には、2つの変数が(十分ではないdl.acm.org/citation.cfm?id=2100917cstheory.stackexchange.com/a/36344/674これはわずかに高い結合LOWER(サイズが得られるように、)5 = 3つの抽象と2アプリケーション)。
ノアム・ツァイルバーガー

@NoamZeilberger申し分なく、それは私が知らなかった素晴らしい結果です!
コーディ

7

最初の質問については、この論文が多くの助けになると思います。UTMでもある6ビットのコンビネータ計算があります。また、ユニバーサルコンビネータがあり、サイズが7で、必要な要素が1つあるようです。彼らはそれをZotと呼びます。 http://arxiv.org/pdf/cs/0508056v1.pdf

最小限のコンビネーターがあると言ったり証明できるかどうかはわかりません。論文は、少なくとも6ビット未満でなければならないことを示唆しています。


2
Zotのコンビネーターは、実際にはOPにリストされている最後のコンビネーターです:λx.xSK(親言語、IotaおよびJotと共有)、長さは11です。「6ビットコンビネーター計算」(Keraia)では、 UTMのサイズ。そして、それは単なるコンビネータ計算ではなく、ラムダ計算の単なるエンコードであるように見えます(したがって、組み込みのユニバーサルコンビネータはありません)。
2012rcampion 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.