true x y := x false x y := y pair a b := \c.(c a b) left p := (p true) false p := (p false) zero 0 1 x := x print n := (n 0 1 end) inc n := \0 1 x.{ initial := (pair true x) onZero p := (pair false ((left p 1 0) (right p))) onOne p := (pair (left p) (1 (right p))) (n onZero onOne initial) } (print zero)