Module UVars.Instance

type t

A universe instance represents a vector of argument universes and sort qualities to a polymorphic definition (constant, inductive or constructor).

val empty : t
val is_empty : t -> bool
val of_array : (Sorts.Quality.t array * Univ.Level.t array) -> t
val to_array : t -> Sorts.Quality.t array * Univ.Level.t array
val abstract_instance : (int * int) -> t

Instance of the given size made of QVar/Level.var

val append : t -> t -> t

To concatenate two instances, used for discharge

val equal : t -> t -> bool

Equality

val length : t -> int * int

Instance length

val hcons : t -> t

Hash-consing.

val hash : t -> int

Hash value

val share : t -> t * int

Simultaneous hash-consing and hash-value computation

val pr : (Sorts.QVar.t -> Pp.t) -> (Univ.Level.t -> Pp.t) -> ?⁠variance:Variance.t array -> t -> Pp.t

Pretty-printing, no comments

val levels : t -> Sorts.Quality.Set.t * Univ.Level.Set.t

The set of levels in the instance

val subst_fn : ((Sorts.QVar.t -> Sorts.Quality.t) * (Univ.Level.t -> Univ.Level.t)) -> t -> t