module Pure : sig type t = V of int | A of t * t | L of t | B val print : ?l:string list -> t -> string val lift : int -> t -> t val mwhd : (('a * t * ('b list as 'c) as 'b) list as 'a) * t * 'c -> t val omega : bool -> t val diverged : t -> bool val env_of_sigma : int -> (int * t) list -> (('a * t * ('b list as 'c) as 'b) list as 'a) end module Scott : sig val mk_n : int -> Pure.t val dummy : Pure.t val mk_match : Pure.t -> (int * Pure.t) list -> Pure.t end