comparison src/Tactics.v @ 200:df289eb8ef76

Small fixes while reading student solutions
author Adam Chlipala <adamc@hcoop.net>
date Fri, 02 Jan 2009 08:57:25 -0500
parents 699fd70c04a7
children cbf2f74a5130
comparison
equal deleted inserted replaced
199:cadeb49dc1ef 200:df289eb8ef76
135 repeat (simplHyp invOne; intuition)); un_done 135 repeat (simplHyp invOne; intuition)); un_done
136 end; sintuition; rewriter; sintuition; try omega; try (elimtype False; omega)). 136 end; sintuition; rewriter; sintuition; try omega; try (elimtype False; omega)).
137 137
138 Ltac crush := crush' false fail. 138 Ltac crush := crush' false fail.
139 139
140 Theorem dep_destruct : forall (T : Type) (T' : T -> Type) x (v : T' x) (P : T' x -> Prop), 140 Theorem dep_destruct : forall (T : Type) (T' : T -> Type) x (v : T' x) (P : T' x -> Type),
141 (forall x' (v' : T' x') (Heq : x' = x), P (match Heq in (_ = x) return (T' x) with 141 (forall x' (v' : T' x') (Heq : x' = x), P (match Heq in (_ = x) return (T' x) with
142 | refl_equal => v' 142 | refl_equal => v'
143 end)) 143 end))
144 -> P v. 144 -> P v.
145 intros. 145 intros.
146 generalize (H _ v (refl_equal _)); trivial. 146 generalize (X _ v (refl_equal _)); trivial.
147 Qed. 147 Qed.
148 148
149 Ltac dep_destruct E := 149 Ltac dep_destruct E :=
150 let doit A := 150 let doit A :=
151 let T := type of A in 151 let T := type of A in