(* Combinators for the transformation calculus *)
let I x = x ;;
let K = \x ;;
let D x f = ;;
let L_a x = <> ;;
let L_1 x = <<1:x>> ;;
let L_2 x = <<2:x>> ;;
let L_3 x = <<3:x>> ;;
let E_a a:x = ;;
let E_1 1:x = ;;
let E_2 2:x = ;;
let O = K K ;;
let P = K o D ;;
let U = P o E_2 ;;
let A = I o (U I) ;;
let R = P o L_1 ;;
let T = R o E_2 ;;
let B = R o T o A L_3 ;;
let S = E_2 o R o A L_3 o D <> o E_2 ;;
let W = D <> ;;