aboutsummaryrefslogtreecommitdiff
path: root/contrib/xml/README
blob: 00835fc8a624fc24ce63ba0d0e0e2cc0484ed29d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
(******************************************************************************)
(*                                                                            *)
(*                               PROJECT HELM                                 *)
(*                                                                            *)
(*                     A tactic to print Coq objects in XML                   *)
(*                                                                            *)
(*                Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
(*                                 22/11/1999                                 *)
(******************************************************************************)

This tactic is aimed to exporting a piece of Coq library in XML format.
It adds a few new commands to the vernacular:

 Print XML id.                     It prints in XML the object whose name is id
                                   Only the most cooked available form of the
                                   term is printed
 Print XML File "filename" id.     It prints in XML the object whose name is id
                                   on the file whose name is filename
                                   Only the most cooked available form of the
                                   term is printed
 Show XML Proof.                   It prints in XML the current proof in
                                   progress
 Show XML File "filename" Proof.   It prints in XML the current proof in
                                   progress on the file whose name is filename
 Print XML Dir id.                 It prints recursively in XML the closed
                                   section whose name is id. The terms are
                                   printed in their uncooked form plus the
                                   informations on the parameters of their
                                   most cooked form
 Print XML Dir Disk "dirname" id.  It prints recursively in XML the closed
                                   section whose name is id rooting the dir
                                   corresponding to the section to the dir
                                   whose name is dirname.  The terms are
                                   printed in their uncooked form plus the
                                   informations on the parameters of their
                                   most cooked form
 Print XML All.                    It prints what is the structure of the
                                   current environment of Coq. No terms are
                                   printed. Useful only for debugging

 If xmlcommand.ml is compiled with the configuration parameter verbose
 set to true, then the verbosity of all the previous commands will be
 increased, except the one of Print XML All (that is always very verbose :-)

Important note (fixing the uris):
 
 The previous new commands are all damaged because they produce xml files
 in which all the uris to other xml files are broken (they are only suffixes
 of the right uris). So, to fix the uris, you must use the script fix_uri.pl
 giving to it on stdin all the filenames of the uris to repair. The script
 will modify all the files fixing all the uris in them. An uri will be fixed
 iff it is a reference to one of the files whose name has been given on stdin.

How to compile:

 Edit the configuration parameters at the very beginning of file xmlcommand.ml:
  dtdname is the complete path-name of the dtd file
  verbose if set to true, increases the verbosity of all the "Print something"
           commands (useful only for debugging)
 Then do "make clean ; make all ; make opt ; make install-library"

The files forming the tactic are:

 Xml.v                  It adds new grammar rules to Coq environment.
 xmlentries.ml          Links the functions implementing the new commands to
                        the grammar rules declared in Xml.v
 xmlcommand.ml          Defines the functions that implements the new commands
                        Uses ntrefiner.ml, cooking.ml and xml.ml
                        Contains also some configuration parameters
 ntrefiner.ml           This file is copied verbatim from the natural tactic
                        and used to get informations on the proof in progress
 cooking.ml             Contains a function that returns the list of the
                        ingredients for cooking an uncooked term
 xml.ml                 The definition of a pretty-printer for XML and the one
                        of the stream of commands to the pp

The files to export the standard library of Coq are:

 provacoq.v             Loads one at a time all the provacoqXXX files
 provacoqXxx.v	        If Loaded it exports the theory XXX of the standard
                        library of Coq

Other files useful to test the new commands:

 prova.v                Declares and exports some objects; exports also the
                        theories provastruct, provastruct2 e provastruct3
 provastruct.v          An example theory
 provastruct2.v         Another example theory
 provastruct3.v         Yet another example theory

Other files:

 README	               This file
 fix_uri.pl            The script that fixes the broken uris in the xml files
 Makefile              Targets are "all", "opt", "clean" and "install-library"
 .depend               The dependecies file used by make
 mkdirs.sh             Make all the dirs needed to export the standard library
                        of Coq via provacoq.v
 examples              A simbolic link to the root of the exported library