package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=5d1187d5e44ed0163f76fb12dabf012e
sha512=91bc81530fa4f6498961583ad51eac5001f139881788b88e360a866ad8e2a6e2c5bce86d1a580ab4cd4782bf49d48318767df82471ce33ba3ac143e5569ad33c
doc/ltac2_plugin/Ltac2_plugin/Tac2env/index.html
Module Ltac2_plugin.Tac2env
Source
Ltac2 global environment
Toplevel definition of values
type global_data = {
gdata_expr : Tac2expr.glb_tacexpr;
gdata_type : Tac2expr.type_scheme;
gdata_mutable : bool;
gdata_deprecation : Deprecation.t option;
}
Toplevel definition of types
Toplevel definition of algebraic constructors
type 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
andSome
have both index 0. This field is empty whenever the constructor is a member of an open type.
}
Useful for printing info about currently defined constructors of open types.
Toplevel definition of projections
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
*)
}
Toplevel definition of aliases
val define_alias :
?deprecation:Deprecation.t ->
Tac2expr.ltac_constant ->
Tac2expr.raw_tacexpr ->
unit
Toplevel definition of notations
Name management
val push_constructor :
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.ltac_constructor ->
unit
val push_projection :
Nametab.visibility ->
Libnames.full_path ->
Tac2expr.ltac_projection ->
unit
Toplevel definitions of ML tactics
This 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.
ML primitive types
type ('a, 'b) ml_object = {
ml_intern : 'r. (Tac2expr.raw_tacexpr, Tac2expr.glb_tacexpr, 'r) intern_fun -> ('a, 'b or_glb_tacexpr, 'r) intern_fun;
ml_subst : Mod_subst.substitution -> 'b -> 'b;
ml_interp : environment -> 'b -> Tac2ffi.valexpr Proofview.tactic;
ml_print : Environ.env -> Evd.evar_map -> 'b -> Pp.t;
ml_raw_print : Environ.env -> Evd.evar_map -> 'a -> Pp.t;
}
Absolute paths
Path where primitive datatypes are defined in Ltac2 plugin.
Path where Ltac-specific datatypes are defined in Ltac2 plugin.
Path where the Ltac1 legacy FFI is defined.
Generic arguments
val wit_ltac2in1 :
(Names.Id.t CAst.t list * Tac2expr.raw_tacexpr,
Names.Id.t list * Tac2expr.glb_tacexpr,
Util.Empty.t)
Genarg.genarg_type
Ltac2 quotations in Ltac1 code
val wit_ltac2in1_val :
(Names.Id.t CAst.t list * Tac2expr.raw_tacexpr,
Tac2expr.glb_tacexpr,
Util.Empty.t)
Genarg.genarg_type
Ltac2 quotations in Ltac1 returning Ltac1 values. When ids are bound interning turns them into Ltac1.lambda.
val wit_ltac2_constr :
(Tac2expr.raw_tacexpr, Names.Id.Set.t * Tac2expr.glb_tacexpr, Util.Empty.t)
Genarg.genarg_type
Ltac2 quotations in Gallina terms
val wit_ltac2_var_quotation :
(Names.lident option * Names.lident,
var_quotation_kind * Names.Id.t,
Util.Empty.t)
Genarg.genarg_type
Ltac2 quotations for variables "$x" or "$kind:foo" in Gallina terms. NB: "$x" means "$constr:x"
Embedding Ltac2 closures of type Ltac1.t -> Ltac1.t
inside Ltac1. There is no relevant data because arguments are passed by conventional names.
Helper functions
- Toplevel definition of values
- Toplevel definition of types
- Toplevel definition of algebraic constructors
- Toplevel definition of projections
- Toplevel definition of aliases
- Toplevel definition of notations
- Name management
- Toplevel definitions of ML tactics
- ML primitive types
- Absolute paths
- Generic arguments
- Helper functions