X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2Farit_notation.ml;h=b4aaf339877cb5dcaf273ec04dc4fbc4e297e9d4;hb=6d9de12a536ee4b9e369849ff7e9aa4ca464de9d;hp=998688cbebc61a9ca5c28a9907a96c76a200ac50;hpb=aba014724c9ad08f80944ec3021c9fa3826dca4a;p=helm.git diff --git a/helm/ocaml/cic_disambiguation/arit_notation.ml b/helm/ocaml/cic_disambiguation/arit_notation.ml index 998688cbe..b4aaf3398 100644 --- a/helm/ocaml/cic_disambiguation/arit_notation.ml +++ b/helm/ocaml/cic_disambiguation/arit_notation.ml @@ -26,25 +26,59 @@ open Ast open Parser +(* +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 ])); +