aboutsummaryrefslogtreecommitdiff
path: root/html/features.phtml
blob: 0b3fee7d86b47065a8a33c2f8381c7bb92c4e39b (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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<!-- <h2><a name="why">Why should I use Proof General?</a></h2> -->

<p>
It doesn't matter if you're an Emacs militant or a pacifist!
</p>

<p>
Proof General is designed to be useful for novices and expert users alike.
<br>
It will be useful to you if you use a proof assistant, and
you'd like an interface with the following features:
<a href="#script">script management</a>,
<a href="#multiple">multiple file scripting</a>,
<a href="#pbp">proof by pointing</a>,
<a href="#toolbar">toolbar and menus</a>,
<a href="#fontlock">syntax highlighting</a>,
<a href="#xsymbol">real symbols</a>,
<a href="#funcmenu">definitions menu</a>,
<a href="#tags">tags</a>,
and finally,
<a href="#generic">adaptability</a>.
<br>
Are you convinced yet?
If not, read on&#8230;
</p>
</hrule>
<dl>
  <a name="script"><?php dt("Script management.") ?></a>
  <dd>
  A <em>proof script</em> is a sequence of commands sent to
  a proof assistant to construct a proof, usually stored in
  a file.  <em>Script management</em> connects the editing of a 
  proof script directly to an interactive proof process,
  maintaining consistency between the edit buffer
  and the state of the proof assistant.
  <p>
  Proof General colours a proof script to show the state in the proof
  assistant.  Parts of a proof script that have been processed are
  displayed in blue and are "locked" -- they cannot be edited.  Parts
  of the script currently being processed by the proof assistant are
  shown in red.  Commands are provided to process new parts of the
  buffer, or undo already processed parts.
  </p>
  <p>
  Take a look at this
  <a href="screenshot.phtml">screenshot</a>
  of Proof General to see script managament in action.
  </p>
  </dd>
  <a name="multiple"><?php dt("Multiple files.") ?></a>
  <dd>
  Script management in Proof General can work across many script
  files.  When a script is visited in the editor, it is locked
  (coloured) to reflect whether the proof assistant has loaded it in
  this session.  When a file is unlocked, all of the files which
  depend on it are automatically unlocked too.
  <p> 
  Dependencies between script files are either communicated from the
  proof assistant to Proof General, or maintained automatically by
  Proof General (based on the order in which files were processed).
  </p>
  </dd>
  <a name="pbp"><?php dt("Proof by Pointing.") ?></a>
  <dd>
  <em>Proof by pointing</em> allows you to click on a subterm of
  a goal to be proved, and apply an appropriate rule or 
  tactic automatically.  
  <p>
  Proof by pointing uses the interface to highlight subterms under the
  mouse, and sends messages asking the prover for hints to proceed.
  Proof General also uses the subterm structure to make it easy to cut
  and paste from complicated terms.
  </p>
  <?php footnote("Proof by pointing for Proof General is only supported by LEGO (experimentally) at the moment.  We need help from each proof assistant implementors to add it elsewhere.")  ?>
  </dd>
  <a name="toolbar"><?php dt("Toolbar and menus") ?></a>
  <dd>
  Proof General has a toolbar with buttons for examining
  the proof state, starting a proof, manoeuvring in the proof script, 
  restarting the prover, saving a proof, searching for a theorem,
  issuing a command, interrupting the assistant, and getting help.
  <p>
  Using the toolbar, you can replay proofs without knowing any 
  low-level commands of the proof assistant or any Emacs hot-keys! 
  <p>
  Additionally, the toolbar commands and many more besides are
  available on menus; you don't need to know magical key presses for
  any features.
  </p>
  <?php footnote("Toolbar is available in XEmacs only") ?>
  </dd>
  <a name="fontlock"><?php dt("Syntax highlighting.") ?></a>
  <dd>
  Syntax highlighting is an editing feature which decorates a file
  with different colours or fonts according to the syntax of some
  language (usually a programming language). 
  <p>
  Proof General decorates proof scripts: proof commands are
  highlighted and different fonts may be used for definitions and
  assumptions, for example.
  </p>
  </dd>
  <a name="xsymbol"><?php dt("Real symbols.") ?></a>
  <dd>
  Proof General has a close integration with the
  powerful 
  <a href="http://www.fmi.uni-passau.de/~wedler/x-symbol">X-Symbol</a>
  package, which makes it easy to transparently use real symbols and
  Greek letters in your proofs.  
  <br> Instead of seeing "not P", you see "&not; </dd>P", instead
    of "a * b", you see "a &times; b", etc. <br>
   [the examples above are simple so they will work on most browsers 
    without needing images]
  <p>
  <?php footnote("X-Symbol currently works in XEmacs only") ?>
  </dd>
  <a name="funcmenu"><?php dt("Definitions Menu.") ?></a>
  <dd>
  A pull-down menu gives easy
  access to definitions, declarations and proofs in the current
  buffer.  
  <?php footnote("Definitions menu is available in XEmacs only") ?>
  </dd>
  <?php dt("Remote proof assistant.") ?>
  <dd>
  Sometimes you may want to run a proof assistant on a powerful remote
  machine.  Proof General can communicate with a proof assistant running
  remotely, while your files and editor reside on your local machine.
  <p></p>
  </dd>
  <a name="tags"><?php dt("Tags.") ?></a>
  <dd>
  Tags are an editing feature which allow you to quickly locate the
  definition or declaration of a particular identifier.  Proof General
  is supplied with utilities to make tag indexes for Emacs, for the
  proof assistants LEGO and Coq.  This makes it easy to quickly access
  definitions from a standard library, for example, and in large proof
  developments split across multiple files.
<!--   <?php footnote("Tags programs are provided for LEGO and Coq") ?> -->
  <p></p>
  </dd>
  <a name="generic"><?php dt("Adaptability.") ?></a>
  <dd>
  Proof General is designed to be adaptable.  Many aspects
  of its behaviour can be easily customized (using dialogue boxes and
  buttons, no text file editing!).   
  <p>
  Most importantly, Proof General is generic, so you can adapt it to 
  a new proof assistant with surprisingly little effort.
  <p>
  Adapting for a new proof assistant is mainly a matter of setting
  some variables with regular expressions to help parse output from
  the prover, and setting other variables with commands to send to the
  prover.  To get the most from Proof General (proof by pointing, for
  example), it may be necessary to augment the output routines of the
  proof assistant.
  </p>
  Please feel free to download Proof General to customize it for a new
  system, and 
  <?php hlink("feedback.phtml","tell us ","Feedback form")?>
  how you get on.
  </dd>
</dl>
<p>
For (even) more details of the above features, see the 
<?php link_root("doc","documentation page.") ?>
</p>