From 2ab652e8e37ad8459510eeff3741b0b16e00d8fb Mon Sep 17 00:00:00 2001 From: Andrea Asperti Date: Mon, 8 Nov 2010 12:41:33 +0000 Subject: [PATCH] Big bug fixed: grafiteDisambiguate.add_aliases_for_objects used to add aliases to the status, but not to the .ng. Fixed, but we probably need a better approach where the addition to the .ng is performed by the single modules, and not in grafiteEngine as it is now. --- .../grafite_engine/grafiteEngine.ml | 17 +++++++----- .../ng_disambiguation/grafiteDisambiguate.ml | 26 ++++++++----------- .../ng_disambiguation/grafiteDisambiguate.mli | 3 ++- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/matita/components/grafite_engine/grafiteEngine.ml b/matita/components/grafite_engine/grafiteEngine.ml index 0e5f7b529..58904b833 100644 --- a/matita/components/grafite_engine/grafiteEngine.ml +++ b/matita/components/grafite_engine/grafiteEngine.ml @@ -413,9 +413,10 @@ let rec eval_ncommand ~include_paths opts status (text,prefix_len,cmd) = | GrafiteAst.UnificationHint (loc, t, n) -> eval_unification_hint status t n | GrafiteAst.NCoercion (loc, name, t, ty, source, target) -> let status, composites = - NCicCoercDeclaration.eval_ncoercion status name t ty source target - in - GrafiteDisambiguate.add_aliases_for_objs status composites + NCicCoercDeclaration.eval_ncoercion status name t ty source target in + let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *) + let aliases = GrafiteDisambiguate.aliases_for_objs composites in + eval_alias status (mode,aliases) | GrafiteAst.NQed loc -> if status#ng_mode <> `ProofMode then raise (GrafiteTypes.Command_error "Not in proof mode") @@ -485,7 +486,9 @@ let rec eval_ncommand ~include_paths opts status (text,prefix_len,cmd) = let uris = uri::List.rev uris_rev in *) let status = status#set_ng_mode `CommandMode in - let status = GrafiteDisambiguate.add_aliases_for_objs status [uri] in + let xxaliases = GrafiteDisambiguate.aliases_for_objs [uri] in + let mode = GrafiteAst.WithPreferences in (* MATITA 1.0: fixme *) + let status = eval_alias status (mode,xxaliases) in let status = List.fold_left (fun status boxml -> @@ -554,9 +557,9 @@ let rec eval_ncommand ~include_paths opts status (text,prefix_len,cmd) = let status, nuris = NCicCoercDeclaration. basic_eval_and_record_ncoercion_from_t_cpos_arity - status (name,t,cpos,arity) - in - GrafiteDisambiguate.add_aliases_for_objs status nuris + status (name,t,cpos,arity) in + let aliases = GrafiteDisambiguate.aliases_for_objs nuris in + eval_alias status (mode,aliases) with MultiPassDisambiguator.DisambiguationError _-> HLog.warn ("error in generating coercion: "^name); status) diff --git a/matita/components/ng_disambiguation/grafiteDisambiguate.ml b/matita/components/ng_disambiguation/grafiteDisambiguate.ml index 88915c893..923ae2612 100644 --- a/matita/components/ng_disambiguation/grafiteDisambiguate.ml +++ b/matita/components/ng_disambiguation/grafiteDisambiguate.ml @@ -315,18 +315,14 @@ let disambiguate_cic_appl_pattern status args = disambiguate ;; -let add_aliases_for_objs status = - List.fold_left - (fun status nref -> - let references = NCicLibrary.aliases_of nref in - let new_env = - List.map - (fun u -> - let name = NCicPp.r2s true u in - DisambiguateTypes.Id name, - GrafiteAst.Ident_alias (name,NReference.string_of_reference u) - ) references - in - set_proof_aliases status ~implicit_aliases:false - GrafiteAst.WithPreferences new_env - ) status +let aliases_for_objs refs = + List.concat + (List.map + (fun nref -> + let references = NCicLibrary.aliases_of nref in + List.map + (fun u -> + let name = NCicPp.r2s true u in + DisambiguateTypes.Id name, + GrafiteAst.Ident_alias (name,NReference.string_of_reference u) + ) references) refs) diff --git a/matita/components/ng_disambiguation/grafiteDisambiguate.mli b/matita/components/ng_disambiguation/grafiteDisambiguate.mli index 15dc42ae4..f19ea836a 100644 --- a/matita/components/ng_disambiguation/grafiteDisambiguate.mli +++ b/matita/components/ng_disambiguation/grafiteDisambiguate.mli @@ -49,7 +49,8 @@ val set_proof_aliases: GrafiteAst.inclusion_mode -> (DisambiguateTypes.domain_item * GrafiteAst.alias_spec) list -> 'status -val add_aliases_for_objs: #status as 'status -> NUri.uri list -> 'status +val aliases_for_objs: + NUri.uri list -> (DisambiguateTypes.domain_item * GrafiteAst.alias_spec) list (* args: print function, message (may be empty), status *) val dump_aliases: (string -> unit) -> string -> #status -> unit -- 2.39.2