算道の解析
算道なる構成論的アートとは、 論理珠算を用いた計算であるが、 説明がかなり省かれていてよくわからんのでここにまとめる。
Unlambda記法
算道の表記で Unlambda記法 (Unlambda expression ?) は、 下記のとおり珠を転写して表記したものである。
珠 | 文字 |
---|---|
白珠 | ` |
青珠 | s |
黄珠 | k |
赤珠 | i |
例えば、零を表す「白白赤黄青」は、``iks
と表す。
これは、つまるところSKIコンビネータ計算 の Unlambda 表記そのものであって、 算道はSKIと等価である。
整珠
s
,k
,i
は、 それぞれ単珠(single-ju?)と呼ばれるが、これはまた整珠(integal-ju?)でもある。@1
,@2
が整珠のとき、`@1@2
もまた整珠である。- 複珠(multiple-ju?)とは複数の珠からなる整珠のことである。
整珠の構造
複珠は`@1@2
からなるから、`@1@2
が入れ子になって
整珠ができている。
整珠の入れ子の構造を括弧で表した例を以下に示す。
- 零
``iks = `(`ik)s
- 一
`s`ki = `s(`ki)
- ものまね鳥の番い
```sii``sii = `(`(`si)i)(`(`(si)i)
論理算盤への展開
論理珠算を行うにあたり論理算盤へ珠を展開する。 展開する時、珠を左から右、上から下に置いていく。 珠を置かない場所を作ってもよいし、 珠を右に置くか下の行に移動するかは自由である。
配置方法について言及していていないため、 下記に出てくる記法・用語は本文書で提案するものである。
Unlambda形式に依る論理算盤の記述
本文書では、盤面上の配置を Unlambda形式に依ってそのまま記載するものとする。
但し、珠が置かれていないことを _
で示す。
`sk
の盤面上の配置例を下記に示す。
` s
_ k
「直列配置」
「直列配置(Linear alignment)」は、そのまま盤面に左から右へ並べたものである。
` s k
なお、紙面の横幅の都合上途中で行を変えてもよい。
` ` ` s i i
` ` s i i
「完全二分木配置」
「完全二分木配置(complete binary-tree alignment)」は、`@1@2
の入れ子構造を
完全な形で表現した配置形式である。
`@1@2
を下記の通り配置する。
` @1
_ @2
ここで@1
,@2
が、複珠であるとき、
さらに入れ子にする形で配置する。
たとえば
@1 = `@3@4
, @2 = `@5@6
であるならば、
先ほどのの盤面は下記のようになる。
` ` @3
_ _ @4
_ ` @5
_ _ @6
「二分木配置」
完全二分木配置では、紙面も盤面も大きさを要する。
そこで完全二分木配置のうち一部の`@1@2
構造をまとめて積み上げることを考える。
ここでは積み上げた珠は括弧を用いて表現する。
` ` @3
_ _ @4
_ (`@5@6)
規則
下記の規則に基づいて整珠を動かす=計算することができる。
- 青珠の規則 (s-rule?)
```s@0@1@2 = ``@0@2`@1@2
- 黄珠の規則 (k-rule?)
``k@0@1 = @0
- 赤珠の規則 (i-rule?)
`i@0 = @0
ここで@0
,@1
,...は整珠である。
青珠の規則において、2回現れているがこれは@2
を複製して同じものを2つ用意するということである。
それぞれの規則を、以下に二分木配置で表す。
- 青珠の規則 (s-rule?)
-
↓` ` ` s @0 @1 @2
` ` @0 @2 ` @1 @2
- 黄珠の規則 (k-rule?)
-
↓` ` k @0 @1
@1
- 赤珠の規則 (i-rule?)
-
↓` i @0
@0
それぞれの規則の前後は共に整珠である。 規則に従って計算している限り、計算結果は整珠である。 逆に整珠でなくなったときは計算に失敗(いわゆる計算ミス)しているのである。
算道の規則とSKI評価演算の関係
- 青珠の規則 (s-rule?)
- Substitution combinator
- 黄珠の規則 (k-rule?)
- Constant combinator
- 赤珠の規則 (i-rule?)
- Identity combinator
計算手順
- 整珠であることを確認。
- 整珠ならば次に進む。
- 整珠ではない場合計算に失敗。
- 赤珠の規則(i-rule?)が適用可能ならば適用する
- 適用したら1からやり直す。
- 適用できない場合次に進む
- 黄珠の規則(k-rule?)が適用可能ならば適用する
- 適用したら1からやり直す。
- 適用できない場合次に進む
- 青珠の規則(s-rule?)が適用可能ならば適用する
- 適用したら1からやり直す。
- 適用できない場合計算終了
計算例:真かつ偽
『真かつ偽』を表す整珠は````sskk`sk
である。
青珠の規則(s-rule?)を` ` ` ` s _ _ _ _ s _ _ _ k _ _ k _ (`sk)
```sskk
に適用し、` ` ` s _ _ _ k _ _ ` k _ _ _ k _ (`sk)
`kk
を積み上げて
青珠の規則(s-rule?)を全体に適用し、` ` ` s _ _ _ k _ _ (`kk) _ (`sk)
` ` k _ _ (`sk) _ ` (`kk) _ _ (`sk)
``kk`sk
を積み上げて
黄珠の規則(k-rule?)を全体に適用し、` ` k _ _ (`sk) _ (``kk`sk)
計算終了。答えは「偽」である。(`sk)
感想
青珠の規則の規則にて、@2
を複製する必要があるが、
珠に凹凸のパターンを付けるなどして複製が容易にするようにするとよいと思う。