]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/xmltheory/XmlTheory/xmltheoryentries.ml
This commit was manufactured by cvs2svn to create branch 'moogle'.
[helm.git] / helm / xmltheory / XmlTheory / xmltheoryentries.ml
diff --git a/helm/xmltheory/XmlTheory/xmltheoryentries.ml b/helm/xmltheory/XmlTheory/xmltheoryentries.ml
deleted file mode 100644 (file)
index de3c503..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-(*********************)
-(* Utility functions *)
-(*********************)
-
-let fail () =
- Pp.warning "XmlTheory: AST not recognized"
-;;
-
-(* name is the name of the function to hook *)
-(* hook is an hook partial-function to recognize particular inputs *)
-let set_hook name hook =
- let module V = Vernacinterp in
-  let old = V.vinterp_map name in
-   V.vinterp_add name
-    (fun l () ->
-      old l () ;
-      hook l
-    )
-;;
-
-
-(*****************************************************)
-(* Vernacular administrative commands for the module *)
-(*****************************************************)
-
-let header =
-"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n" ^
-"<!DOCTYPE Theory SYSTEM \"http://www.cs.unibo.it/helm/dtd/maththeory.dtd\">\n"
-;;
-
-(*Vecchio, ma funzionante
-let module V = Vernacinterp in
- V.vinterp_add "XMLTHEORYBEGIN"
-  (function
-      [V.VARG_STRING curi ; V.VARG_STRING filename] ->
-       fun () ->
-        IXml.reset_output filename ;
-        IXml.output (Xml.xml_cdata header) ;
-        IXml.open_non_empty_element "Theory" ["uri","cic:" ^ curi]
-    | _ -> V.bad_vernac_args "XMLTHEORYBEGIN"
-  )
-;;
-*)
-
-let module V = Vernacinterp in
-let module L = Library in
-let module S = System in
-let module N = Names in
- V.vinterp_add "XMLTHEORYBEGIN"
-  (function
-      [V.VARG_IDENTIFIER id ; V.VARG_STRING root_dir] ->
-       fun () ->
-        let s = N.string_of_id id in
-         let lpe,_ =
-          S.find_file_in_path (L.get_load_path ()) (s^".v")
-         in
-          let curi = "/" ^ String.concat "/" lpe.S.coq_dirpath in
-          let dirname = root_dir ^ curi in
-           Unix.system ("mkdir -p " ^ dirname) ;
-          let filename = dirname ^ "/" ^ s ^ ".theory" in
-           IXml.reset_output filename ;
-           IXml.output (Xml.xml_cdata header) ;
-           IXml.open_non_empty_element "Theory" ["uri","cic:" ^ curi ^ "/" ^ s]
-    | _ -> V.bad_vernac_args "XMLTHEORYBEGIN"
-  )
-;;
-
-let module V = Vernacinterp in
- V.vinterp_add "XMLTHEORYEND"
-  (function
-      [] ->
-       fun () ->
-        IXml.close_non_empty_element () ;
-        IXml.print_output ()
-    | _ -> V.bad_vernac_args "XMLTHEORYEND"
-  )
-;;
-
-
-(**********************************************************)
-(* All the vernacular commands on which one is interested *)
-(* should be overridden here                              *)
-(**********************************************************)
-
-let module V = Vernacinterp in
-let module N = Names in
-let module S = System in
-let module L = Library in
- set_hook "Require"
-  (function
-      [V.VARG_STRING import; V.VARG_STRING specif; V.VARG_IDENTIFIER id] ->
-       (* id is the identifier of the module, but we need the absolute *)
-       (* identifier as an URI.                                        *)
-       (* E.g.: Logic ==> theory:/Coq/Init/Logic.theory                *)
-        let name = N.string_of_id id in
-         let ({S.coq_dirpath = coq_dirpath},_) = L.module_filename name in
-          let uri =
-           "theory:/" ^ (String.concat "/" coq_dirpath) ^ "/" ^ name ^ ".theory"
-          in
-           IXml.output
-            (Xml.xml_nempty "vernacular" []
-             (Xml.xml_empty
-               "Require"
-               ["import",import; "specif",specif; "uri",uri]
-             )
-            )
-    | _ -> fail ()
-   )
-;;
-
-let module V = Vernacinterp in
-let module T = Nametab in
-let module N = Names in
- set_hook "HintsResolve"
-  (function
-      (V.VARG_VARGLIST l)::lh ->
-        IXml.output
-         (Xml.xml_nempty "vernacular" []
-          (Xml.xml_nempty
-            "HintsResolve" []
-            [< Xml.xml_nempty "dbs" []
-                (List.fold_right
-                  (function
-                      (V.VARG_IDENTIFIER x) ->
-                        (function i ->
-                          [< Xml.xml_empty "db" ["name",N.string_of_id x];
-                             i
-                          >]
-                        )
-                    | _ -> Vernacinterp.bad_vernac_args "HintsResolve"
-                  )
-                l [<>]) ;
-               Xml.xml_nempty "hints" []
-                (List.fold_right
-                  (function
-                      (V.VARG_QUALID x) ->
-                        (function i ->
-                          [< Xml.xml_empty "hint" ["name",T.string_of_qualid x];
-                             i
-                          >]
-                        )
-                    | _ -> Vernacinterp.bad_vernac_args "HintsResolve"
-                  )
-                lh [<>]
-                )
-            >]
-          )
-         )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "IMPLICIT_ARGS_ON"
-  (function
-      [] ->
-        IXml.output
-         (Xml.xml_nempty "vernacular" []
-          (Xml.xml_empty
-            "ImplicitArguments"
-            ["status","ON"]
-          )
-         )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "DEFINITION"
-  (function
-      (* Coq anomaly: a Local definition is a Definition at the syntax *)
-      (* level but a Variable at the logical level. Here we have to    *)
-      (* recognize the two cases and treat them differently            *)
-      (V.VARG_STRING "LOCAL":: V.VARG_IDENTIFIER id:: V.VARG_CONSTR c:: rest) ->
-        IXml.output
-         (Xml.xml_nempty "VARIABLES" ["as","LOCAL"]
-           (Xml.xml_empty
-             "VARIABLE"
-             ["uri",Names.string_of_id id ^ ".var"]
-           )
-         )
-    | (V.VARG_STRING kind:: V.VARG_IDENTIFIER id:: V.VARG_CONSTR c :: rest) ->
-        IXml.output
-         (Xml.xml_empty
-           "DEFINITION"
-           ["uri", Names.string_of_id id ^ ".con" ; "as",kind]
-         )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "BeginSection"
-  (function
-      [V.VARG_IDENTIFIER id] ->
-        IXml.open_non_empty_element "SECTION" ["uri", Names.string_of_id id]
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "EndSection"
-  (function
-      [V.VARG_IDENTIFIER id] ->
-        IXml.close_non_empty_element ()
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "StartProof"
-  (function
-      [V.VARG_STRING kind;V.VARG_IDENTIFIER s;V.VARG_CONSTR com] ->
-       IXml.output
-        (Xml.xml_empty
-          "THEOREM"
-          ["uri", Names.string_of_id s ^ ".con"; "as",kind]
-        )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "MUTUALINDUCTIVE"
-  (function
-      [V.VARG_STRING f; V.VARG_VARGLIST indl] ->
-        (* we need the name of the first inductive defined *)
-        (* type in the block to get the URI                *)
-        let name =
-         match indl with
-            (V.VARG_VARGLIST ((V.VARG_IDENTIFIER name)::_))::_ -> name
-          | _ -> assert false
-        in
-         IXml.output
-          (Xml.xml_empty
-            "DEFINITION"
-            ["uri", Names.string_of_id name ^ ".ind"; "as",f]
-          )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "VARIABLE"
-  (function
-      [V.VARG_STRING kind; V.VARG_BINDERLIST slcl] ->
-       (* here we need all the names *)
-       let names =
-        List.flatten (List.map fst slcl)
-       in
-        IXml.output
-         (Xml.xml_nempty "VARIABLES" ["as",kind]
-          (List.fold_right
-            (fun name s ->
-              [< (Xml.xml_empty
-                   "VARIABLE"
-                   ["uri",Names.string_of_id name ^ ".var"]
-                 ) ; s
-              >]
-            ) names [<>]
-          )
-         )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
-let module T = Nametab in
-let module N = Names in
- set_hook "COERCION"
-  (function
-      [V.VARG_STRING kind; V.VARG_STRING identity; V.VARG_QUALID qid;
-       V.VARG_QUALID qids; V.VARG_QUALID qidt] ->
-        (* let's substitute empty strings with non-empty strings *)
-        (* to get a stricter DTD                                 *)
-        let remove_empty_string s = if s = "" then "UNSPECIFIED" else s in
-        let kind     = remove_empty_string kind     in
-        let identity = remove_empty_string identity in
-         IXml.output
-          (Xml.xml_nempty "vernacular" []
-           (Xml.xml_empty
-             "Coercion"
-             ["kind",kind; "identity",identity ; "name",T.string_of_qualid qid ;
-              "source",T.string_of_qualid qids;"target",T.string_of_qualid qidt]
-           )
-          )
-    | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "MUTUALRECURSIVE"
-  (function
-      [V.VARG_VARGLIST lmi] ->
-        (* we need the name of the first inductive defined *)
-        (* type in the block to get the URI                *)
-        let name =
-         match lmi with
-            (V.VARG_VARGLIST ((V.VARG_IDENTIFIER name)::_))::_ -> name
-          | _ -> assert false
-        in
-         IXml.output
-          (Xml.xml_empty
-            "DEFINITION"
-            ["uri", Names.string_of_id name ^ ".con" ; "as","Fixpoint"]
-          )
-     | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "MUTUALCORECURSIVE"
-  (function
-      [V.VARG_VARGLIST lmi] ->
-        (* we need the name of the first inductive defined *)
-        (* type in the block to get the URI                *)
-        let name =
-         match lmi with
-            (V.VARG_VARGLIST ((V.VARG_IDENTIFIER name)::_))::_ -> name
-          | _ -> assert false
-        in
-         IXml.output
-          (Xml.xml_empty
-            "DEFINITION"
-            ["uri", Names.string_of_id name ^ ".con" ; "as","CoFixpoint"]
-          )
-     | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "RECORD"
-  (function
-      [V.VARG_STRING coe;
-       V.VARG_IDENTIFIER struc;
-       V.VARG_BINDERLIST binders;
-       V.VARG_CONSTR sort;
-       V.VARG_VARGLIST namec;
-       V.VARG_VARGLIST cfs] ->
-         IXml.output
-          (Xml.xml_empty
-            "DEFINITION"
-            ["uri", Names.string_of_id struc ^ ".ind" ; "as","Record"]
-          )
-     | _ -> fail ()
-  )
-;;
-
-let module V = Vernacinterp in
- set_hook "PARAMETER"
-  (function
-      [V.VARG_STRING kind; V.VARG_BINDERLIST slcl] ->
-       (* here we need all the names *)
-       let names =
-        List.flatten (List.map fst slcl)
-       in
-        IXml.output
-         (Xml.xml_nempty "AXIOMS" ["as",kind]
-          (List.fold_right
-            (fun name s ->
-              [< (Xml.xml_empty
-                   "AXIOM"
-                   ["uri",Names.string_of_id name ^ ".con"]
-                 ) ; s
-              >]
-            ) names [<>]
-          )
-         )
-    | _ -> fail ()
-  )
-;;