Module Mlsem_types.Subst

include module type of struct include Subst end
type t = Sstt__Subst.t
val identity : t
val singleton1 : Sstt__.Core.Var.t -> Sstt__.Core.Ty.t -> t
val singleton2 : Sstt__.Core.RowVar.t -> Sstt__.Row.t -> t
val of_list1 : (Sstt__.Core.Var.t * Sstt__.Core.Ty.t) list -> t
val of_list2 : (Sstt__.Core.RowVar.t * Sstt__.Row.t) list -> t
val of_list : (Sstt__.Core.Var.t * Sstt__.Core.Ty.t) list -> (Sstt__.Core.RowVar.t * Sstt__.Row.t) list -> t
val to_core_subst : t -> Sstt__.Core.Ty.subst
val refresh1 : ?names:(Sstt__.Core.Var.t -> string) -> Sstt__.Core.VarSet.t -> t * t
val refresh2 : ?names:(Sstt__.Core.RowVar.t -> string) -> Sstt__.Core.RowVarSet.t -> t * t
val refresh : ?names1:(Sstt__.Core.Var.t -> string) -> ?names2:(Sstt__.Core.RowVar.t -> string) -> Sstt__.Core.MixVarSet.t -> t * t
val domain1 : t -> Sstt__.Core.VarSet.t
val domain2 : t -> Sstt__.Core.RowVarSet.t
val domain : t -> Sstt__.Core.MixVarSet.t
val intro1 : t -> Sstt__.Core.VarSet.t
val intro2 : t -> Sstt__.Core.RowVarSet.t
val intro : t -> Sstt__.Core.MixVarSet.t
val bindings1 : t -> (Sstt__.Core.Var.t * Sstt__.Core.Ty.t) list
val bindings2 : t -> (Sstt__.Core.RowVar.t * Sstt__.Row.t) list
val find1 : t -> Sstt__.Core.Var.t -> Sstt__.Core.Ty.t
val find2 : t -> Sstt__.Core.RowVar.t -> Sstt__.Row.t
val add1 : Sstt__.Core.Var.t -> Sstt__.Core.Ty.t -> t -> t
val add2 : Sstt__.Core.RowVar.t -> Sstt__.Row.t -> t -> t
val remove1 : Sstt__.Core.Var.t -> t -> t
val remove2 : Sstt__.Core.RowVar.t -> t -> t
val remove_many1 : Sstt__.Core.VarSet.t -> t -> t
val remove_many2 : Sstt__.Core.RowVarSet.t -> t -> t
val remove_many : Sstt__.Core.MixVarSet.t -> t -> t
val restrict1 : Sstt__.Core.VarSet.t -> t -> t
val restrict2 : Sstt__.Core.RowVarSet.t -> t -> t
val restrict : Sstt__.Core.MixVarSet.t -> t -> t
val filter1 : (Sstt__.Core.Var.t -> Sstt__.Core.Ty.t -> bool) -> t -> t
val filter2 : (Sstt__.Core.RowVar.t -> Sstt__.Row.t -> bool) -> t -> t
val map1 : (Sstt__.Core.Ty.t -> Sstt__.Core.Ty.t) -> t -> t
val map2 : (Sstt__.Row.t -> Sstt__.Row.t) -> t -> t
val compose : t -> t -> t
val compose_restr : t -> t -> t
val combine : t -> t -> t
val equiv : t -> t -> bool
val is_identity : t -> bool
val apply : t -> Sstt__.Core.Ty.t -> Sstt__.Core.Ty.t
val apply_to_row : t -> Sstt__.Row.t -> Sstt__.Row.t
val pp : Stdlib.Format.formatter -> 'a -> unit
val pp_raw : Stdlib.Format.formatter -> Sstt__.Subst.t -> unit