aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-02-23 10:46:20 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-02-23 10:46:20 +0000
commit999b303a775257ee076adffe6daa7d528bcd35bc (patch)
treefb033dc46102c01b98de526872b2f6f101943f4e /tactics
parent3c5c74b9763debfcfc2b4683efd85184ae21875b (diff)
Add support for dependent "destruct" over terms in dependent types.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11944 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics')
-rw-r--r--tactics/tactics.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/tactics/tactics.ml b/tactics/tactics.ml
index b45861fd3..d74c9f05e 100644
--- a/tactics/tactics.ml
+++ b/tactics/tactics.ml
@@ -2460,7 +2460,11 @@ let find_elim_signature isrec elim hyp0 gl =
let s = elimination_sort_of_goal gl in
let elimc =
if isrec then lookup_eliminator mind s
- else pf_apply make_case_gen gl mind s in
+ else
+ let case =
+ if occur_term (mkVar hyp0) (pf_concl gl) then make_case_dep
+ else make_case_gen in
+ pf_apply case gl mind s in
let elimt = pf_type_of gl elimc in
((elimc, NoBindings), elimt), mkInd mind
| Some (elimc,lbind as e) ->