aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pretyping/cases.ml7
1 files changed, 6 insertions, 1 deletions
diff --git a/pretyping/cases.ml b/pretyping/cases.ml
index 89c4c8406..6f051b6e3 100644
--- a/pretyping/cases.ml
+++ b/pretyping/cases.ml
@@ -129,6 +129,11 @@ let build_notdep_pred env sigma indf pred =
exception NotInferable of ml_case_error
+let rec refresh_types t = match kind_of_term t with
+ | IsSort (Type _) -> new_Type ()
+ | IsProd (na,u,v) -> mkProd (na,u,refresh_types v)
+ | _ -> t
+
let pred_case_ml_fail env sigma isrec (IndType (indf,realargs)) (i,ft) =
let pred =
let mispec,_ = dest_ind_family indf in
@@ -138,7 +143,7 @@ let pred_case_ml_fail env sigma isrec (IndType (indf,realargs)) (i,ft) =
let j = mis_index mispec in
let nbrec = if isrec then count_rec_arg j recargi else 0 in
let nb_arg = List.length (recargs.(i)) + nbrec in
- let pred = concl_n env sigma nb_arg ft in
+ let pred = refresh_types (concl_n env sigma nb_arg ft) in
if noccur_between 1 nb_arg pred then
lift (-nb_arg) pred
else