簡體   English   中英

自然數和有效簡單類型的lambda演算術語之間的映射是什么?

[英]What is a mapping between natural numbers and valid simply typed lambda calculus terms?

是否有任何有效的算法可以在簡單類型的lambda演算和自然數的良好類型,閉合項之間進行映射? 例如,使用bruijn索引(可能是錯誤的順序):

0 → (λ 0)
1 → (λ (λ (0 1)))
2 → (λ (λ (1 0)))
3 → (λ 0 (λ 0))
4 → (λ (λ 0) 0)
5 → (λ (λ 1) 0)
6 → ... so on

相關問題:是否存在一種算法,可以在簡單類型的lambda演算的自然數和標准化項之間進行映射? 此外,相同的問題適用於無類型的lambda演算。

二元Lambda微積分定義了無類型lambda演算中任何閉合項的二進制編碼,並且還建議自然數和二進制字符串之間的雙射,但前者不是滿射的。 盡管如此,論文http://arxiv.org/abs/1401.0379 “計算Binary Lambda微積分中的術語”可能會產生有效的排名/排名映射。

由於類型化的lambda演算具有高度上下文敏感性,如果有一種有效的算法,或者更確切地說是“自然的”有效算法,我會感到驚訝。

本文有很好的公式來計算無類型的 lambda術語,並從中得出一個相當簡單的函數來枚舉無類型的術語。 它們還為普通形式提供計數功能,這也很容易適應生成功能。 不幸的是,他們只通過過濾那些非常昂貴的類型來生成類型生成器功能(該論文的結果之一就是多么荒謬)。

至於生成類型化術語的更有效方法,我的建議是生成類型派生而不是術語,然后鍵入檢查它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM