UnivSubst
type 'a universe_map = 'a Univ.Level.Map.t
type universe_subst = Univ.Universe.t universe_map
type universe_subst_fn = Univ.Level.t -> Univ.Universe.t
type universe_level_subst_fn = Univ.Level.t -> Univ.Level.t
val level_subst_of : universe_subst_fn -> universe_level_subst_fn
val subst_univs_constraints : universe_subst_fn -> Univ.Constraints.t -> Univ.Constraints.t
val subst_instance : universe_level_subst_fn -> Univ.Instance.t -> Univ.Instance.t
type universe_opt_subst = Univ.Universe.t option universe_map
val normalize_univ_variables : universe_opt_subst -> universe_opt_subst * Univ.Level.Set.t * universe_subst
val normalize_univ_variable_opt_subst : universe_opt_subst -> Univ.Level.t -> Univ.Universe.t
val normalize_universe_opt_subst : universe_opt_subst -> Univ.Universe.t -> Univ.Universe.t
val normalize_opt_subst : universe_opt_subst -> universe_opt_subst
Full universes substitutions into terms
val nf_evars_and_universes_opt_subst : (Constr.existential -> Constr.constr option) -> universe_opt_subst -> Constr.constr -> Constr.constr
val subst_univs_universe : (Univ.Level.t -> Univ.Universe.t) -> Univ.Universe.t -> Univ.Universe.t
val pr_universe_subst : universe_subst -> Pp.t
val enforce_eq : Univ.Universe.t Univ.constraint_function
val enforce_leq : Univ.Universe.t Univ.constraint_function
val enforce_eq_sort : Sorts.t -> Sorts.t -> Univ.Constraints.t -> Univ.Constraints.t
val enforce_leq_sort : Sorts.t -> Sorts.t -> Univ.Constraints.t -> Univ.Constraints.t
val enforce_leq_alg_sort : Sorts.t -> Sorts.t -> UGraph.t -> Univ.Constraints.t * UGraph.t
Picks an arbitrary set of constraints sufficient to ensure u <= v
.