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
module Set : sig ... endtype 'a accumulator= Set.t -> 'a -> 'a optiontype 'a constrained= 'a * Set.ttype 'a constraint_function= 'a -> 'a -> Set.t -> Set.t
val enforce_eq_instances_univs : bool -> Univ.Instance.t constraint_functionval to_constraints : force_weak:bool -> UGraph.t -> Set.t -> Univ.Constraint.tWith
force_weakUWeak constraints are turned into equalities, otherwise they're forgotten.
val eq_constr_univs_infer_with : (Constr.constr -> (Constr.constr, Constr.types, Sorts.t, Univ.Instance.t) Constr.kind_of_term) -> (Constr.constr -> (Constr.constr, Constr.types, Sorts.t, Univ.Instance.t) Constr.kind_of_term) -> UGraph.t -> 'a accumulator -> Constr.constr -> Constr.constr -> 'a -> 'a optioneq_constr_univs_infer_With kind1 kind2 univs m nis a variant ofeq_constr_univs_infertaking kind-of-term functions, to expose subterms ofmandn, arguments.