2010年2月12日金曜日

SK言語でdecもしくはeqってどうやって作るの?

SK言語の説明

・SとKは項である
・項Xと項Yを括弧でくくったもの(XY)も項である
・XYはXという関数にYを入力する事を意味する
・項X,Y,Zに対して ((XY)Z)という形は括弧を省略しXYZと書くことが出来る
・XYZはXという関数は2変数関数で入力としてYZを与えることを意味する。
・(X(YZ))という形の項はXYZと書いてはいけない


・項は簡約される。
・KXYという形の項はXに書き換えることが出来る。(Kによる簡約、射影)
・SXYZという形の項はXZ(YZ)に書き換えることが出来る。(Sによる簡約、分配)

・Mを簡約してNになる事を M→N で書く
・Mを0回以上簡約してNになることを M―*→N で書く
・Xを簡約してY1とY2にできるとき、Y1とY2はさらに共通のZに簡約出来る(合流性)
・M1―*→N, M2―*→N の時 M1=M2 と書く。 = は同値関係になっている。
・S,K言語はチューリング完全
・S,K言語はどんな計算もエミュレート出来る



・次のような遊びが出来る

「BXYZを簡約していくと X(YZ)の形になる。BをSとKで表せ」

BXYZ → X(YZ) ← X(YZ) ← KXZ(YZ) ← S(KX)YZ ← (KSX)(KX)YZ ← S(KS)KXYZ

したがって
BXYZ = S(KS)KXYZ
任意の XYZに対してこれは成り立つので
B = S(KS)K

電車の中で暇がつぶせる

0 件のコメント: