Module Ltac2_plugin.Tac2ffi
Toplevel values
Dynamic semantics
type tag= inttype closuretype valexpr=|ValInt of intImmediate integers
|ValBlk of tag * valexpr arrayStructured blocks
|ValStr of Stdlib.Bytes.tStrings
|ValCls of closureClosures
|ValOpn of Names.KerName.t * valexpr arrayOpen constructors
|ValExt : 'a Tac2dyn.Val.tag * 'a -> valexprArbitrary data
type 'a arity
val arity_one : (valexpr -> valexpr Proofview.tactic) arityval arity_suc : 'a arity -> (valexpr -> 'a) arityval mk_closure : 'v arity -> 'v -> closureval mk_closure_val : 'v arity -> 'v -> valexprComposition of
mk_closureandValCls
val annotate_closure : Tac2expr.frame -> closure -> closureThe closure must not be already annotated
module Valexpr : sig ... endLtac2 FFI
val repr_of : 'a repr -> 'a -> valexprval repr_to : 'a repr -> valexpr -> 'aval make_repr : ('a -> valexpr) -> (valexpr -> 'a) -> 'a reprval map_repr : ('a -> 'b) -> ('b -> 'a) -> 'a repr -> 'b repr
val of_unit : unit -> valexprval to_unit : valexpr -> unitval unit : unit reprval of_int : int -> valexprval to_int : valexpr -> intval int : int reprval of_bool : bool -> valexprval to_bool : valexpr -> boolval bool : bool reprval of_char : char -> valexprval to_char : valexpr -> charval char : char reprval of_bytes : Stdlib.Bytes.t -> valexprval to_bytes : valexpr -> Stdlib.Bytes.tval bytes : Stdlib.Bytes.t reprval of_string : string -> valexprWARNING these functions copy
val to_string : valexpr -> stringval string : string reprval of_list : ('a -> valexpr) -> 'a list -> valexprval to_list : (valexpr -> 'a) -> valexpr -> 'a listval list : 'a repr -> 'a list reprval of_constr : EConstr.t -> valexprval to_constr : valexpr -> EConstr.tval constr : EConstr.t reprval of_cast : Constr.cast_kind -> valexprval to_cast : valexpr -> Constr.cast_kindval cast : Constr.cast_kind reprval of_err : Exninfo.iexn -> valexprval to_err : valexpr -> Exninfo.iexnval err : Exninfo.iexn reprval of_exn : Exninfo.iexn -> valexprval to_exn : valexpr -> Exninfo.iexnval exn : Exninfo.iexn reprval of_exninfo : Exninfo.info -> valexprval to_exninfo : valexpr -> Exninfo.infoval exninfo : Exninfo.info reprval of_ident : Names.Id.t -> valexprval to_ident : valexpr -> Names.Id.tval ident : Names.Id.t reprval of_closure : closure -> valexprval to_closure : valexpr -> closureval closure : closure reprval of_block : (int * valexpr array) -> valexprval to_block : valexpr -> int * valexpr arrayval block : (int * valexpr array) reprval of_array : ('a -> valexpr) -> 'a array -> valexprval to_array : (valexpr -> 'a) -> valexpr -> 'a arrayval array : 'a repr -> 'a array reprval of_tuple : valexpr array -> valexprval to_tuple : valexpr -> valexpr arrayval of_pair : ('a -> valexpr) -> ('b -> valexpr) -> ('a * 'b) -> valexprval to_pair : (valexpr -> 'a) -> (valexpr -> 'b) -> valexpr -> 'a * 'bval pair : 'a repr -> 'b repr -> ('a * 'b) reprval of_triple : ('a -> valexpr) -> ('b -> valexpr) -> ('c -> valexpr) -> ('a * 'b * 'c) -> valexprval to_triple : (valexpr -> 'a) -> (valexpr -> 'b) -> (valexpr -> 'c) -> valexpr -> 'a * 'b * 'cval triple : 'a repr -> 'b repr -> 'c repr -> ('a * 'b * 'c) reprval of_option : ('a -> valexpr) -> 'a option -> valexprval to_option : (valexpr -> 'a) -> valexpr -> 'a optionval option : 'a repr -> 'a option reprval of_pattern : Pattern.constr_pattern -> valexprval to_pattern : valexpr -> Pattern.constr_patternval pattern : Pattern.constr_pattern reprval of_evar : Evar.t -> valexprval to_evar : valexpr -> Evar.tval evar : Evar.t reprval of_pp : Pp.t -> valexprval to_pp : valexpr -> Pp.tval pp : Pp.t reprval of_constant : Names.Constant.t -> valexprval to_constant : valexpr -> Names.Constant.tval constant : Names.Constant.t reprval of_reference : Names.GlobRef.t -> valexprval to_reference : valexpr -> Names.GlobRef.tval reference : Names.GlobRef.t reprval of_ext : 'a Tac2dyn.Val.tag -> 'a -> valexprval to_ext : 'a Tac2dyn.Val.tag -> valexpr -> 'aval repr_ext : 'a Tac2dyn.Val.tag -> 'a reprval of_open : (Names.KerName.t * valexpr array) -> valexprval to_open : valexpr -> Names.KerName.t * valexpr arrayval open_ : (Names.KerName.t * valexpr array) reprval of_uint63 : Uint63.t -> valexprval to_uint63 : valexpr -> Uint63.tval uint63 : Uint63.t reprval of_float : Float64.t -> valexprval to_float : valexpr -> Float64.tval float : Float64.t repr
Dynamic tags
val val_constr : EConstr.t Tac2dyn.Val.tagval val_ident : Names.Id.t Tac2dyn.Val.tagval val_pattern : Pattern.constr_pattern Tac2dyn.Val.tagval val_preterm : Ltac_pretype.closed_glob_constr Tac2dyn.Val.tagval val_matching_context : Constr_matching.context Tac2dyn.Val.tagval val_evar : Evar.t Tac2dyn.Val.tagval val_pp : Pp.t Tac2dyn.Val.tagval val_sort : EConstr.ESorts.t Tac2dyn.Val.tagval val_cast : Constr.cast_kind Tac2dyn.Val.tagval val_inductive : Names.inductive Tac2dyn.Val.tagval val_constant : Names.Constant.t Tac2dyn.Val.tagval val_constructor : Names.constructor Tac2dyn.Val.tagval val_projection : Names.Projection.t Tac2dyn.Val.tagval val_qvar : Sorts.QVar.t Tac2dyn.Val.tagval val_case : Constr.case_info Tac2dyn.Val.tagval val_binder : (Names.Name.t Context.binder_annot * EConstr.types) Tac2dyn.Val.tagval val_univ : Univ.Level.t Tac2dyn.Val.tagval val_quality : Sorts.Quality.t Tac2dyn.Val.tagval val_free : Names.Id.Set.t Tac2dyn.Val.tagval val_uint63 : Uint63.t Tac2dyn.Val.tagval val_float : Float64.t Tac2dyn.Val.tagval val_ltac1 : Geninterp.Val.t Tac2dyn.Val.tagval val_pretype_flags : Pretyping.inference_flags Tac2dyn.Val.tagval val_expected_type : Pretyping.typing_constraint Tac2dyn.Val.tagval val_ind_data : (Names.Ind.t * Declarations.mutual_inductive_body) Tac2dyn.Val.tagval val_transparent_state : TransparentState.t Tac2dyn.Val.tagval val_exninfo : Exninfo.info Tac2dyn.Val.tagval val_exn : Exninfo.iexn Tac2dyn.Val.tagToplevel representation of OCaml exceptions. Invariant: no
LtacErrorshould be put into a value with tagval_exn.
val apply : closure -> valexpr list -> valexpr Proofview.tacticGiven a closure, apply it to some arguments. Handling of argument mismatches is done automatically, i.e. in case of over or under-application.
val apply_val : valexpr -> valexpr list -> valexpr Proofview.tacticComposition of
to_closureandapply
val abstract : int -> (valexpr list -> valexpr Proofview.tactic) -> closureTurn a fixed-arity function into a closure. The inner function is guaranteed to be applied to a list whose size is the integer argument.
exceptionLtacError of Names.KerName.t * valexpr arrayLtac2-defined exceptions seen from OCaml side