aboutsummaryrefslogtreecommitdiff
path: root/user-contrib/Ltac2/tac2tactics.mli
blob: f63f7e722a8a09aad738bf039ce90522f143083b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
(************************************************************************)
(*         *   The Coq Proof Assistant / The Coq Development Team       *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)

open Names
open Tac2expr
open EConstr
open Genredexpr
open Tac2types
open Proofview

(** Local reimplementations of tactics variants from Coq *)

val intros_patterns : evars_flag -> intro_pattern list -> unit tactic

val apply : advanced_flag -> evars_flag ->
  constr_with_bindings thunk list ->
  (Id.t * intro_pattern option) option -> unit tactic

val induction_destruct : rec_flag -> evars_flag ->
  induction_clause list -> constr_with_bindings option -> unit tactic

val elim : evars_flag -> constr_with_bindings -> constr_with_bindings option ->
  unit tactic

val general_case_analysis : evars_flag -> constr_with_bindings ->  unit tactic

val generalize : (constr * occurrences * Name.t) list -> unit tactic

val constructor_tac : evars_flag -> int option -> int -> bindings -> unit tactic

val left_with_bindings  : evars_flag -> bindings -> unit tactic
val right_with_bindings : evars_flag -> bindings -> unit tactic
val split_with_bindings : evars_flag -> bindings -> unit tactic

val specialize : constr_with_bindings -> intro_pattern option -> unit tactic

val change : Pattern.constr_pattern option -> (constr array, constr) Tac2ffi.fun1 -> clause -> unit tactic

val rewrite :
  evars_flag -> rewriting list -> clause -> unit thunk option -> unit tactic

val symmetry : clause -> unit tactic

val forward : bool -> unit tactic option option ->
  intro_pattern option -> constr -> unit tactic

val assert_ : assertion -> unit tactic

val letin_pat_tac : evars_flag -> (bool * intro_pattern_naming) option ->
  Name.t -> (Evd.evar_map * constr) -> clause -> unit tactic

val reduce : Redexpr.red_expr -> clause -> unit tactic

val simpl : GlobRef.t glob_red_flag ->
  (Pattern.constr_pattern * occurrences) option -> clause -> unit tactic

val cbv : GlobRef.t glob_red_flag -> clause -> unit tactic

val cbn : GlobRef.t glob_red_flag -> clause -> unit tactic

val lazy_ : GlobRef.t glob_red_flag -> clause -> unit tactic

val unfold : (GlobRef.t * occurrences) list -> clause -> unit tactic

val pattern : (constr * occurrences) list -> clause -> unit tactic

val vm : (Pattern.constr_pattern * occurrences) option -> clause -> unit tactic

val native : (Pattern.constr_pattern * occurrences) option -> clause -> unit tactic

val eval_red : constr -> constr tactic

val eval_hnf : constr -> constr tactic

val eval_simpl : GlobRef.t glob_red_flag ->
  (Pattern.constr_pattern * occurrences) option -> constr -> constr tactic

val eval_cbv : GlobRef.t glob_red_flag -> constr -> constr tactic

val eval_cbn : GlobRef.t glob_red_flag -> constr -> constr tactic

val eval_lazy : GlobRef.t glob_red_flag -> constr -> constr tactic

val eval_unfold : (GlobRef.t * occurrences) list -> constr -> constr tactic

val eval_fold : constr list -> constr -> constr tactic

val eval_pattern : (EConstr.t * occurrences) list -> constr -> constr tactic

val eval_vm : (Pattern.constr_pattern * occurrences) option -> constr -> constr tactic

val eval_native : (Pattern.constr_pattern * occurrences) option -> constr -> constr tactic

val discriminate : evars_flag -> destruction_arg option -> unit tactic

val injection : evars_flag -> intro_pattern list option -> destruction_arg option -> unit tactic

val autorewrite : all:bool -> unit thunk option -> Id.t list -> clause -> unit tactic

val trivial : Hints.debug -> constr thunk list -> Id.t list option ->
  unit Proofview.tactic

val auto : Hints.debug -> int option -> constr thunk list ->
  Id.t list option -> unit Proofview.tactic

val new_auto : Hints.debug -> int option -> constr thunk list ->
  Id.t list option -> unit Proofview.tactic

val eauto : Hints.debug -> int option -> int option -> constr thunk list ->
  Id.t list option -> unit Proofview.tactic

val typeclasses_eauto : Class_tactics.search_strategy option -> int option ->
  Id.t list option -> unit Proofview.tactic

val inversion : Inv.inversion_kind -> destruction_arg -> intro_pattern option -> Id.t list option -> unit tactic

val contradiction : constr_with_bindings option -> unit tactic