X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_refiner%2FnCicRefiner.ml;fp=helm%2Fsoftware%2Fcomponents%2Fng_refiner%2FnCicRefiner.ml;h=7833b9c4a202e55f8380f401f4c4e408cb15f156;hb=e7e2954471b4779cd4e4ae590ca5047575902fb7;hp=8476119ad081c24489559e5e2e566ea0318f13bb;hpb=e1d6716c5560b046e0a7d0d871cc01a64cb31ca8;p=helm.git diff --git a/helm/software/components/ng_refiner/nCicRefiner.ml b/helm/software/components/ng_refiner/nCicRefiner.ml index 8476119ad..7833b9c4a 100644 --- a/helm/software/components/ng_refiner/nCicRefiner.ml +++ b/helm/software/components/ng_refiner/nCicRefiner.ml @@ -1128,6 +1128,29 @@ let typeof_obj metasenv,subst,item1::context ) (metasenv,subst,tys) sx_context_ty_rev sx_context_te_rev with Invalid_argument "List.fold_left2" -> assert false in + let metasenv, subst = + let rec aux context (metasenv,subst) = function + | NCic.Meta _ -> metasenv, subst + | NCic.Implicit _ -> metasenv, subst + | NCic.Appl (NCic.Rel i :: args) as t + when i >= List.length context - len -> + let lefts, _ = HExtlib.split_nth leftno args in + let ctxlen = List.length context in + let (metasenv, subst), _ = + List.fold_left + (fun ((metasenv, subst),l) arg -> + NCicUnification.unify rdb + ~test_eq_only:true metasenv subst context arg + (NCic.Rel (ctxlen - len - l)), l+1 + ) + ((metasenv, subst), 0) lefts + in + metasenv, subst + | t -> NCicUtils.fold (fun e c -> e::c) context aux + (metasenv,subst) t + in + aux context (metasenv,subst) te + in let con_sort= NCicTypeChecker.typeof ~subst ~metasenv context te in (match NCicReduction.whd ~subst context con_sort,