+
+let mqi_debug_fun = ignore
+let mqi_flags = []
+let mqi_handle = MQIConn.init mqi_flags mqi_debug_fun
+
+let verbose = false
+
+exception Failure of string
+let fail msg = raise (Failure msg)
+
+module DisambiguateCallbacks =
+ struct
+ let output_html ?(append_NL = true) msg =
+ if verbose then
+ (if append_NL then print_string else print_endline)
+ (Ui_logger.string_of_html_msg msg)
+
+ let interactive_user_uri_choice
+ ~selection_mode ?ok ?enable_button_for_non_vars ~title ~msg ~id =
+ List.filter
+ (fun uri -> not (String.sub uri (String.length uri - 4) 4 = ".var"))
+
+ let interactive_interpretation_choice _ = fail "Multiple interpretations"
+ let input_or_locate_uri ~title = fail "Unknown identifier"
+ end
+
+module Disambiguate' = Disambiguate.Make (DisambiguateCallbacks)
+
+let debug_print s = prerr_endline ("^^^^^^ " ^ s)
+
+let main () =
+ let uri = UriManager.uri_of_string (Sys.argv.(1)) in
+ let obj = CicCache.get_obj uri in
+ let (annobj, _, _, ids_to_inner_sorts, _, _, _) =
+ Cic2acic.acic_object_of_cic_object obj
+ in
+ let ids_to_uris = Hashtbl.create 1023 in
+ let round_trip annterm =
+ debug_print "(1) acic -> ast";
+ let (ast, _) =
+ Acic2Ast.ast_of_acic ids_to_inner_sorts ids_to_uris annterm
+ in
+ debug_print ("ast: " ^ CicAstPp.pp_term ast);
+ let (_, _, term) =
+ Disambiguate'.disambiguate_term mqi_handle [] [] ast
+ DisambiguateTypes.Environment.empty
+ in
+ debug_print ("term: " ^ CicPp.ppterm term)
+ in
+ match annobj with
+ | Cic.AConstant (_, _, _, None, ty, _) ->
+ debug_print "Cic.AConstant (ty)";
+ round_trip ty
+ | Cic.AConstant (_, _, _, Some bo, ty, _) ->
+ debug_print "Cic.AConstant (bo)";
+ round_trip bo;
+ debug_print "Cic.AConstant (ty)";
+ round_trip ty
+ | Cic.AVariable (_, _, None, ty, _) ->
+ debug_print "Cic.AVariable (ty)";
+ round_trip ty
+ | Cic.AVariable (_, _, Some bo, ty, _) ->
+ debug_print "Cic.AVariable (bo)";
+ round_trip bo;
+ debug_print "Cic.AVariable (ty)";
+ round_trip ty
+ | Cic.ACurrentProof (_, _, _, _, proof, ty, _) ->
+ debug_print "Cic.ACurrentProof (proof)";
+ round_trip proof;
+ debug_print "Cic.ACurrentProof (ty)";
+ round_trip ty
+ | Cic.AInductiveDefinition _ ->
+ debug_print "AInductiveDefinition: boh ..."
+
+let _ = main ()
+