X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2Fdisambiguate.ml;h=f8fa77dc67b894f6bc5a77f2a820ac65942f2f75;hb=f5b76bf5f55bbd2f2053e36d4b251548f3ed8623;hp=d3f5b0106cef3868960126c4f75197e16c3525c0;hpb=e3ba094ac1ba1f73fbb558944715cfa6707da868;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/disambiguate.ml b/helm/ocaml/cic_disambiguation/disambiguate.ml index d3f5b0106..f8fa77dc6 100644 --- a/helm/ocaml/cic_disambiguation/disambiguate.ml +++ b/helm/ocaml/cic_disambiguation/disambiguate.ml @@ -222,7 +222,22 @@ let interpretate_term ~(context: Cic.name list) ~env ~uri ~is_path ast = let fix = Cic.Fix (!counter,funs) in match cic with Cic.Rel 1 -> fix - | (Cic.Appl (Cic.Rel 1::l)) -> Cic.Appl (fix::l) + | (Cic.Appl (Cic.Rel 1::l)) -> + (try + let l' = + List.map + (function t -> + let t',subst,metasenv = + CicMetaSubst.delift_rels [] [] 1 t + in + assert (subst=[]); + assert (metasenv=[]); + t') l + in + Cic.Appl (fix::l') + with + CicMetaSubst.DeliftingARelWouldCaptureAFreeVariable -> + Cic.LetIn (Cic.Name var, fix, cic)) | _ -> Cic.LetIn (Cic.Name var, fix, cic)) | `CoInductive -> let funs =