Module UnivProblem

Constraints for type inference

When doing conversion of universes, not only do we have =/<= constraints but also Lub constraints which correspond to unification of two levels which might not be necessary if unfolding is performed.

UWeak constraints come from irrelevant universes in cumulative polymorphism.

type t =
| ULe of Univ.Universe.t * Univ.Universe.t
| UEq of Univ.Universe.t * Univ.Universe.t
| ULub of Univ.Level.t * Univ.Level.t
| UWeak of Univ.Level.t * Univ.Level.t
val is_trivial : t -> bool
val check : UGraph.t -> t -> bool
module Set : sig ... end
type 'a constraint_function = 'a -> 'a -> Set.t -> Set.t
val enforce_eq_instances_univs : bool -> Univ.Instance.t constraint_function