X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitaSync.ml;h=55cb4a45c09d45c887e07c26602934283bc61679;hb=7730ab45cb810e7ea0dfa804321b339c822ee87a;hp=e12c1cd146c11506322c8c19514c8d6e1bb9209e;hpb=a985685735f5700866e3a97234787c0a8ce2af95;p=helm.git diff --git a/helm/matita/matitaSync.ml b/helm/matita/matitaSync.ml index e12c1cd14..55cb4a45c 100644 --- a/helm/matita/matitaSync.ml +++ b/helm/matita/matitaSync.ml @@ -29,33 +29,34 @@ open MatitaTypes let alias_diff ~from status = let module Map = DisambiguateTypes.Environment in - Map.fold + Map.fold_flatten (fun domain_item codomain_item acc -> if not (Map.mem domain_item from.aliases) then - Map.add domain_item codomain_item acc + Map.cons domain_item codomain_item acc else begin try - let description1 = fst(Map.find domain_item from.aliases) in - let description2 = fst(Map.find domain_item status.aliases) in - if description1 <> description2 then - Map.add domain_item codomain_item acc - else - acc + let codomain1 = Map.find domain_item from.aliases in + let codomain2 = Map.find domain_item status.aliases in + List.fold_right + (fun item env -> + let dsc = fst item in + if not (List.exists (fun (dsc', _) -> dsc'=dsc) codomain1) then + Map.cons domain_item codomain_item env + else + env) + codomain2 acc with Not_found -> acc end) status.aliases Map.empty let set_proof_aliases status aliases = - let new_status = {status with aliases = aliases } in + let new_status = { status with aliases = aliases } in let diff = alias_diff ~from:status new_status in - let textual_diff = - if DisambiguateTypes.Environment.is_empty diff then - "" - else - DisambiguatePp.pp_environment diff ^ "\n" in - let moo_content_rev = textual_diff :: status.moo_content_rev in - {new_status with moo_content_rev = moo_content_rev} + if DisambiguateTypes.Environment.is_empty diff then + new_status + else + add_moo_content (DisambiguatePp.commands_of_environment diff) new_status (** given a uri and a type list (the contructors types) builds a list of pairs * (name,uri) that is used to generate authomatic aliases **)