0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

X=〈K,S,K〉コンビネータからK,Sを導く

Last updated at Posted at 2025-07-02
Page 1 of 2

数学の大学教授から薦められて、論文を読んでいる。
the Lambda Calculus is Algebra
Peter Selinger (2002)

だが、記号の意味や定義の意味が分からないことだらけで、ずーーとたどっていくとある一つのコンビネータで基本コンビネータ$S,K$を表せるという定義にたどり着いた。それは、$$X\equiv\ \langle K,S,K\rangle$$

$X$の組み合わせのみで
$$XXX\rightarrow K$$

$$X(XX)\rightarrow S$$

となり、$X$のみで$S,K$を表せることを示す。

ここで、$K,S$の定義は以下の通り:
$$K\equiv\lambda xy.x$$

$$S\equiv\lambda xyz.xz(yz)$$

以前書いたブログでもイオタ・コンビネータがK,Sを表せることを示した。ちなみに、イオタ・コンビネータは以下の定義:

$$\iota\equiv\ \lambda f.fSK$$

<,...,>とは何?

まずはこの括弧$\langle,\dots,\rangle$について説明する。
これはタプルを表し、一般に
$$\langle M_1,\cdots M_n\rangle\equiv\lambda xM_1,\cdots,M_n$$となる。二項の場合はペア$$[M,N]\equiv\lambda x.x MN$$となる。

つまり$X$は、$$X\equiv\langle K,S,K\rangle\equiv\lambda f.fKSK$$となる。

(i) XXX=K

まずは$XX$を計算する。
$XX\equiv(\lambda f.fKSK)X
\rightarrow XKSK
\equiv(\lambda f.fKSK)KSK$
$\rightarrow (KKSK)SK\rightarrow(KK)SK
\rightarrow KK$

$XXX\equiv(XX)X\equiv(KK)X\rightarrow K$
$$XXX\rightarrow K$$

(ii) X(XX)=S

$X(XX)\equiv X(KK)
\equiv(\lambda f.fKSK)(KK)
\rightarrow(KK)KSK$
$\rightarrow KSK
\rightarrow S$
$$X(XX)\rightarrow S$$

おまけ X(X(XX))?

ちなみに$X(X(XX))$はどうなるか、計算してみた。
$X(X(XX))\equiv X(S)\equiv(\lambda f.fKSK)S
\rightarrow SKSK$
$\rightarrow KK(SK)
\rightarrow K$
$$X(X(XX))\rightarrow K$$

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?