(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* value -> t -> t val find : key -> t -> value val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a end module Constants : Map with type key := Constant.t and type value := constant_key module Inductives : Map with type key := MutInd.t and type value := mind_key type globals = { env_constants : Constants.t; env_inductives : Inductives.t; env_modules : module_body MPmap.t; env_modtypes : module_type_body MPmap.t} type stratification = { env_universes : universes; env_engagement : engagement option } type lazy_val val force_lazy_val : lazy_val -> (values * Id.Set.t) option val dummy_lazy_val : unit -> lazy_val val build_lazy_val : lazy_val -> (values * Id.Set.t) -> unit type named_vals = (Id.t * lazy_val) list type env = { env_globals : globals; env_named_context : named_context; env_named_vals : named_vals; env_rel_context : rel_context; env_rel_val : lazy_val list; env_nb_rel : int; env_stratification : stratification; env_conv_oracle : Conv_oracle.oracle; retroknowledge : Retroknowledge.retroknowledge } type named_context_val = named_context * named_vals val empty_named_context_val : named_context_val val empty_env : env (** Rel context *) val nb_rel : env -> int val push_rel : rel_declaration -> env -> env val lookup_rel_val : int -> env -> lazy_val val env_of_rel : int -> env -> env (** Named context *) val push_named_context_val : named_declaration -> named_context_val -> named_context_val val push_named : named_declaration -> env -> env val lookup_named_val : Id.t -> env -> lazy_val val env_of_named : Id.t -> env -> env (** Global constants *) val lookup_constant_key : constant -> env -> constant_key val lookup_constant : constant -> env -> constant_body (** Mutual Inductives *) val lookup_mind_key : mutual_inductive -> env -> mind_key val lookup_mind : mutual_inductive -> env -> mutual_inductive_body