Module UVars.AbstractContext
type t
An abstract context serves to quantify over a graph of universes represented using de Bruijn indices, as in: u0, ..., u(n-1), Var i < Var j, .., Var k <= Var l |- term(Var 0 .. Var (n-1)) \-------------/ \-------------------------------/ \---------------------/ names for constraints expressed on de Bruijn judgement in abstract printing representation of the n univ vars context expected to use de Bruijn indices
val make : bound_names -> Univ.Constraints.t -> t
Build an abstract context. Constraints may be between universe variables.
val repr : t -> UContext.t
repr ctx
is(Var(0), ... Var(n-1) |= cstr
wheren
is the length of the context andcstr
the abstracted Constraints.t.
val empty : t
val is_empty : t -> bool
val is_constant : t -> bool
Empty instance, but may have constraints
val size : t -> int * int
val union : t -> t -> t
The constraints are expected to be relative to the concatenated set of universes
val instantiate : Instance.t -> t -> Univ.Constraints.t
Generate the set of instantiated Constraints.t *
val names : t -> bound_names
Return the names of the bound universe variables