(* Variables des λ-termes *) type var = string;; (* Variable des types simples *) type tvar = string;; (* Type complexe *) type ty = TSimple of tvar | TImpl of ty * ty | TFalse;; (* λ-terme *) type lam = LFun of var * ty * lam | LApp of lam * lam | LVar of var | LExf of lam * ty;; (* Environnement de typage *) type gam = (tvar * ty) list;; (* λ-terme avec des trous *) type lho = (lam list) -> lam;;