diff options
Diffstat (limited to 'proofs')
| -rw-r--r-- | proofs/logic.ml | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/proofs/logic.ml b/proofs/logic.ml index 5f765c9628..33b22c3b73 100644 --- a/proofs/logic.ml +++ b/proofs/logic.ml @@ -292,14 +292,11 @@ let rec mk_refgoals sigma goal goalacc conclty trm = | App (f,l) -> let (acc',hdty) = match kind_of_term f with - | Ind ind + | (Ind _ | Const _) when not (array_exists occur_meta l) (* we could be finer *) -> - (* Sort-polymorphism of inductive types *) - goalacc, type_of_inductive_knowing_parameters env sigma ind l - | Const cst - when not (array_exists occur_meta l) (* we could be finer *) -> - (* Sort-polymorphism of inductive types *) - goalacc, type_of_constant_knowing_parameters env sigma cst l + (* Sort-polymorphism of definition and inductive types *) + goalacc, + type_of_global_reference_knowing_parameters env sigma f l | _ -> mk_hdgoals sigma goal goalacc f in @@ -342,8 +339,10 @@ and mk_hdgoals sigma goal goalacc trm = | App (f,l) -> let (acc',hdty) = - if isInd f & not (array_exists occur_meta l) (* we could be finer *) - then (goalacc,type_of_inductive_knowing_parameters env sigma (destInd f) l) + if isInd f or isConst f + & not (array_exists occur_meta l) (* we could be finer *) + then + (goalacc,type_of_global_reference_knowing_parameters env sigma f l) else mk_hdgoals sigma goal goalacc f in mk_arggoals sigma goal acc' hdty (Array.to_list l) |
