diff options
| author | herbelin | 2006-05-23 07:41:58 +0000 |
|---|---|---|
| committer | herbelin | 2006-05-23 07:41:58 +0000 |
| commit | 9c2d70b91341552e964979ba09d5823cc023a31c (patch) | |
| tree | 9fa7d7edd77929acb6076072a6f0060febe47c95 /library | |
| parent | a5d6f4ba9adc9f5037809a1a57c3d5065a093e70 (diff) | |
Nouvelle implantation du polymorphisme de sorte pour les familles inductives
- prise en compte du niveau à la déclaration du type comme une fonction
des sortes des conclusions des paramètres uniformes
- suppression du retypage de chaque instance de type inductif (trop coûteux)
et donc abandon de l'idée de calculer une sorte minimale même dans
des cas comme Inductive t (b:bool) := c : (if b then Prop else Type) -> t.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8845 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library')
| -rw-r--r-- | library/impargs.ml | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/library/impargs.ml b/library/impargs.ml index 404e06f991..ffdeb0b88d 100644 --- a/library/impargs.ml +++ b/library/impargs.ml @@ -282,14 +282,15 @@ let compute_mib_implicits kn = let ar = Array.to_list (Array.map (* No need to lift, arities contain no de Bruijn *) - (fun mip -> (Name mip.mind_typename, None, mip.mind_user_arity)) + (fun mip -> (Name mip.mind_typename, None, type_of_inductive (mib,mip))) mib.mind_packets) in let env_ar = push_rel_context ar env in let imps_one_inductive i mip = let ind = (kn,i) in - ((IndRef ind,auto_implicits env (body_of_type mip.mind_user_arity)), + let ar = type_of_inductive (mib,mip) in + ((IndRef ind,auto_implicits env ar), Array.mapi (fun j c -> (ConstructRef (ind,j+1),auto_implicits env_ar c)) - mip.mind_user_lc) + mip.mind_nf_lc) in Array.mapi imps_one_inductive mib.mind_packets |
