module Ty: SPECIALIZED  with type term = Type.t
type term 
type t = Substs.subst 
val find_exn : t ->
       Substs.var Scoped.t -> term Scoped.t
val get_var : t ->
       Substs.var Scoped.t -> term Scoped.t option
val deref : t ->
       term Scoped.t -> term Scoped.t
val apply : t ->
       renaming:Substs.Renaming.t ->
       term Scoped.t -> term
Apply the substitution to the given term/type.
renaming : used to desambiguate free variables from distinct scopes
val apply_no_renaming : t ->
       term Scoped.t -> term
Same as 
Substs.SPECIALIZED.apply, but performs no renaming of free variables.
      
Caution, can entail collisions between scopes!
 
val bind : t ->
       Substs.var Scoped.t ->
       term Scoped.t -> t
Add v -> t to the substitution. Both terms have a context.
Raises InconsistentBinding if v is already bound in
        the same context, to another term.