From 7f492f1ed0024596094fc6585c604fd814ea8b60 Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Thu, 15 Jan 2009 15:34:43 +0000 Subject: [PATCH] if the user attempts to insert a duplicate coercions the system forbids it --- .../components/library/librarySync.ml | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/helm/software/components/library/librarySync.ml b/helm/software/components/library/librarySync.ml index 1ca46db0b..da2d69ec1 100644 --- a/helm/software/components/library/librarySync.ml +++ b/helm/software/components/library/librarySync.ml @@ -314,8 +314,8 @@ and | CoercDb.Sort (Cic.Type _) , CoercDb.Sort (Cic.Type _) | CoercDb.Sort (Cic.CProp _), CoercDb.Sort (Cic.CProp _) -> (HLog.warn - ("Skipping coercion " ^ UriManager.name_of_uri uri ^ " since " ^ - "it is a duplicate of " ^ UriManager.string_of_uri u); + ("Skipping coercion " ^ UriManager.name_of_uri uri ^ " since "^ + "it is a duplicate of " ^ UriManager.string_of_uri u); true) | CoercDb.Sort s1, CoercDb.Sort s2 -> (HLog.warn @@ -326,19 +326,21 @@ and CicPp.ppterm (Cic.Sort s2)); false) | _ -> (HLog.warn - ("Skipping coercion " ^ UriManager.name_of_uri uri ^ " since " ^ - "it is a duplicate of " ^ UriManager.string_of_uri u); + ("Skipping coercion " ^ UriManager.name_of_uri uri ^ " since "^ + "it is a duplicate of " ^ UriManager.string_of_uri u); true)) ul) (CoercDb.to_list ()) in let cpos = no_args - arity - saturations - 1 in if not add_composites then - (ignore(already_in_obj src_carr tgt_carr uri - (fst (CicEnvironment.get_obj CicUniv.oblivion_ugraph uri))); - (CoercDb.add_coercion (src_carr, tgt_carr, uri, saturations, cpos); - [])) + (CoercDb.add_coercion (src_carr, tgt_carr, uri, saturations, cpos); []) else + let _ = + if already_in_obj src_carr tgt_carr uri + (fst (CicEnvironment.get_obj CicUniv.oblivion_ugraph uri)) then + raise (AlreadyDefined uri); + in let new_coercions = CicCoercion.close_coercion_graph src_carr tgt_carr uri saturations baseuri @@ -348,18 +350,17 @@ and new_coercions in (* update the DB *) - ignore(already_in_obj src_carr tgt_carr uri - (fst (CicEnvironment.get_obj CicUniv.oblivion_ugraph uri))); - List.iter - (fun (src,tgt,uri,saturations,_,_,cpos) -> - CoercDb.add_coercion (src,tgt,uri,saturations,cpos)) - new_coercions; + let lemmas = + List.fold_left + (fun acc (src,tgt,uri,saturations,obj,arity,cpos) -> + CoercDb.add_coercion (src,tgt,uri,saturations,cpos); + let acc = add_obj uri obj pack_coercion_obj @ uri::acc in + acc) + [] new_coercions + in CoercDb.add_coercion (src_carr, tgt_carr, uri, saturations, cpos); - (* add the composites obj and they eventual lemmas *) - (List.fold_left - (fun acc (_,tgt,uri,saturations,obj,arity,cpos) -> - add_obj uri obj pack_coercion_obj @ uri::acc) - [] new_coercions) +(* CoercDb.prefer uri; *) + lemmas ;; -- 2.39.2