Module type TypeMono.S

module type S = sig .. end
A polymorphic type is a term that respects TypeMono.S.is_ty

module T: TI.REPR 
val is_ty : T.t -> bool
val repr : T.t -> T.t TypeMono.view
repr t returns the view of t as a type. precondition: is_ty t raise some exception otherwise
val as_ty : T.t -> T.t TypeMono.view option
as_ty t returns Some view if is_ty t, repr t = view, and returns None otherwise
val repr_with : subst:(T.t, T.t) Subst.t -> T.t -> T.t TypeMono.view
representation that follows the substitution. Will fail on a variable, except if it is bound
val mangle : sep:string -> T.t -> string
serialize the whole type into a flat name
module Map: CCMap.S  with type key = T.t
A map on terms that only accepts terms satisfying is_ty as keys