Module Ltac2_plugin.Tac2expr
type mutable_flag= booltype rec_flag= booltype redef_flag= booltype lid= Names.Id.ttype uid= Names.Id.ttype ltac_constant= Names.KerName.ttype ltac_alias= Names.KerName.ttype ltac_constructor= Names.KerName.ttype ltac_projection= Names.KerName.ttype type_constant= Names.KerName.ttype tacref=|TacConstant of ltac_constant|TacAlias of ltac_aliastype 'a or_relid=|RelId of Libnames.qualid|AbsKn of 'a
Misc
Type syntax
type raw_typexpr_r=|CTypVar of Names.Name.t|CTypArrow of raw_typexpr * raw_typexpr|CTypRef of type_constant or_tuple or_relid * raw_typexpr listand raw_typexpr= raw_typexpr_r CAst.ttype raw_typedef=|CTydDef of raw_typexpr option|CTydAlg of (uid * raw_typexpr list) list|CTydRec of (lid * mutable_flag * raw_typexpr) list|CTydOpntype 'a glb_typexpr=|GTypVar of 'a|GTypArrow of 'a glb_typexpr * 'a glb_typexpr|GTypRef of type_constant or_tuple * 'a glb_typexpr listtype glb_alg_type={galg_constructors : (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|GTydOpntype type_scheme= int * int glb_typexprtype raw_quant_typedef= Names.lident list * raw_typedeftype glb_quant_typedef= int * glb_typedef
Term syntax
type atom=|AtmInt of int|AtmStr of stringtype raw_patexpr_r=|CPatVar of Names.Name.t|CPatRef of ltac_constructor or_tuple or_relid * raw_patexpr list|CPatCnv of raw_patexpr * raw_typexprTactic 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|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_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_rand raw_tacexpr= raw_tacexpr_r CAst.tand raw_taccase= raw_patexpr * raw_tacexprand raw_recexpr= (ltac_projection or_relid * raw_tacexpr) listtype 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|GTacExt : (_, 'a) Tac2dyn.Arg.tag * 'a -> glb_tacexpr|GTacPrm of ml_tactic_name * glb_tacexpr list
Parsing & Printing
Toplevel statements
type strexpr=|StrVal of mutable_flag * rec_flag * (Names.lname * raw_tacexpr) listTerm definition
|StrTyp of rec_flag * (Libnames.qualid * redef_flag * raw_quant_typedef) listType definition
|StrPrm of Names.lident * raw_typexpr * ml_tactic_nameExternal definition
|StrSyn of sexpr list * int option * raw_tacexprSyntactic extensions
|StrMut of Libnames.qualid * Names.lident option * raw_tacexprRedefinition of mutable globals
Dynamic semantics
type tag= inttype frame=|FrLtac of ltac_constant|FrAnon of glb_tacexpr|FrPrim of ml_tactic_name|FrExtn : ('a, 'b) Tac2dyn.Arg.tag * 'b -> frametype backtrace= frame list