Module Mlsem_common.REnv

include Env.Env with type ty := Mlsem_types.Ty.t
type t
val empty : t
val is_empty : t -> bool
val singleton : Variable.t -> Mlsem_types.Ty.t -> t
val construct : (Variable.t * Mlsem_types.Ty.t) list -> t
val add : Variable.t -> Mlsem_types.Ty.t -> t -> t
val replace : Variable.t -> Mlsem_types.Ty.t -> t -> t
val domain : t -> Variable.t list
val bindings : t -> (Variable.t * Mlsem_types.Ty.t) list
val mem : Variable.t -> t -> bool
val find : Variable.t -> t -> Mlsem_types.Ty.t
val rm : Variable.t -> t -> t
val rms : Variable.t list -> t -> t
val restrict : Variable.t list -> t -> t
val map : (Mlsem_types.Ty.t -> Mlsem_types.Ty.t) -> t -> t
val filter : (Variable.t -> Mlsem_types.Ty.t -> bool) -> t -> t
val tvars : t -> Mlsem_types.MVarSet.t
val substitute : Mlsem_types.Subst.t -> t -> t
val equiv : t -> t -> bool
val leq : t -> t -> bool
val show : t -> string
val pp : Stdlib.Format.formatter -> t -> unit
val pp_filtered : string list -> Stdlib.Format.formatter -> t -> unit
val find' : Variable.t -> t -> Mlsem_types.Ty.t
val cap : t -> t -> t
val conj : t list -> t
val neg : t -> t list
val cup_approx : t -> t -> t
val disj_approx : t list -> t
val neg_approx : t -> t option
val refine_env : Env.t -> t -> Env.t