UVarsmodule Variance : sig ... endmodule Instance : sig ... endConvenient function to compare the result of Instance.length, UContext.size etc
module QPairSet : CSig.SetS with type elt = Sorts.Quality.t * Sorts.Quality.ttype 'a pconstraints_function =
'a ->
'a ->
(QPairSet.t * Univ.UnivConstraints.t) ->
QPairSet.t * Univ.UnivConstraints.tval enforce_eq_instances : Instance.t pconstraints_functionval enforce_eq_variance_instances :
Variance.t array ->
Instance.t pconstraints_functionval enforce_leq_variance_instances :
Variance.t array ->
Instance.t pconstraints_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 ->
boolval empty_bound_names : bound_namesA vector of universe levels with universe PConstraints.t, representing local universe variables and associated PConstraints.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_abstractedtype universe_level_subst = Univ.Level.t Univ.Level.Map.ttype sort_level_subst = Sorts.Quality.t Sorts.QVar.Map.t * universe_level_substval empty_level_subst : universe_level_substval is_empty_level_subst : universe_level_subst -> boolval subst_univs_level_level :
universe_level_subst ->
Univ.Level.t ->
Univ.Level.tSubstitution of universes.
val subst_univs_level_universe :
universe_level_subst ->
Univ.Universe.t ->
Univ.Universe.tval subst_univs_constraints :
universe_level_subst ->
Univ.UnivConstraints.t ->
Univ.UnivConstraints.tval subst_poly_constraints :
sort_level_subst ->
PConstraints.t ->
PConstraints.tval pr_universe_level_subst :
(Univ.Level.t -> Pp.t) ->
universe_level_subst ->
Pp.tval pr_quality_level_subst :
Sorts.Quality.printer ->
Sorts.Quality.t Sorts.QVar.Map.t ->
Pp.tval empty_sort_subst : sort_level_substval is_empty_sort_subst : sort_level_subst -> boolval subst_univs_level_abstract_universe_context :
sort_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.t