-(*
-let untitled_con_uri = UriManager.uri_of_string "cic:/untitled.con"
-let untitled_def_uri = UriManager.uri_of_string "cic:/untitled.ind"
-
-let unopt_uri ?(kind = `Con) = function
- | Some uri -> uri
- | None ->
- (match kind with `Con -> untitled_con_uri | `Def -> untitled_def_uri)
-*)
-let unopt_uri = function Some uri -> uri | None -> assert false
-
-class type parserr = (* "parser" is a keyword :-( *)
- object
- method parseTerm: char Stream.t -> DisambiguateTypes.term
- method parseTactical: char Stream.t -> DisambiguateTypes.tactical
- end
-
-class type disambiguator =
- object
- method parserr: parserr
- method setParserr: parserr -> unit
-
- method env: DisambiguateTypes.environment
- method setEnv: DisambiguateTypes.environment -> unit
-
- (* TODO Zack: as long as matita doesn't support MDI inteface,
- * disambiguateTerm will return a single term *)
- (** @param env disambiguation environment. If this parameter is given the
- * disambiguator act statelessly, that is internal disambiguation status
- * want be changed but only returned. If this parameter is not given the
- * internal one will be used and updated with the disambiguation status
- * resulting from the disambiguation *)
- method disambiguateTerm:
- ?context:Cic.context -> ?metasenv:Cic.metasenv ->
- ?env:DisambiguateTypes.environment ->
- char Stream.t ->
- (DisambiguateTypes.environment * Cic.metasenv * Cic.term)
- (** @param env @see disambiguateTerm above *)
- method disambiguateTermAst:
- ?context:Cic.context -> ?metasenv:Cic.metasenv ->
- ?env:DisambiguateTypes.environment ->
- DisambiguateTypes.term ->
- (DisambiguateTypes.environment * Cic.metasenv * Cic.term)
- end
-
-(*
-type sequents_metadata =
- (int * (** sequent (meta) index *)
- (Cic.annconjecture * (** annotated conjecture *)
- (Cic.id, Cic.term) Hashtbl.t * (** ids_to_terms *)
- (Cic.id, Cic.id option) Hashtbl.t * (** ids_to_father_ids *)
- (Cic.id, string) Hashtbl.t * (** ids_to_inner_sorts *)
- (Cic.id, Cic.hypothesis) Hashtbl.t)) (** ids_to_hypotheses *)
- list
-type proof_metadata =
- Cic.annobj * (** annotated object *)
- (Cic.id, Cic.term) Hashtbl.t * (** ids_to_terms *)
- (Cic.id, Cic.id option) Hashtbl.t * (** ids_to_father_ids *)
- (Cic.id, string) Hashtbl.t * (** ids_to_inner_sorts *)
- (Cic.id, Cic2acic.anntypes) Hashtbl.t * (** ids_to_inner_types *)
- (Cic.id, Cic.conjecture) Hashtbl.t * (** ids_to_conjectures *)
- (Cic.id, Cic.hypothesis) Hashtbl.t (** ids_to_hypotheses *)
-type hist_metadata = proof_metadata * sequents_metadata
-*)
-
-class type proof =
+type abouts =
+ [ `Blank
+ | `Current_proof
+ | `Us
+ ]
+
+type mathViewer_entry =
+ [ `About of abouts (* current proof *)
+ | `Check of string (* term *)
+ | `Cic of Cic.term * Cic.metasenv
+ | `Dir of string (* "directory" in cic uris namespace *)
+ | `Uri of UriManager.uri (* cic object uri *)
+ | `Whelp of string * UriManager.uri list (* query and results *)
+ ]
+
+let string_of_entry = function
+ | `About `Blank -> "about:blank"
+ | `About `Current_proof -> "about:proof"
+ | `About `Us -> "about:us"
+ | `Check _ -> "check:"
+ | `Cic (_, _) -> "term:"
+ | `Dir uri -> uri
+ | `Uri uri -> UriManager.string_of_uri uri
+ | `Whelp (query, _) -> query
+
+let entry_of_string = function
+ | "about:blank" -> `About `Blank
+ | "about:proof" -> `About `Current_proof
+ | "about:us" -> `About `Us
+ | _ -> (* only about entries supported ATM *)
+ raise (Invalid_argument "entry_of_string")
+
+class type mathViewer =