]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/cic_disambiguation/disambiguate.mli
...
[helm.git] / helm / software / components / cic_disambiguation / disambiguate.mli
index c1a50aceb82b8a44214cfa24f933a96061dfb2ea..201bdb3b7bb7178f7f4c11111b0062426dbfe5bc 100644 (file)
   *   useless for the final user ... *)
 exception NoWellTypedInterpretation of
  int *
- ((Token.flocation list * string * string) list *
-  (DisambiguateTypes.domain_item * DisambiguateTypes.codomain_item) list *
-  Token.flocation option * string Lazy.t * bool) list
+ ((Stdpp.location list * string * string) list *
+  (DisambiguateTypes.domain_item * string) list *
+  (Stdpp.location * string) Lazy.t *
+  bool) list
 exception PathNotWellFormed
 
 val interpretate_path :
@@ -45,39 +46,114 @@ val interpretate_path :
 
 type 'a disambiguator_input = string * int * 'a
     
+type domain = domain_tree list
+and domain_tree = 
+  Node of Stdpp.location list * DisambiguateTypes.domain_item * domain
+
+type ('term,'metasenv,'subst,'graph) test_result =
+  | Ok of 'term * 'metasenv * 'subst * 'graph
+  | Ko of (Stdpp.location * string) Lazy.t
+  | Uncertain of (Stdpp.location * string) Lazy.t
+
+exception Try_again of string Lazy.t
+
+val domain_of_ast_term: context:Cic.name list -> CicNotationPt.term -> domain
+
 module type Disambiguator =
 sig
-  (** @param fresh_instances when set to true fresh instances will be generated
-   * for each number _and_ symbol in the disambiguation domain. Instances of the
-   * input AST will be ignored. Defaults to false. *)
+  val disambiguate_thing:
+    context:'context ->
+    metasenv:'metasenv ->
+    subst:'subst ->
+    mk_implicit:([ `Closed ] option -> 'refined_thing) ->
+    initial_ugraph:'ugraph ->
+    hint: ('metasenv -> 'raw_thing -> 'raw_thing) * 
+          (('refined_thing,'metasenv,'subst,'ugraph) test_result ->
+              ('refined_thing,'metasenv,'subst,'ugraph) test_result) ->
+    aliases:'refined_thing DisambiguateTypes.codomain_item DisambiguateTypes.Environment.t ->
+    universe:'refined_thing DisambiguateTypes.codomain_item list
+             DisambiguateTypes.Environment.t option ->
+    lookup_in_library:((selection_mode:[ `MULTIPLE | `SINGLE ] ->
+                        ?ok:string ->
+                        ?enable_button_for_non_vars:bool ->
+                        title:string ->
+                        msg:string ->
+                        id:string ->
+                        UriManager.uri list -> UriManager.uri list) ->
+                       (title:string -> ?id:string -> unit -> UriManager.uri option) ->
+                       DisambiguateTypes.Environment.key ->
+                       'refined_thing DisambiguateTypes.codomain_item list) ->
+    uri:'uri ->
+    pp_thing:('ast_thing -> string) ->
+    domain_of_thing:(context:'context -> 'ast_thing -> domain) ->
+    interpretate_thing:(context:'context ->
+                        env:'refined_thing DisambiguateTypes.codomain_item
+                            DisambiguateTypes.Environment.t ->
+                        uri:'uri ->
+                        is_path:bool -> 'ast_thing -> localization_tbl:'cichash -> 'raw_thing) ->
+    refine_thing:('metasenv ->
+                  'subst ->
+                  'context ->
+                  'uri ->
+                  'raw_thing ->
+                  'ugraph -> localization_tbl:'cichash -> 
+                  ('refined_thing, 'metasenv,'subst,'ugraph) test_result) ->
+    localization_tbl:'cichash ->
+    string * int * 'ast_thing ->
+    ((DisambiguateTypes.Environment.key * 
+    'refined_thing DisambiguateTypes.codomain_item) list * 
+     'metasenv * 'subst * 'refined_thing * 'ugraph)
+     list * bool
+
   val disambiguate_term :
     ?fresh_instances:bool ->
-    dbd:HMysql.dbd ->
     context:Cic.context ->
-    metasenv:Cic.metasenv ->
+    metasenv:Cic.metasenv -> 
+    subst:Cic.substitution ->
+    ?goal:int ->
     ?initial_ugraph:CicUniv.universe_graph -> 
-    aliases:DisambiguateTypes.environment ->(* previous interpretation status *)
-    universe:DisambiguateTypes.multiple_environment option ->
+    aliases:Cic.term DisambiguateTypes.environment ->(* previous interpretation status *)
+    universe:Cic.term DisambiguateTypes.multiple_environment option ->
+    lookup_in_library:((selection_mode:[ `MULTIPLE | `SINGLE ] ->
+                        ?ok:string ->
+                        ?enable_button_for_non_vars:bool ->
+                        title:string ->
+                        msg:string ->
+                        id:string ->
+                        UriManager.uri list -> UriManager.uri list) ->
+                       (title:string -> ?id:string -> unit -> UriManager.uri option) ->
+                       DisambiguateTypes.Environment.key ->
+                       Cic.term DisambiguateTypes.codomain_item list) ->
     CicNotationPt.term disambiguator_input ->
-    ((DisambiguateTypes.domain_item * DisambiguateTypes.codomain_item) list *
+    ((DisambiguateTypes.domain_item * Cic.term DisambiguateTypes.codomain_item) list *
      Cic.metasenv *                  (* new metasenv *)
-     Cic.term *
+     Cic.substitution *
+     Cic.term*
      CicUniv.universe_graph) list *  (* disambiguated term *)
-    bool  (* has interactive_interpretation_choice been invoked? *)
+    bool
 
-  (** @param fresh_instances as per disambiguate_term *)
   val disambiguate_obj :
     ?fresh_instances:bool ->
-    dbd:HMysql.dbd ->
-    aliases:DisambiguateTypes.environment ->(* previous interpretation status *)
-    universe:DisambiguateTypes.multiple_environment option ->
+    aliases:Cic.term DisambiguateTypes.environment ->(* previous interpretation status *)
+    universe:Cic.term DisambiguateTypes.multiple_environment option ->
     uri:UriManager.uri option ->     (* required only for inductive types *)
+    lookup_in_library:((selection_mode:[ `MULTIPLE | `SINGLE ] ->
+                        ?ok:string ->
+                        ?enable_button_for_non_vars:bool ->
+                        title:string ->
+                        msg:string ->
+                        id:string ->
+                        UriManager.uri list -> UriManager.uri list) ->
+                       (title:string -> ?id:string -> unit -> UriManager.uri option) ->
+                       DisambiguateTypes.Environment.key ->
+                       Cic.term DisambiguateTypes.codomain_item list) ->
     CicNotationPt.term CicNotationPt.obj disambiguator_input ->
-    ((DisambiguateTypes.domain_item * DisambiguateTypes.codomain_item) list *
+    ((DisambiguateTypes.domain_item * Cic.term DisambiguateTypes.codomain_item) list *
      Cic.metasenv *                  (* new metasenv *)
+     Cic.substitution *
      Cic.obj *
      CicUniv.universe_graph) list *  (* disambiguated obj *)
-    bool  (* has interactive_interpretation_choice been invoked? *)
+    bool
 end
 
 module Make (C : DisambiguateTypes.Callbacks) : Disambiguator