Ltac2_plugin.Tac2quoteSyntactic quoting of expressions.
Contrarily to Tac2ffi, which lives on the semantic level, this module manipulates pure syntax of Ltac2. Its main purpose is to write notations.
val constructor :
?loc:Loc.t ->
Tac2expr.ltac_constructor ->
Tac2expr.raw_tacexpr list ->
Tac2expr.raw_tacexprval thunk : Tac2expr.raw_tacexpr -> Tac2expr.raw_tacexprval of_anti :
( 'a -> Tac2expr.raw_tacexpr ) ->
'a Tac2qexpr.or_anti ->
Tac2expr.raw_tacexprval of_int : int CAst.t -> Tac2expr.raw_tacexprval of_pair :
( 'a -> Tac2expr.raw_tacexpr ) ->
( 'b -> Tac2expr.raw_tacexpr ) ->
('a * 'b) CAst.t ->
Tac2expr.raw_tacexprval of_tuple : ?loc:Loc.t -> Tac2expr.raw_tacexpr list -> Tac2expr.raw_tacexprval of_variable : Names.Id.t CAst.t -> Tac2expr.raw_tacexprval of_ident : Names.Id.t CAst.t -> Tac2expr.raw_tacexprval of_constr :
?delimiters:Names.Id.t list ->
Constrexpr.constr_expr ->
Tac2expr.raw_tacexprval of_open_constr :
?delimiters:Names.Id.t list ->
Constrexpr.constr_expr ->
Tac2expr.raw_tacexprval of_preterm :
?delimiters:Names.Id.t list ->
Constrexpr.constr_expr ->
Tac2expr.raw_tacexprval of_list :
?loc:Loc.t ->
( 'a -> Tac2expr.raw_tacexpr ) ->
'a list ->
Tac2expr.raw_tacexprval array_of_list : ?loc:Loc.t -> Tac2expr.raw_tacexpr -> Tac2expr.raw_tacexprval of_bindings : Tac2qexpr.bindings -> Tac2expr.raw_tacexprval of_intro_pattern : Tac2qexpr.intro_pattern -> Tac2expr.raw_tacexprval of_intro_patterns :
Tac2qexpr.intro_pattern list CAst.t ->
Tac2expr.raw_tacexprval of_clause : Tac2qexpr.clause -> Tac2expr.raw_tacexprval of_destruction_arg : Tac2qexpr.destruction_arg -> Tac2expr.raw_tacexprval of_induction_clause : Tac2qexpr.induction_clause -> Tac2expr.raw_tacexprval of_conversion : Tac2qexpr.conversion -> Tac2expr.raw_tacexprval of_rewriting : Tac2qexpr.rewriting -> Tac2expr.raw_tacexprval of_occurrences : Tac2qexpr.occurrences -> Tac2expr.raw_tacexprval of_hintdb : Tac2qexpr.hintdb -> Tac2expr.raw_tacexprval of_move_location : Tac2qexpr.move_location -> Tac2expr.raw_tacexprval of_reference :
Tac2qexpr.reference Tac2qexpr.or_anti ->
Tac2expr.raw_tacexprval of_hyp : ?loc:Loc.t -> Names.Id.t CAst.t -> Tac2expr.raw_tacexprid ↦ 'Control.hyp @id'
val of_exact_hyp : ?loc:Loc.t -> Names.Id.t CAst.t -> Tac2expr.raw_tacexprid ↦ 'Control.refine (fun () => Control.hyp @id')
val of_exact_var : ?loc:Loc.t -> Names.Id.t CAst.t -> Tac2expr.raw_tacexprid ↦ 'Control.refine (fun () => Control.hyp @id')
val of_dispatch : Tac2qexpr.dispatch -> Tac2expr.raw_tacexprval of_strategy_flag : Tac2qexpr.strategy_flag -> Tac2expr.raw_tacexprval of_pose : Tac2qexpr.pose -> Tac2expr.raw_tacexprval of_assertion : Tac2qexpr.assertion -> Tac2expr.raw_tacexprval of_constr_matching : Tac2qexpr.constr_matching -> Tac2expr.raw_tacexprval of_goal_matching : Tac2qexpr.goal_matching -> Tac2expr.raw_tacexprval of_format : Names.lstring -> Tac2expr.raw_tacexprval wit_pattern :
( Constrexpr.constr_expr, Pattern.constr_pattern ) Tac2dyn.Arg.tagval wit_ident : ( Names.Id.t, Names.Id.t ) Tac2dyn.Arg.tagval wit_reference : ( Tac2qexpr.reference, Names.GlobRef.t ) Tac2dyn.Arg.tagval wit_constr :
( Constrexpr.constr_expr, Glob_term.glob_constr ) Tac2dyn.Arg.tagval wit_open_constr :
( Constrexpr.constr_expr, Glob_term.glob_constr ) Tac2dyn.Arg.tagval wit_preterm :
( Constrexpr.constr_expr, Names.Id.Set.t * Glob_term.glob_constr )
Tac2dyn.Arg.tagval wit_ltac1 :
( Names.Id.t CAst.t list * Ltac_plugin.Tacexpr.raw_tactic_expr,
Names.Id.t list * Ltac_plugin.Tacexpr.glob_tactic_expr )
Tac2dyn.Arg.tagLtac1 AST quotation, seen as a 'tactic'. Its type is unit in Ltac2.
val wit_ltac1val :
( Names.Id.t CAst.t list * Ltac_plugin.Tacexpr.raw_tactic_expr,
Names.Id.t list * Ltac_plugin.Tacexpr.glob_tactic_expr )
Tac2dyn.Arg.tagLtac1 AST quotation, seen as a value-returning expression, with type Ltac1.t.