aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
authorGravatar corbinea <corbinea@85f007b7-540e-0410-9357-904b9bb8a0f7>2007-04-18 13:29:27 +0000
committerGravatar corbinea <corbinea@85f007b7-540e-0410-9357-904b9bb8a0f7>2007-04-18 13:29:27 +0000
commit29d09a8e15ae7c1e88821f3d662ad845338c0013 (patch)
tree5d1b0355bfc5f39a28604519a9b332796669ed79 /tactics
parent8c23671d5a8bf6a5c197bbcaec1af2084d654ed3 (diff)
debug plus poussé induction dépendante
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9787 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics')
-rw-r--r--tactics/decl_proof_instr.ml12
1 files changed, 7 insertions, 5 deletions
diff --git a/tactics/decl_proof_instr.ml b/tactics/decl_proof_instr.ml
index ac33ba61a..4c526ecee 100644
--- a/tactics/decl_proof_instr.ml
+++ b/tactics/decl_proof_instr.ml
@@ -882,11 +882,11 @@ let build_per_info etype casee gls =
ET_Induction -> mind.mind_nparams_rec
| _ -> mind.mind_nparams in
let params,real_args = list_chop nparams args in
- let abstract_obj body c =
+ let abstract_obj c body =
let typ=pf_type_of gls c in
lambda_create env (typ,subst_term c body) in
- let pred= List.fold_left abstract_obj
- (lambda_create env (ctyp,subst_term casee concl)) real_args in
+ let pred= List.fold_right abstract_obj
+ real_args (lambda_create env (ctyp,subst_term casee concl)) in
is_dep,
{per_casee=casee;
per_ctype=ctyp;
@@ -1298,9 +1298,11 @@ let rec execute_cases at_top fix_name per_info kont0 stacks tree gls =
kont] gls)
end gls
| Split(ids,ind,br) ->
- let (_,typ,_)=destProd (pf_concl gls) in
+ let (_,typ,_)=
+ try destProd (pf_concl gls) with Invalid_argument _ ->
+ anomaly "Sub-object not found." in
let hd,args=decompose_app (special_whd gls typ) in
- if ind <> destInd hd then
+ if try ind <> destInd hd with Invalid_argument _ -> true then
(* argument of an inductive family : intro + discard *)
tclTHEN intro
(execute_cases at_top fix_name per_info kont0 stacks tree) gls