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 ... end- type 'a accumulator- = Set.t -> 'a -> 'a option
- type 'a constrained- = 'a * Set.t
- type 'a constraint_function- = 'a -> 'a -> Set.t -> Set.t
- val enforce_eq_instances_univs : bool -> Univ.Instance.t constraint_function
- val to_constraints : force_weak:bool -> UGraph.t -> Set.t -> Univ.Constraint.t
- With - 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 option
- eq_constr_univs_infer_With kind1 kind2 univs m nis a variant of- eq_constr_univs_infertaking kind-of-term functions, to expose subterms of- mand- n, arguments.