Definition e_let (def body:expr) :=
  (App (Lam body) def).Definition none : expr := Lam (Lam (Var 1)).Definition some : expr := Lam (Lam (Lam (App (Var 0) (Var 2)))).Definition out  : expr := Lam (Lam (App (App (Var 0) (Var 1)) (Lam (Var 0)))).

(* Specifications: *)
Lemma out_typ : Typ nil out (ALL tau:pred world, ty_lam tau (ty_lam (option tau) tau)).
Lemma none_typ : Typ nil none (ALL tau:pred world, option tau).
Lemma some_typ : Typ nil some (ALL tau:pred world, ty_lam tau (option tau)).