]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/cic_disambiguation/disambiguateChoices.ml
parameter sintax added to axiom statement
[helm.git] / helm / software / components / cic_disambiguation / disambiguateChoices.ml
index ed3f82fe8ecd2a0ce16b5034ccd41d7a8d12ac2b..6d4d63b704e367c0c64cf3f0989d8c68de527031 100644 (file)
@@ -32,8 +32,10 @@ open DisambiguateTypes
 exception Choice_not_found of string Lazy.t
 
 let num_choices = ref []
+let nnum_choices = ref []
 
 let add_num_choice choice = num_choices := choice :: !num_choices
+let nadd_num_choice choice = nnum_choices := choice :: !nnum_choices
 
 let has_description dsc = (fun x -> fst x = dsc)
 
@@ -44,9 +46,15 @@ let lookup_num_by_dsc dsc =
     List.find (has_description dsc) !num_choices
   with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^  dsc)))
 
-let mk_choice  ~mk_appl ~mk_implicit ~term_of_uri (dsc, args, appl_pattern)=
+let nlookup_num_by_dsc dsc =
+  try
+    List.find (has_description dsc) !nnum_choices
+  with Not_found -> raise (Choice_not_found (lazy ("Num with dsc " ^  dsc)))
+
+let mk_choice  ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref (dsc, args, appl_pattern)=
   dsc,
-  (fun env _ cic_args ->
+  `Sym_interp
+  (fun cic_args ->
     let env',rest =
       let names =
         List.map (function CicNotationPt.IdentArg (_, name) -> name) args
@@ -67,18 +75,17 @@ let mk_choice  ~mk_appl ~mk_implicit ~term_of_uri (dsc, args, appl_pattern)=
     in
      let combined =
       TermAcicContent.instantiate_appl_pattern 
-        ~mk_appl ~mk_implicit ~term_of_uri env' appl_pattern
+        ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref env' appl_pattern
      in
       match rest with
          [] -> combined
        | _::_ -> mk_appl (combined::rest))
 
-let lookup_symbol_by_dsc ~mk_appl ~mk_implicit ~term_of_uri symbol dsc =
+let lookup_symbol_by_dsc ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref symbol dsc =
+  let interpretations = TermAcicContent.lookup_interpretations ~sorted:false symbol in
   try
-    mk_choice~mk_appl ~mk_implicit ~term_of_uri 
-      (List.find
-        (fun (dsc', _, _) -> dsc = dsc')
-        (TermAcicContent.lookup_interpretations symbol))
+    mk_choice ~mk_appl ~mk_implicit ~term_of_uri ~term_of_nref
+      (List.find (fun (dsc', _, _) -> dsc = dsc') interpretations)
   with TermAcicContent.Interpretation_not_found | Not_found ->
     raise (Choice_not_found (lazy (sprintf "Symbol %s, dsc %s" symbol dsc)))
 
@@ -87,5 +94,5 @@ let cic_lookup_symbol_by_dsc = lookup_symbol_by_dsc
      | true -> Cic.Implicit (Some `Type)
      | false -> Cic.Implicit None)
   ~mk_appl:(function (Cic.Appl l)::tl -> Cic.Appl (l@tl) | l -> Cic.Appl l)
-  ~term_of_uri:CicUtil.term_of_uri
+  ~term_of_uri:CicUtil.term_of_uri ~term_of_nref:(fun _ -> assert false)
 ;;