X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fcic_proof_checking%2FcicReduction.ml;h=6e34360850caf0f2f5f48f85cee3c65e060833c7;hb=02ae6637b48f03db431e5722243235710957c5b6;hp=1499712c925e26dd527bd8878a79d5812be42a78;hpb=6719c0e318b312b51b089fea3d69d1b7103245ea;p=helm.git diff --git a/helm/software/components/cic_proof_checking/cicReduction.ml b/helm/software/components/cic_proof_checking/cicReduction.ml index 1499712c9..6e3436085 100644 --- a/helm/software/components/cic_proof_checking/cicReduction.ml +++ b/helm/software/components/cic_proof_checking/cicReduction.ml @@ -869,24 +869,14 @@ prerr_endline ("%%%%%%: " ^ CicPp.ppterm term' ^ " <==> " ^ CicPp.ppterm t1); *) aux test_equality_only context t1 term' ugraph with CicUtil.Subst_not_found _ -> false,ugraph) - | (C.Sort (C.Type t1), C.Sort (C.Type t2)) - | (C.Sort (C.CProp t1), C.Sort (C.CProp t2)) when test_equality_only -> - (try - true,(CicUniv.add_eq t2 t1 ugraph) - with CicUniv.UniverseInconsistency _ -> false,ugraph) - | (C.Sort (C.Type t1), C.Sort (C.Type t2)) - | (C.Sort (C.CProp t1), C.Sort (C.CProp t2)) -> - (try - true,(CicUniv.add_ge t2 t1 ugraph) - with CicUniv.UniverseInconsistency _ -> false,ugraph) - | (C.Sort (C.CProp t1), C.Sort (C.Type t2)) when not test_equality_only -> - (try - true,(CicUniv.add_gt t2 t1 ugraph) - with CicUniv.UniverseInconsistency _ -> false,ugraph) - | (C.Sort (C.Type t1), C.Sort (C.CProp t2)) when not test_equality_only -> - (try - true,(CicUniv.add_ge t2 t1 ugraph) - with CicUniv.UniverseInconsistency _ -> false,ugraph) + | (C.Sort (C.CProp t1|C.Type t1), C.Sort (C.CProp t2|C.Type t2)) + when test_equality_only -> + (try true,(CicUniv.add_eq t2 t1 ugraph) + with CicUniv.UniverseInconsistency _ -> false,ugraph) + | (C.Sort (C.CProp t1|C.Type t1), C.Sort (C.CProp t2|C.Type t2)) + when not test_equality_only -> + (try true,(CicUniv.add_ge t2 t1 ugraph) + with CicUniv.UniverseInconsistency _ -> false,ugraph) | (C.Sort s1, C.Sort (C.Type _)) | (C.Sort s1, C.Sort (C.CProp _)) -> (not test_equality_only),ugraph | (C.Sort s1, C.Sort s2) -> (s1 = s2),ugraph @@ -916,13 +906,18 @@ prerr_endline ("%%%%%%: " ^ CicPp.ppterm term' ^ " <==> " ^ CicPp.ppterm t1); else false,ugraph | (C.Appl l1, C.Appl l2) -> + let b, ugraph = + aux test_equality_only context (List.hd l1) (List.hd l2) ugraph + in + if not b then false, ugraph + else (try List.fold_right2 (fun x y (b,ugraph) -> if b then - aux test_equality_only context x y ugraph + aux true context x y ugraph else - false,ugraph) l1 l2 (true,ugraph) + false,ugraph) (List.tl l1) (List.tl l2) (true,ugraph) with Invalid_argument _ -> false,ugraph ) @@ -985,7 +980,7 @@ prerr_endline ("%%%%%%: " ^ CicPp.ppterm term' ^ " <==> " ^ CicPp.ppterm t1); let b'',ugraph''=aux test_equality_only context outtype1 outtype2 ugraph in if b'' then - let b''',ugraph'''= aux test_equality_only context + let b''',ugraph'''= aux true context term1 term2 ugraph'' in List.fold_right2 (fun x y (b,ugraph) -> @@ -1070,7 +1065,7 @@ prerr_endline ("PREWHD: " ^ CicPp.ppterm t1 ^ " <===> " ^ CicPp.ppterm t2); let t2' = whd ?delta:(Some true) ?subst:(Some subst) context t2 in debug t1' [t2'] "POSTWHD"; *) -let rec convert_machines ugraph = +let rec convert_machines test_equality_only ugraph = function [] -> true,ugraph | ((k1,env1,ens1,h1,s1),(k2,env2,ens2,h2,s2))::tl -> @@ -1095,11 +1090,11 @@ let rec convert_machines ugraph = in match problems with None -> false,ugraph - | Some problems -> convert_machines ugraph problems + | Some problems -> convert_machines true ugraph problems else res in - convert_machines ugraph + convert_machines test_equality_only ugraph [R.reduce ~delta:true ~subst context (0,[],[],t1,[]), R.reduce ~delta:true ~subst context (0,[],[],t2,[])] (*prerr_endline ("POSTWH: " ^ CicPp.ppterm t1' ^ " <===> " ^ CicPp.ppterm t2');*)