aboutsummaryrefslogtreecommitdiff
path: root/tactics/elim.ml
diff options
context:
space:
mode:
authorherbelin2002-02-01 22:08:39 +0000
committerherbelin2002-02-01 22:08:39 +0000
commit6e78a98aaa51df2975595a6adcbe263febbccadc (patch)
treec37ceecbc5fc2438f60a64e5e31b3eb87a780f6a /tactics/elim.ml
parent22656ee48b22b4b34024cd4bf262d0de279540f9 (diff)
Ajout tactiques Rename et Pose; modifications pour Inversion
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@2449 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics/elim.ml')
-rw-r--r--tactics/elim.ml28
1 files changed, 15 insertions, 13 deletions
diff --git a/tactics/elim.ml b/tactics/elim.ml
index 15ca016330..6e6de2f3b7 100644
--- a/tactics/elim.ml
+++ b/tactics/elim.ml
@@ -72,7 +72,8 @@ and general_decompose recognizer id =
(introElimAssumsThen
(fun bas ->
tclTHEN (clear_one id)
- (tclMAP (general_decompose_on_hyp recognizer) bas.assums)))
+ (tclMAP (general_decompose_on_hyp recognizer)
+ (ids_of_named_context bas.assums))))
id
(* Faudrait ajouter un COMPLETE pour que l'hypothèse créée ne reste
@@ -163,18 +164,19 @@ let induction_trailer abs_i abs_j bargs =
(fun id gls ->
let idty = pf_type_of gls (mkVar id) in
let fvty = global_vars (pf_env gls) idty in
- let possible_bring_ids =
- (List.tl (nLastHyps (abs_j - abs_i) gls))
- @bargs.assums in
- let (ids,_) = List.fold_left
- (fun (bring_ids,leave_ids) cid ->
- let cidty = pf_type_of gls (mkVar cid) in
- if not (List.mem cid leave_ids)
- then (cid::bring_ids,leave_ids)
- else (bring_ids,cid::leave_ids))
- ([],fvty) possible_bring_ids
- in
- (tclTHEN (tclTHEN (bring_hyps ids) (clear_clauses (List.rev ids)))
+ let possible_bring_hyps =
+ (List.tl (nLastHyps (abs_j - abs_i) gls)) @ bargs.assums
+ in
+ let (hyps,_) =
+ List.fold_left
+ (fun (bring_ids,leave_ids) (cid,_,cidty as d) ->
+ if not (List.mem cid leave_ids)
+ then (d::bring_ids,leave_ids)
+ else (bring_ids,cid::leave_ids))
+ ([],fvty) possible_bring_hyps
+ in
+ let ids = List.rev (ids_of_named_context hyps) in
+ (tclTHEN (tclTHEN (bring_hyps hyps) (clear_clauses ids))
(simple_elimination (mkVar id))) gls))
let double_ind abs_i abs_j gls =