Context.NamedThis module represents contexts that can capture non-anonymous variables. Individual declarations are then designated by the identifiers they bind.
module Declaration : sig ... endRepresentation of local declarations.
type ('constr, 'types, 'r) pt = ('constr, 'types, 'r) Declaration.pt listNamed-context is represented as a list of declarations. Inner-most declarations are at the beginning of the list. Outer-most declarations are at the end of the list.
val empty : ('c, 't, 'r) ptempty named-context
val add : ('c, 't, 'r) Declaration.pt -> ('c, 't, 'r) pt -> ('c, 't, 'r) ptReturn a new named-context enriched by with a given inner-most declaration.
val length : ('c, 't, 'r) pt -> intReturn the number of local declarations in a given named-context.
val lookup : Names.Id.t -> ('c, 't, 'r) pt -> ('c, 't, 'r) Declaration.ptReturn a declaration designated by an identifier of the variable bound in that declaration.
Check whether given two named-contexts are equal.
Map all terms in a given rel-context.
Map all terms in a given named-context.
val iter : ('c -> unit) -> ('c, 'c, 'r) pt -> unitPerform a given action on every declaration in a given named-context.
val fold_inside : ('a -> ('c, 't, 'r) Declaration.pt -> 'a) -> init:'a -> ('c, 't, 'r) pt -> 'aReduce all terms in a given named-context to a single value. Innermost declarations are processed first.
val fold_outside : (('c, 't, 'r) Declaration.pt -> 'a -> 'a) -> ('c, 't, 'r) pt -> init:'a -> 'aReduce all terms in a given named-context to a single value. Outermost declarations are processed first.
val to_vars : ('c, 't, 'r) pt -> Names.Id.Set.tReturn the set of all identifiers bound in a given named-context.
Turn all LocalDef into LocalAssum, leave LocalAssum unchanged.
val to_instance : (Names.Id.t -> 'v) -> ('c, 't, 'r) pt -> 'v listto_instance Ω builds an instance args in reverse order such that Ω ⊢ args:Ω where Ω is a named-context and with the local definitions of Ω skipped. Example: for id1:T,id2:=c,id3:U, it gives Var id1, Var id3. All idj are supposed distinct.
val instance : (Names.Id.t -> 'v) -> ('c, 't, 'r) pt -> 'v arrayinstance Ω builds an instance args such that Ω ⊢ args:Ω where Ω is a named-context and with the local definitions of Ω skipped. Example: for the context id1:T,id2:=c,id3:U (which is internally represented by a list with id3 at the head), it gives Var id1, Var id3. All idj are supposed distinct.
val instance_list : (Names.Id.t -> 'v) -> ('c, 't, 'r) pt -> 'v listinstance_list is like instance but returning a list.