+
+let cic_name_of_name = function
+ | CicNotationPt.Ident ("_", None) -> Cic.Anonymous
+ | CicNotationPt.Ident (name, None) -> Cic.Name name
+ | _ -> assert false
+
+let name_of_cic_name = function
+ | Cic.Name s -> CicNotationPt.Ident (s, None)
+ | Cic.Anonymous -> CicNotationPt.Ident ("_", None)
+
+let fresh_index = ref ~-1
+
+type notation_id = int
+
+let fresh_id () =
+ incr fresh_index;
+ !fresh_index
+
+ (* TODO ensure that names generated by fresh_var do not clash with user's *)
+let fresh_name () = "fresh" ^ string_of_int (fresh_id ())
+