]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/cic_disambiguation/disambiguateTypes.ml
07d5abc067a63630b4a23b4affb47e9aae8fc944
[helm.git] / helm / ocaml / cic_disambiguation / disambiguateTypes.ml
1
2 type domain_item =
3  | Id of string               (* literal *)
4  | Symbol of string * int     (* literal, instance num *)
5  | Num of int                 (* instance num *)
6
7 module OrderedDomain =
8   struct
9     type t = domain_item
10     let compare = Pervasives.compare
11   end
12
13 (* module Domain = Set.Make (OrderedDomain) *)
14 module Environment = Map.Make (OrderedDomain)
15
16 type codomain_item =
17   string *  (* description *)
18   (environment -> string -> Cic.term list -> Cic.term)
19     (* environment, literal number, arguments as needed *)
20
21 and environment = codomain_item Environment.t
22
23 module type Callbacks =
24   sig
25     val interactive_user_uri_choice :
26       selection_mode:[`SINGLE | `MULTIPLE] ->
27       ?ok:string ->
28       ?enable_button_for_non_vars:bool ->
29       title:string -> msg:string -> id:string -> string list -> string list
30     val interactive_interpretation_choice :
31       (string * string) list list -> int list
32     val input_or_locate_uri : title:string -> UriManager.uri
33   end
34
35 let string_of_domain_item = function
36   | Id s -> Printf.sprintf "ID(%s)" s
37   | Symbol (s, i) -> Printf.sprintf "SYMBOL(%s,%d)" s i
38   | Num i -> Printf.sprintf "NUM(instance %d)" i
39
40 let string_of_domain dom =
41   String.concat "; " (List.map string_of_domain_item dom)
42 (*
43 let string_of_domain dom =
44   let buf = Buffer.create 1024 in
45   Domain.iter
46     (fun item -> Buffer.add_string buf (string_of_domain_item item ^ "; "))
47     dom;
48   Buffer.contents buf
49 *)
50