(** * Scott encoding of numbers *)

Fixpoint enc (n : nat) :=
  match n with
  | 0   => lambda(lambda (1))
  | S n => lambda(lambda ( 0 (enc n)))
  end.

(* Specifications: *)
Lemma enc_proc m : proc (enc m).
Lemma enc_injective m n : enc m = enc n -> m = n.