aboutsummaryrefslogtreecommitdiffhomepage
path: root/html/features.phtml
blob: 4c0e1819c33581893d93299161e4d9b8243eb911 (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
<!-- <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 will be useful to you if you use a proof
assistant, and you'd like some of the following features:
</p>

<dl>
  <?php dt("Script management.") ?>
  <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>
  <?php dt("Multiple files.") ?>
  <dd>
  Script management in Proof General can work across many script
  files.  When a script is visited in the editor, it is
  coloured to reflect whether the proof assistant has loaded it in
  this session.  
  <p> 
  Dependencies between script files is
  communicated from the proof assistant to Proof General.  
  If you want to edit a file which has been loaded into the
  proof assistant already, Proof General will unlock the file
  and all the files which depend on it.  This connects the
  editor with the theory dependency or make system of the
  proof assistant.
  </p>
  <?php footnote("Multiple files currently supported in LEGO and Isabelle only")?>
  </dd>
  <?php dt("Proof by Pointing.") ?>
  <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 Proof General
  uses the subterm structure to make it easy
  to cut and paste complicated subterms.
  </p>
  <?php footnote("No assistant fully supports proof-by-pointing in Proof General
  yet.  LEGO provides subterm markup for exploring term
  structure.") ?>
  </dd>
  <?php dt("Toolbar.") ?> 
  <dd>
  Proof General has a toolbar with buttons for starting a proof, 
  manoeuvring in the proof script, restarting the prover 
  and saving a proof. 
  <p>
  Using the toolbar, you can replay proofs without knowing any 
  low-level commands of the proof assistant or any Emacs hot-keys! 
  </p>
  <?php footnote("Toolbar is available in XEmacs only") ?>
  </dd>
  <?php dt("Syntax highlighting.") ?>
  <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>
  <?php dt("Tags.") ?>  
  <dd>
  Tags are an editing feature which allow you to quickly locate 
  the definition or declaration of a particular identifier.
  <p>
  Proof General is supplied with utilities to make tag indexes
  for Emacs.  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>
  <?php dt("Definitions Menu.") ?> 
  <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>
  <?php dt("Adaptability.") ?> 
  <dd>
  Proof General is designed to be generic, so you can adapt it
  to a new proof assistant if you know a little bit of Emacs
  Lisp. 
  <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 more details of the above features, see the 
<?php link_root("doc","documentation page.") ?>
</p>