UVarsmodule Variance : sig ... endmodule Instance : sig ... endConvenient function to compare the result of Instance.length, UContext.size etc
type 'a quconstraint_function = 'a -> 'a -> Sorts.QUConstraints.t -> Sorts.QUConstraints.tval enforce_eq_instances : Instance.t quconstraint_functionval enforce_eq_variance_instances : Variance.t array -> Instance.t quconstraint_functionval enforce_leq_variance_instances : Variance.t array -> Instance.t quconstraint_functiontype 'a puniverses = 'a * Instance.tval out_punivs : 'a puniverses -> 'aval in_punivs : 'a -> 'a puniversesval eq_puniverses : ('a -> 'a -> bool) -> 'a puniverses -> 'a puniverses -> booltype bound_names = Names.Name.t array * Names.Name.t arrayA vector of universe levels with universe Constraints.t, representing local universe variables and associated Constraints.t; the names are user-facing names for printing
module UContext : sig ... endA value in a universe context.
type 'a in_universe_context = 'a * UContext.tA value in a universe context.
module AbstractContext : sig ... endA value with bound universe levels.
val map_univ_abstracted : ('a -> 'b) -> 'a univ_abstracted -> 'b univ_abstractedval pr_quality_level_subst : (Sorts.QVar.t -> Pp.t) -> Sorts.Quality.t Sorts.QVar.Map.t -> Pp.ttype sort_level_subst = Sorts.Quality.t Sorts.QVar.Map.t * Univ.universe_level_substval empty_sort_subst : sort_level_substval is_empty_sort_subst : sort_level_subst -> boolval subst_univs_level_abstract_universe_context : Univ.universe_level_subst -> AbstractContext.t -> AbstractContext.tThere are no constraints on qualities, so this only needs a subst for univs
val subst_sort_level_instance : sort_level_subst -> Instance.t -> Instance.tLevel to universe substitutions.
val subst_sort_level_quality : sort_level_subst -> Sorts.Quality.t -> Sorts.Quality.tval subst_sort_level_sort : sort_level_subst -> Sorts.t -> Sorts.tval subst_sort_level_relevance : sort_level_subst -> Sorts.relevance -> Sorts.relevanceval subst_instance_instance : Instance.t -> Instance.t -> Instance.tSubstitution of instances
val subst_instance_universe : Instance.t -> Univ.Universe.t -> Univ.Universe.tval subst_instance_quality : Instance.t -> Sorts.Quality.t -> Sorts.Quality.tval subst_instance_sort : Instance.t -> Sorts.t -> Sorts.tval subst_instance_relevance : Instance.t -> Sorts.relevance -> Sorts.relevanceval subst_instance_sort_level_subst : Instance.t -> sort_level_subst -> sort_level_substval make_instance_subst : Instance.t -> sort_level_substCreates u(0) ↦ 0; ...; u(n-1) ↦ n - 1 out of u(0); ...; u(n - 1)
val abstract_universes : UContext.t -> Instance.t * AbstractContext.tTODO: move universe abstraction out of the kernel
val make_abstract_instance : AbstractContext.t -> Instance.tval pr_universe_context : (Sorts.QVar.t -> Pp.t) -> (Univ.Level.t -> Pp.t) -> ?variance:Variance.t array -> UContext.t -> Pp.tval pr_abstract_universe_context : (Sorts.QVar.t -> Pp.t) -> (Univ.Level.t -> Pp.t) -> ?variance:Variance.t array -> AbstractContext.t -> Pp.tval hcons_universe_context : UContext.t -> UContext.tval hcons_abstract_universe_context : AbstractContext.t -> AbstractContext.t