Ltac2_plugin.Tac2typesRedefinition of Ltac1 data structures because of impedance mismatch
type 'a thunk = (unit, 'a) Tac2ffi.fun1type quantified_hypothesis = Tactypes.quantified_hypothesis = | AnonHyp of int| NamedHyp of Names.lidenttype explicit_bindings = (quantified_hypothesis * EConstr.t) listtype bindings = | ImplicitBindings of EConstr.t list| ExplicitBindings of explicit_bindings| NoBindingstype constr_with_bindings = EConstr.constr * bindingstype core_destruction_arg = | ElimOnConstr of constr_with_bindings Proofview.tactic| ElimOnIdent of Names.Id.t| ElimOnAnonHyp of inttype destruction_arg = core_destruction_argtype intro_pattern = | IntroForthcoming of bool| IntroNaming of intro_pattern_naming| IntroAction of intro_pattern_actionand intro_pattern_naming = | IntroIdentifier of Names.Id.t| IntroFresh of Names.Id.t| IntroAnonymousand intro_pattern_action = | IntroWildcard| IntroOrAndPattern of or_and_intro_pattern| IntroInjection of intro_pattern list| IntroApplyOn of EConstr.t thunk * intro_pattern| IntroRewrite of booland or_and_intro_pattern = | IntroOrPattern of intro_pattern list list| IntroAndPattern of intro_pattern listtype hyp_location = Names.Id.t * occurrences * hyp_location_flagtype induction_clause =
destruction_arg
* intro_pattern_naming option
* or_and_intro_pattern option
* clause optiontype rewriting =
orientation option * multi * constr_with_bindings Proofview.tactictype assertion = | AssertType of intro_pattern option * EConstr.constr * unit thunk option| AssertValue of Names.Id.t * EConstr.constrtype red_flag = Names.GlobRef.t Genredexpr.glob_red_flagtype red_context = (Pattern.constr_pattern * occurrences) option