Ltac2_plugin.Tac2envLtac2 global environment
type global_data = {gdata_expr : Tac2expr.glb_tacexpr;gdata_type : Tac2expr.type_scheme;gdata_mutable : bool;gdata_deprecation : Deprecation.t option;gdata_mutation_history : Names.ModPath.t list;}val define_global : Tac2expr.ltac_constant -> global_data -> unitval interp_global : Tac2expr.ltac_constant -> global_dataval set_compiled_global :
Tac2expr.ltac_constant ->
compile_info ->
Tac2val.valexpr ->
unitval get_compiled_global :
Tac2expr.ltac_constant ->
(compile_info * Tac2val.valexpr) optionval globals : unit -> global_data Names.KerName.Map.tval define_type : Tac2expr.type_constant -> Tac2expr.glb_quant_typedef -> unitval interp_type : Tac2expr.type_constant -> Tac2expr.glb_quant_typedeftype constructor_data = {cdata_prms : int;Type parameters
*)cdata_type : Tac2expr.type_constant;Inductive definition to which the constructor pertains
*)cdata_args : int Tac2expr.glb_typexpr list;Types of the constructor arguments
*)cdata_indx : int option;Index of the constructor in the ADT. Numbering is duplicated between argumentless and argument-using constructors, e.g. in type 'a option None and Some have both index 0. This field is empty whenever the constructor is a member of an open type.
}val define_constructor : Tac2expr.ltac_constructor -> constructor_data -> unitval interp_constructor : Tac2expr.ltac_constructor -> constructor_dataval find_all_constructors_in_type :
Tac2expr.type_constant ->
constructor_data Names.KerName.Map.tUseful for printing info about currently defined constructors of open types.
type projection_data = {pdata_prms : int;Type parameters
*)pdata_type : Tac2expr.type_constant;Record definition to which the projection pertains
*)pdata_ptyp : int Tac2expr.glb_typexpr;Type of the projection
*)pdata_mutb : bool;Whether the field is mutable
*)pdata_indx : int;Index of the projection
*)}val define_projection : Tac2expr.ltac_projection -> projection_data -> unitval interp_projection : Tac2expr.ltac_projection -> projection_datatype abbrev_data = {abbrev_prms : int;abbrev_ty : int Tac2expr.glb_typexpr;abbrev_body : Tac2expr.glb_tacexpr;abbrev_depr : Deprecation.t option;}val define_abbrev : Tac2expr.ltac_constant -> abbrev_data -> unitval interp_abbrev : Tac2expr.ltac_constant -> abbrev_dataval push_ltac :
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.tacref ->
unitval locate_ltac : Libnames.qualid -> Tac2expr.tacrefval locate_extended_all_ltac : Libnames.qualid -> Tac2expr.tacref listval shortest_qualid_of_ltac :
?loc:Loc.t ->
?force_short:bool ->
Names.Id.Set.t ->
Tac2expr.tacref ->
Libnames.qualidval path_of_ltac : Tac2expr.tacref -> Libnames.full_pathval push_constructor :
?user_warns:UserWarn.t ->
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.ltac_constructor ->
unitval locate_constructor : Libnames.qualid -> Tac2expr.ltac_constructorval locate_extended_all_constructor :
Libnames.qualid ->
Tac2expr.ltac_constructor listval shortest_qualid_of_constructor :
Tac2expr.ltac_constructor ->
Libnames.qualidval path_of_constructor : Tac2expr.ltac_constructor -> Libnames.full_pathval push_type :
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.type_constant ->
unitval locate_type : Libnames.qualid -> Tac2expr.type_constantval locate_extended_all_type : Libnames.qualid -> Tac2expr.type_constant listval shortest_qualid_of_type :
?loc:Loc.t ->
Tac2expr.type_constant ->
Libnames.qualidval path_of_type : Tac2expr.type_constant -> Libnames.full_pathval push_projection :
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.ltac_projection ->
unitval locate_projection : Libnames.qualid -> Tac2expr.ltac_projectionval locate_extended_all_projection :
Libnames.qualid ->
Tac2expr.ltac_projection listval shortest_qualid_of_projection : Tac2expr.ltac_projection -> Libnames.qualidThis state is not part of the summary, contrarily to the ones above. It is intended to be used from ML plugins to register ML-side functions.
val define_primitive : Tac2expr.ml_tactic_name -> Tac2val.valexpr -> unitval interp_primitive : Tac2expr.ml_tactic_name -> Tac2val.valexprtype ('a, 'b, 'r) intern_fun =
Genintern.glob_sign ->
'a ->
'b * 'r Tac2expr.glb_typexprtype ('a, 'b) ml_object = {ml_intern : 'r. ('a, 'b or_glb_tacexpr, 'r) intern_fun;ml_subst : Mod_subst.substitution -> 'b -> 'b;ml_interp : environment -> 'b -> Tac2val.valexpr Proofview.tactic;ml_print : Environ.env -> Evd.evar_map -> 'b -> Pp.t;ml_raw_print : Environ.env -> Evd.evar_map -> 'a -> Pp.t;}val define_ml_object : ('a, 'b) Tac2dyn.Arg.tag -> ('a, 'b) ml_object -> unitval interp_ml_object : ('a, 'b) Tac2dyn.Arg.tag -> ('a, 'b) ml_objectval rocq_prefix : Names.ModPath.tPath where primitive datatypes are defined in Ltac2 plugin.
val coq_prefix : Names.ModPath.tPath where primitive datatypes are defined in Ltac2 plugin.
val std_prefix : Names.ModPath.tPath where Ltac-specific datatypes are defined in Ltac2 plugin.
val ltac1_prefix : Names.ModPath.tPath where the Ltac1 legacy FFI is defined.
val wit_ltac2_constr :
(Tac2expr.raw_tacexpr, Names.Id.Set.t * Tac2expr.glb_tacexpr) GenConstr.tagLtac2 quotations in Gallina terms
val wit_ltac2_tac : (Tac2expr.raw_tacexpr, Tac2expr.glb_tacexpr) Gentactic.tagLtac2 as a generic tactic depending on proof mode (eg as argument to Solve Obligations)
val wit_ltac2_var_quotation :
(Names.lident option * Names.lident, var_quotation_kind * Names.Id.t)
GenConstr.tagLtac2 quotations for variables "$x" or "$kind:foo" in Gallina terms. NB: "$x" means "$constr:x"
val is_constructor_id : Names.Id.t -> boolval is_constructor : Libnames.qualid -> bool