convert flip lambda into SKI terms -


i'm having trouble converting lambda flip ski combinators (i hope makes sense). here conversion:

/fxy.fyx /f./x./y.fyx /f./x.s (/y.fy) (/y.x) /f./x.s f (/y.x) /f./x.s f (k x) /f.s (/x.s f) (/x.k x) /f.s (/x.s f) k /f.s (s (/x.s) (/x.f)) k /f.s (s (k s) (k f)) k s (/f.s (s (k s) (k f))) (/f.k) s (/f.s (s (k s) (k f))) (k k) s (s (/f.s) (/f.s (k s) (k f))) (k k)  s (s (k s) (/f.s (k s) (k f))) (k k) s (s (k s) (s (/f.s (k s)) (/f.k f))) (k k) s (s (k s) (s (/f.s (k s)) k)) (k k) s (s (k s) (s (s (/f.s) (/f.k s)) k)) (k k) s (s (k s) (s (s (k s) (/f.k s)) k)) (k k) s (s (k s) (s (s (k s) (s (/f.k) (/f.s))) k)) (k k) s (s (k s) (s (s (k s) (s (k k) (k s))) k)) (k k) 

if understand in b, c, k, w system, c flip , it's definition in ski terms s (s (k (s (k s) k)) s) (k k). answer isn't same c combinator... here rules used conversions:

k y = /x.y  - k combinator (skk) = /x.x  -  combinator (s (/x.f) (/x.g)) = (/x.fg)  -  s combinator y = (/x.yx)  -  eta reduction /x./y.f = /xy.f  - currying note s rule can convert longer expressions - example, λ x.abcdeg can converted setting f = abcde. 

what missing?

once answer being accepted revised , figured out wrong.

your final result correct, although not "official" answer in text book, possible different ski terms equivalent same lambda expression.

s [s (k s) (s (s (k s) (s (k k) (k s))) k)] [k k] f x y -> s (k s) (s (s (k s) (s (k k) (k s))) k) f (k k f) x y -> k s f (s (s (k s) (s (k k) (k s))) k f) (k k f) x y -> s [s (s (k s) (s (k k) (k s))) k f] (k k f) x y -> s [s (k s) (s (k k) (k s))] k f x (k k f x) y -> s [k s] [s (k k) (k s)] f (k f) x (k k f x) y -> k s f (s (k k) (k s) f) (k f) x (k k f x) y -> s [s (k k) (k s) f] [k f] x (k k f x) y -> s [k k] [k s] f x (k f x) (k k f x) y -> k k f (k s f) x (k f x) (k k f x) y -> k (k s f) x (k f x) (k k f x) y -> k s f (k f x) (k k f x) y -> s [k f x] [k k f x] y -> k f x y (k k f x y) -> f y (k k f x y) -> f y (k x y) -> f y x 

the above derive, based on left reduction order, proves final term equivalent c combinator.


Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -