Module Context
The modules defined below represent a local context as defined by Chapter 4 in the Reference Manual:
A local context is an ordered list of of local declarations of names that we call variables.
A local declaration of some variable can be either:
- a local assumption, or
- a local definition.
Local assumptions are denoted in the Reference Manual as (name : typ) and local definitions are there denoted as (name := value : typ).
- type 'a binder_annot- =- {- binder_name : 'a;- binder_relevance : Sorts.relevance;- }
- val eq_annot : ('a -> 'a -> bool) -> 'a binder_annot -> 'a binder_annot -> bool
- val hash_annot : ('a -> int) -> 'a binder_annot -> int
- val map_annot : ('a -> 'b) -> 'a binder_annot -> 'b binder_annot
- val make_annot : 'a -> Sorts.relevance -> 'a binder_annot
- val binder_name : 'a binder_annot -> 'a
- val binder_relevance : 'a binder_annot -> Sorts.relevance
- val annotR : 'a -> 'a binder_annot
- Always Relevant 
- val nameR : Names.Id.t -> Names.Name.t binder_annot
- Relevant + Name 
- val anonR : Names.Name.t binder_annot
- Relevant + Anonymous 
- module Rel : sig ... end
- Representation of contexts that can capture anonymous as well as non-anonymous variables. Individual declarations are then designated by de Bruijn indexes. 
- module Named : sig ... end
- This module represents contexts that can capture non-anonymous variables. Individual declarations are then designated by the identifiers they bind. 
module Compacted : sig ... end