]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_disambiguation/logic_notation.ml
snapshot, almost working
[helm.git] / helm / ocaml / cic_disambiguation / logic_notation.ml
index f23098f9688764a3083447f2cd91959fa56f1979..2f404be83a956eccdf3c31bafff32f3f831a60a9 100644 (file)
@@ -29,18 +29,34 @@ open Parser
 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 (Appl_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 (Appl_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 (Appl_symbol ("not", 0, [t])) ]
     ];
 END
+
+let _ =
+  Disambiguate.add_symbol_choice "eq"
+    ("leibnitz's equality",
+     (fun interp _ args ->
+       let t1, t2 =
+         match args with
+         | [t1; t2] -> t1, t2
+         | _ -> raise Disambiguate.Invalid_choice
+       in
+       Cic.Appl [
+         Cic.MutInd (HelmLibraryObjects.Logic.eq_URI, 0, []);
+           Cic.Implicit; t1; t2
+       ]))
+