次のようなツイートを見かけたので、私なりの回答を。
初歩的な疑問だけど、untyped lambda calculusのbig-step semanticsってどう定義されるのだろう?計算が止まらない時にうまく定義できないように思うのだが。
— yoriyuki (@yoriyuki) 2013, 11月 2
「計算が止まらない」には少なくとも二種類、
のように無意味な計算が延々続くものと、
のように意味のある計算が続いた結果として無限サイズの値を返すものがあって、これらは区別されます。通常の型無しλ計算の big-step semantics では後者の評価は「停止する」と考えます。
Big-step semantics は項と値の関係を与えるものですから、はじめに「値はなにか」ということを考える必要があります。型無しλ計算では、値をλ抽象とするのが通例で、住井先生の以下のツイートもこの設定での話であろうと思います。
@yoriyuki あーそれはその論文が関係がないかも…。「停止しない項の意味が1点に潰れる」は通常はその通りですが、何が問題でしょうか? その「問題」によって、対応する「通常」でないsemanticsがあるかもしれません(ないかもしれませんが)
— Eijiro Sumii (@esumii) 2013, 11月 2
値をすべてのλ抽象とした場合、「評価が停止しない」項はBoehm木もであり、Boehm木で考えても一点につぶれています(また game semantics でも一点に潰れます)。またBoehm木がでないなら、遅くとも head variable が決まるときには「評価が停止」しています。ちなみに逆は成り立たなくて、Boehm木はだが「評価が停止する」項が存在します。例えばとして、を考えます。すると、
ですので評価は停止します。しかしながら、
であることを踏まえると、
となりのBoehm木はです。
それでは値をBoehm木とするような big-step semantics は考えられるかというと、困難があるように思います。できるのなら co-inductive なルールに基づく評価規則になるのだろうと思いますが、適用の規則が難しそうです。それなら game semantics でいいじゃないか、と思ってしまいます。
最後に small-step semantics との関係について。まず、small-step semantics と Boehm thoery は異なります。βη同値な項は同じBoehm木を持ちますが、同じBoehm木を持つβη同値ではない項が知られています。*1直観的には、βη同値性は有限ステップの簡約による等しさで、Boehm木の等しさは無限ステップの簡約による等しさなので、後者の方が各同値類が大きいということになるかと思います。