X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FnCicReduction.ml;h=a7dfc50fad582819e0a62a2d97c076e8b51d9db9;hb=430d6307ae5776ed000a78358a2881cb88936c37;hp=015ba007a311a8fb6491c84c58034215d92b6173;hpb=a981b42002f822aa49a41b3889a76b9438b093bb;p=helm.git diff --git a/helm/software/components/ng_kernel/nCicReduction.ml b/helm/software/components/ng_kernel/nCicReduction.ml index 015ba007a..a7dfc50fa 100644 --- a/helm/software/components/ng_kernel/nCicReduction.ml +++ b/helm/software/components/ng_kernel/nCicReduction.ml @@ -180,12 +180,12 @@ let whd = R.whd let (===) x y = Pervasives.compare x y = 0 ;; -let get_relevance = ref (fun ~subst:_ _ _ -> assert false);; +let get_relevance = ref (fun ~metasenv:_ ~subst:_ _ _ -> assert false);; let set_get_relevance f = get_relevance := f;; (* t1, t2 must be well-typed *) -let are_convertible ?(subst=[]) = +let are_convertible ~metasenv ~subst = let rec aux test_eq_only context t1 t2 = let alpha_eq test_eq_only t1 t2 = if t1 === t2 then @@ -221,7 +221,12 @@ let are_convertible ?(subst=[]) = (NCicSubstitution.lift s1 t1) (NCicSubstitution.lift s2 t2)) l1 l2 - with Invalid_argument _ -> assert false) -> true + with Invalid_argument "List.for_all2" -> + prerr_endline ("Meta " ^ string_of_int n1 ^ + " occurrs with local contexts of different lenght\n"^ + NCicPp.ppterm ~metasenv ~subst ~context t1 ^ " === " ^ + NCicPp.ppterm ~metasenv ~subst ~context t2); + assert false) -> true | C.Meta (n1,l1), _ -> (try @@ -252,7 +257,8 @@ let are_convertible ?(subst=[]) = tl1 tl2 true relevance with Invalid_argument _ -> false | HExtlib.FailureAt fail -> - let relevance = !get_relevance ~subst context hd1 tl1 in + let relevance = + !get_relevance ~metasenv ~subst context hd1 tl1 in let _,relevance = HExtlib.split_nth fail relevance in let b,relevance = (match relevance with | [] -> assert false @@ -269,7 +275,7 @@ let are_convertible ?(subst=[]) = | (C.Appl (hd1::tl1), C.Appl (hd2::tl2)) -> aux test_eq_only context hd1 hd2 && - let relevance = !get_relevance ~subst context hd1 tl1 in + let relevance = !get_relevance ~metasenv ~subst context hd1 tl1 in (try HExtlib.list_forall_default3 (fun t1 t2 b -> not b || aux test_eq_only context t1 t2)