aboutsummaryrefslogtreecommitdiff
path: root/theories
diff options
context:
space:
mode:
authorherbelin2009-01-02 12:22:09 +0000
committerherbelin2009-01-02 12:22:09 +0000
commita3b9f0dda44975a0e5e757d35d7870595a4f4460 (patch)
tree4c84c31c73037501bb645febd3d31166d318ee27 /theories
parenta2aa673e87859464be0ae57841b1313701dbe912 (diff)
- Temptative change to notations like "as [|n H]_eqn" or "as [|n H]_eqn:H",
and, with a now generic intropattern "[]", also "as []_eqn", "as []_eqn:H" for "destruct" with equality keeping. - Fixed an accuracy loss in error location. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11732 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'theories')
-rw-r--r--theories/Init/Tactics.v11
-rw-r--r--theories/NArith/Ndigits.v6
2 files changed, 14 insertions, 3 deletions
diff --git a/theories/Init/Tactics.v b/theories/Init/Tactics.v
index 2e0fe42b68..a59eba6f46 100644
--- a/theories/Init/Tactics.v
+++ b/theories/Init/Tactics.v
@@ -72,6 +72,17 @@ Ltac false_hyp H G :=
Ltac case_eq x := generalize (refl_equal x); pattern x at -1; case x.
+(* Similar variants of destruct *)
+
+Tactic Notation "destruct_with_eqn" constr(x) :=
+ destruct x as []_eqn.
+Tactic Notation "destruct_with_eqn" ident(n) :=
+ try intros until n; destruct n as []_eqn.
+Tactic Notation "destruct_with_eqn" ":" ident(H) constr(x) :=
+ destruct x as []_eqn:H.
+Tactic Notation "destruct_with_eqn" ":" ident(H) ident(n) :=
+ try intros until n; destruct n as []_eqn:H.
+
(* Rewriting in all hypothesis several times everywhere *)
Tactic Notation "rewrite_all" constr(eq) := repeat rewrite eq in *.
diff --git a/theories/NArith/Ndigits.v b/theories/NArith/Ndigits.v
index a3326ccd3c..ea5f02bba9 100644
--- a/theories/NArith/Ndigits.v
+++ b/theories/NArith/Ndigits.v
@@ -511,7 +511,7 @@ Lemma Nless_trans :
Nless a a' = true -> Nless a' a'' = true -> Nless a a'' = true.
Proof.
induction a as [|a IHa|a IHa] using N_ind_double; intros a' a'' H H0.
- destruct (Nless N0 a'') as Heqb in *. trivial.
+ destruct (Nless N0 a'') as []_eqn:Heqb. trivial.
rewrite (N0_less_2 a'' Heqb), (Nless_z a') in H0. discriminate H0.
induction a' as [|a' _|a' _] using N_ind_double.
rewrite (Nless_z (Ndouble a)) in H. discriminate H.
@@ -539,10 +539,10 @@ Lemma Nless_total :
forall a a', {Nless a a' = true} + {Nless a' a = true} + {a = a'}.
Proof.
induction a using N_rec_double; intro a'.
- destruct (Nless N0 a') as Heqb in *. left. left. auto.
+ destruct (Nless N0 a') as []_eqn:Heqb. left. left. auto.
right. rewrite (N0_less_2 a' Heqb). reflexivity.
induction a' as [|a' _|a' _] using N_rec_double.
- destruct (Nless N0 (Ndouble a)) as Heqb in *. left. right. auto.
+ destruct (Nless N0 (Ndouble a)) as []_eqn:Heqb. left. right. auto.
right. exact (N0_less_2 _ Heqb).
rewrite 2!Nless_def_1. destruct (IHa a') as [ | ->].
left. assumption.