aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
Diffstat (limited to 'tactics')
-rw-r--r--tactics/equality.ml10
-rw-r--r--tactics/equality.mli2
-rw-r--r--tactics/extratactics.ml41
3 files changed, 13 insertions, 0 deletions
diff --git a/tactics/equality.ml b/tactics/equality.ml
index 801c9c85f..da35ef0d1 100644
--- a/tactics/equality.ml
+++ b/tactics/equality.ml
@@ -1237,3 +1237,13 @@ let rec subst = function
| [] -> tclIDTAC
| x :: r -> tclTHEN (subst_one x) (subst r)
+let subst_all gl =
+ let eqpat = build_coq_eq_pattern () in
+ let test (_,c) =
+ if not (is_matching eqpat c) then failwith "caught";
+ let (_,x,_) = match_eq eqpat c in
+ match kind_of_term x with Var x -> x | _ -> failwith "caught"
+ in
+ let ids = map_succeed test (pf_hyps_types gl) in
+ let ids = list_uniquize ids in
+ subst ids gl
diff --git a/tactics/equality.mli b/tactics/equality.mli
index 57715afdc..871444c21 100644
--- a/tactics/equality.mli
+++ b/tactics/equality.mli
@@ -92,3 +92,5 @@ val discriminable : env -> evar_map -> constr -> constr -> bool
(* Subst *)
val subst : identifier list -> tactic
+val subst_all : tactic
+
diff --git a/tactics/extratactics.ml4 b/tactics/extratactics.ml4
index b1aa23179..6907acd35 100644
--- a/tactics/extratactics.ml4
+++ b/tactics/extratactics.ml4
@@ -219,5 +219,6 @@ END
TACTIC EXTEND Subst
| [ "Subst" ne_ident_list(l) ] -> [ subst l ]
+| [ "Subst" ] -> [ subst_all ]
END