]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_disambiguation/arit_notation.ml
renamed modules so that they are more consistent with other cic modules
[helm.git] / helm / ocaml / cic_disambiguation / arit_notation.ml
index 998688cbebc61a9ca5c28a9907a96c76a200ac50..f0f8d52bc32c7fc69f0c97ab3d43232dd9ab038a 100644 (file)
  * http://helm.cs.unibo.it/
  *)
 
-open Ast
-open Parser
+open CicTextualParser2Ast
+open CicTextualParser2
+
+(*
+let i = ref max_int
+let get_i () = decr i; !i
+*)
 
 EXTEND
   term: LEVEL "add"
     [
       [ t1 = term; SYMBOL "+"; t2 = term ->
-          return_term loc (Appl_symbol ("plus", [t1; t2]))
+          return_term loc (Appl_symbol ("plus", 0, [t1; t2]))
       | t1 = term; SYMBOL "-"; t2 = term ->
-          return_term loc (Appl_symbol ("minus", [t1; t2]))
+          return_term loc (Appl_symbol ("minus", 0, [t1; t2]))
       ]
     ];
   term: LEVEL "mult"
     [
       [ t1 = term; SYMBOL "*"; t2 = term ->
-          return_term loc (Appl_symbol ("times", [t1; t2]))
+          return_term loc (Appl_symbol ("times", 0, [t1; t2]))
       | t1 = term; SYMBOL "/"; t2 = term ->
-          return_term loc (Appl_symbol ("div", [t1; t2]))
+          return_term loc (Appl_symbol ("div", 0, [t1; t2]))
       ]
     ];
   term: LEVEL "inv"
     [
-      [ SYMBOL "-"; t = term -> return_term loc (Appl_symbol ("uminus", [t])) ]
+      [ SYMBOL "-"; t = term ->
+        return_term loc (Appl_symbol ("uminus", 0, [t]))
+      ]
     ];
 END
+
+let _ =
+  Disambiguate.add_num_choice
+    ("natural number",
+      (fun _ num _ -> HelmLibraryObjects.build_nat (int_of_string num)));
+  Disambiguate.add_num_choice
+    ("real number",
+      (fun _ num _ -> HelmLibraryObjects.build_real (int_of_string num)));
+  Disambiguate.add_symbol_choice "plus"
+    ("natural plus",
+     (fun env _ args ->
+       let t1, t2 =
+         match args with
+         | [t1; t2] -> t1, t2
+         | _ -> raise Disambiguate.Invalid_choice
+       in
+       Cic.Appl [ HelmLibraryObjects.Peano.plus; t1; t2 ]));
+  Disambiguate.add_symbol_choice "plus"
+    ("real plus",
+     (fun env _ args ->
+       let t1, t2 =
+         match args with
+         | [t1; t2] -> t1, t2
+         | _ -> raise Disambiguate.Invalid_choice
+       in
+       Cic.Appl [ HelmLibraryObjects.Reals.rplus; t1; t2 ]));
+