aboutsummaryrefslogtreecommitdiff
path: root/test-suite
diff options
context:
space:
mode:
authormsozeau2008-09-15 22:21:22 +0000
committermsozeau2008-09-15 22:21:22 +0000
commite1a1ccd3ee9cfd72b6e9105051e5da1bf398451f (patch)
treead475ec7af84ae24a7f78a845f98369a63f5540f /test-suite
parentc408060c9363eac5ff51f9a1fe8b510b1628c9f9 (diff)
Report improvements in Equations to the dependent elimination tactic:
- Do not touch at the user equalities and so on by using a blocking constant. This avoids the wild autoinjections and subst tactics that were used before. Thanks to Brian Aydemir for an example were this hurt a lot. - Debug the tactic used to simplify induction hypotheses. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11415 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'test-suite')
-rw-r--r--test-suite/success/dependentind.v36
1 files changed, 15 insertions, 21 deletions
diff --git a/test-suite/success/dependentind.v b/test-suite/success/dependentind.v
index 48b07db83d..3f315ccb74 100644
--- a/test-suite/success/dependentind.v
+++ b/test-suite/success/dependentind.v
@@ -40,7 +40,7 @@ Delimit Scope context_scope with ctx.
Arguments Scope snoc [context_scope].
-Notation " Γ , τ " := (snoc Γ τ) (at level 25, t at next level, left associativity) : context_scope.
+Notation " Γ ,, τ " := (snoc Γ τ) (at level 25, t at next level, left associativity).
Fixpoint conc (Δ Γ : ctx) : ctx :=
match Δ with
@@ -52,42 +52,36 @@ Notation " Γ ;; Δ " := (conc Δ Γ) (at level 25, left associativity) : contex
Inductive term : ctx -> type -> Type :=
| ax : forall Γ τ, term (snoc Γ τ) τ
-| weak : forall Γ τ, term Γ τ -> forall τ', term (snoc Γ τ') τ
+| weak : forall Γ τ, term Γ τ -> forall τ', term (Γ ,, τ') τ
| abs : forall Γ τ τ', term (snoc Γ τ) τ' -> term Γ (τ --> τ')
| app : forall Γ τ τ', term Γ (τ --> τ') -> term Γ τ -> term Γ τ'.
-Notation " Γ |- τ " := (term Γ τ) (at level 0).
+Hint Constructors term : lambda.
+Notation " Γ |-- τ " := (term Γ τ) (at level 0) : type_scope.
Lemma weakening : forall Γ Δ τ, term (Γ ;; Δ) τ ->
- forall τ', term (Γ , τ' ;; Δ) τ.
-Proof with simpl in * ; auto ; simpl_depind.
+ forall τ', term (Γ ,, τ' ;; Δ) τ.
+Proof with simpl in * ; simplify_dep_elim ; simplify_IH_hyps ; eauto with lambda.
intros Γ Δ τ H.
dependent induction H.
destruct Δ...
- apply weak ; apply ax.
-
- apply ax.
-
- destruct Δ...
- specialize (IHterm empty Γ)...
- apply weak...
-
- apply weak...
destruct Δ...
- apply weak. apply abs ; apply H.
+ destruct Δ...
apply abs...
- specialize (IHterm (Δ, t, τ)%ctx Γ0)...
+
+ specialize (IHterm (Δ,, t,, τ)%ctx Γ0)...
+ intro.
apply app with τ...
Qed.
-Lemma exchange : forall Γ Δ α β τ, term (Γ, α, β ;; Δ) τ -> term (Γ, β, α ;; Δ) τ.
-Proof with simpl in * ; simpl_depind ; auto.
+Lemma exchange : forall Γ Δ α β τ, term (Γ,, α,, β ;; Δ) τ -> term (Γ,, β,, α ;; Δ) τ.
+Proof with simpl in * ; simplify_dep_elim ; simplify_IH_hyps ; auto.
intros until 1.
dependent induction H.
@@ -97,12 +91,12 @@ Proof with simpl in * ; simpl_depind ; auto.
apply ax.
destruct Δ...
- pose (weakening Γ0 (empty, α))...
+ pose (weakening Γ0 (empty,, α))...
apply weak...
- apply abs...
- specialize (IHterm (Δ, τ)%ctx Γ0 α β)...
+ apply abs...
+ specialize (IHterm (Δ ,, τ))...
eapply app with τ...
Save.