aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-04-07 22:48:31 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-04-07 22:48:31 +0000
commitd44af32d0946b62fe2db9efa47fb8b7063d0024d (patch)
tree3e6684c3976723ce117b28b96061fe95783790c7
parentc80fbaac51c390d11e75763cd67b999eb8a671ff (diff)
Fix big de Bruijn bug in mutually recursive definitions.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10763 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--contrib/subtac/subtac_command.ml4
1 files changed, 3 insertions, 1 deletions
diff --git a/contrib/subtac/subtac_command.ml b/contrib/subtac/subtac_command.ml
index a8bc546aa..c29d677f5 100644
--- a/contrib/subtac/subtac_command.ml
+++ b/contrib/subtac/subtac_command.ml
@@ -390,6 +390,7 @@ let interp_recursive fixkind l boxed =
let fixdefs = List.map (nf_evar (evars_of evd)) fixdefs in
let fixtypes = List.map (nf_evar (evars_of evd)) fixtypes in
let rec_sign = nf_named_context_evar (evars_of evd) rec_sign in
+
let recdefs = List.length rec_sign in
(* List.iter (check_evars env_rec Evd.empty evd) fixdefs; *)
(* List.iter (check_evars env Evd.empty evd) fixtypes; *)
@@ -422,7 +423,8 @@ let interp_recursive fixkind l boxed =
let possible_indexes =
List.map2 compute_possible_guardness_evidences wfl fixtypes in
let fixdecls = Array.of_list (List.map (fun x -> Name x) fixnames),
- Array.of_list fixtypes, Array.of_list (List.map (subst_vars fixnames) fixdefs)
+ Array.of_list fixtypes,
+ Array.of_list (List.map (subst_vars (List.rev fixnames)) fixdefs)
in
let indexes = Pretyping.search_guard dummy_loc (Global.env ()) possible_indexes fixdecls in
list_iter_i (fun i _ -> Inductive.check_fix env ((indexes,i),fixdecls)) l