+let ncic_mk_choice = function
+ | LexiconAst.Symbol_alias (name, _, dsc) ->
+ if name = __Implicit then
+ dsc, `Sym_interp (fun _ -> NCic.Implicit `Term)
+ else if name = __Closed_Implicit then
+ dsc, `Sym_interp (fun _ -> NCic.Implicit `Closed)
+ else
+ DisambiguateChoices.lookup_symbol_by_dsc
+ ~mk_implicit:(function
+ | true -> NCic.Implicit `Closed
+ | false -> NCic.Implicit `Term)
+ ~mk_appl:(function
+ (NCic.Appl l)::tl -> NCic.Appl (l@tl) | l -> NCic.Appl l)
+ ~term_of_uri:(fun uri ->
+ fst (OCic2NCic.convert_term uri (CicUtil.term_of_uri uri)))
+ name dsc
+ | LexiconAst.Number_alias (_, dsc) ->
+ 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)))
+ | LexiconAst.Ident_alias (name, uri) ->
+ uri, `Sym_interp
+ (fun l->assert(l = []);
+ let uri = UriManager.uri_of_string uri in
+ fst (OCic2NCic.convert_term uri (CicUtil.term_of_uri uri)))
+;;
+
+
+let mk_implicit b =