X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_disambiguation%2Farit_notation.ml;h=53de39449b24de7af95169348594d5ae18a66c8c;hb=5095f0f9e11e966d7872d38ab8ef408567c5984e;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..53de39449 100644 --- a/helm/ocaml/cic_disambiguation/arit_notation.ml +++ b/helm/ocaml/cic_disambiguation/arit_notation.ml @@ -23,28 +23,56 @@ * http://helm.cs.unibo.it/ *) -open Ast -open Parser +open CicTextualParser2 EXTEND term: LEVEL "add" [ [ t1 = term; SYMBOL "+"; t2 = term -> - return_term loc (Appl_symbol ("plus", [t1; t2])) + return_term loc (CicAst.Appl [CicAst.Symbol ("plus", 0); t1; t2]) | t1 = term; SYMBOL "-"; t2 = term -> - return_term loc (Appl_symbol ("minus", [t1; t2])) + return_term loc (CicAst.Appl [CicAst.Symbol ("minus", 0); t1; t2]) ] ]; term: LEVEL "mult" [ [ t1 = term; SYMBOL "*"; t2 = term -> - return_term loc (Appl_symbol ("times", [t1; t2])) + return_term loc (CicAst.Appl [CicAst.Symbol ("times", 0); t1; t2]) | t1 = term; SYMBOL "/"; t2 = term -> - return_term loc (Appl_symbol ("div", [t1; t2])) + return_term loc (CicAst.Appl [CicAst.Symbol ("div", 0); t1; t2]) ] ]; term: LEVEL "inv" [ - [ SYMBOL "-"; t = term -> return_term loc (Appl_symbol ("uminus", [t])) ] + [ SYMBOL "-"; t = term -> + return_term loc (CicAst.Appl [CicAst.Symbol ("uminus", 0); t]) + ] ]; END + +let _ = + DisambiguateChoices.add_num_choice + ("natural number", + (fun _ num _ -> HelmLibraryObjects.build_nat (int_of_string num))); + DisambiguateChoices.add_num_choice + ("real number", + (fun _ num _ -> HelmLibraryObjects.build_real (int_of_string num))); + DisambiguateChoices.add_symbol_choice "plus" + ("natural plus", + (fun env _ args -> + let t1, t2 = + match args with + | [t1; t2] -> t1, t2 + | _ -> raise DisambiguateChoices.Invalid_choice + in + Cic.Appl [ HelmLibraryObjects.Peano.plus; t1; t2 ])); + DisambiguateChoices.add_symbol_choice "plus" + ("real plus", + (fun env _ args -> + let t1, t2 = + match args with + | [t1; t2] -> t1, t2 + | _ -> raise DisambiguateChoices.Invalid_choice + in + Cic.Appl [ HelmLibraryObjects.Reals.rplus; t1; t2 ])); +