Module Cooking

Data needed to abstract over the section variables and section universes
type abstr_inst_info
type 'a entry_map = 'a Names.Cmap.t * 'a Names.Mindmap.t
type expand_info = abstr_inst_info entry_map
type cooking_info
val empty_cooking_info : cooking_info

Nothing to abstract

val make_cooking_info : recursive:Names.MutInd.t option -> expand_info -> Constr.named_context -> UVars.UContext.t -> cooking_info * abstr_inst_info

Abstract a context assumed to be de-Bruijn free for terms and universes

val names_info : cooking_info -> Names.Id.Set.t
val universe_context_of_cooking_info : cooking_info -> UVars.AbstractContext.t
val instance_of_cooking_info : cooking_info -> Constr.t array
type cooking_cache
val create_cache : cooking_info -> cooking_cache
val instance_of_cooking_cache : cooking_cache -> Constr.t array
val rel_context_of_cooking_cache : cooking_cache -> Constr.rel_context
val abstract_as_type : cooking_cache -> Constr.types -> Constr.types
val abstract_as_body : cooking_cache -> Constr.constr -> Constr.constr
val abstract_as_sort : cooking_cache -> Sorts.t -> Sorts.t
val lift_mono_univs : cooking_info -> Univ.ContextSet.t -> cooking_info * Univ.ContextSet.t
val lift_poly_univs : cooking_info -> UVars.AbstractContext.t -> cooking_info * (int * int) * UVars.AbstractContext.t

The int is how many universes got discharged, ie size of returned context - size of input context.

val lift_private_mono_univs : cooking_info -> 'a -> 'a
val lift_private_poly_univs : cooking_info -> Univ.ContextSet.t -> Univ.ContextSet.t
val discharge_proj_repr : cooking_info -> Names.Projection.Repr.t -> Names.Projection.Repr.t