X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fgrafite_parser%2FgrafiteDisambiguate.ml;h=28742e6c7651c93edc8cd9a423bed51df0da2139;hb=0581f3c8dc2098b82cd31a0fbed224a95652bd88;hp=6b5dfca61b829235b852cdc4e7f0a44cd6d52501;hpb=7477c3dbbc2fafe248d48302be0d6ba4cb38d062;p=helm.git diff --git a/helm/software/components/grafite_parser/grafiteDisambiguate.ml b/helm/software/components/grafite_parser/grafiteDisambiguate.ml index 6b5dfca61..28742e6c7 100644 --- a/helm/software/components/grafite_parser/grafiteDisambiguate.ml +++ b/helm/software/components/grafite_parser/grafiteDisambiguate.ml @@ -81,12 +81,18 @@ let ncic_mk_choice = function ~term_of_nref:(fun nref -> NCic.Const nref) name dsc | LexiconAst.Number_alias (_, dsc) -> - let desc,f = DisambiguateChoices.lookup_num_by_dsc dsc in - desc, `Num_interp + (try + let desc,f = DisambiguateChoices.nlookup_num_by_dsc dsc in + desc, `Num_interp + (fun num -> match f with `Num_interp f -> f num | _ -> assert false) + with + DisambiguateChoices.Choice_not_found _ -> + let desc,f = DisambiguateChoices.lookup_num_by_dsc dsc in + desc, `Num_interp (fun num -> fst (OCic2NCic.convert_term (UriManager.uri_of_string "cic:/xxx/x.con") - (match f with `Num_interp f -> f num | _ -> assert false))) + (match f with `Num_interp f -> f num | _ -> assert false)))) | LexiconAst.Ident_alias (name, uri) -> uri, `Sym_interp (fun l->assert(l = []); @@ -175,6 +181,24 @@ let nlookup_in_library | _ -> lookup_in_library interactive_user_uri_choice input_or_locate_uri item ;; +let fix_instance item l = + match item with + DisambiguateTypes.Symbol (_,n) -> + List.map + (function + LexiconAst.Symbol_alias (s,_,d) -> LexiconAst.Symbol_alias (s,n,d) + | _ -> assert false + ) l + | DisambiguateTypes.Num n -> + List.map + (function + LexiconAst.Number_alias (_,d) -> LexiconAst.Number_alias (n,d) + | _ -> assert false + ) l + | DisambiguateTypes.Id _ -> l +;; + + (** @param term not meaningful when context is given *) let disambiguate_term expty text prefix_len lexicon_status_ref context metasenv term = @@ -186,7 +210,7 @@ term = ~expty ~universe:(Some lexicon_status#lstatus.LexiconEngine.multi_aliases) ~lookup_in_library ~mk_choice:cic_mk_choice - ~mk_implicit + ~mk_implicit ~fix_instance ~description_of_alias:LexiconAst.description_of_alias ~context ~metasenv ~subst:[] (text,prefix_len,term)) in @@ -206,7 +230,7 @@ let disambiguate_nterm expty estatus context metasenv subst thing ~universe:(Some estatus#lstatus.LexiconEngine.multi_aliases) ~lookup_in_library:nlookup_in_library ~mk_choice:ncic_mk_choice - ~mk_implicit + ~mk_implicit ~fix_instance ~description_of_alias:LexiconAst.description_of_alias ~context ~metasenv ~subst thing) in @@ -228,7 +252,7 @@ let disambiguate_lazy_term expty text prefix_len lexicon_status_ref term = (CicDisambiguate.disambiguate_term ~lookup_in_library ~mk_choice:cic_mk_choice - ~mk_implicit + ~mk_implicit ~fix_instance ~description_of_alias:LexiconAst.description_of_alias ~initial_ugraph:ugraph ~aliases:lexicon_status#lstatus.LexiconEngine.aliases ~universe:(Some lexicon_status#lstatus.LexiconEngine.multi_aliases) @@ -628,7 +652,7 @@ let disambiguate_obj estatus ?baseuri metasenv (text,prefix_len,obj) = match obj with | CicNotationPt.Inductive (_,(name,_,_,_)::_) | CicNotationPt.Record (_,name,_,_) -> name ^ ".ind" - | CicNotationPt.Theorem (_,name,_,_) -> name ^ ".con" + | CicNotationPt.Theorem (_,name,_,_,_) -> name ^ ".con" | CicNotationPt.Inductive _ -> assert false in UriManager.uri_of_string (baseuri ^ "/" ^ name) @@ -734,7 +758,7 @@ let disambiguate_obj estatus ?baseuri metasenv (text,prefix_len,obj) = (CicDisambiguate.disambiguate_obj ~lookup_in_library ~mk_choice:cic_mk_choice - ~mk_implicit + ~mk_implicit ~fix_instance ~description_of_alias:LexiconAst.description_of_alias ~aliases:estatus#lstatus.LexiconEngine.aliases ~universe:(Some estatus#lstatus.LexiconEngine.multi_aliases) @@ -770,7 +794,7 @@ let disambiguate_nobj estatus ?baseuri (text,prefix_len,obj) = match obj with | CicNotationPt.Inductive (_,(name,_,_,_)::_) | CicNotationPt.Record (_,name,_,_) -> name ^ ".ind" - | CicNotationPt.Theorem (_,name,_,_) -> name ^ ".con" + | CicNotationPt.Theorem (_,name,_,_,_) -> name ^ ".con" | CicNotationPt.Inductive _ -> assert false in UriManager.uri_of_string (baseuri ^ "/" ^ name) @@ -781,7 +805,7 @@ let disambiguate_nobj estatus ?baseuri (text,prefix_len,obj) = ~lookup_in_library:nlookup_in_library ~description_of_alias:LexiconAst.description_of_alias ~mk_choice:ncic_mk_choice - ~mk_implicit + ~mk_implicit ~fix_instance ~uri:(OCic2NCic.nuri_of_ouri uri) ~rdb:estatus ~aliases:estatus#lstatus.LexiconEngine.aliases