GeninternSourcetype ntnvar_status = {mutable ntnvar_used : bool list;mutable ntnvar_used_as_binder : bool;mutable ntnvar_scopes : Notation_term.subscopes option;mutable ntnvar_binding_ids : Notation_term.notation_var_binders option;ntnvar_typ : Notation_term.notation_var_internalization_type;}type intern_variable_status = {intern_ids : Names.Id.Set.t;notation_variable_status : ntnvar_status Names.Id.Map.t;}type glob_sign = {ltacvars : Names.Id.Set.t;genv : Environ.env;extra : Store.t;intern_sign : intern_variable_status;strict_check : bool;}In globalize tactics, we need to keep the initial constr_expr to recompute in the environment by the effective calls to Intro, Inversion, etc The constr_expr field is None in TacDef though
type glob_constr_pattern_and_expr =
Names.Id.Set.t * glob_constr_and_expr * Pattern.constr_patternThe type of functions used for internalizing generic arguments.
val generic_intern_pat :
(Genarg.raw_generic_argument, Genarg.glob_generic_argument) intern_pat_funtype 'glb ntn_subst_fun =
ntnvar_status Names.Id.Map.t ->
(Names.Id.t -> Glob_term.glob_constr option) ->
'glb ->
'glbRegistering functions
val register_intern0 :
('raw, 'glb, 'top) Genarg.genarg_type ->
('raw, 'glb) intern_fun ->
unitval register_intern_pat :
('raw, 'glb, 'top) Genarg.genarg_type ->
('raw, 'glb) intern_pat_fun ->
unitUsed to compute the set of used notation variables during internalization.