X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_unification%2FcicRefine.ml;h=76642ee3d51e553309d67b6294e4a475761b4613;hb=bb49c457d64878ed9611656f620548b5151e5dbd;hp=e64499b3b94a819723a603fe803efab7fc067a91;hpb=17cc9a1c6353a5a57562434e9938fb54ca78b9c6;p=helm.git diff --git a/helm/ocaml/cic_unification/cicRefine.ml b/helm/ocaml/cic_unification/cicRefine.ml index e64499b3b..76642ee3d 100644 --- a/helm/ocaml/cic_unification/cicRefine.ml +++ b/helm/ocaml/cic_unification/cicRefine.ml @@ -506,9 +506,9 @@ and type_of_aux' metasenv context t ugraph = (Some candidate),ugraph4,metasenv,subst | (constructor_args_no,_,instance,_)::tl -> try - let instance' = - CicMetaSubst.delift_rels constructor_args_no - (CicMetaSubst.apply_subst subst instance) + let instance',subst,metasenv = + CicMetaSubst.delift_rels subst metasenv + constructor_args_no instance in let candidate,ugraph,metasenv,subst = List.fold_left ( @@ -518,10 +518,9 @@ and type_of_aux' metasenv context t ugraph = | None -> None,ugraph,metasenv,subst | Some ty -> try - let instance' = - CicMetaSubst.delift_rels - constructor_args_no - (CicMetaSubst.apply_subst subst instance) + let instance',subst,metasenv = + CicMetaSubst.delift_rels subst metasenv + constructor_args_no instance in let subst,metasenv,ugraph = fo_unif_subst subst context metasenv @@ -560,7 +559,9 @@ and type_of_aux' metasenv context t ugraph = candidate outtype ugraph5 in C.MutCase (uri, i, outtype, term', pl'), - (Cic.Appl (outtype::right_args@[term'])), + CicReduction.head_beta_reduce + (CicMetaSubst.apply_subst subst + (Cic.Appl (outtype::right_args@[term']))), subst,metasenv,ugraph) | _ -> (* easy case *) let _,_, subst, metasenv,ugraph5 = @@ -585,8 +586,9 @@ and type_of_aux' metasenv context t ugraph = (subst,metasenv,ugraph5) outtypeinstances in C.MutCase (uri, i, outtype, term', pl'), - CicReduction.whd ~subst context - (C.Appl(outtype::right_args@[term])), + CicReduction.head_beta_reduce + (CicMetaSubst.apply_subst subst + (C.Appl(outtype::right_args@[term]))), subst,metasenv,ugraph6) | C.Fix (i,fl) -> let fl_ty',subst,metasenv,types,ugraph1 =