Ltac2_plugin.Tac2exprtype lid = Names.Id.ttype uid = Names.Id.ttype ltac_constant = Names.KerName.ttype ltac_alias = Names.KerName.ttype ltac_notation = Names.KerName.ttype ltac_constructor = Names.KerName.ttype ltac_projection = Names.KerName.ttype type_constant = Names.KerName.ttype raw_typexpr_r = | | CTypVar of Names.Name.t | 
| | CTypArrow of raw_typexpr * raw_typexpr | 
| | CTypRef of type_constant or_tuple or_relid * raw_typexpr list | 
and raw_typexpr = raw_typexpr_r CAst.ttype raw_typedef = | | CTydDef of raw_typexpr option | 
| | CTydAlg of (Attributes.vernac_flags * uid * raw_typexpr list) list | 
| | CTydRec of (lid * mutable_flag * raw_typexpr) list | 
| | CTydOpn | 
type 'a glb_typexpr = | | GTypVar of 'a | 
| | GTypArrow of 'a glb_typexpr * 'a glb_typexpr | 
| | GTypRef of type_constant or_tuple * 'a glb_typexpr list | 
type glb_alg_type = {| galg_constructors : (UserWarn.t option * uid * int glb_typexpr list) list; | (* Constructors of the algebraic type*) | 
| galg_nconst : int; | (* Number of constant constructors*) | 
| galg_nnonconst : int; | (* Number of non-constant constructors*) | 
}type glb_typedef = | | GTydDef of int glb_typexpr option | 
| | GTydAlg of glb_alg_type | 
| | GTydRec of (lid * mutable_flag * int glb_typexpr) list | 
| | GTydOpn | 
type type_scheme = int * int glb_typexprtype raw_quant_typedef = Names.lident list * raw_typedeftype glb_quant_typedef = int * glb_typedeftype glb_pat = | | GPatVar of Names.Name.t | 
| | GPatAtm of atom | 
| | GPatRef of ctor_data_for_patterns * glb_pat list | 
| | GPatOr of glb_pat list | 
| | GPatAs of glb_pat * Names.Id.t | 
module PartialPat : sig ... endtype case_info = type_constant or_tupletype 'a open_match = {| opn_match : 'a; | |
| opn_branch : (Names.Name.t * Names.Name.t array * 'a) Names.KNmap.t; | (* Invariant: should not be empty*) | 
| opn_default : Names.Name.t * 'a; | 
}type glb_tacexpr = | | GTacAtm of atom | 
| | GTacVar of Names.Id.t | 
| | GTacRef of ltac_constant | 
| | GTacFun of Names.Name.t list * glb_tacexpr | 
| | GTacApp of glb_tacexpr * glb_tacexpr list | 
| | GTacLet of rec_flag * (Names.Name.t * glb_tacexpr) list * glb_tacexpr | 
| | GTacCst of case_info * int * glb_tacexpr list | 
| | GTacCse of glb_tacexpr * case_info * glb_tacexpr array * (Names.Name.t array * glb_tacexpr) array | 
| | GTacPrj of type_constant * glb_tacexpr * int | 
| | GTacSet of type_constant * glb_tacexpr * int * glb_tacexpr | 
| | GTacOpn of ltac_constructor * glb_tacexpr list | 
| | GTacWth of glb_tacexpr open_match | 
| | GTacFullMatch of glb_tacexpr * (glb_pat * glb_tacexpr) list | 
| | GTacExt : (_, 'a) Tac2dyn.Arg.tag * 'a -> glb_tacexpr | 
| | GTacPrm of ml_tactic_name | 
type raw_patexpr_r = | | CPatVar of Names.Name.t | 
| | CPatAtm of atom | 
| | CPatRef of ltac_constructor or_tuple or_relid * raw_patexpr list | 
| | CPatRecord of (ltac_projection or_relid * raw_patexpr) list | 
| | CPatCnv of raw_patexpr * raw_typexpr | 
| | CPatOr of raw_patexpr list | 
| | CPatAs of raw_patexpr * Names.lident | 
Tactic expressions
and raw_patexpr = raw_patexpr_r CAst.ttype raw_tacexpr_r = | | CTacAtm of atom | |
| | CTacRef of tacref or_relid | |
| | CTacCst of ltac_constructor or_tuple or_relid | |
| | CTacFun of raw_patexpr list * raw_tacexpr | |
| | CTacApp of raw_tacexpr * raw_tacexpr list | |
| | CTacSyn of (Names.lname * raw_tacexpr) list * Names.KerName.t | |
| | CTacLet of rec_flag * (raw_patexpr * raw_tacexpr) list * raw_tacexpr | |
| | CTacCnv of raw_tacexpr * raw_typexpr | |
| | CTacSeq of raw_tacexpr * raw_tacexpr | |
| | CTacIft of raw_tacexpr * raw_tacexpr * raw_tacexpr | |
| | CTacCse of raw_tacexpr * raw_taccase list | |
| | CTacRec of raw_tacexpr option * raw_recexpr | |
| | CTacPrj of raw_tacexpr * ltac_projection or_relid | |
| | CTacSet of raw_tacexpr * ltac_projection or_relid * raw_tacexpr | |
| | CTacExt : ('a, _) Tac2dyn.Arg.tag * 'a -> raw_tacexpr_r | |
| | CTacGlb of int * (Names.lname * raw_tacexpr * int glb_typexpr option) list * glb_tacexpr * int glb_typexpr | (* CTacGlb is essentially an expanded typed notation. Arguments bound with Anonymous have no type constraint.*) | 
and raw_tacexpr = raw_tacexpr_r CAst.tand raw_taccase = raw_patexpr * raw_tacexprand raw_recexpr = (ltac_projection or_relid * raw_tacexpr) listtype strexpr = | | StrVal of mutable_flag * rec_flag * (Names.lname * raw_tacexpr) list | (* Term definition*) | 
| | StrTyp of rec_flag * (Libnames.qualid * redef_flag * raw_quant_typedef) list | (* Type definition*) | 
| | StrPrm of Names.lident * raw_typexpr * ml_tactic_name | (* External definition*) | 
| | StrMut of Libnames.qualid * Names.lident option * raw_tacexpr | (* Redefinition of mutable globals*) | 
type frame = | | FrLtac of ltac_constant | 
| | FrAnon of glb_tacexpr | 
| | FrPrim of ml_tactic_name | 
| | FrExtn : ('a, 'b) Tac2dyn.Arg.tag * 'b -> frame | 
type backtrace = frame list