Mlsem_common.EnvTyping environment: binds each variable in scope to a type scheme.
val empty : tval is_empty : t -> boolWhether the environment has no binding at all.
val singleton : Variable.t -> Mlsem_types.TyScheme.t -> tval construct : (Variable.t * Mlsem_types.TyScheme.t) list -> tval add : Variable.t -> Mlsem_types.TyScheme.t -> t -> tBinds a variable that is not already bound; use replace otherwise.
val replace : Variable.t -> Mlsem_types.TyScheme.t -> t -> tBinds a variable, overriding any previous binding.
val domain : t -> Variable.t listval bindings : t -> (Variable.t * Mlsem_types.TyScheme.t) listval mem : Variable.t -> t -> boolval find : Variable.t -> t -> Mlsem_types.TyScheme.tval find_opt : Variable.t -> t -> Mlsem_types.TyScheme.t optionval rm : Variable.t -> t -> tval rms : Variable.t list -> t -> tval restrict : Variable.t list -> t -> tval map : (Mlsem_types.TyScheme.t -> Mlsem_types.TyScheme.t) -> t -> tval filter : (Variable.t -> Mlsem_types.TyScheme.t -> bool) -> t -> tval tvars : t -> Mlsem_types.MVarSet.tAn over-approximation of the type variables occurring in the environment: it is maintained incrementally and not recomputed when a binding is combined with another. Sound wherever it is used to build a set of monomorphic variables, but not a reliable "occurs" test.
leq env1 env2 holds when env1 is at least as precise as env2: it binds at least the same variables, at smaller types.
val show : t -> stringval pp : Stdlib.Format.formatter -> t -> unit