(* Translation from lambda calculus into combinator calculus *) (* Author: Carsten Schuermann *) comb -> comb> exp) -> exp> exp -> exp> ded : comb> -> = {{c:comb}} <[x] c> |--> | <[x] x> |--> | <[x] k> |--> | <[x] s> |--> | <[x] (mp (C1 x) (C2 x))> |--> @ ( @ @ (ded )) @ (ded ) ; d1 : = ded <[x:comb] mp k x> ; d2 : comb> = {c} ( |--> (pop )) (); c2d : -> = {{x:comb -> exp}} |--> | |--> @ (c2d ) @ (c2d ) | |--> {c:comb}{x:comb -> exp} case c2d of ( |--> pop (pop (ded ))) ; c2d'1 = c2d ; c2d'2 = c2d ; c2d'3 = c2d ; c2d'4 = c2d ;