X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fcic_disambiguation%2FdisambiguateChoices.ml;h=6d4d63b704e367c0c64cf3f0989d8c68de527031;hb=d2545ffd201b1aa49887313791386add78fa8603;hp=b540033dcfe67ed68f2b7bc2fc3ba3b3b6f788f8;hpb=9a9c5b863f68367119450ae7b806d454ba1265e3;p=helm.git diff --git a/helm/software/components/cic_disambiguation/disambiguateChoices.ml b/helm/software/components/cic_disambiguation/disambiguateChoices.ml index b540033dc..6d4d63b70 100644 --- a/helm/software/components/cic_disambiguation/disambiguateChoices.ml +++ b/helm/software/components/cic_disambiguation/disambiguateChoices.ml @@ -32,8 +32,10 @@ open DisambiguateTypes exception Choice_not_found of string Lazy.t let num_choices = ref [] +let nnum_choices = ref [] let add_num_choice choice = num_choices := choice :: !num_choices +let nadd_num_choice choice = nnum_choices := choice :: !nnum_choices let has_description dsc = (fun x -> fst x = dsc) @@ -44,7 +46,12 @@ let lookup_num_by_dsc dsc = List.find (has_description dsc) !num_choices with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^ dsc))) -let mk_choice ~mk_appl ~mk_implicit ~term_of_uri (dsc, args, appl_pattern)= +let nlookup_num_by_dsc dsc = + try + List.find (has_description dsc) !nnum_choices + with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^ dsc))) + +let mk_choice ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref (dsc, args, appl_pattern)= dsc, `Sym_interp (fun cic_args -> @@ -68,18 +75,17 @@ let mk_choice ~mk_appl ~mk_implicit ~term_of_uri (dsc, args, appl_pattern)= in let combined = TermAcicContent.instantiate_appl_pattern - ~mk_appl ~mk_implicit ~term_of_uri env' appl_pattern + ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref env' appl_pattern in match rest with [] -> combined | _::_ -> mk_appl (combined::rest)) -let lookup_symbol_by_dsc ~mk_appl ~mk_implicit ~term_of_uri symbol dsc = +let lookup_symbol_by_dsc ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref symbol dsc = + let interpretations = TermAcicContent.lookup_interpretations ~sorted:false symbol in try - mk_choice ~mk_appl ~mk_implicit ~term_of_uri - (List.find - (fun (dsc', _, _) -> dsc = dsc') - (TermAcicContent.lookup_interpretations symbol)) + mk_choice ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref + (List.find (fun (dsc', _, _) -> dsc = dsc') interpretations) with TermAcicContent.Interpretation_not_found | Not_found -> raise (Choice_not_found (lazy (sprintf "Symbol %s, dsc %s" symbol dsc))) @@ -88,5 +94,5 @@ let cic_lookup_symbol_by_dsc = lookup_symbol_by_dsc | true -> Cic.Implicit (Some `Type) | false -> Cic.Implicit None) ~mk_appl:(function (Cic.Appl l)::tl -> Cic.Appl (l@tl) | l -> Cic.Appl l) - ~term_of_uri:CicUtil.term_of_uri + ~term_of_uri:CicUtil.term_of_uri ~term_of_nref:(fun _ -> assert false) ;;