]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_disambiguation/logic_notation.ml
added sample configuration file
[helm.git] / helm / ocaml / cic_disambiguation / logic_notation.ml
index f23098f9688764a3083447f2cd91959fa56f1979..1d47711da721d2d9419169d460acf0df76ab9512 100644 (file)
  * 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 ("or", [t1; t2]))
+      [ t1 = term; SYMBOL <:unicode<lor>> (* ∨ *); t2 = term ->
+          return_term loc (CicAst.Appl [CicAst.Symbol ("or", 0); t1; t2])
       ]
     ];
   term: LEVEL "mult"
     [
-      [ t1 = term; SYMBOL "∧"; t2 = term ->
-        return_term loc (Appl_symbol ("and", [t1; t2]))
+      [ t1 = term; SYMBOL <:unicode<land>> (* ∧ *); t2 = term ->
+        return_term loc (CicAst.Appl [CicAst.Symbol ("and", 0); t1; t2])
       ]
     ];
   term: LEVEL "inv"
     [
-      [ SYMBOL "¬"; t = term -> return_term loc (Appl_symbol ("not", [t])) ]
+      [ SYMBOL <:unicode<lnot>> (* ¬ *); t = term ->
+        return_term loc (CicAst.Appl [CicAst.Symbol ("not", 0); t])
+      ]
     ];
 END
+
+let _ =
+  DisambiguateChoices.add_symbol_choice "eq"
+    ("leibnitz's equality",
+     (fun interp _ args ->
+       let t1, t2 =
+         match args with
+         | [t1; t2] -> t1, t2
+         | _ -> raise DisambiguateChoices.Invalid_choice
+       in
+       Cic.Appl [
+         Cic.MutInd (HelmLibraryObjects.Logic.eq_URI, 0, []);
+           Cic.Implicit (Some `Type); t1; t2
+       ]))
+