aboutsummaryrefslogtreecommitdiff
path: root/tactics/equality.ml
diff options
context:
space:
mode:
authorherbelin2000-07-24 13:39:23 +0000
committerherbelin2000-07-24 13:39:23 +0000
commit3afaf3dde673d77cacaabc354f008dfbe49a7cee (patch)
tree4264164faf763ab8d18274cd5aeffe5a1de21728 /tactics/equality.ml
parent83f038e61a4424fcf71aada9f97c91165b73aef8 (diff)
Passage à des contextes de vars et de rels pouvant contenir des déclarations
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@568 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'tactics/equality.ml')
-rw-r--r--tactics/equality.ml26
1 files changed, 14 insertions, 12 deletions
diff --git a/tactics/equality.ml b/tactics/equality.ml
index 22bc94b691..ae5bed6741 100644
--- a/tactics/equality.ml
+++ b/tactics/equality.ml
@@ -47,10 +47,12 @@ let general_rewrite_bindings lft2rgt (c,l) gl =
let hdcncls = string_head hdcncl in
let elim =
if lft2rgt then
- pf_global gl (id_of_string
- (hdcncls^(suff gl (pf_concl gl))^"_r"))
+ pf_global gl
+ (id_of_string
+ (hdcncls^(Declare.elimination_suffix (sort_of_goal gl))^"_r"))
else
- pf_global gl (id_of_string (hdcncls^(suff gl (pf_concl gl))))
+ pf_global gl
+ (id_of_string (hdcncls^(Declare.elimination_suffix (sort_of_goal gl))))
in
tclNOTSAMEGOAL (general_elim (c,l) (elim,[])) gl
(* was tclWEAK_PROGRESS which only fails for tactics generating one subgoal
@@ -445,8 +447,8 @@ let discriminable env sigma t1 t2 =
the continuation then constructs the case-split.
*)
-let push_rel_type sigma (na,t) env =
- push_rel (na,make_typed t (get_sort_of env sigma t)) env
+let push_rel_type sigma (na,c,t) env =
+ push_rel (na,c,t) env
let push_rels vars env =
List.fold_right (fun nvar env -> push_rel_type Evd.empty nvar env) vars env
@@ -466,7 +468,7 @@ let descend_then sigma env head dirn =
let p = lam_it (lift (mis_nrealargs mispec) resty) aritysign in
let build_branch i =
let result = if i = dirn then dirnval else dfltval in
- it_lambda_name env result cstr.(i-1).cs_args
+ it_mkLambda_or_LetIn_name env result cstr.(i-1).cs_args
in
mkMutCase (make_default_case_info mispec) p head
(List.map build_branch (interval 1 (mis_nconstr mispec)))))
@@ -510,7 +512,7 @@ let construct_discriminator sigma env dirn c sort =
let cstrs = get_constructors indf in
let build_branch i =
let endpt = if i = dirn then true_0 else false_0 in
- lam_it endpt cstrs.(i-1).cs_args
+ it_mkLambda_or_LetIn endpt cstrs.(i-1).cs_args
in
let build_match =
mkMutCase (make_default_case_info mispec) p c
@@ -608,7 +610,7 @@ let discr id gls =
| Inl(cpath,MutConstruct(_,dirn),_) ->
let e = pf_get_new_id (id_of_string "ee") gls in
let e_env =
- push_var (e,assumption_of_judgment env sigma tj) env
+ push_var_decl (e,assumption_of_judgment env sigma tj) env
in
let discriminator =
build_discriminator sigma e_env dirn (VAR e) sort cpath in
@@ -714,7 +716,7 @@ let make_tuple env sigma (rterm,rty) lind =
let a = type_of env sigma (Rel lind) in
(* We replace (Rel lind) by (Rel 1) in rty then abstract on (na:a) *)
let rty' = substnl [Rel 1] lind rty in
- let na = fst (lookup_rel lind env) in
+ let na = fst (lookup_rel_type lind env) in
let p = mkLambda na a rty' in
(applist(exist_term,[a;p;(Rel lind);rterm]),
applist(sig_term,[a;p]))
@@ -888,7 +890,7 @@ let inj id gls =
| Inr posns ->
let e = pf_get_new_id (id_of_string "e") gls in
let e_env =
- push_var (e,assumption_of_judgment env sigma tj) env
+ push_var_decl (e,assumption_of_judgment env sigma tj) env
in
let injectors =
map_succeed
@@ -954,7 +956,7 @@ let decompEqThen ntac id gls =
| Inl(cpath,MutConstruct(_,dirn),_) ->
let e = pf_get_new_id (id_of_string "e") gls in
let e_env =
- push_var (e,assumption_of_judgment env sigma tj) env in
+ push_var_decl (e,assumption_of_judgment env sigma tj) env in
let discriminator =
build_discriminator sigma e_env dirn (VAR e) sort cpath in
let (pf, absurd_term) =
@@ -966,7 +968,7 @@ let decompEqThen ntac id gls =
| Inr posns ->
(let e = pf_get_new_id (id_of_string "e") gls in
let e_env =
- push_var (e,assumption_of_judgment env sigma tj) env in
+ push_var_decl (e,assumption_of_judgment env sigma tj) env in
let injectors =
map_succeed
(fun (cpath,t1_0,t2_0) ->