diff options
-rw-r--r-- | pretyping/cases.ml | 7 |
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 |