123456789101112131415161718192021222324252627282930313233343536373839404142(************************************************************************)(* * The Rocq Prover / The Rocq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* \VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)(** Generic arguments based on Ltac. *)openGenargopenGeninterpopenTacexprletmake0?dynname=letwit=Genarg.make0nameinlet()=Geninterp.register_val0witdyninwitletwit_intropattern=make0"intropattern"(* To keep after deprecation phase but it will get a different parsing semantics (Tactic Notation and TACTIC EXTEND) in pltac.ml *)letwit_simple_intropattern=make0~dyn:(val_tag(topwitwit_intropattern))"simple_intropattern"letwit_quant_hyp=make0"quant_hyp"letwit_constr_with_bindings=make0"constr_with_bindings"letwit_open_constr_with_bindings=make0"open_constr_with_bindings"letwit_bindings=make0"bindings"letwit_quantified_hypothesis=wit_quant_hyp(* A convenient common part to simple_intropattern and intropattern
usable when no parsing rule is concerned: indeed
simple_intropattern and intropattern are in the same type and have
the same interp/intern/subst methods *)letwit_intro_pattern=wit_intropatternletwit_tactic:(raw_tactic_expr,glob_tactic_expr,Val.t)genarg_type=make0"tactic"letwit_ltac=make0~dyn:(val_tag(topwitStdarg.wit_unit))"ltac"letwit_destruction_arg=make0"destruction_arg"