aboutsummaryrefslogtreecommitdiff
path: root/src/Util
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2018-12-04 15:37:51 -0500
committerGravatar Jason Gross <jgross@mit.edu>2018-12-04 15:37:51 -0500
commite6044c2fe0cc7b5662076bb1f26342a4d590132e (patch)
treeab67a9fff8bee7744cdc444f79ae197310c733f3 /src/Util
parentb60db17b237fc5df0e1606d55d7056e9e11b10ea (diff)
Add inversion_clear tactics
Diffstat (limited to 'src/Util')
-rw-r--r--src/Util/Tactics/DestructHead.v8
-rw-r--r--src/Util/Tactics/DestructHyps.v9
2 files changed, 17 insertions, 0 deletions
diff --git a/src/Util/Tactics/DestructHead.v b/src/Util/Tactics/DestructHead.v
index c5c8a86bc..bfe615f10 100644
--- a/src/Util/Tactics/DestructHead.v
+++ b/src/Util/Tactics/DestructHead.v
@@ -15,6 +15,10 @@ Ltac inversion_head T := inversion_all_matches ltac:(destruct_head_matcher T).
Ltac inversion_one_head T := inversion_one_match ltac:(destruct_head_matcher T).
Ltac inversion_head' T := inversion_all_matches' ltac:(destruct_head_matcher T).
+Ltac inversion_clear_head T := inversion_clear_all_matches ltac:(destruct_head_matcher T).
+Ltac inversion_clear_one_head T := inversion_clear_one_match ltac:(destruct_head_matcher T).
+Ltac inversion_clear_head' T := inversion_clear_all_matches' ltac:(destruct_head_matcher T).
+
Ltac head_hnf_matcher T HT :=
match head_hnf HT with
@@ -28,6 +32,10 @@ Ltac inversion_head_hnf T := inversion_all_matches ltac:(head_hnf_matcher T).
Ltac inversion_one_head_hnf T := inversion_one_match ltac:(head_hnf_matcher T).
Ltac inversion_head_hnf' T := inversion_all_matches' ltac:(head_hnf_matcher T).
+Ltac inversion_clear_head_hnf T := inversion_clear_all_matches ltac:(head_hnf_matcher T).
+Ltac inversion_clear_one_head_hnf T := inversion_clear_one_match ltac:(head_hnf_matcher T).
+Ltac inversion_clear_head_hnf' T := inversion_clear_all_matches' ltac:(head_hnf_matcher T).
+
(** Faster versions for some common connectives *)
Ltac destruct_one_head'_ex := match goal with H : ex _ |- _ => destruct H end.
Ltac destruct_one_head_ex := destruct_one_head'_ex; simpl in *.
diff --git a/src/Util/Tactics/DestructHyps.v b/src/Util/Tactics/DestructHyps.v
index 8ab6215c2..43f578291 100644
--- a/src/Util/Tactics/DestructHyps.v
+++ b/src/Util/Tactics/DestructHyps.v
@@ -30,6 +30,11 @@ Ltac inversion_all_matches_then matcher tac :=
Ltac inversion_one_match_then matcher tac :=
do_one_match_then matcher ltac:(fun H => inversion H; subst) tac.
+Ltac inversion_clear_all_matches_then matcher tac :=
+ do_all_matches_then matcher ltac:(fun H => inversion H; clear H; subst) tac.
+Ltac inversion_clear_one_match_then matcher tac :=
+ do_one_match_then matcher ltac:(fun H => inversion H; clear H; subst) tac.
+
Ltac destruct_all_matches matcher :=
destruct_all_matches_then matcher ltac:( simpl in * ).
Ltac destruct_one_match matcher := destruct_one_match_then matcher ltac:( simpl in * ).
@@ -39,6 +44,10 @@ Ltac inversion_all_matches matcher := inversion_all_matches_then matcher ltac:(
Ltac inversion_one_match matcher := inversion_one_match_then matcher ltac:( simpl in * ).
Ltac inversion_all_matches' matcher := inversion_all_matches_then matcher idtac.
+Ltac inversion_clear_all_matches matcher := inversion_clear_all_matches_then matcher ltac:( simpl in * ).
+Ltac inversion_clear_one_match matcher := inversion_clear_one_match_then matcher ltac:( simpl in * ).
+Ltac inversion_clear_all_matches' matcher := inversion_clear_all_matches_then matcher idtac.
+
(* matches anything whose type has a [T] in it *)
Ltac destruct_type_matcher T HT :=
match HT with