open Printf
let _ =
- CicNotationEnv.set_pp_term CicNotationPp.pp_term;
+ Helm_registry.set "getter.mode" "remote";
+ Helm_registry.set "getter.url" "http://helm.cs.unibo.it:58081/"
+
+ (* ORRIBLE HACK! conversion:
+ * (Cic.id, string) Hashtbl.t -> (Cic.id, CicNotationtPt.sort_kind) Hashtbl.t
+ *)
+let patch_sort_tbl tbl =
+ let sort_of_string = function
+ | "Prop" -> `Prop
+ | "Set" -> `Set
+ | "Type" | "?" -> `Type
+ | "CProp" -> `CProp
+ | _ -> assert false
+ in
+ let tbl' = Hashtbl.create (Hashtbl.length tbl) in
+ Hashtbl.iter
+ (fun id sort_str -> Hashtbl.add tbl' id (sort_of_string sort_str))
+ tbl;
+ tbl'
+
+let _ =
let module P = CicNotationPt in
let level = ref ~-1 in
let arg_spec = [ "-level", Arg.Set_int level, "set the notation level" ] in
| P.Print t ->
print_endline (CicNotationPp.pp_term t); flush stdout
| P.Notation (l1, associativity, precedence, l2) ->
- prerr_endline "foo";
print_endline "Extending notation ..."; flush stdout;
ignore
(CicNotationParser.extend l1 ?precedence ?associativity
(fun env loc ->
prerr_endline "ENV";
prerr_endline (CicNotationPp.pp_env env);
- CicNotationEnv.instantiate env l2)))
+ CicNotationFwd.instantiate_level2 env l2))
+ | P.Interpretation (l2, l3) ->
+ print_endline "Adding interpretation ..."; flush stdout;
+ let time1 = Unix.gettimeofday () in
+ ignore (CicNotationRew.add_interpretation l2 l3);
+ let time2 = Unix.gettimeofday () in
+ printf "done (patterns compilation took %f seconds)\n"
+ (time2 -. time1);
+ flush stdout
+ | P.Render uri ->
+ let obj, _ = CicEnvironment.get_obj CicUniv.empty_ugraph uri in
+ let annobj, _, _, id_to_sort, _, _, _ =
+ Cic2acic.acic_object_of_cic_object obj
+ in
+ let annterm =
+ match annobj with
+ | Cic.AConstant (_, _, _, _, ty, _, _)
+ | Cic.AVariable (_, _, _, ty, _, _) -> ty
+ | _ -> assert false
+ in
+ let id_to_sort = patch_sort_tbl id_to_sort in
+ let time1 = Unix.gettimeofday () in
+ let t, id_to_uri =
+ CicNotationRew.ast_of_acic id_to_sort annterm
+ in
+ let time2 = Unix.gettimeofday () in
+ printf "ast creation took %f seconds\n" (time2 -. time1);
+ print_endline (CicNotationPp.pp_term t); flush stdout)
(* CicNotationParser.print_l2_pattern ()) *)
| 1 -> ignore (CicNotationParser.parse_syntax_pattern istream)
| 2 ->