-class type console =
- object
- method echo_message : string -> unit
- method echo_error : string -> unit
- method clear : unit -> unit
- method wrap_exn : 'a. (unit -> 'a) -> 'a option
- end
-
-class type disambiguator =
- object
- method parserr: parserr
- method setParserr: parserr -> unit
-
- method env: DisambiguateTypes.environment
- method setEnv: DisambiguateTypes.environment -> unit
-
- method disambiguateTerm:
- ?context:Cic.context -> ?metasenv:Cic.metasenv ->
- ?env:DisambiguateTypes.environment ->
- char Stream.t ->
- (DisambiguateTypes.environment * Cic.metasenv * Cic.term *
- CicUniv.universe_graph)
- method disambiguateTermAst:
- ?context:Cic.context -> ?metasenv:Cic.metasenv ->
- ?env:DisambiguateTypes.environment ->
- DisambiguateTypes.term ->
- (DisambiguateTypes.environment * Cic.metasenv * Cic.term *
- CicUniv.universe_graph)
-
- method disambiguateTermAsts:
- ?metasenv:Cic.metasenv ->
- ?env:DisambiguateTypes.environment ->
- DisambiguateTypes.term list ->
- (DisambiguateTypes.environment * Cic.metasenv * Cic.term list *
- CicUniv.universe_graph)
- end
-
-class type proof =
- object
- inherit [unit] StatefulProofEngine.status
-
- method toXml: Xml.token Stream.t * Xml.token Stream.t
- method toString: string
- end
-
-class type currentProof =
- object
- method onGoing: unit -> bool
- method proof: proof
- method start: proof -> unit
- method abort: unit -> unit
- method quit: unit -> unit
- end
-
-type command_outcome = bool * bool
-
-class type interpreter =
- object
- method endOffset : int
- method evalAst : DisambiguateTypes.tactical -> command_outcome
- method evalPhrase : string -> command_outcome
-(* method evalStream: char Stream.t -> command_outcome *)
- method reset : unit
- end
+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")