(* Defines the order to apply to editedGrammar to get productionlistGrammar. doc_grammar will modify this file to add/remove nonterminals and productions to match editedGrammar, which will remove comments. Not compiled into Coq *) DOC_GRAMMAR global: [ | reference ] constr_pattern: [ | term ] sort: [ | "Set" | "Prop" | "SProp" | "Type" | "Type" "@{" "_" "}" | "Type" "@{" universe "}" ] sort_family: [ | "Set" | "Prop" | "SProp" | "Type" ] universe_increment: [ | "+" natural | empty ] universe_name: [ | global | "Set" | "Prop" ] universe_expr: [ | universe_name universe_increment ] universe: [ | "max" "(" universe_expr_list_comma ")" | universe_expr ] universe_expr_list_comma: [ | universe_expr_list_comma "," universe_expr | universe_expr ] lconstr: [ | operconstr200 | lconstr ] term: [ | operconstr8 | "@" global instance ] operconstr200: [ | binder_constr | operconstr100 ] operconstr100: [ | operconstr99 "<:" binder_constr | operconstr99 "<:" operconstr100 | operconstr99 "<<:" binder_constr | operconstr99 "<<:" operconstr100 | operconstr99 ":" binder_constr | operconstr99 ":" operconstr100 | operconstr99 ":>" | operconstr99 ] operconstr99: [ | operconstr90 ] operconstr90: [ | operconstr10 ] operconstr10: [ | operconstr9 appl_arg_list | "@" global instance operconstr9_list_opt | "@" pattern_identref ident_list | operconstr9 ] appl_arg_list: [ | appl_arg_list appl_arg | appl_arg ] operconstr9: [ | ".." operconstr0 ".." | operconstr8 ] operconstr8: [ | operconstr1 ] operconstr1: [ | operconstr0 ".(" global appl_arg_list_opt ")" | operconstr0 ".(" "@" global operconstr9_list_opt ")" | operconstr0 "%" IDENT | operconstr0 ] appl_arg_list_opt: [ | appl_arg_list_opt appl_arg | empty ] operconstr9_list_opt: [ | operconstr9_list_opt operconstr9 | empty ] operconstr0: [ | atomic_constr | match_constr | "(" operconstr200 ")" | "{|" record_declaration bar_cbrace | "{" binder_constr "}" | "`{" operconstr200 "}" | "`(" operconstr200 ")" | "ltac" ":" "(" ltac_expr ")" ] record_declaration: [ | record_fields ] record_fields: [ | record_field_declaration ";" record_fields | record_field_declaration | empty | record_field ";" record_fields | record_field ";" | record_field ] record_field_declaration: [ | global binders ":=" lconstr ] binder_constr: [ | "forall" open_binders "," operconstr200 | "fun" open_binders "=>" operconstr200 | "let" name binders type_cstr ":=" operconstr200 "in" operconstr200 | "let" single_fix "in" operconstr200 | "let" name_alt return_type ":=" operconstr200 "in" operconstr200 | "let" "'" pattern200 ":=" operconstr200 "in" operconstr200 | "let" "'" pattern200 ":=" operconstr200 case_type "in" operconstr200 | "let" "'" pattern200 "in" pattern200 ":=" operconstr200 case_type "in" operconstr200 | "if" operconstr200 return_type "then" operconstr200 "else" operconstr200 | fix_constr | "if" operconstr200 "is" ssr_dthen ssr_else (* ssr plugin *) | "if" operconstr200 "isn't" ssr_dthen ssr_else (* ssr plugin *) | "let" ":" ssr_mpat ":=" lconstr "in" lconstr (* ssr plugin *) | "let" ":" ssr_mpat ":=" lconstr ssr_rtype "in" lconstr (* ssr plugin *) | "let" ":" ssr_mpat "in" pattern200 ":=" lconstr ssr_rtype "in" lconstr (* ssr plugin *) ] name_alt: [ | "(" name_list_comma_opt ")" | "()" ] name_list_comma_opt: [ | name_list_comma | empty ] name_list_comma: [ | name_list_comma "," name | name ] name_list_opt: [ | name_list_opt name | empty ] name_list: [ | name_list name | name ] appl_arg: [ | lpar_id_coloneq lconstr ")" | operconstr9 ] atomic_constr: [ | global instance | sort | NUMERAL | string | "_" | "?" "[" ident "]" | "?" "[" "?" ident "]" | "?" ident evar_instance ] inst: [ | ident ":=" lconstr ] evar_instance: [ | "@{" inst_list_semi "}" | empty ] inst_list_semi: [ | inst_list_semi ";" inst | inst ] instance: [ | "@{" universe_level_list_opt "}" | empty ] universe_level_list_opt: [ | universe_level_list_opt universe_level | empty ] universe_level: [ | "Set" | "Prop" | "Type" | "_" | global ] fix_constr: [ | single_fix | single_fix "with" fix_decl_list "for" ident ] fix_decl_list: [ | fix_decl_list "with" fix_decl | fix_decl ] single_fix: [ | fix_kw fix_decl ] fix_kw: [ | "fix" | "cofix" ] fix_decl: [ | ident binders_fixannot type_cstr ":=" operconstr200 ] match_constr: [ | "match" case_item_list_comma case_type_opt "with" branches "end" ] case_item_list_comma: [ | case_item_list_comma "," case_item | case_item ] case_type_opt: [ | case_type | empty ] case_item: [ | operconstr100 as_opt in_opt ] as_opt2: [ | as_opt case_type | empty ] in_opt: [ | "in" pattern200 | empty ] case_type: [ | "return" operconstr100 ] return_type: [ | as_opt2 ] as_opt3: [ | "as" dirpath | empty ] branches: [ | or_opt eqn_list_or_opt ] mult_pattern: [ | pattern200_list_comma ] pattern200_list_comma: [ | pattern200_list_comma "," pattern200 | pattern200 ] eqn: [ | mult_pattern_list_or "=>" lconstr ] mult_pattern_list_or: [ | mult_pattern_list_or "|" mult_pattern | mult_pattern ] record_pattern: [ | global ":=" pattern200 ] record_patterns: [ | record_pattern ";" record_patterns | record_pattern ";" | record_pattern | empty ] pattern200: [ | pattern100 ] pattern100: [ | pattern99 ":" binder_constr | pattern99 ":" operconstr100 | pattern99 ] pattern99: [ | pattern90 ] pattern90: [ | pattern10 ] pattern10: [ | pattern1 "as" name | pattern1 pattern1_list | "@" reference pattern1_list_opt | pattern1 ] pattern1_list: [ | pattern1_list pattern1 | pattern1 ] pattern1_list_opt: [ | pattern1_list_opt pattern1 | empty ] pattern1: [ | pattern0 "%" IDENT | pattern0 ] pattern0: [ | reference | "{|" record_patterns bar_cbrace | "_" | "(" pattern200 ")" | "(" pattern200 "|" pattern200_list_or ")" | NUMERAL | string ] pattern200_list_or: [ | pattern200_list_or "|" pattern200 | pattern200 ] impl_ident_tail: [ | "}" | name_list ":" lconstr "}" | name_list "}" | ":" lconstr "}" ] fixannot: [ | "{" "struct" ident "}" | "{" "wf" term ident "}" | "{" "measure" term ident_opt term_opt "}" | "{" "struct" name "}" | empty ] term_opt: [ | term | empty ] impl_name_head: [ | empty ] binders_fixannot: [ | impl_name_head impl_ident_tail binders_fixannot | fixannot | binder binders_fixannot | empty ] open_binders: [ | name name_list_opt ":" lconstr | name name_list_opt binders | name ".." name | closed_binder binders ] binders: [ | binder_list_opt ] binder_list_opt: [ | binder_list_opt binder | empty ] binder: [ | name | closed_binder ] typeclass_constraint: [ | "!" operconstr200 | "{" name "}" ":" exclam_opt operconstr200 | name_colon exclam_opt operconstr200 | operconstr200 ] type_cstr: [ | lconstr_opt | ":" lconstr | empty ] preident: [ | IDENT ] pattern_identref: [ | "?" ident ] var: [ | ident ] field: [ | FIELD ] fields: [ | field fields | field ] fullyqualid: [ | ident fields | ident ] basequalid: [ | ident fields | ident ] name: [ | "_" | ident ] reference: [ | ident fields | ident ] by_notation: [ | ne_string IDENT_opt ] IDENT_opt: [ | "%" IDENT | empty ] smart_global: [ | reference | by_notation ] qualid: [ | basequalid ] ne_string: [ | STRING ] ne_lstring: [ | ne_string ] dirpath: [ | ident field_list_opt ] field_list_opt: [ | field_list_opt field | empty ] string: [ | STRING ] lstring: [ | string ] integer: [ | NUMERAL | "-" NUMERAL ] natural: [ | NUMERAL ] bigint: [ | NUMERAL ] bar_cbrace: [ | "|" "}" ] vernac_control: [ | "Time" vernac_control | "Redirect" ne_string vernac_control | "Timeout" natural vernac_control | "Fail" vernac_control | decorated_vernac ] decorated_vernac: [ | quoted_attributes_list_opt vernac ] quoted_attributes_list_opt: [ | quoted_attributes_list_opt quoted_attributes | empty ] quoted_attributes: [ | "#[" attribute_list_comma_opt "]" ] attribute_list_comma_opt: [ | attribute_list_comma | empty ] attribute_list_comma: [ | attribute_list_comma "," attribute | attribute ] attribute: [ | ident attribute_value ] attribute_value: [ | "=" string | "(" attribute_list_comma_opt ")" | empty ] vernac: [ | "Local" vernac_poly | "Global" vernac_poly | vernac_poly ] vernac_poly: [ | "Polymorphic" vernac_aux | "Monomorphic" vernac_aux | vernac_aux ] vernac_aux: [ | "Program" gallina "." | "Program" gallina_ext "." | gallina "." | gallina_ext "." | command "." | syntax "." | subprf | command_entry ] noedit_mode: [ | query_command ] subprf: [ | BULLET | "{" | "}" ] gallina: [ | thm_token ident_decl binders ":" lconstr with_list_opt | assumption_token inline assum_list | assumptions_token inline assum_list | def_token ident_decl def_body | "Let" ident def_body | cumulativity_token_opt private_token finite_token inductive_definition_list | "Fixpoint" rec_definition_list | "Let" "Fixpoint" rec_definition_list | "CoFixpoint" corec_definition_list | "Let" "CoFixpoint" corec_definition_list | "Scheme" scheme_list | "Combined" "Scheme" ident "from" ident_list_comma | "Register" global "as" qualid | "Register" "Inline" global | "Primitive" ident lconstr_opt ":=" register_token | "Universe" ident_list | "Universes" ident_list | "Constraint" univ_constraint_list_comma ] with_list_opt: [ | with_list_opt "with" ident_decl binders ":" lconstr | empty ] cumulativity_token_opt: [ | cumulativity_token | empty ] inductive_definition_list: [ | inductive_definition_list "with" inductive_definition | inductive_definition ] rec_definition_list: [ | rec_definition_list "with" rec_definition | rec_definition ] corec_definition_list: [ | corec_definition_list "with" corec_definition | corec_definition ] scheme_list: [ | scheme_list "with" scheme | scheme ] ident_list_comma: [ | ident_list_comma "," ident | ident ] univ_constraint_list_comma: [ | univ_constraint_list_comma "," univ_constraint | univ_constraint ] lconstr_opt2: [ | ":=" lconstr | empty ] register_token: [ | register_prim_token | register_type_token ] register_type_token: [ | "#int63_type" ] register_prim_token: [ | "#int63_head0" | "#int63_tail0" | "#int63_add" | "#int63_sub" | "#int63_mul" | "#int63_div" | "#int63_mod" | "#int63_lsr" | "#int63_lsl" | "#int63_land" | "#int63_lor" | "#int63_lxor" | "#int63_addc" | "#int63_subc" | "#int63_addcarryc" | "#int63_subcarryc" | "#int63_mulc" | "#int63_diveucl" | "#int63_div21" | "#int63_addmuldiv" | "#int63_eq" | "#int63_lt" | "#int63_le" | "#int63_compare" ] thm_token: [ | "Theorem" | "Lemma" | "Fact" | "Remark" | "Corollary" | "Proposition" | "Property" ] def_token: [ | "Definition" | "Example" | "SubClass" ] assumption_token: [ | "Hypothesis" | "Variable" | "Axiom" | "Parameter" | "Conjecture" ] assumptions_token: [ | "Hypotheses" | "Variables" | "Axioms" | "Parameters" | "Conjectures" ] inline: [ | "Inline" "(" natural ")" | "Inline" | empty ] univ_constraint: [ | universe_name lt_alt universe_name ] lt_alt: [ | "<" | "=" | "<=" ] univ_decl: [ | "@{" ident_list_opt plus_opt univ_constraint_alt ] plus_opt: [ | "+" | empty ] univ_constraint_alt: [ | "|" univ_constraint_list_comma_opt plus_opt "}" | rbrace_alt ] univ_constraint_list_comma_opt: [ | univ_constraint_list_comma | empty ] rbrace_alt: [ | "}" | bar_cbrace ] ident_decl: [ | ident univ_decl_opt ] finite_token: [ | "Inductive" | "CoInductive" | "Variant" | "Record" | "Structure" | "Class" ] cumulativity_token: [ | "Cumulative" | "NonCumulative" ] private_token: [ | "Private" | empty ] def_body: [ | binders ":=" reduce lconstr | binders ":" lconstr ":=" reduce lconstr | binders ":" lconstr ] reduce: [ | "Eval" red_expr "in" | empty ] one_decl_notation: [ | ne_lstring ":=" term IDENT_opt2 ] IDENT_opt2: [ | ":" IDENT | empty ] decl_sep: [ | "and" ] decl_notation: [ | "where" one_decl_notation_list | empty ] one_decl_notation_list: [ | one_decl_notation_list decl_sep one_decl_notation | one_decl_notation ] opt_constructors_or_fields: [ | ":=" constructor_list_or_record_decl | empty ] inductive_definition: [ | opt_coercion ident_decl binders lconstr_opt opt_constructors_or_fields decl_notation ] constructor_list_or_record_decl: [ | "|" constructor_list_or | ident constructor_type "|" constructor_list_or_opt | ident constructor_type | ident "{" record_fields "}" | "{" record_fields "}" | empty ] constructor_list_or: [ | constructor_list_or "|" constructor | constructor ] constructor_list_or_opt: [ | constructor_list_or | empty ] opt_coercion: [ | ">" | empty ] rec_definition: [ | ident_decl binders_fixannot type_cstr lconstr_opt2 decl_notation ] corec_definition: [ | ident_decl binders type_cstr lconstr_opt2 decl_notation ] lconstr_opt: [ | ":" lconstr | empty ] scheme: [ | scheme_kind | ident ":=" scheme_kind ] scheme_kind: [ | "Induction" "for" smart_global "Sort" sort_family | "Minimality" "for" smart_global "Sort" sort_family | "Elimination" "for" smart_global "Sort" sort_family | "Case" "for" smart_global "Sort" sort_family | "Equality" "for" smart_global ] record_field: [ | quoted_attributes_list_opt record_binder natural_opt2 decl_notation ] record_binder_body: [ | binders of_type_with_opt_coercion lconstr | binders of_type_with_opt_coercion lconstr ":=" lconstr | binders ":=" lconstr ] record_binder: [ | name | name record_binder_body ] assum_list: [ | assum_coe_list | simple_assum_coe ] assum_coe_list: [ | assum_coe_list assum_coe | assum_coe ] assum_coe: [ | "(" simple_assum_coe ")" ] simple_assum_coe: [ | ident_decl_list of_type_with_opt_coercion lconstr ] ident_decl_list: [ | ident_decl_list ident_decl | ident_decl ] constructor_type: [ | binders of_type_with_opt_coercion_opt ] of_type_with_opt_coercion_opt: [ | of_type_with_opt_coercion lconstr | empty ] constructor: [ | ident constructor_type ] of_type_with_opt_coercion: [ | ":>>" | ":>" ">" | ":>" | ":" ">" ">" | ":" ">" | ":" ] gallina_ext: [ | "Module" export_token ident module_binder_list_opt of_module_type is_module_expr | "Module" "Type" ident module_binder_list_opt check_module_types is_module_type | "Declare" "Module" export_token ident module_binder_list_opt ":" module_type_inl | "Section" ident | "Chapter" ident | "End" ident | "Collection" ident ":=" section_subset_expr | "Require" export_token global_list | "From" global "Require" export_token global_list | "Import" global_list | "Export" global_list | "Include" module_type_inl ext_module_expr_list_opt | "Include" "Type" module_type_inl ext_module_type_list_opt | "Transparent" smart_global_list | "Opaque" smart_global_list | "Strategy" strategy_level_list | "Canonical" Structure_opt global univ_decl_opt2 | "Canonical" Structure_opt by_notation | "Coercion" global univ_decl_opt def_body | "Identity" "Coercion" ident ":" class_rawexpr ">->" class_rawexpr | "Coercion" global ":" class_rawexpr ">->" class_rawexpr | "Coercion" by_notation ":" class_rawexpr ">->" class_rawexpr | "Context" binder_list | "Instance" instance_name ":" operconstr200 hint_info record_declaration_opt | "Existing" "Instance" global hint_info | "Existing" "Instances" global_list natural_opt2 | "Existing" "Class" global | "Arguments" smart_global argument_spec_block_list_opt more_implicits_block_opt arguments_modifier_opt | "Implicit" "Type" reserv_list | "Implicit" "Types" reserv_list | "Generalizable" All_alt | "Export" "Set" option_table option_setting | "Export" "Unset" option_table | "Import" "Prenex" "Implicits" (* ssr plugin *) ] module_binder_list_opt: [ | module_binder_list_opt module_binder | empty ] ext_module_expr_list_opt: [ | ext_module_expr_list_opt ext_module_expr | empty ] ext_module_type_list_opt: [ | ext_module_type_list_opt ext_module_type | empty ] strategy_level_list: [ | strategy_level_list strategy_level "[" smart_global_list "]" | strategy_level "[" smart_global_list "]" ] Structure_opt: [ | "Structure" | empty ] univ_decl_opt: [ | univ_decl | empty ] binder_list: [ | binder_list binder | binder ] record_declaration_opt: [ | ":=" "{" record_declaration "}" | ":=" lconstr | empty ] natural_opt: [ | natural | empty ] argument_spec_block_list_opt: [ | argument_spec_block_list_opt argument_spec_block | empty ] more_implicits_block_opt: [ | "," more_implicits_block_list_comma | empty ] more_implicits_block_list_comma: [ | more_implicits_block_list_comma "," more_implicits_block_list_opt | more_implicits_block_list_opt ] arguments_modifier_opt: [ | ":" arguments_modifier_list_comma | empty ] arguments_modifier_list_comma: [ | arguments_modifier_list_comma "," arguments_modifier | arguments_modifier ] All_alt: [ | "All" "Variables" | "No" "Variables" | Variable_alt ident_list ] Variable_alt: [ | "Variable" | "Variables" ] more_implicits_block_list_opt: [ | more_implicits_block_list_opt more_implicits_block | empty ] univ_decl_opt2: [ | univ_decl_opt def_body | empty ] export_token: [ | "Import" | "Export" | empty ] ext_module_type: [ | "<+" module_type_inl ] ext_module_expr: [ | "<+" module_expr_inl ] check_module_type: [ | "<:" module_type_inl ] check_module_types: [ | check_module_type_list_opt ] check_module_type_list_opt: [ | check_module_type_list_opt check_module_type | empty ] of_module_type: [ | ":" module_type_inl | check_module_types ] is_module_type: [ | ":=" module_type_inl ext_module_type_list_opt | empty ] is_module_expr: [ | ":=" module_expr_inl ext_module_expr_list_opt | empty ] functor_app_annot: [ | "[" "inline" "at" "level" natural "]" | "[" "no" "inline" "]" | empty ] module_expr_inl: [ | "!" module_expr | module_expr functor_app_annot ] module_type_inl: [ | "!" module_type | module_type functor_app_annot ] module_binder: [ | "(" export_token ident_list ":" module_type_inl ")" ] module_expr: [ | module_expr_atom | module_expr module_expr_atom ] module_expr_atom: [ | qualid | "(" module_expr ")" ] with_declaration: [ | "Definition" fullyqualid univ_decl_opt ":=" lconstr | "Module" fullyqualid ":=" qualid ] module_type: [ | qualid | "(" module_type ")" | module_type module_expr_atom | module_type "with" with_declaration ] section_subset_expr: [ | starredidentref_list_opt | ssexpr35 ] starredidentref_list_opt: [ | starredidentref_list_opt starredidentref | empty ] starredidentref: [ | ident | ident "*" | "Type" | "Type" "*" ] ssexpr35: [ | "-" ssexpr50 | ssexpr50 ] ssexpr50: [ | ssexpr0 "-" ssexpr0 | ssexpr0 "+" ssexpr0 | ssexpr0 ] ssexpr0: [ | starredidentref | "(" starredidentref_list_opt ")" | "(" starredidentref_list_opt ")" "*" | "(" ssexpr35 ")" | "(" ssexpr35 ")" "*" ] arguments_modifier: [ | "simpl" "nomatch" | "simpl" "never" | "default" "implicits" | "clear" "implicits" | "clear" "scopes" | "clear" "bidirectionality" "hint" | "rename" | "assert" | "extra" "scopes" | "clear" "scopes" "and" "implicits" | "clear" "implicits" "and" "scopes" ] scope: [ | "%" IDENT ] argument_spec: [ | exclam_opt name scope_opt ] exclam_opt: [ | "!" | empty ] scope_opt: [ | scope | empty ] argument_spec_block: [ | argument_spec | "/" | "&" | "(" argument_spec_list ")" scope_opt | "[" argument_spec_list "]" scope_opt | "{" argument_spec_list "}" scope_opt ] argument_spec_list: [ | argument_spec_list argument_spec | argument_spec ] more_implicits_block: [ | name | "[" name_list "]" | "{" name_list "}" ] strategy_level: [ | "expand" | "opaque" | integer | "transparent" ] instance_name: [ | ident_decl binders | empty ] hint_info: [ | "|" natural_opt constr_pattern_opt | empty ] reserv_list: [ | reserv_tuple_list | simple_reserv ] reserv_tuple_list: [ | reserv_tuple_list reserv_tuple | reserv_tuple ] reserv_tuple: [ | "(" simple_reserv ")" ] simple_reserv: [ | ident_list ":" lconstr ] command: [ | "Comments" comment_list_opt | "Declare" "Instance" ident_decl binders ":" operconstr200 hint_info | "Declare" "Scope" IDENT | "Pwd" | "Cd" | "Cd" ne_string | "Load" Verbose_opt ne_string_alt | "Declare" "ML" "Module" ne_string_list | "Locate" locatable | "Add" "LoadPath" ne_string as_dirpath | "Add" "Rec" "LoadPath" ne_string as_dirpath | "Remove" "LoadPath" ne_string | "AddPath" ne_string "as" as_dirpath | "AddRecPath" ne_string "as" as_dirpath | "DelPath" ne_string | "Type" lconstr | "Print" printable | "Print" smart_global univ_name_list_opt | "Print" "Module" "Type" global | "Print" "Module" global | "Print" "Namespace" dirpath | "Inspect" natural | "Add" "ML" "Path" ne_string | "Add" "Rec" "ML" "Path" ne_string | "Set" option_table option_setting | "Unset" option_table | "Print" "Table" option_table | "Add" IDENT IDENT option_ref_value_list | "Add" IDENT option_ref_value_list | "Test" option_table "for" option_ref_value_list | "Test" option_table | "Remove" IDENT IDENT option_ref_value_list | "Remove" IDENT option_ref_value_list | "Write" "State" IDENT | "Write" "State" ne_string | "Restore" "State" IDENT | "Restore" "State" ne_string | "Reset" "Initial" | "Reset" ident | "Back" | "Back" natural | "BackTo" natural | "Debug" "On" | "Debug" "Off" | "Declare" "Reduction" IDENT; ":=" red_expr | "Declare" "Custom" "Entry" IDENT | "Goal" lconstr | "Proof" | "Proof" "Mode" string | "Proof" lconstr | "Abort" | "Abort" "All" | "Abort" ident | "Existential" natural constr_body | "Admitted" | "Qed" | "Save" ident | "Defined" | "Defined" ident | "Restart" | "Undo" | "Undo" natural | "Undo" "To" natural | "Focus" | "Focus" natural | "Unfocus" | "Unfocused" | "Show" | "Show" natural | "Show" ident | "Show" "Existentials" | "Show" "Universes" | "Show" "Conjectures" | "Show" "Proof" | "Show" "Intro" | "Show" "Intros" | "Show" "Match" reference | "Guarded" | "Create" "HintDb" IDENT discriminated_opt | "Remove" "Hints" global_list opt_hintbases | "Hint" hint opt_hintbases | "Obligation" integer "of" ident ":" lglob withtac | "Obligation" integer "of" ident withtac | "Obligation" integer ":" lglob withtac | "Obligation" integer withtac | "Next" "Obligation" "of" ident withtac | "Next" "Obligation" withtac | "Solve" "Obligation" integer "of" ident "with" tactic | "Solve" "Obligation" integer "with" tactic | "Solve" "Obligations" "of" ident "with" tactic | "Solve" "Obligations" "with" tactic | "Solve" "Obligations" | "Solve" "All" "Obligations" "with" tactic | "Solve" "All" "Obligations" | "Admit" "Obligations" "of" ident | "Admit" "Obligations" | "Obligation" "Tactic" ":=" tactic | "Show" "Obligation" "Tactic" | "Obligations" "of" ident | "Obligations" | "Preterm" "of" ident | "Preterm" | "Hint" "Rewrite" orient term_list ":" preident_list_opt | "Hint" "Rewrite" orient term_list "using" tactic ":" preident_list_opt | "Hint" "Rewrite" orient term_list | "Hint" "Rewrite" orient term_list "using" tactic | "Derive" "Inversion_clear" ident "with" term "Sort" sort_family | "Derive" "Inversion_clear" ident "with" term | "Derive" "Inversion" ident "with" term "Sort" sort_family | "Derive" "Inversion" ident "with" term | "Derive" "Dependent" "Inversion" ident "with" term "Sort" sort_family | "Derive" "Dependent" "Inversion_clear" ident "with" term "Sort" sort_family | "Declare" "Left" "Step" term | "Declare" "Right" "Step" term | "Grab" "Existential" "Variables" | "Unshelve" | "Declare" "Equivalent" "Keys" term term | "Print" "Equivalent" "Keys" | "Optimize" "Proof" | "Optimize" "Heap" | "Reset" "Ltac" "Profile" | "Show" "Ltac" "Profile" | "Show" "Ltac" "Profile" "CutOff" int | "Show" "Ltac" "Profile" string | "Hint" "Cut" "[" hints_path "]" opthints | "Typeclasses" "Transparent" reference_list_opt | "Typeclasses" "Opaque" reference_list_opt | "Typeclasses" "eauto" ":=" debug eauto_search_strategy int_opt | "Add" "Relation" term term "reflexivity" "proved" "by" term "symmetry" "proved" "by" term "as" ident | "Add" "Relation" term term "reflexivity" "proved" "by" term "as" ident | "Add" "Relation" term term "as" ident | "Add" "Relation" term term "symmetry" "proved" "by" term "as" ident | "Add" "Relation" term term "symmetry" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Relation" term term "reflexivity" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Relation" term term "reflexivity" "proved" "by" term "symmetry" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Relation" term term "transitivity" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "reflexivity" "proved" "by" term "symmetry" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "reflexivity" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "symmetry" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "symmetry" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "reflexivity" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "reflexivity" "proved" "by" term "symmetry" "proved" "by" term "transitivity" "proved" "by" term "as" ident | "Add" "Parametric" "Relation" binders ":" term term "transitivity" "proved" "by" term "as" ident | "Add" "Setoid" term term term "as" ident | "Add" "Parametric" "Setoid" binders ":" term term term "as" ident | "Add" "Morphism" term ":" ident | "Declare" "Morphism" term ":" ident | "Add" "Morphism" term "with" "signature" lconstr "as" ident | "Add" "Parametric" "Morphism" binders ":" term "with" "signature" lconstr "as" ident | "Print" "Rewrite" "HintDb" preident | "Proof" "with" tactic using_opt | "Proof" "using" section_subset_expr with_opt | "Tactic" "Notation" ltac_tactic_level_opt ltac_production_item_list ":=" tactic | "Print" "Ltac" reference | "Locate" "Ltac" reference | "Ltac" ltac_tacdef_body_list | "Print" "Ltac" "Signatures" | "String" "Notation" reference reference reference ":" ident | "Set" "Firstorder" "Solver" tactic | "Print" "Firstorder" "Solver" | "Numeral" "Notation" reference reference reference ":" ident numnotoption | "Derive" ident "SuchThat" term "As" ident (* derive plugin *) | "Extraction" global (* extraction plugin *) | "Recursive" "Extraction" global_list (* extraction plugin *) | "Extraction" string global_list (* extraction plugin *) | "Extraction" "TestCompile" global_list (* extraction plugin *) | "Separate" "Extraction" global_list (* extraction plugin *) | "Extraction" "Library" ident (* extraction plugin *) | "Recursive" "Extraction" "Library" ident (* extraction plugin *) | "Extraction" "Language" language (* extraction plugin *) | "Extraction" "Inline" global_list (* extraction plugin *) | "Extraction" "NoInline" global_list (* extraction plugin *) | "Print" "Extraction" "Inline" (* extraction plugin *) | "Reset" "Extraction" "Inline" (* extraction plugin *) | "Extraction" "Implicit" global "[" int_or_id_list_opt "]" (* extraction plugin *) | "Extraction" "Blacklist" ident_list (* extraction plugin *) | "Print" "Extraction" "Blacklist" (* extraction plugin *) | "Reset" "Extraction" "Blacklist" (* extraction plugin *) | "Extract" "Constant" global string_list_opt "=>" mlname (* extraction plugin *) | "Extract" "Inlined" "Constant" global "=>" mlname (* extraction plugin *) | "Extract" "Inductive" global "=>" mlname "[" mlname_list_opt "]" string_opt (* extraction plugin *) | "Show" "Extraction" (* extraction plugin *) | "Function" function_rec_definition_loc_list (* funind plugin *) | "Functional" "Scheme" fun_scheme_arg_list (* funind plugin *) | "Functional" "Case" fun_scheme_arg (* funind plugin *) | "Generate" "graph" "for" reference (* funind plugin *) | "Add" "Ring" ident ":" term ring_mods_opt (* setoid_ring plugin *) | "Print" "Rings" (* setoid_ring plugin *) | "Add" "Field" ident ":" term field_mods_opt (* setoid_ring plugin *) | "Print" "Fields" (* setoid_ring plugin *) | "Prenex" "Implicits" global_list (* ssr plugin *) | "Search" ssr_search_arg ssr_modlocs (* ssr plugin *) | "Print" "Hint" "View" ssrviewpos (* ssr plugin *) | "Hint" "View" ssrviewposspc ssrhintref_list (* ssr plugin *) ] comment_list_opt: [ | comment_list_opt comment | empty ] Verbose_opt: [ | "Verbose" | empty ] ne_string_alt: [ | ne_string | IDENT ] ne_string_list: [ | ne_string_list ne_string | ne_string ] univ_name_list_opt: [ | univ_name_list | empty ] option_ref_value_list: [ | option_ref_value_list option_ref_value | option_ref_value ] discriminated_opt: [ | "discriminated" | empty ] global_list: [ | global_list global | global ] preident_list_opt: [ | preident_list_opt preident | empty ] reference_list_opt: [ | reference_list_opt reference | empty ] int_opt: [ | int | empty ] using_opt: [ | "using" section_subset_expr | empty ] with_opt: [ | "with" tactic | empty ] ltac_tactic_level_opt: [ | ltac_tactic_level | empty ] ltac_production_item_list: [ | ltac_production_item_list ltac_production_item | ltac_production_item ] ltac_tacdef_body_list: [ | ltac_tacdef_body_list "with" ltac_tacdef_body | ltac_tacdef_body ] int_or_id_list_opt: [ | int_or_id_list_opt int_or_id | empty ] ident_list: [ | ident_list ident | ident ] string_list_opt: [ | string_list_opt string | empty ] mlname_list_opt: [ | mlname_list_opt mlname | empty ] string_opt: [ | string | empty ] function_rec_definition_loc_list: [ | function_rec_definition_loc_list "with" function_rec_definition_loc | function_rec_definition_loc ] fun_scheme_arg_list: [ | fun_scheme_arg_list "with" fun_scheme_arg | fun_scheme_arg ] ring_mods_opt: [ | ring_mods | empty ] field_mods_opt: [ | field_mods | empty ] ssrhintref_list: [ | ssrhintref_list ssrhintref | ssrhintref ] query_command: [ | "Eval" red_expr "in" lconstr "." | "Compute" lconstr "." | "Check" lconstr "." | "About" smart_global univ_name_list_opt "." | "SearchHead" constr_pattern in_or_out_modules "." | "SearchPattern" constr_pattern in_or_out_modules "." | "SearchRewrite" constr_pattern in_or_out_modules "." | "Search" searchabout_query searchabout_queries "." | "SearchAbout" searchabout_query searchabout_queries "." | "SearchAbout" "[" searchabout_query_list "]" in_or_out_modules "." ] searchabout_query_list: [ | searchabout_query_list searchabout_query | searchabout_query ] printable: [ | "Term" smart_global univ_name_list_opt | "All" | "Section" global | "Grammar" IDENT | "Custom" "Grammar" IDENT | "LoadPath" dirpath_opt | "Modules" | "Libraries" | "ML" "Path" | "ML" "Modules" | "Debug" "GC" | "Graph" | "Classes" | "TypeClasses" | "Instances" smart_global | "Coercions" | "Coercion" "Paths" class_rawexpr class_rawexpr | "Canonical" "Projections" | "Tables" | "Options" | "Hint" | "Hint" smart_global | "Hint" "*" | "HintDb" IDENT | "Scopes" | "Scope" IDENT | "Visibility" IDENT_opt3 | "Implicit" smart_global | Sorted_opt "Universes" printunivs_subgraph_opt ne_string_opt | "Assumptions" smart_global | "Opaque" "Dependencies" smart_global | "Transparent" "Dependencies" smart_global | "All" "Dependencies" smart_global | "Strategy" smart_global | "Strategies" | "Registered" ] dirpath_opt: [ | dirpath | empty ] IDENT_opt3: [ | IDENT | empty ] Sorted_opt: [ | "Sorted" | empty ] printunivs_subgraph_opt: [ | printunivs_subgraph | empty ] ne_string_opt: [ | ne_string | empty ] printunivs_subgraph: [ | "Subgraph" "(" reference_list_opt ")" ] class_rawexpr: [ | "Funclass" | "Sortclass" | smart_global ] locatable: [ | smart_global | "Term" smart_global | "File" ne_string | "Library" global | "Module" global ] option_setting: [ | empty | integer | STRING ] option_ref_value: [ | global | STRING ] option_table: [ | IDENT_list ] as_dirpath: [ | as_opt3 ] as_opt: [ | "as" name | empty ] ne_in_or_out_modules: [ | "inside" global_list | "outside" global_list ] in_or_out_modules: [ | ne_in_or_out_modules | empty ] comment: [ | term | STRING | natural ] positive_search_mark: [ | "-" | empty ] searchabout_query: [ | positive_search_mark ne_string scope_opt | positive_search_mark constr_pattern ] searchabout_queries: [ | ne_in_or_out_modules | searchabout_query searchabout_queries | empty ] univ_name_list: [ | "@{" name_list_opt "}" ] syntax: [ | "Open" "Scope" IDENT | "Close" "Scope" IDENT | "Delimit" "Scope" IDENT; "with" IDENT | "Undelimit" "Scope" IDENT | "Bind" "Scope" IDENT; "with" class_rawexpr_list | "Infix" ne_lstring ":=" term syntax_modifier_opt IDENT_opt2 | "Notation" ident ident_list_opt ":=" term only_parsing | "Notation" lstring ":=" term syntax_modifier_opt IDENT_opt2 | "Format" "Notation" STRING STRING STRING | "Reserved" "Infix" ne_lstring syntax_modifier_opt | "Reserved" "Notation" ne_lstring syntax_modifier_opt ] class_rawexpr_list: [ | class_rawexpr_list class_rawexpr | class_rawexpr ] syntax_modifier_opt: [ | "(" syntax_modifier_list_comma ")" | empty ] syntax_modifier_list_comma: [ | syntax_modifier_list_comma "," syntax_modifier | syntax_modifier ] only_parsing: [ | "(" "only" "parsing" ")" | "(" "compat" STRING ")" | empty ] level: [ | "level" natural | "next" "level" ] syntax_modifier: [ | "at" "level" natural | "in" "custom" IDENT | "in" "custom" IDENT; "at" "level" natural | "left" "associativity" | "right" "associativity" | "no" "associativity" | "only" "printing" | "only" "parsing" | "compat" STRING | "format" STRING STRING_opt | IDENT; "," IDENT_list_comma "at" level | IDENT; "at" level | IDENT; "at" level constr_as_binder_kind | IDENT constr_as_binder_kind | IDENT syntax_extension_type ] STRING_opt: [ | STRING | empty ] IDENT_list_comma: [ | IDENT_list_comma "," IDENT | IDENT ] syntax_extension_type: [ | "ident" | "global" | "bigint" | "binder" | "constr" | "constr" at_level_opt constr_as_binder_kind_opt | "pattern" | "pattern" "at" "level" natural | "strict" "pattern" | "strict" "pattern" "at" "level" natural | "closed" "binder" | "custom" IDENT at_level_opt constr_as_binder_kind_opt ] at_level_opt: [ | at_level | empty ] constr_as_binder_kind_opt: [ | constr_as_binder_kind | empty ] at_level: [ | "at" level ] constr_as_binder_kind: [ | "as" "ident" | "as" "pattern" | "as" "strict" "pattern" ] opt_hintbases: [ | empty | ":" IDENT_list ] IDENT_list: [ | IDENT_list IDENT | IDENT ] reference_or_constr: [ | global | term ] hint: [ | "Resolve" reference_or_constr_list hint_info | "Resolve" "->" global_list natural_opt | "Resolve" "<-" global_list natural_opt | "Immediate" reference_or_constr_list | "Variables" "Transparent" | "Variables" "Opaque" | "Constants" "Transparent" | "Constants" "Opaque" | "Transparent" global_list | "Opaque" global_list | "Mode" global mode | "Unfold" global_list | "Constructors" global_list | "Extern" natural constr_pattern_opt "=>" tactic ] reference_or_constr_list: [ | reference_or_constr_list reference_or_constr | reference_or_constr ] natural_opt2: [ | "|" natural | empty ] constr_pattern_opt: [ | constr_pattern | empty ] constr_body: [ | ":=" lconstr | ":" lconstr ":=" lconstr ] mode: [ | plus_list ] plus_list: [ | plus_list plus_alt | plus_alt ] plus_alt: [ | "+" | "!" | "-" ] vernac_toplevel: [ | "Drop" "." | "Quit" "." | "Backtrack" natural natural natural "." | "Show" "Goal" natural "at" natural "." | vernac_control ] orient: [ | "->" | "<-" | empty ] occurrences: [ | integer_list | var ] integer_list: [ | integer_list integer | integer ] glob: [ | term ] lglob: [ | lconstr ] casted_constr: [ | term ] hloc: [ | empty | "in" "|-" "*" | "in" ident | "in" "(" "Type" "of" ident ")" | "in" "(" "Value" "of" ident ")" | "in" "(" "type" "of" ident ")" | "in" "(" "value" "of" ident ")" ] rename: [ | ident "into" ident ] by_arg_tac: [ | "by" ltac_expr3 | empty ] in_clause: [ | in_clause | "*" occs | "*" "|-" concl_occ | hypident_occ_list_comma_opt "|-" concl_occ | hypident_occ_list_comma_opt ] hypident_occ_list_comma_opt: [ | hypident_occ_list_comma | empty ] hypident_occ_list_comma: [ | hypident_occ_list_comma "," hypident_occ | hypident_occ ] test_lpar_id_colon: [ | empty ] withtac: [ | "with" tactic | empty ] closed_binder: [ | "(" name name_list ":" lconstr ")" | "(" name ":" lconstr ")" | "(" name ":=" lconstr ")" | "(" name ":" lconstr ":=" lconstr ")" | "{" name "}" | "{" name name_list ":" lconstr "}" | "{" name ":" lconstr "}" | "{" name name_list "}" | "`(" typeclass_constraint_list_comma ")" | "`{" typeclass_constraint_list_comma "}" | "'" pattern0 | of_alt operconstr99 (* ssr plugin *) | "(" "_" ":" lconstr "|" lconstr ")" ] typeclass_constraint_list_comma: [ | typeclass_constraint_list_comma "," typeclass_constraint | typeclass_constraint ] of_alt: [ | "of" | "&" ] simple_tactic: [ | "reflexivity" | "exact" casted_constr | "assumption" | "etransitivity" | "cut" term | "exact_no_check" term | "vm_cast_no_check" term | "native_cast_no_check" term | "casetype" term | "elimtype" term | "lapply" term | "transitivity" term | "left" | "eleft" | "left" "with" bindings | "eleft" "with" bindings | "right" | "eright" | "right" "with" bindings | "eright" "with" bindings | "constructor" | "constructor" int_or_var | "constructor" int_or_var "with" bindings | "econstructor" | "econstructor" int_or_var | "econstructor" int_or_var "with" bindings | "specialize" constr_with_bindings | "specialize" constr_with_bindings "as" simple_intropattern | "symmetry" | "symmetry" "in" in_clause | "split" | "esplit" | "split" "with" bindings | "esplit" "with" bindings | "exists" | "exists" bindings_list_comma | "eexists" | "eexists" bindings_list_comma | "intros" "until" quantified_hypothesis | "intro" | "intro" ident | "intro" ident "at" "top" | "intro" ident "at" "bottom" | "intro" ident "after" var | "intro" ident "before" var | "intro" "at" "top" | "intro" "at" "bottom" | "intro" "after" var | "intro" "before" var | "move" var "at" "top" | "move" var "at" "bottom" | "move" var "after" var | "move" var "before" var | "rename" rename_list_comma | "revert" var_list | "simple" "induction" quantified_hypothesis | "simple" "destruct" quantified_hypothesis | "double" "induction" quantified_hypothesis quantified_hypothesis | "admit" | "fix" ident natural | "cofix" ident | "clear" var_list_opt | "clear" "-" var_list | "clearbody" var_list | "generalize" "dependent" term | "replace" uconstr "with" term clause_dft_concl by_arg_tac | "replace" "->" uconstr clause_dft_concl | "replace" "<-" uconstr clause_dft_concl | "replace" uconstr clause_dft_concl | "simplify_eq" | "simplify_eq" destruction_arg | "esimplify_eq" | "esimplify_eq" destruction_arg | "discriminate" | "discriminate" destruction_arg | "ediscriminate" | "ediscriminate" destruction_arg | "injection" | "injection" destruction_arg | "einjection" | "einjection" destruction_arg | "injection" "as" simple_intropattern_list_opt | "injection" destruction_arg "as" simple_intropattern_list_opt | "einjection" "as" simple_intropattern_list_opt | "einjection" destruction_arg "as" simple_intropattern_list_opt | "simple" "injection" | "simple" "injection" destruction_arg | "dependent" "rewrite" orient term | "dependent" "rewrite" orient term "in" var | "cutrewrite" orient term | "cutrewrite" orient term "in" var | "decompose" "sum" term | "decompose" "record" term | "absurd" term | "contradiction" constr_with_bindings_opt | "autorewrite" "with" preident_list clause_dft_concl | "autorewrite" "with" preident_list clause_dft_concl "using" tactic | "autorewrite" "*" "with" preident_list clause_dft_concl | "autorewrite" "*" "with" preident_list clause_dft_concl "using" tactic | "rewrite" "*" orient uconstr "in" var "at" occurrences by_arg_tac | "rewrite" "*" orient uconstr "at" occurrences "in" var by_arg_tac | "rewrite" "*" orient uconstr "in" var by_arg_tac | "rewrite" "*" orient uconstr "at" occurrences by_arg_tac | "rewrite" "*" orient uconstr by_arg_tac | "refine" uconstr | "simple" "refine" uconstr | "notypeclasses" "refine" uconstr | "simple" "notypeclasses" "refine" uconstr | "solve_constraints" | "subst" var_list | "subst" | "simple" "subst" | "evar" test_lpar_id_colon "(" ident ":" lconstr ")" | "evar" term | "instantiate" "(" ident ":=" lglob ")" | "instantiate" "(" integer ":=" lglob ")" hloc | "instantiate" | "stepl" term "by" tactic | "stepl" term | "stepr" term "by" tactic | "stepr" term | "generalize_eqs" var | "dependent" "generalize_eqs" var | "generalize_eqs_vars" var | "dependent" "generalize_eqs_vars" var | "specialize_eqs" var | "hresolve_core" "(" ident ":=" term ")" "at" int_or_var "in" term | "hresolve_core" "(" ident ":=" term ")" "in" term | "hget_evar" int_or_var | "destauto" | "destauto" "in" var | "transparent_abstract" ltac_expr3 | "transparent_abstract" ltac_expr3 "using" ident | "constr_eq" term term | "constr_eq_strict" term term | "constr_eq_nounivs" term term | "is_evar" term | "has_evar" term | "is_var" term | "is_fix" term | "is_cofix" term | "is_ind" term | "is_constructor" term | "is_proj" term | "is_const" term | "shelve" | "shelve_unifiable" | "unshelve" ltac_expr1 | "give_up" | "cycle" int_or_var | "swap" int_or_var int_or_var | "revgoals" | "guard" test | "decompose" "[" term_list "]" term | "optimize_heap" | "start" "ltac" "profiling" | "stop" "ltac" "profiling" | "reset" "ltac" "profile" | "show" "ltac" "profile" | "show" "ltac" "profile" "cutoff" int | "show" "ltac" "profile" string | "restart_timer" string_opt | "finish_timing" string_opt | "finish_timing" "(" string ")" string_opt | "eassumption" | "eexact" term | "trivial" auto_using hintbases | "info_trivial" auto_using hintbases | "debug" "trivial" auto_using hintbases | "auto" int_or_var_opt auto_using hintbases | "info_auto" int_or_var_opt auto_using hintbases | "debug" "auto" int_or_var_opt auto_using hintbases | "prolog" "[" uconstr_list_opt "]" int_or_var | "eauto" int_or_var_opt int_or_var_opt auto_using hintbases | "new" "auto" int_or_var_opt auto_using hintbases | "debug" "eauto" int_or_var_opt int_or_var_opt auto_using hintbases | "info_eauto" int_or_var_opt int_or_var_opt auto_using hintbases | "dfs" "eauto" int_or_var_opt auto_using hintbases | "autounfold" hintbases clause_dft_concl | "autounfold_one" hintbases "in" var | "autounfold_one" hintbases | "unify" term term | "unify" term term "with" preident | "convert_concl_no_check" term | "typeclasses" "eauto" "bfs" int_or_var_opt "with" preident_list | "typeclasses" "eauto" int_or_var_opt "with" preident_list | "typeclasses" "eauto" int_or_var_opt | "head_of_constr" ident term | "not_evar" term | "is_ground" term | "autoapply" term "using" preident | "autoapply" term "with" preident | "progress_evars" tactic | "rewrite_strat" rewstrategy "in" var | "rewrite_strat" rewstrategy | "rewrite_db" preident "in" var | "rewrite_db" preident | "substitute" orient glob_constr_with_bindings | "setoid_rewrite" orient glob_constr_with_bindings | "setoid_rewrite" orient glob_constr_with_bindings "in" var | "setoid_rewrite" orient glob_constr_with_bindings "at" occurrences | "setoid_rewrite" orient glob_constr_with_bindings "at" occurrences "in" var | "setoid_rewrite" orient glob_constr_with_bindings "in" var "at" occurrences | "setoid_symmetry" | "setoid_symmetry" "in" var | "setoid_reflexivity" | "setoid_transitivity" term | "setoid_etransitivity" | "decide" "equality" | "compare" term term | "intros" intropattern_list_opt | "eintros" intropattern_list_opt | "apply" constr_with_bindings_arg_list_comma in_hyp_as | "eapply" constr_with_bindings_arg_list_comma in_hyp_as | "simple" "apply" constr_with_bindings_arg_list_comma in_hyp_as | "simple" "eapply" constr_with_bindings_arg_list_comma in_hyp_as | "elim" constr_with_bindings_arg eliminator_opt | "eelim" constr_with_bindings_arg eliminator_opt | "case" induction_clause_list | "ecase" induction_clause_list | "fix" ident natural "with" fixdecl_list | "cofix" ident "with" cofixdecl_list | "pose" bindings_with_parameters | "pose" term as_name | "epose" bindings_with_parameters | "epose" term as_name | "set" bindings_with_parameters clause_dft_concl | "set" term as_name clause_dft_concl | "eset" bindings_with_parameters clause_dft_concl | "eset" term as_name clause_dft_concl | "remember" term as_name eqn_ipat clause_dft_all | "eremember" term as_name eqn_ipat clause_dft_all | "assert" "(" ident ":=" lconstr ")" | "eassert" "(" ident ":=" lconstr ")" | "assert" test_lpar_id_colon "(" ident ":" lconstr ")" by_tactic | "eassert" test_lpar_id_colon "(" ident ":" lconstr ")" by_tactic | "enough" test_lpar_id_colon "(" ident ":" lconstr ")" by_tactic | "eenough" test_lpar_id_colon "(" ident ":" lconstr ")" by_tactic | "assert" term as_ipat by_tactic | "eassert" term as_ipat by_tactic | "pose" "proof" lconstr as_ipat | "epose" "proof" lconstr as_ipat | "enough" term as_ipat by_tactic | "eenough" term as_ipat by_tactic | "generalize" term | "generalize" term term_list | "generalize" term occs as_name pattern_occ_list_opt | "induction" induction_clause_list | "einduction" induction_clause_list | "destruct" induction_clause_list | "edestruct" induction_clause_list | "rewrite" oriented_rewriter_list_comma clause_dft_concl by_tactic | "erewrite" oriented_rewriter_list_comma clause_dft_concl by_tactic | "dependent" simple_alt quantified_hypothesis as_or_and_ipat with_opt2 | "simple" "inversion" quantified_hypothesis as_or_and_ipat in_hyp_list | "inversion" quantified_hypothesis as_or_and_ipat in_hyp_list | "inversion_clear" quantified_hypothesis as_or_and_ipat in_hyp_list | "inversion" quantified_hypothesis "using" term in_hyp_list | "red" clause_dft_concl | "hnf" clause_dft_concl | "simpl" delta_flag ref_or_pattern_occ_opt clause_dft_concl | "cbv" strategy_flag clause_dft_concl | "cbn" strategy_flag clause_dft_concl | "lazy" strategy_flag clause_dft_concl | "compute" delta_flag clause_dft_concl | "vm_compute" ref_or_pattern_occ_opt clause_dft_concl | "native_compute" ref_or_pattern_occ_opt clause_dft_concl | "unfold" unfold_occ_list_comma clause_dft_concl | "fold" term_list clause_dft_concl | "pattern" pattern_occ_list_comma clause_dft_concl | "change" conversion clause_dft_concl | "change_no_check" conversion clause_dft_concl | "btauto" | "rtauto" | "congruence" | "congruence" integer | "congruence" "with" term_list | "congruence" integer "with" term_list | "f_equal" | "firstorder" tactic_opt firstorder_using | "firstorder" tactic_opt "with" preident_list | "firstorder" tactic_opt firstorder_using "with" preident_list | "gintuition" tactic_opt | "functional" "inversion" quantified_hypothesis reference_opt (* funind plugin *) | "functional" "induction" term_list fun_ind_using with_names (* funind plugin *) | "soft" "functional" "induction" term_list fun_ind_using with_names (* funind plugin *) | "myred" (* micromega plugin *) | "psatz_Z" int_or_var tactic (* micromega plugin *) | "psatz_Z" tactic (* micromega plugin *) | "xlia" tactic (* micromega plugin *) | "xnlia" tactic (* micromega plugin *) | "xnra" tactic (* micromega plugin *) | "xnqa" tactic (* micromega plugin *) | "sos_Z" tactic (* micromega plugin *) | "sos_Q" tactic (* micromega plugin *) | "sos_R" tactic (* micromega plugin *) | "lra_Q" tactic (* micromega plugin *) | "lra_R" tactic (* micromega plugin *) | "psatz_R" int_or_var tactic (* micromega plugin *) | "psatz_R" tactic (* micromega plugin *) | "psatz_Q" int_or_var tactic (* micromega plugin *) | "psatz_Q" tactic (* micromega plugin *) | "nsatz_compute" term (* nsatz plugin *) | "omega" (* omega plugin *) | "omega" "with" ident_list (* omega plugin *) | "omega" "with" "*" (* omega plugin *) | "protect_fv" string "in" ident (* setoid_ring plugin *) | "protect_fv" string (* setoid_ring plugin *) | "ring_lookup" ltac_expr0 "[" term_list_opt "]" term_list (* setoid_ring plugin *) | "field_lookup" tactic "[" term_list_opt "]" term_list (* setoid_ring plugin *) | "YouShouldNotTypeThis" ssrintrosarg (* ssr plugin *) | "by" ssrhintarg (* ssr plugin *) | "YouShouldNotTypeThis" "do" (* ssr plugin *) | "YouShouldNotTypeThis" ssrtclarg ssrseqarg (* ssr plugin *) | "clear" natural (* ssr plugin *) | "move" ssrmovearg ssrrpat (* ssr plugin *) | "move" ssrmovearg ssrclauses (* ssr plugin *) | "move" ssrrpat (* ssr plugin *) | "move" (* ssr plugin *) | "case" ssrcasearg ssrclauses (* ssr plugin *) | "case" (* ssr plugin *) | "elim" ssrarg ssrclauses (* ssr plugin *) | "elim" (* ssr plugin *) | "apply" ssrapplyarg (* ssr plugin *) | "apply" (* ssr plugin *) | "exact" ssrexactarg (* ssr plugin *) | "exact" (* ssr plugin *) | "exact" "<:" lconstr (* ssr plugin *) | "congr" ssrcongrarg (* ssr plugin *) | "ssrinstancesofruleL2R" ssrterm (* ssr plugin *) | "ssrinstancesofruleR2L" ssrterm (* ssr plugin *) | "rewrite" ssrrwargs ssrclauses (* ssr plugin *) | "unlock" ssrunlockargs ssrclauses (* ssr plugin *) | "pose" ssrfixfwd (* ssr plugin *) | "pose" ssrcofixfwd (* ssr plugin *) | "pose" ssrfwdid ssrposefwd (* ssr plugin *) | "set" ssrfwdid ssrsetfwd ssrclauses (* ssr plugin *) | "abstract" ssrdgens (* ssr plugin *) | "have" ssrhavefwdwbinders (* ssr plugin *) | "have" "suff" ssrhpats_nobs ssrhavefwd (* ssr plugin *) | "have" "suffices" ssrhpats_nobs ssrhavefwd (* ssr plugin *) | "suff" "have" ssrhpats_nobs ssrhavefwd (* ssr plugin *) | "suffices" "have" ssrhpats_nobs ssrhavefwd (* ssr plugin *) | "suff" ssrsufffwd (* ssr plugin *) | "suffices" ssrsufffwd (* ssr plugin *) | "wlog" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "wlog" "suff" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "wlog" "suffices" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "without" "loss" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "without" "loss" "suff" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "without" "loss" "suffices" ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "gen" "have" ssrclear ssr_idcomma ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "generally" "have" ssrclear ssr_idcomma ssrhpats_nobs ssrwlogfwd ssrhint (* ssr plugin *) | "under" ssrrwarg (* ssr plugin *) | "under" ssrrwarg ssrintros_ne (* ssr plugin *) | "under" ssrrwarg ssrintros_ne "do" ssrhint3arg (* ssr plugin *) | "under" ssrrwarg "do" ssrhint3arg (* ssr plugin *) | "ssrinstancesoftpat" cpattern (* ssrmatching plugin *) ] var_list: [ | var_list var | var ] var_list_opt: [ | var_list_opt var | empty ] constr_with_bindings_opt: [ | constr_with_bindings | empty ] int_or_var_opt: [ | int_or_var | empty ] uconstr_list_opt: [ | uconstr_list_opt uconstr | empty ] constr_with_bindings_arg_list_comma: [ | constr_with_bindings_arg_list_comma "," constr_with_bindings_arg | constr_with_bindings_arg ] fixdecl_list: [ | fixdecl_list fixdecl | fixdecl ] cofixdecl_list: [ | cofixdecl_list cofixdecl | cofixdecl ] pattern_occ_list_opt: [ | pattern_occ_list_opt "," pattern_occ as_name | empty ] oriented_rewriter_list_comma: [ | oriented_rewriter_list_comma "," oriented_rewriter | oriented_rewriter ] simple_alt: [ | "simple" "inversion" | "inversion" | "inversion_clear" ] with_opt2: [ | "with" term | empty ] tactic_opt: [ | tactic | empty ] reference_opt: [ | reference | empty ] bindings_list_comma: [ | bindings_list_comma "," bindings | bindings ] rename_list_comma: [ | rename_list_comma "," rename | rename ] orient_string: [ | orient preident ] comparison: [ | "=" | "<" | "<=" | ">" | ">=" ] test: [ | int_or_var comparison int_or_var ] hintbases: [ | "with" "*" | "with" preident_list | empty ] preident_list: [ | preident_list preident | preident ] auto_using: [ | "using" uconstr_list_comma | empty ] uconstr_list_comma: [ | uconstr_list_comma "," uconstr | uconstr ] hints_path_atom: [ | global_list | "_" ] hints_path: [ | "(" hints_path ")" | hints_path "*" | "emp" | "eps" | hints_path "|" hints_path | hints_path_atom | hints_path hints_path ] opthints: [ | ":" preident_list | empty ] debug: [ | "debug" | empty ] eauto_search_strategy: [ | "(bfs)" | "(dfs)" | empty ] glob_constr_with_bindings: [ | constr_with_bindings ] rewstrategy: [ | glob | "<-" term | "subterms" rewstrategy | "subterm" rewstrategy | "innermost" rewstrategy | "outermost" rewstrategy | "bottomup" rewstrategy | "topdown" rewstrategy | "id" | "fail" | "refl" | "progress" rewstrategy | "try" rewstrategy | "any" rewstrategy | "repeat" rewstrategy | rewstrategy ";" rewstrategy | "(" rewstrategy ")" | "choice" rewstrategy rewstrategy | "old_hints" preident | "hints" preident | "terms" term_list_opt | "eval" red_expr | "fold" term ] term_list_opt: [ | term_list_opt term | empty ] int_or_var: [ | integer | ident ] nat_or_var: [ | natural | ident ] id_or_meta: [ | ident ] open_constr: [ | term ] uconstr: [ | term ] destruction_arg: [ | natural | constr_with_bindings | constr_with_bindings_arg ] constr_with_bindings_arg: [ | ">" constr_with_bindings | constr_with_bindings ] quantified_hypothesis: [ | ident | natural ] conversion: [ | term | term "with" term | term "at" occs_nums "with" term ] occs_nums: [ | nat_or_var_list | "-" nat_or_var int_or_var_list_opt ] nat_or_var_list: [ | nat_or_var_list nat_or_var | nat_or_var ] int_or_var_list_opt: [ | int_or_var_list_opt int_or_var | empty ] occs: [ | "at" occs_nums | empty ] pattern_occ: [ | term occs ] ref_or_pattern_occ: [ | smart_global occs | term occs ] unfold_occ: [ | smart_global occs ] intropattern_list_opt: [ | intropattern_list_opt intropattern | empty ] or_and_intropattern: [ | "[" intropattern_or_list_or "]" | "(" simple_intropattern_list_comma_opt ")" | "(" simple_intropattern "&" simple_intropattern_list_ ")" ] simple_intropattern_list_comma_opt: [ | simple_intropattern_list_comma | empty ] simple_intropattern_list_comma: [ | simple_intropattern_list_comma "," simple_intropattern | simple_intropattern ] simple_intropattern_list_: [ | simple_intropattern_list_ "&" simple_intropattern | simple_intropattern ] intropattern_or_list_or: [ | intropattern_or_list_or "|" intropattern_list_opt | intropattern_list_opt ] simple_intropattern_list_opt: [ | simple_intropattern_list_opt simple_intropattern | empty ] equality_intropattern: [ | "->" | "<-" | "[=" intropattern_list_opt "]" ] naming_intropattern: [ | "?" ident | "?" | ident ] intropattern: [ | simple_intropattern | "*" | "**" ] simple_intropattern: [ | simple_intropattern_closed operconstr0_list_opt ] operconstr0_list_opt: [ | operconstr0_list_opt "%" operconstr0 | empty ] simple_intropattern_closed: [ | or_and_intropattern | equality_intropattern | "_" | naming_intropattern ] simple_binding: [ | "(" ident ":=" lconstr ")" | "(" natural ":=" lconstr ")" ] bindings: [ | simple_binding_list | term_list ] simple_binding_list: [ | simple_binding_list simple_binding | simple_binding ] term_list: [ | term_list term | term ] constr_with_bindings: [ | term with_bindings ] with_bindings: [ | "with" bindings | empty ] red_flags: [ | "beta" | "iota" | "match" | "fix" | "cofix" | "zeta" | "delta" delta_flag ] delta_flag: [ | "-" "[" smart_global_list "]" | "[" smart_global_list "]" | empty ] smart_global_list: [ | smart_global_list smart_global | smart_global ] strategy_flag: [ | red_flags_list | delta_flag ] red_flags_list: [ | red_flags_list red_flags | red_flags ] red_expr: [ | "red" | "hnf" | "simpl" delta_flag ref_or_pattern_occ_opt | "cbv" strategy_flag | "cbn" strategy_flag | "lazy" strategy_flag | "compute" delta_flag | "vm_compute" ref_or_pattern_occ_opt | "native_compute" ref_or_pattern_occ_opt | "unfold" unfold_occ_list_comma | "fold" term_list | "pattern" pattern_occ_list_comma | IDENT ] ref_or_pattern_occ_opt: [ | ref_or_pattern_occ | empty ] unfold_occ_list_comma: [ | unfold_occ_list_comma "," unfold_occ | unfold_occ ] pattern_occ_list_comma: [ | pattern_occ_list_comma "," pattern_occ | pattern_occ ] hypident: [ | id_or_meta | "(" "type" "of" id_or_meta ")" | "(" "value" "of" id_or_meta ")" | "(" "type" "of" ident ")" (* ssr plugin *) | "(" "value" "of" ident ")" (* ssr plugin *) ] hypident_occ: [ | hypident occs ] clause_dft_concl: [ | "in" in_clause | occs | empty ] clause_dft_all: [ | "in" in_clause | empty ] opt_clause: [ | "in" in_clause | "at" occs_nums | empty ] concl_occ: [ | "*" occs | empty ] in_hyp_list: [ | "in" id_or_meta_list | empty ] id_or_meta_list: [ | id_or_meta_list id_or_meta | id_or_meta ] in_hyp_as: [ | "in" id_or_meta as_ipat | empty ] simple_binder: [ | name | "(" name_list ":" lconstr ")" ] fixdecl: [ | "(" ident simple_binder_list_opt fixannot ":" lconstr ")" ] cofixdecl: [ | "(" ident simple_binder_list_opt ":" lconstr ")" ] bindings_with_parameters: [ | "(" ident simple_binder_list_opt ":=" lconstr ")" ] simple_binder_list_opt: [ | simple_binder_list_opt simple_binder | empty ] eliminator: [ | "using" constr_with_bindings ] as_ipat: [ | "as" simple_intropattern | empty ] or_and_intropattern_loc: [ | or_and_intropattern | ident ] as_or_and_ipat: [ | "as" or_and_intropattern_loc | empty ] eqn_ipat: [ | "eqn" ":" naming_intropattern | "_eqn" ":" naming_intropattern | "_eqn" | empty ] as_name: [ | "as" ident | empty ] by_tactic: [ | "by" ltac_expr3 | empty ] rewriter: [ | "!" constr_with_bindings_arg | qmark_alt constr_with_bindings_arg | natural "!" constr_with_bindings_arg | natural qmark_alt constr_with_bindings_arg | natural constr_with_bindings_arg | constr_with_bindings_arg ] qmark_alt: [ | "?" | "?" ] oriented_rewriter: [ | orient rewriter ] induction_clause: [ | destruction_arg as_or_and_ipat eqn_ipat opt_clause ] induction_clause_list: [ | induction_clause_list_comma eliminator_opt opt_clause ] induction_clause_list_comma: [ | induction_clause_list_comma "," induction_clause | induction_clause ] eliminator_opt: [ | eliminator | empty ] ltac_expr: [ | binder_tactic | ltac_expr4 ] binder_tactic: [ | "fun" input_fun_list "=>" ltac_expr | "let" rec_opt let_clause_list "in" ltac_expr | "info" ltac_expr ] input_fun_list: [ | input_fun_list input_fun | input_fun ] input_fun: [ | "_" | ident ] rec_opt: [ | "rec" | empty ] let_clause_list: [ | let_clause_list "with" let_clause | let_clause ] let_clause: [ | ident ":=" ltac_expr | "_" ":=" ltac_expr | ident input_fun_list ":=" ltac_expr ] ltac_expr4: [ | ltac_expr3 ";" binder_tactic | ltac_expr3 ";" ltac_expr3 | ltac_expr3 ";" "[" gt_opt tactic_then_gen "]" | ltac_expr3 | ltac_expr ";" "first" ssr_first_else (* ssr plugin *) | ltac_expr ";" "first" ssrseqarg (* ssr plugin *) | ltac_expr ";" "last" ssrseqarg (* ssr plugin *) ] gt_opt: [ | ">" | empty ] tactic_then_gen: [ | ltac_expr_opt "|" tactic_then_gen | ltac_expr_opt ".." or_opt ltac_expr_list2 | ltac_expr | empty ] ltac_expr_opt: [ | ltac_expr | empty ] ltac_expr_list_or2_opt: [ | ltac_expr_list_or2 | empty ] ltac_expr_list_or2: [ | ltac_expr_list_or2 "|" ltac_expr_opt | ltac_expr_opt ] ltac_expr3: [ | "try" ltac_expr3 | "do" int_or_var ltac_expr3 | "timeout" int_or_var ltac_expr3 | "time" string_opt ltac_expr3 | "repeat" ltac_expr3 | "progress" ltac_expr3 | "once" ltac_expr3 | "exactly_once" ltac_expr3 | "infoH" ltac_expr3 | "abstract" ltac_expr2 | "abstract" ltac_expr2 "using" ident | selector ltac_expr3 | "do" ssrmmod ssrdotac ssrclauses (* ssr plugin *) | "do" ssrortacarg ssrclauses (* ssr plugin *) | "do" int_or_var ssrmmod ssrdotac ssrclauses (* ssr plugin *) | "abstract" ssrdgens (* ssr plugin *) | ltac_expr2 ] tactic_mode: [ | toplevel_selector_opt query_command | toplevel_selector_opt "{" | toplevel_selector_opt ltac_info_opt tactic ltac_use_default | "par" ":" ltac_info_opt tactic ltac_use_default ] toplevel_selector_opt: [ | toplevel_selector | empty ] toplevel_selector: [ | selector_body ":" | "!" ":" | "all" ":" ] selector: [ | "only" selector_body ":" ] selector_body: [ | range_selector_list_comma | "[" ident "]" ] range_selector_list_comma: [ | range_selector_list_comma "," range_selector | range_selector ] range_selector: [ | natural "-" natural | natural ] ltac_expr2: [ | ltac_expr1 "+" binder_tactic | ltac_expr1 "+" ltac_expr2 | "tryif" ltac_expr "then" ltac_expr "else" ltac_expr2 | ltac_expr1 "||" binder_tactic | ltac_expr1 "||" ltac_expr2 | ltac_expr1 ] ltac_expr1: [ | match_key reverse_opt "goal" "with" match_context_list "end" | match_key ltac_expr "with" match_list "end" | "first" "[" ltac_expr_list_or_opt "]" | "solve" "[" ltac_expr_list_or_opt "]" | "idtac" message_token_list_opt | failkw int_or_var_opt message_token_list_opt | simple_tactic | tactic_arg | reference tactic_arg_compat_list_opt | ltac_expr ssrintros_ne (* ssr plugin *) | ltac_expr0 ] match_key: [ | "match" | "lazymatch" | "multimatch" ] reverse_opt: [ | "reverse" | empty ] ltac_expr_list_or_opt: [ | ltac_expr_list_or | empty ] ltac_expr_list_or: [ | ltac_expr_list_or "|" ltac_expr | ltac_expr ] match_context_list: [ | or_opt match_context_rule_list_or ] match_context_rule_list_or: [ | match_context_rule_list_or "|" match_context_rule | match_context_rule ] or_opt: [ | "|" | empty ] eqn_list_or_opt: [ | eqn_list_or | empty ] eqn_list_or: [ | eqn_list_or "|" eqn | eqn ] match_context_rule: [ | match_hyps_list_comma_opt "|-" match_pattern "=>" ltac_expr | "[" match_hyps_list_comma_opt "|-" match_pattern "]" "=>" ltac_expr | "_" "=>" ltac_expr ] match_hyps_list_comma_opt: [ | match_hyps_list_comma | empty ] match_hyps_list_comma: [ | match_hyps_list_comma "," match_hyps | match_hyps ] match_hyps: [ | name ":" match_pattern | name ":=" match_pattern_opt match_pattern ] match_pattern: [ | "context" ident_opt "[" lconstr_pattern "]" | lconstr_pattern ] ident_opt: [ | ident | empty ] lconstr_pattern: [ | lconstr ] match_pattern_opt: [ | "[" match_pattern "]" ":" | empty ] match_list: [ | or_opt match_rule_list_or ] match_rule_list_or: [ | match_rule_list_or "|" match_rule | match_rule ] match_rule: [ | match_pattern "=>" ltac_expr | "_" "=>" ltac_expr ] message_token_list_opt: [ | message_token_list_opt message_token | empty ] message_token: [ | ident | STRING | integer ] failkw: [ | "fail" | "gfail" ] tactic_arg: [ | "eval" red_expr "in" term | "context" ident "[" lconstr "]" | "type" "of" term | "fresh" fresh_id_list_opt | "type_term" uconstr | "numgoals" ] fresh_id_list_opt: [ | fresh_id_list_opt fresh_id | empty ] fresh_id: [ | STRING | qualid ] tactic_arg_compat_list_opt: [ | tactic_arg_compat_list_opt tactic_arg_compat | empty ] tactic_arg_compat: [ | tactic_arg | term | "()" ] ltac_expr0: [ | "(" ltac_expr ")" | "[" ">" tactic_then_gen "]" | tactic_atom | ssrparentacarg (* ssr plugin *) ] tactic_atom: [ | integer | reference | "()" ] constr_may_eval: [ | "eval" red_expr "in" term | "context" ident "[" lconstr "]" | "type" "of" term | term ] ltac_def_kind: [ | ":=" | "::=" ] tacdef_body: [ | global input_fun_list ltac_def_kind ltac_expr | global ltac_def_kind ltac_expr ] tactic: [ | ltac_expr ] ltac_info_opt: [ | ltac_info | empty ] ltac_info: [ | "Info" natural ] ltac_use_default: [ | "." | "..." ] ltac_tactic_level: [ | "(" "at" "level" natural ")" ] ltac_production_sep: [ | "," string ] ltac_production_item: [ | string | ident "(" ident ltac_production_sep_opt ")" | ident ] ltac_production_sep_opt: [ | ltac_production_sep | empty ] ltac_tacdef_body: [ | tacdef_body ] firstorder_using: [ | "using" reference | "using" reference "," reference_list_comma | "using" reference reference reference_list_opt | empty ] reference_list_comma: [ | reference_list_comma "," reference | reference ] numnotoption: [ | empty | "(" "warning" "after" bigint ")" | "(" "abstract" "after" bigint ")" ] mlname: [ | preident (* extraction plugin *) | string (* extraction plugin *) ] int_or_id: [ | preident (* extraction plugin *) | integer (* extraction plugin *) ] language: [ | "Ocaml" (* extraction plugin *) | "OCaml" (* extraction plugin *) | "Haskell" (* extraction plugin *) | "Scheme" (* extraction plugin *) | "JSON" (* extraction plugin *) ] fun_ind_using: [ | "using" constr_with_bindings (* funind plugin *) | empty (* funind plugin *) ] with_names: [ | "as" simple_intropattern (* funind plugin *) | empty (* funind plugin *) ] constr_comma_sequence': [ | term "," constr_comma_sequence' (* funind plugin *) | term (* funind plugin *) ] auto_using': [ | "using" constr_comma_sequence' (* funind plugin *) | empty (* funind plugin *) ] function_rec_definition_loc: [ | rec_definition (* funind plugin *) ] fun_scheme_arg: [ | ident ":=" "Induction" "for" reference "Sort" sort_family (* funind plugin *) ] ring_mod: [ | "decidable" term (* setoid_ring plugin *) | "abstract" (* setoid_ring plugin *) | "morphism" term (* setoid_ring plugin *) | "constants" "[" tactic "]" (* setoid_ring plugin *) | "closed" "[" global_list "]" (* setoid_ring plugin *) | "preprocess" "[" tactic "]" (* setoid_ring plugin *) | "postprocess" "[" tactic "]" (* setoid_ring plugin *) | "setoid" term term (* setoid_ring plugin *) | "sign" term (* setoid_ring plugin *) | "power" term "[" global_list "]" (* setoid_ring plugin *) | "power_tac" term "[" tactic "]" (* setoid_ring plugin *) | "div" term (* setoid_ring plugin *) ] ring_mods: [ | "(" ring_mod_list_comma ")" (* setoid_ring plugin *) ] ring_mod_list_comma: [ | ring_mod_list_comma "," ring_mod | ring_mod ] field_mod: [ | ring_mod (* setoid_ring plugin *) | "completeness" term (* setoid_ring plugin *) ] field_mods: [ | "(" field_mod_list_comma ")" (* setoid_ring plugin *) ] field_mod_list_comma: [ | field_mod_list_comma "," field_mod | field_mod ] ssrtacarg: [ | ltac_expr (* ssr plugin *) ] ssrtac3arg: [ | ltac_expr3 (* ssr plugin *) ] ssrtclarg: [ | ssrtacarg (* ssr plugin *) ] ssrhyp: [ | ident (* ssr plugin *) ] ssrhoi_hyp: [ | ident (* ssr plugin *) ] ssrhoi_id: [ | ident (* ssr plugin *) ] ssrsimpl_ne: [ | "//=" (* ssr plugin *) | "/=" (* ssr plugin *) | "/" natural "/" natural "=" (* ssr plugin *) | "/" natural "/" (* ssr plugin *) | "/" natural "=" (* ssr plugin *) | "/" natural "/=" (* ssr plugin *) | "/" natural "/" "=" (* ssr plugin *) | "//" natural "=" (* ssr plugin *) | "//" (* ssr plugin *) ] ssrclear_ne: [ | "{" ssrhyp_list "}" (* ssr plugin *) ] ssrclear: [ | ssrclear_ne (* ssr plugin *) | empty (* ssr plugin *) ] ssrindex: [ | int_or_var (* ssr plugin *) ] ssrocc: [ | natural natural_list_opt (* ssr plugin *) | "-" natural_list_opt (* ssr plugin *) | "+" natural_list_opt (* ssr plugin *) ] natural_list_opt: [ | natural_list_opt natural | empty ] ssrmmod: [ | "!" (* ssr plugin *) | "?" (* ssr plugin *) | "?" (* ssr plugin *) ] ssrmult_ne: [ | natural ssrmmod (* ssr plugin *) | ssrmmod (* ssr plugin *) ] ssrmult: [ | ssrmult_ne (* ssr plugin *) | empty (* ssr plugin *) ] ssrdocc: [ | "{" ssrocc "}" (* ssr plugin *) | "{" ssrhyp_list_opt "}" (* ssr plugin *) ] ssrhyp_list_opt: [ | ssrhyp_list_opt ssrhyp | empty ] ssrterm: [ | "YouShouldNotTypeThis" term (* ssr plugin *) | term (* ssr plugin *) ] ast_closure_term: [ | term (* ssr plugin *) ] ast_closure_lterm: [ | lconstr (* ssr plugin *) ] ssrbwdview: [ | "YouShouldNotTypeThis" (* ssr plugin *) | "/" term (* ssr plugin *) | "/" term ssrbwdview (* ssr plugin *) ] ssrfwdview: [ | "YouShouldNotTypeThis" (* ssr plugin *) | "/" ast_closure_term (* ssr plugin *) | "/" ast_closure_term ssrfwdview (* ssr plugin *) ] ident_no_do: [ | "YouShouldNotTypeThis" ident (* ssr plugin *) | IDENT (* ssr plugin *) ] ssripat: [ | "_" (* ssr plugin *) | "*" (* ssr plugin *) | ">" (* ssr plugin *) | ident_no_do (* ssr plugin *) | "?" (* ssr plugin *) | "+" (* ssr plugin *) | "++" (* ssr plugin *) | ssrsimpl_ne (* ssr plugin *) | ssrdocc "->" (* ssr plugin *) | ssrdocc "<-" (* ssr plugin *) | ssrdocc (* ssr plugin *) | "->" (* ssr plugin *) | "<-" (* ssr plugin *) | "-" (* ssr plugin *) | "-/" "=" (* ssr plugin *) | "-/=" (* ssr plugin *) | "-/" "/" (* ssr plugin *) | "-//" (* ssr plugin *) | "-/" integer "/" (* ssr plugin *) | "-/" "/=" (* ssr plugin *) | "-//" "=" (* ssr plugin *) | "-//=" (* ssr plugin *) | "-/" integer "/=" (* ssr plugin *) | "-/" integer "/" integer "=" (* ssr plugin *) | ssrfwdview (* ssr plugin *) | "[" ":" ident_list_opt "]" (* ssr plugin *) | "[:" ident_list_opt "]" (* ssr plugin *) | ssrcpat (* ssr plugin *) ] ident_list_opt: [ | ident_list_opt ident | empty ] ssripats: [ | ssripat ssripats (* ssr plugin *) | empty (* ssr plugin *) ] ssriorpat: [ | ssripats "|" ssriorpat (* ssr plugin *) | ssripats "|-" ">" ssriorpat (* ssr plugin *) | ssripats "|-" ssriorpat (* ssr plugin *) | ssripats "|->" ssriorpat (* ssr plugin *) | ssripats "||" ssriorpat (* ssr plugin *) | ssripats "|||" ssriorpat (* ssr plugin *) | ssripats "||||" ssriorpat (* ssr plugin *) | ssripats (* ssr plugin *) ] ssrcpat: [ | "YouShouldNotTypeThis" ssriorpat (* ssr plugin *) | "[" hat "]" (* ssr plugin *) | "[" ssriorpat "]" (* ssr plugin *) | "[=" ssriorpat "]" (* ssr plugin *) ] hat: [ | "^" ident (* ssr plugin *) | "^" "~" ident (* ssr plugin *) | "^" "~" natural (* ssr plugin *) | "^~" ident (* ssr plugin *) | "^~" natural (* ssr plugin *) ] ssripats_ne: [ | ssripat ssripats (* ssr plugin *) ] ssrhpats: [ | ssripats (* ssr plugin *) ] ssrhpats_wtransp: [ | ssripats (* ssr plugin *) | ssripats "@" ssripats (* ssr plugin *) ] ssrhpats_nobs: [ | ssripats (* ssr plugin *) ] ssrrpat: [ | "->" (* ssr plugin *) | "<-" (* ssr plugin *) ] ssrintros_ne: [ | "=>" ssripats_ne (* ssr plugin *) ] ssrintros: [ | ssrintros_ne (* ssr plugin *) | empty (* ssr plugin *) ] ssrintrosarg: [ | "YouShouldNotTypeThis" ssrtacarg ssrintros_ne (* ssr plugin *) ] ssrfwdid: [ | ident (* ssr plugin *) ] ssrortacs: [ | ssrtacarg "|" ssrortacs (* ssr plugin *) | ssrtacarg "|" (* ssr plugin *) | ssrtacarg (* ssr plugin *) | "|" ssrortacs (* ssr plugin *) | "|" (* ssr plugin *) ] ssrhintarg: [ | "[" "]" (* ssr plugin *) | "[" ssrortacs "]" (* ssr plugin *) | ssrtacarg (* ssr plugin *) ] ssrhint3arg: [ | "[" "]" (* ssr plugin *) | "[" ssrortacs "]" (* ssr plugin *) | ssrtac3arg (* ssr plugin *) ] ssrortacarg: [ | "[" ssrortacs "]" (* ssr plugin *) ] ssrhint: [ | empty (* ssr plugin *) | "by" ssrhintarg (* ssr plugin *) ] ssrwgen: [ | ssrclear_ne (* ssr plugin *) | ssrhoi_hyp (* ssr plugin *) | "@" ssrhoi_hyp (* ssr plugin *) | "(" ssrhoi_id ":=" lcpattern ")" (* ssr plugin *) | "(" ssrhoi_id ")" (* ssr plugin *) | "(@" ssrhoi_id ":=" lcpattern ")" (* ssr plugin *) | "(" "@" ssrhoi_id ":=" lcpattern ")" (* ssr plugin *) ] ssrclausehyps: [ | ssrwgen "," ssrclausehyps (* ssr plugin *) | ssrwgen ssrclausehyps (* ssr plugin *) | ssrwgen (* ssr plugin *) ] ssrclauses: [ | "in" ssrclausehyps "|-" "*" (* ssr plugin *) | "in" ssrclausehyps "|-" (* ssr plugin *) | "in" ssrclausehyps "*" (* ssr plugin *) | "in" ssrclausehyps (* ssr plugin *) | "in" "|-" "*" (* ssr plugin *) | "in" "*" (* ssr plugin *) | "in" "*" "|-" (* ssr plugin *) | empty (* ssr plugin *) ] ssrfwd: [ | ":=" ast_closure_lterm (* ssr plugin *) | ":" ast_closure_lterm ":=" ast_closure_lterm (* ssr plugin *) ] ssrbvar: [ | ident (* ssr plugin *) | "_" (* ssr plugin *) ] ssrbinder: [ | ssrbvar (* ssr plugin *) | "(" ssrbvar ")" (* ssr plugin *) | "(" ssrbvar ":" lconstr ")" (* ssr plugin *) | "(" ssrbvar ssrbvar_list ":" lconstr ")" (* ssr plugin *) | "(" ssrbvar ":" lconstr ":=" lconstr ")" (* ssr plugin *) | "(" ssrbvar ":=" lconstr ")" (* ssr plugin *) | of_alt operconstr99 (* ssr plugin *) ] ssrbvar_list: [ | ssrbvar_list ssrbvar | ssrbvar ] ssrstruct: [ | "{" "struct" ident "}" (* ssr plugin *) | empty (* ssr plugin *) ] ssrposefwd: [ | ssrbinder_list_opt ssrfwd (* ssr plugin *) ] ssrfixfwd: [ | "fix" ssrbvar ssrbinder_list_opt ssrstruct ssrfwd (* ssr plugin *) ] ssrcofixfwd: [ | "cofix" ssrbvar ssrbinder_list_opt ssrfwd (* ssr plugin *) ] ssrbinder_list_opt: [ | ssrbinder_list_opt ssrbinder | empty ] ssrsetfwd: [ | ":" ast_closure_lterm ":=" "{" ssrocc "}" cpattern (* ssr plugin *) | ":" ast_closure_lterm ":=" lcpattern (* ssr plugin *) | ":=" "{" ssrocc "}" cpattern (* ssr plugin *) | ":=" lcpattern (* ssr plugin *) ] ssrhavefwd: [ | ":" ast_closure_lterm ssrhint (* ssr plugin *) | ":" ast_closure_lterm ":=" ast_closure_lterm (* ssr plugin *) | ":" ast_closure_lterm ":=" (* ssr plugin *) | ":=" ast_closure_lterm (* ssr plugin *) ] ssrhavefwdwbinders: [ | ssrhpats_wtransp ssrbinder_list_opt ssrhavefwd (* ssr plugin *) ] ssrseqarg: [ | ssrswap (* ssr plugin *) | ssrseqidx ssrortacarg ssrorelse_opt (* ssr plugin *) | ssrseqidx ssrswap (* ssr plugin *) | ltac_expr3 (* ssr plugin *) ] ssrorelse_opt: [ | ssrorelse | empty ] ssrseqidx: [ | ident (* ssr plugin *) | natural (* ssr plugin *) ] ssrswap: [ | "first" (* ssr plugin *) | "last" (* ssr plugin *) ] ssrorelse: [ | "||" ltac_expr2 (* ssr plugin *) ] ident: [ | IDENT ] ssrparentacarg: [ | "(" ltac_expr ")" (* ssr plugin *) ] ssrdotac: [ | ltac_expr3 (* ssr plugin *) | ssrortacarg (* ssr plugin *) ] ssr_first: [ | ssr_first ssrintros_ne (* ssr plugin *) | "[" ltac_expr_list_or_opt "]" (* ssr plugin *) ] ssr_first_else: [ | ssr_first ssrorelse (* ssr plugin *) | ssr_first (* ssr plugin *) ] ssrgen: [ | ssrdocc cpattern (* ssr plugin *) | cpattern (* ssr plugin *) ] ssrdgens_tl: [ | "{" ssrhyp_list "}" cpattern ssrdgens_tl (* ssr plugin *) | "{" ssrhyp_list "}" (* ssr plugin *) | "{" ssrocc "}" cpattern ssrdgens_tl (* ssr plugin *) | "/" ssrdgens_tl (* ssr plugin *) | cpattern ssrdgens_tl (* ssr plugin *) | empty (* ssr plugin *) ] ssrdgens: [ | ":" ssrgen ssrdgens_tl (* ssr plugin *) ] ssreqid: [ | ssreqpat (* ssr plugin *) | empty (* ssr plugin *) ] ssreqpat: [ | ident (* ssr plugin *) | "_" (* ssr plugin *) | "?" (* ssr plugin *) | "+" (* ssr plugin *) | ssrdocc "->" (* ssr plugin *) | ssrdocc "<-" (* ssr plugin *) | "->" (* ssr plugin *) | "<-" (* ssr plugin *) ] ssrarg: [ | ssrfwdview ssreqid ssrdgens ssrintros (* ssr plugin *) | ssrfwdview ssrclear ssrintros (* ssr plugin *) | ssreqid ssrdgens ssrintros (* ssr plugin *) | ssrclear_ne ssrintros (* ssr plugin *) | ssrintros_ne (* ssr plugin *) ] ssrmovearg: [ | ssrarg (* ssr plugin *) ] ssrcasearg: [ | ssrarg (* ssr plugin *) ] ssragen: [ | "{" ssrhyp_list "}" ssrterm (* ssr plugin *) | ssrterm (* ssr plugin *) ] ssrhyp_list: [ | ssrhyp_list ssrhyp | ssrhyp ] ssragens: [ | "{" ssrhyp_list "}" ssrterm ssragens (* ssr plugin *) | "{" ssrhyp_list "}" (* ssr plugin *) | ssrterm ssragens (* ssr plugin *) | empty (* ssr plugin *) ] ssrapplyarg: [ | ":" ssragen ssragens ssrintros (* ssr plugin *) | ssrclear_ne ssrintros (* ssr plugin *) | ssrintros_ne (* ssr plugin *) | ssrbwdview ":" ssragen ssragens ssrintros (* ssr plugin *) | ssrbwdview ssrclear ssrintros (* ssr plugin *) ] ssrexactarg: [ | ":" ssragen ssragens (* ssr plugin *) | ssrbwdview ssrclear (* ssr plugin *) | ssrclear_ne (* ssr plugin *) ] ssrcongrarg: [ | natural term ssrdgens (* ssr plugin *) | natural term (* ssr plugin *) | term ssrdgens (* ssr plugin *) | term (* ssr plugin *) ] ssrrwocc: [ | "{" ssrhyp_list_opt "}" (* ssr plugin *) | "{" ssrocc "}" (* ssr plugin *) | empty (* ssr plugin *) ] ssrrule_ne: [ | ssrterm_alt (* ssr plugin *) | ssrsimpl_ne (* ssr plugin *) ] ssrterm_alt: [ | "/" ssrterm | ssrterm | ssrsimpl_ne ] ssrrule: [ | ssrrule_ne (* ssr plugin *) | empty (* ssr plugin *) ] ssrpattern_squarep: [ | "[" rpattern "]" (* ssr plugin *) | empty (* ssr plugin *) ] ssrpattern_ne_squarep: [ | "[" rpattern "]" (* ssr plugin *) ] ssrrwarg: [ | "-" ssrmult ssrrwocc ssrpattern_squarep ssrrule_ne (* ssr plugin *) | "-/" ssrterm (* ssr plugin *) | ssrmult_ne ssrrwocc ssrpattern_squarep ssrrule_ne (* ssr plugin *) | "{" ssrhyp_list "}" ssrpattern_ne_squarep ssrrule_ne (* ssr plugin *) | "{" ssrhyp_list "}" ssrrule (* ssr plugin *) | "{" ssrocc "}" ssrpattern_squarep ssrrule_ne (* ssr plugin *) | "{" "}" ssrpattern_squarep ssrrule_ne (* ssr plugin *) | ssrpattern_ne_squarep ssrrule_ne (* ssr plugin *) | ssrrule_ne (* ssr plugin *) ] ssrrwargs: [ | ssrrwarg_list (* ssr plugin *) ] ssrrwarg_list: [ | ssrrwarg_list ssrrwarg | ssrrwarg ] ssrunlockarg: [ | "{" ssrocc "}" ssrterm (* ssr plugin *) | ssrterm (* ssr plugin *) ] ssrunlockargs: [ | ssrunlockarg_list_opt (* ssr plugin *) ] ssrunlockarg_list_opt: [ | ssrunlockarg_list_opt ssrunlockarg | empty ] ssrsufffwd: [ | ssrhpats ssrbinder_list_opt ":" ast_closure_lterm ssrhint (* ssr plugin *) ] ssrwlogfwd: [ | ":" ssrwgen_list_opt "/" ast_closure_lterm (* ssr plugin *) ] ssrwgen_list_opt: [ | ssrwgen_list_opt ssrwgen | empty ] ssr_idcomma: [ | empty (* ssr plugin *) | IDENT_alt "," (* ssr plugin *) ] IDENT_alt: [ | IDENT | "_" ] ssr_rtype: [ | "return" operconstr100 (* ssr plugin *) ] ssr_mpat: [ | pattern200 (* ssr plugin *) ] ssr_dpat: [ | ssr_mpat "in" pattern200 ssr_rtype (* ssr plugin *) | ssr_mpat ssr_rtype (* ssr plugin *) | ssr_mpat (* ssr plugin *) ] ssr_dthen: [ | ssr_dpat "then" lconstr (* ssr plugin *) ] ssr_elsepat: [ | "else" (* ssr plugin *) ] ssr_else: [ | ssr_elsepat lconstr (* ssr plugin *) ] ssr_search_item: [ | string (* ssr plugin *) | string "%" preident (* ssr plugin *) | constr_pattern (* ssr plugin *) ] ssr_search_arg: [ | "-" ssr_search_item ssr_search_arg (* ssr plugin *) | ssr_search_item ssr_search_arg (* ssr plugin *) | empty (* ssr plugin *) ] ssr_modlocs: [ | empty (* ssr plugin *) | "in" modloc_list (* ssr plugin *) ] modloc_list: [ | modloc_list modloc | modloc ] modloc: [ | "-" global (* ssr plugin *) | global (* ssr plugin *) ] ssrhintref: [ | term (* ssr plugin *) | term "|" natural (* ssr plugin *) ] ssrviewpos: [ | "for" "move" "/" (* ssr plugin *) | "for" "apply" "/" (* ssr plugin *) | "for" "apply" "/" "/" (* ssr plugin *) | "for" "apply" "//" (* ssr plugin *) | empty (* ssr plugin *) ] ssrviewposspc: [ | ssrviewpos (* ssr plugin *) ] rpattern: [ | lconstr (* ssrmatching plugin *) | "in" lconstr (* ssrmatching plugin *) | lconstr "in" lconstr (* ssrmatching plugin *) | "in" lconstr "in" lconstr (* ssrmatching plugin *) | lconstr "in" lconstr "in" lconstr (* ssrmatching plugin *) | lconstr "as" lconstr "in" lconstr (* ssrmatching plugin *) ] cpattern: [ | "Qed" term (* ssrmatching plugin *) | term (* ssrmatching plugin *) ] lcpattern: [ | "Qed" lconstr (* ssrmatching plugin *) | lconstr (* ssrmatching plugin *) ] ssrpatternarg: [ | rpattern (* ssrmatching plugin *) ] empty: [ | ] lpar_id_coloneq: [ | "(" IDENT; ":=" ] name_colon: [ | IDENT; ":" | "_" ":" ] int: [ | integer ] command_entry: [ | noedit_mode ]