let add_obj uri obj status =
let basedir = Helm_registry.get "matita.basedir" in
let lemmas = LibrarySync.add_obj uri obj basedir in
+ let status = {status with objects = uri::status.objects} in
List.fold_left add_alias_for_constant
(add_aliases_for_object status uri obj) lemmas
module IdSet = Set.Make (OrderedId)
(** @return l2 \ l1 *)
-let urixstring_list_diff l2 l1 =
- let module S = UriSet in
- let s1 = List.fold_left (fun set uri -> S.add uri set) S.empty l1 in
- let s2 = List.fold_left (fun set uri -> S.add uri set) S.empty l2 in
- let diff = S.diff s2 s1 in
- S.fold (fun uri uris -> uri :: uris) diff []
-
let uri_list_diff l2 l1 =
let module S = UriManager.UriSet in
let s1 = List.fold_left (fun set uri -> S.add uri set) S.empty l1 in
S.fold (fun uri uris -> uri :: uris) diff []
let time_travel ~present ~past =
- let objs_to_remove = urixstring_list_diff present.objects past.objects in
+ let objs_to_remove = uri_list_diff present.objects past.objects in
let coercions_to_remove = uri_list_diff present.coercions past.coercions in
let notation_to_remove =
id_list_diff present.notation_ids past.notation_ids
List.iter
(fun uri -> CoercDb.remove_coercion (fun (_,_,u) -> UriManager.eq u uri))
coercions_to_remove;
- List.iter
- (fun (uri,p) ->
- HExtlib.safe_remove p;
- (try
- CicEnvironment.remove_obj uri
- with CicEnvironment.Object_not_found _ ->
- HLog.debug
- (sprintf "time_travel removes from cache %s that is not in"
- (UriManager.string_of_uri uri)));
- let l = LibraryDb.remove_uri uri in
- debug_list := UriManager.string_of_uri uri :: !debug_list @ l)
- objs_to_remove;
+ List.iter LibrarySync.remove_obj objs_to_remove;
List.iter CicNotation.remove_notation notation_to_remove
- (*
- (* this is debug code
- * idea: debug_list is the list of objects to be removed as computed from the
- * db, while list_of_objs_to_remove is the same list but computer from the
- * differences between statuses *)
- let l1 = List.sort Pervasives.compare !debug_list in
- let l2 = List.sort Pervasives.compare
- (List.map (fun (x,_) -> UriManager.string_of_uri x) list_of_objs_to_remove)
- in
- let rec uniq = function
- | [] -> []
- | h::[] -> [h]
- | h1::h2::tl when h1 = h2 -> uniq (h2 :: tl)
- | h1::tl (* when h1 <> h2 *) -> h1 :: uniq tl
- in
- let l1 = uniq l1 in
- let l2 = uniq l2 in
- try
- List.iter2 (fun x y -> if x <> y then raise Exit) l1 l2
- with
- | Invalid_argument _ | Exit ->
- HLog.debug "It seems you garbaged something...";
- HLog.debug "l1:";
- List.iter HLog.debug l1;
- HLog.debug "l2:";
- List.iter HLog.debug l2
- *)
moo_content_rev: moo;
proof_status: proof_status;
options: options;
- objects: (UriManager.uri * string) list;
+ objects: UriManager.uri list;
coercions: UriManager.uri list;
notation_ids: CicNotation.notation_id list;
}
HLog.message "status.coercions\n";
HLog.message "status.objects:\n";
List.iter
- (fun (u,_) ->
- HLog.message (UriManager.string_of_uri u)) status.objects
+ (fun u -> HLog.message (UriManager.string_of_uri u)) status.objects
let get_option status name =
try