算道なる構成論的アートとは、 論理珠算を用いた計算であるが、 説明がかなり省かれていてよくわからんのでここにまとめる。

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

計算手順

  1. 整珠であることを確認。
    • 整珠ならば次に進む。
    • 整珠ではない場合計算に失敗。
  2. 赤珠の規則(i-rule?)が適用可能ならば適用する
    • 適用したら1からやり直す。
    • 適用できない場合次に進む
  3. 黄珠の規則(k-rule?)が適用可能ならば適用する
    • 適用したら1からやり直す。
    • 適用できない場合次に進む
  4. 青珠の規則(s-rule?)が適用可能ならば適用する
    • 適用したら1からやり直す。
    • 適用できない場合計算終了

計算例:真かつ偽

『真かつ偽』を表す整珠は````sskk`skである。

  1. ` ` ` ` s
    _ _ _ _ s
    _ _ _ k
    _ _ k
    _ (`sk)
    
    青珠の規則(s-rule?)を```sskkに適用し、
  2. ` ` ` s
    _ _ _ k
    _ _ ` k
    _ _ _ k
    _ (`sk)
    
    `kkを積み上げて
  3. ` ` ` s
    _ _ _ k
    _ _ (`kk)
    _ (`sk)
    
    青珠の規則(s-rule?)を全体に適用し、
  4. ` ` k
    _ _ (`sk)
    _ ` (`kk)
    _ _ (`sk)
    
    ``kk`skを積み上げて
  5. ` ` k
    _ _ (`sk)
    _ (``kk`sk)
    
    黄珠の規則(k-rule?)を全体に適用し、
  6. (`sk)
    計算終了。答えは「偽」である。

感想

青珠の規則の規則にて、@2を複製する必要があるが、 珠に凹凸のパターンを付けるなどして複製が容易にするようにするとよいと思う。

参考文献

  • 山本一彰, "算道"
  • "算道", 第21回学生CGコンテスト, 2015
  • "算道", 第19回文化庁メディア芸術祭