Module Ssreflect_plugin.Ssrcommon
val allocc : Ssrast.ssroccval hyp_id : Ssrast.ssrhyp -> Names.Id.tval hyps_ids : Ssrast.ssrhyps -> Names.Id.t listval check_hyp_exists : ('a, 'b) Context.Named.pt -> Ssrast.ssrhyp -> unitval test_hyp_exists : ('a, 'b) Context.Named.pt -> Ssrast.ssrhyp -> boolval check_hyps_uniq : Names.Id.t list -> Ssrast.ssrhyps -> unitval not_section_id : Names.Id.t -> boolval hyp_err : ?loc:Loc.t -> string -> Names.Id.t -> 'aval hoik : (Ssrast.ssrhyp -> 'a) -> Ssrast.ssrhyp_or_id -> 'aval hoi_id : Ssrast.ssrhyp_or_id -> Names.Id.tval mk_hint : 'a -> 'a Ssrast.ssrhintval mk_orhint : 'a -> bool * 'aval nullhint : bool * 'a listval nohint : 'a Ssrast.ssrhintval errorstrm : Pp.t -> 'aval anomaly : string -> 'aval array_app_tl : 'a array -> 'a list -> 'a listval array_list_of_tl : 'a array -> 'a listval array_fold_right_from : int -> ('a -> 'b -> 'b) -> 'a array -> 'b -> 'bval option_assert_get : 'a option -> Pp.t -> 'a
type 'a tac_a= (Ssrast.goal * 'a) Ssrast.sigma -> (Ssrast.goal * 'a) list Ssrast.sigmatype tac_ctx={tmp_ids : (Names.Id.t * Names.Name.t Stdlib.ref) list;wild_ids : Names.Id.t list;delayed_clears : Names.Id.t list;}
val new_ctx : unit -> tac_ctxval pull_ctxs : ('a * tac_ctx) list Ssrast.sigma -> 'a list Ssrast.sigma * tac_ctx listval with_fresh_ctx : tac_ctx tac_a -> Tacmach.tacticval pull_ctx : ('a * tac_ctx) Ssrast.sigma -> 'a Ssrast.sigma * tac_ctxval push_ctx : tac_ctx -> 'a Ssrast.sigma -> ('a * tac_ctx) Ssrast.sigmaval push_ctxs : tac_ctx -> 'a list Ssrast.sigma -> ('a * tac_ctx) list Ssrast.sigmaval tac_ctx : Tacmach.tactic -> tac_ctx tac_aval with_ctx : (tac_ctx -> 'b * tac_ctx) -> ('a * tac_ctx) Ssrast.sigma -> 'b * ('a * tac_ctx) Ssrast.sigmaval without_ctx : ('a Ssrast.sigma -> 'b) -> ('a * tac_ctx) Ssrast.sigma -> 'bval tclTHENLIST_a : tac_ctx tac_a list -> tac_ctx tac_aval tclTHEN_i_max : tac_ctx tac_a -> (int -> int -> tac_ctx tac_a) -> tac_ctx tac_aval tclTHEN_a : tac_ctx tac_a -> tac_ctx tac_a -> tac_ctx tac_aval tclTHENS_a : tac_ctx tac_a -> tac_ctx tac_a list -> tac_ctx tac_aval tac_on_all : (Ssrast.goal * tac_ctx) list Ssrast.sigma -> tac_ctx tac_a -> (Ssrast.goal * tac_ctx) list Ssrast.sigmaval mkRHole : Glob_term.glob_constrval mkRHoles : int -> Glob_term.glob_constr listval isRHoles : Glob_term.glob_constr list -> boolval mkRApp : Glob_term.glob_constr -> Glob_term.glob_constr list -> Glob_term.glob_constrval mkRVar : Names.Id.t -> Glob_term.glob_constrval mkRltacVar : Names.Id.t -> Glob_term.glob_constrval mkRCast : Glob_term.glob_constr -> Glob_term.glob_constr -> Glob_term.glob_constrval mkRType : Glob_term.glob_constrval mkRProp : Glob_term.glob_constrval mkRArrow : Glob_term.glob_constr -> Glob_term.glob_constr -> Glob_term.glob_constrval mkRConstruct : Names.constructor -> Glob_term.glob_constrval mkRInd : Names.inductive -> Glob_term.glob_constrval mkRLambda : Names.Name.t -> Glob_term.glob_constr -> Glob_term.glob_constr -> Glob_term.glob_constrval mkRnat : int -> Glob_term.glob_constrval mkCHole : Loc.t option -> Constrexpr.constr_exprval mkCHoles : ?loc:Loc.t -> int -> Constrexpr.constr_expr listval mkCVar : ?loc:Loc.t -> Names.Id.t -> Constrexpr.constr_exprval mkCCast : ?loc:Loc.t -> Constrexpr.constr_expr -> Constrexpr.constr_expr -> Constrexpr.constr_exprval mkCType : Loc.t option -> Constrexpr.constr_exprval mkCProp : Loc.t option -> Constrexpr.constr_exprval mkCArrow : ?loc:Loc.t -> Constrexpr.constr_expr -> Constrexpr.constr_expr -> Constrexpr.constr_exprval mkCLambda : ?loc:Loc.t -> Names.Name.t -> Constrexpr.constr_expr -> Constrexpr.constr_expr -> Constrexpr.constr_exprval isCHoles : Constrexpr.constr_expr list -> boolval isCxHoles : (Constrexpr.constr_expr * 'a option) list -> boolval intern_term : Ltac_plugin.Tacinterp.interp_sign -> Environ.env -> Ssrast.ssrterm -> Glob_term.glob_constrval pf_intern_term : Ltac_plugin.Tacinterp.interp_sign -> Goal.goal Evd.sigma -> Ssrast.ssrterm -> Glob_term.glob_constrval interp_term : Environ.env -> Evd.evar_map -> Ltac_plugin.Tacinterp.interp_sign -> Ssrast.ssrterm -> Evd.evar_map * EConstr.tval interp_wit : ('a, 'b, 'c) Genarg.genarg_type -> Ssrast.ist -> Ssrast.goal Ssrast.sigma -> 'b -> Evd.evar_map * 'cval interp_hyp : Ssrast.ist -> Ssrast.goal Ssrast.sigma -> Ssrast.ssrhyp -> Evd.evar_map * Ssrast.ssrhypval interp_hyps : Ssrast.ist -> Ssrast.goal Ssrast.sigma -> Ssrast.ssrhyps -> Evd.evar_map * Ssrast.ssrhypsval interp_refine : Ltac_plugin.Tacinterp.interp_sign -> Goal.goal Evd.sigma -> Glob_term.glob_constr -> Evd.evar_map * (Evd.evar_map * EConstr.constr)val interp_open_constr : Environ.env -> Evd.evar_map -> Ltac_plugin.Tacinterp.interp_sign -> Genintern.glob_constr_and_expr -> Evd.evar_map * (Evd.evar_map * EConstr.t)val pf_e_type_of : Goal.goal Evd.sigma -> EConstr.constr -> Goal.goal Evd.sigma * EConstr.typesval splay_open_constr : Environ.env -> (Evd.evar_map * EConstr.t) -> (Names.Name.t Context.binder_annot * EConstr.t) list * EConstr.tval isAppInd : Environ.env -> Evd.evar_map -> EConstr.types -> boolval mk_term : Ssrast.ssrtermkind -> Constrexpr.constr_expr -> Ssrast.ssrtermval mk_lterm : Constrexpr.constr_expr -> Ssrast.ssrtermval mk_ast_closure_term : [ `None | `Parens | `DoubleParens | `At ] -> Constrexpr.constr_expr -> Ssrast.ast_closure_termval interp_ast_closure_term : Geninterp.interp_sign -> Goal.goal Evd.sigma -> Ssrast.ast_closure_term -> Evd.evar_map * Ssrast.ast_closure_termval subst_ast_closure_term : Mod_subst.substitution -> Ssrast.ast_closure_term -> Ssrast.ast_closure_termval glob_ast_closure_term : Genintern.glob_sign -> Ssrast.ast_closure_term -> Ssrast.ast_closure_termval ssrterm_of_ast_closure_term : Ssrast.ast_closure_term -> Ssrast.ssrtermval ssrdgens_of_parsed_dgens : ((Ssrast.ssrdocc * Ssrmatching_plugin.Ssrmatching.cpattern) list list * Ssrast.ssrclear) -> Ssrast.ssrdgensval is_internal_name : string -> boolval add_internal_name : (string -> bool) -> unitval mk_internal_id : string -> Names.Id.tval mk_tagged_id : string -> int -> Names.Id.tval mk_evar_name : int -> Names.Name.tval ssr_anon_hyp : stringval type_id : Environ.env -> Evd.evar_map -> EConstr.types -> Names.Id.tval pf_type_id : Goal.goal Evd.sigma -> EConstr.types -> Names.Id.tval abs_evars : Environ.env -> Evd.evar_map -> (Evd.evar_map * EConstr.t) -> int * EConstr.t * Evar.t list * UState.tval abs_evars2 : Environ.env -> Evd.evar_map -> Evar.t list -> (Evd.evar_map * EConstr.t) -> int * EConstr.t * Evar.t list * UState.tval abs_cterm : Environ.env -> Evd.evar_map -> int -> EConstr.t -> EConstr.tval pf_abs_evars : Goal.goal Evd.sigma -> (Evd.evar_map * EConstr.t) -> int * EConstr.t * Evar.t list * UState.tval pf_abs_evars2 : Goal.goal Evd.sigma -> Evar.t list -> (Evd.evar_map * EConstr.t) -> int * EConstr.t * Evar.t list * UState.tval pf_abs_cterm : Goal.goal Evd.sigma -> int -> EConstr.t -> EConstr.tval pf_merge_uc : UState.t -> 'a Evd.sigma -> 'a Evd.sigmaval pf_merge_uc_of : Evd.evar_map -> 'a Evd.sigma -> 'a Evd.sigmaval constr_name : Evd.evar_map -> EConstr.t -> Names.Name.tval pf_type_of : Goal.goal Evd.sigma -> Constr.constr -> Goal.goal Evd.sigma * Constr.typesval pfe_type_of : Goal.goal Evd.sigma -> EConstr.t -> Goal.goal Evd.sigma * EConstr.typesval pfe_new_type : Goal.goal Evd.sigma -> Goal.goal Evd.sigma * EConstr.typesval pfe_type_relevance_of : Goal.goal Evd.sigma -> EConstr.t -> Goal.goal Evd.sigma * EConstr.types * Sorts.relevanceval pf_abs_prod : Names.Name.t -> Goal.goal Evd.sigma -> EConstr.t -> EConstr.t -> Goal.goal Evd.sigma * EConstr.typesval mkSsrRRef : string -> Glob_term.glob_constr * 'a optionval new_wild_id : tac_ctx -> Names.Id.t * tac_ctxval pf_fresh_global : Names.GlobRef.t -> Goal.goal Evd.sigma -> Constr.constr * Goal.goal Evd.sigmaval is_discharged_id : Names.Id.t -> boolval mk_discharged_id : Names.Id.t -> Names.Id.tval is_tagged : string -> string -> boolval has_discharged_tag : string -> boolval ssrqid : string -> Libnames.qualidval new_tmp_id : tac_ctx -> (Names.Id.t * Names.Name.t Stdlib.ref) * tac_ctxval mk_anon_id : string -> Names.Id.t list -> Names.Id.tval abs_evars_pirrel : Environ.env -> Evd.evar_map -> (Evd.evar_map * Constr.constr) -> int * Constr.constrval pf_abs_evars_pirrel : Goal.goal Evd.sigma -> (Evd.evar_map * Constr.constr) -> int * Constr.constrval nbargs_open_constr : Environ.env -> (Evd.evar_map * EConstr.t) -> intval pf_nbargs : Environ.env -> Evd.evar_map -> EConstr.t -> intval gen_tmp_ids : ?ist:Geninterp.interp_sign -> (Goal.goal * tac_ctx) Evd.sigma -> (Goal.goal * tac_ctx) list Evd.sigmaval ssrevaltac : Ltac_plugin.Tacinterp.interp_sign -> Ltac_plugin.Tacinterp.Value.t -> unit Proofview.tacticval convert_concl_no_check : EConstr.t -> unit Proofview.tacticval convert_concl : check:bool -> EConstr.t -> unit Proofview.tacticval red_safe : Reductionops.reduction_function -> Environ.env -> Evd.evar_map -> EConstr.t -> EConstr.tval red_product_skip_id : Environ.env -> Evd.evar_map -> EConstr.t -> EConstr.tval ssrautoprop_tac : unit Proofview.tactic Stdlib.refval mkProt : EConstr.t -> EConstr.t -> Goal.goal Evd.sigma -> EConstr.t * Goal.goal Evd.sigmaval mkEtaApp : EConstr.t -> int -> int -> EConstr.tval mkRefl : EConstr.t -> EConstr.t -> Goal.goal Evd.sigma -> EConstr.t * Goal.goal Evd.sigmaval discharge_hyp : (Names.Id.t * (Names.Id.t * string)) -> Goal.goal Evd.sigma -> Evar.t list Evd.sigmaval clear_wilds_and_tmp_and_delayed_ids : (Goal.goal * tac_ctx) Evd.sigma -> (Goal.goal * tac_ctx) list Evd.sigmaval view_error : string -> Ssrast.ssrterm -> 'aval top_id : Names.Id.tval pf_abs_ssrterm : ?resolve_typeclasses:bool -> Ssrast.ist -> Goal.goal Evd.sigma -> Ssrast.ssrterm -> Evd.evar_map * EConstr.t * UState.t * intval pf_interp_ty : ?resolve_typeclasses:bool -> Environ.env -> Evd.evar_map -> Ltac_plugin.Tacinterp.interp_sign -> (Ssrast.ssrtermkind * (Glob_term.glob_constr * Constrexpr.constr_expr option)) -> int * EConstr.t * EConstr.t * UState.tval ssr_n_tac : string -> int -> unit Proofview.tacticval donetac : int -> unit Proofview.tacticval applyn : with_evars:bool -> ?beta:bool -> ?with_shelve:bool -> ?first_goes_last:bool -> int -> EConstr.t -> unit Proofview.tactic
val pf_saturate : ?beta:bool -> ?bi_types:bool -> Goal.goal Evd.sigma -> EConstr.constr -> ?ty:EConstr.types -> int -> EConstr.constr * EConstr.types * (int * EConstr.constr) list * Goal.goal Evd.sigmaval saturate : ?beta:bool -> ?bi_types:bool -> Environ.env -> Evd.evar_map -> EConstr.constr -> ?ty:EConstr.types -> int -> EConstr.constr * EConstr.types * (int * EConstr.constr) list * Evd.evar_mapval refine_with : ?first_goes_last:bool -> ?beta:bool -> ?with_evars:bool -> (Evd.evar_map * EConstr.t) -> unit Proofview.tacticval pf_resolve_typeclasses : where:EConstr.t -> fail:bool -> Goal.goal Evd.sigma -> Goal.goal Evd.sigmaval resolve_typeclasses : where:EConstr.t -> fail:bool -> Environ.env -> Evd.evar_map -> Evd.evar_mapval rewritetac : ?under:bool -> Ssrast.ssrdir -> EConstr.t -> unit Proofview.tactic
type name_hint= (int * EConstr.types array) option Stdlib.ref
val gentac : (Ssrast.ssrdocc * Ssrmatching_plugin.Ssrmatching.cpattern) -> unit Proofview.tacticval genstac : (((Ssrast.ssrhyp list option * Ssrmatching_plugin.Ssrmatching.occ) * Ssrmatching_plugin.Ssrmatching.cpattern) list * Ssrast.ssrhyp list) -> unit Proofview.tacticval pf_interp_gen : bool -> ((Ssrast.ssrhyp list option * Ssrmatching_plugin.Ssrmatching.occ) * Ssrmatching_plugin.Ssrmatching.cpattern) -> Goal.goal Evd.sigma -> (EConstr.t * EConstr.t * Ssrast.ssrhyp list) * Goal.goal Evd.sigmaval pfLIFT : (Goal.goal Evd.sigma -> 'a * Goal.goal Evd.sigma) -> 'a Proofview.tactic
val introid : ?orig:Names.Name.t Stdlib.ref -> Names.Id.t -> unit Proofview.tacticval intro_anon : Ssrast.v82tacval interp_clr : Evd.evar_map -> (Ssrast.ssrhyps option * (Ssrast.ssrtermkind * EConstr.t)) -> Ssrast.ssrhypsval genclrtac : EConstr.constr -> EConstr.constr list -> Ssrast.ssrhyp list -> Tacmach.tacticval old_cleartac : Ssrast.ssrhyps -> Ssrast.v82tacval cleartac : Ssrast.ssrhyps -> unit Proofview.tacticval tclMULT : (int * Ssrast.ssrmmod) -> unit Proofview.tactic -> unit Proofview.tacticval unprotecttac : unit Proofview.tacticval is_protect : EConstr.t -> Environ.env -> Evd.evar_map -> boolval abs_wgen : bool -> (Names.Id.t -> Names.Id.t) -> ('a * ((Ssrast.ssrhyp_or_id * string) * Ssrmatching_plugin.Ssrmatching.cpattern option) option) -> (Goal.goal Evd.sigma * EConstr.t list * EConstr.t) -> Goal.goal Evd.sigma * EConstr.t list * EConstr.tval clr_of_wgen : (Ssrast.ssrhyps * ((Ssrast.ssrhyp_or_id * 'a) * 'b option) option) -> unit Proofview.tactic list -> unit Proofview.tactic listval unfold : EConstr.t list -> unit Proofview.tacticval apply_type : EConstr.types -> EConstr.t list -> Proofview.V82.tacval tacSIGMA : Goal.goal Evd.sigma Proofview.tacticval tclINTERP_AST_CLOSURE_TERM_AS_CONSTR : Ssrast.ast_closure_term -> EConstr.t list Proofview.tacticval tacREDUCE_TO_QUANTIFIED_IND : EConstr.types -> ((Names.inductive * EConstr.EInstance.t) * EConstr.types) Proofview.tacticval tacTYPEOF : EConstr.t -> EConstr.types Proofview.tacticval tclINTRO_ID : Names.Id.t -> unit Proofview.tacticval tclINTRO_ANON : ?seed:string -> unit -> unit Proofview.tactic
type intro_id=|Anon|Id of Names.Id.t|Seed of string
val tclINTRO : id:intro_id -> conclusion:(orig_name:Names.Name.t -> new_name:Names.Id.t -> unit Proofview.tactic) -> unit Proofview.tacticval tclRENAME_HD_PROD : Names.Name.t -> unit Proofview.tacticval tcl0G : default:'a -> 'a Proofview.tactic -> 'a Proofview.tacticval tclFIRSTa : 'a Proofview.tactic list -> 'a Proofview.tacticval tclFIRSTi : (int -> 'a Proofview.tactic) -> int -> 'a Proofview.tacticval tacCONSTR_NAME : ?name:Names.Name.t -> EConstr.t -> Names.Name.t Proofview.tacticval tacMKPROD : EConstr.t -> ?name:Names.Name.t -> EConstr.types -> EConstr.types Proofview.tacticval tacINTERP_CPATTERN : Ssrmatching_plugin.Ssrmatching.cpattern -> Ssrmatching_plugin.Ssrmatching.pattern Proofview.tacticval tacUNIFY : EConstr.t -> EConstr.t -> unit Proofview.tacticval tacIS_INJECTION_CASE : ?ty:EConstr.types -> EConstr.t -> bool Proofview.tacticval tclWITHTOP : (EConstr.t -> unit Proofview.tactic) -> unit Proofview.tactic1 shot, hands-on the top of the stack, eg for
=> ->
val tacMK_SSR_CONST : string -> EConstr.t Proofview.tactic
module type StateType = sig ... endval is_ind_ref : Evd.evar_map -> EConstr.t -> Names.GlobRef.t -> boolval is_construct_ref : Evd.evar_map -> EConstr.t -> Names.GlobRef.t -> boolval is_const_ref : Evd.evar_map -> EConstr.t -> Names.GlobRef.t -> bool