# natural zero = \ s z . z succ = \ n s z . s n infinity = succ infinity even = \n . n odd true odd = \n . n even false add = \ m n . m (\p . succ (add n p)) n mul = \ m n . m (\p . add n (mul n p)) zero sub = \ m n . m (\p . n (sub p) m) zero equal = \ m n . m (\mm . n (\nn . equal mm nn) false) (n (\nn . false) true) lessThan = \x y . x (\xx . y (\yy . lessThan xx yy) false) (y (\yy . true) false)