- riattaccare hbugs (brrr...) -> Zack
GUI LOGICA
+ - la funzione alias_diff e' lentissima (anche se CSC l'ha accellerata di
+ un fattore 3x) e puo' essere evitata: chi vuole aggiungere alias (la
+ disambiguazione, il comando "alias" e l'add_obj) deve indicare
+ esplicitamente quali sono i nuovi alias, evitando cosi' la diff per
+ scoprirlo
- matitac deve fallire quando matita vuole aggiungere un alias!
- default equality e famiglia non e' undo-aware
- nuovo pretty-printer testuale: non stampa usando la notazione
let alias_diff ~from status =
let module Map = DisambiguateTypes.Environment in
Map.fold
- (fun domain_item codomain_item acc ->
- if not (Map.mem domain_item from.aliases) then
- Map.add 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
- with Not_found -> acc
- end)
+ (fun domain_item (description1,_ as codomain_item) acc ->
+ try
+ let description2,_ = Map.find domain_item from.aliases in
+ if description1 <> description2 then
+ Map.add domain_item codomain_item acc
+ else
+ acc
+ with
+ Not_found ->
+ Map.add domain_item codomain_item acc)
status.aliases Map.empty
+let alias_diff =
+ let profiler = CicUtil.profile "accusato" in
+ fun ~from status -> profiler.CicUtil.profile (alias_diff ~from) status
+
let set_proof_aliases status aliases =
let new_status = { status with aliases = aliases } in
let diff = alias_diff ~from:status new_status in