aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/NewDoc.texi
diff options
context:
space:
mode:
Diffstat (limited to 'doc/NewDoc.texi')
-rw-r--r--doc/NewDoc.texi127
1 files changed, 119 insertions, 8 deletions
diff --git a/doc/NewDoc.texi b/doc/NewDoc.texi
index 607285a5..157bc477 100644
--- a/doc/NewDoc.texi
+++ b/doc/NewDoc.texi
@@ -637,11 +637,13 @@ Otherwise, you will need to restart script management altogether, @pxref{Toolbar
@menu
* Support for function menus::
+* Support for tags::
@end menu
@node Support for function menus
@section Support for function menus
@vindex proof-goal-with-hole-regexp
+@cindex fume-func
fume-func is a handy package which makes a menu from the function
declarations in a buffer. Proof General configures fume-func so that
@@ -669,7 +671,11 @@ the following code for your @file{.emacs} file:
If you have another version of Emacs, you should check the fume-func.el
file supplied with it.
+@node Support for tags
+@section Support for tags
+@cindex tags
+@c FIXME: instructions for setting up etags are needed
@node Customizing Proof General
@@ -821,36 +827,106 @@ At present there is no easy way to get around this.
@node LEGO Proof General
@chapter LEGO Proof General
-LEGO mode is a mode derived from proof script mode for editing LEGO
-scripts. An important convention is that proof script buffers @emph{must}
-start with a module declaration. If the proof script buffer's file name
-is @file{fermat.l}, then it must commence with a declaration
+LEGO proof script mode is a mode derived from proof script mode for
+editing LEGO scripts. An important convention is that proof script
+buffers @emph{must} start with a module declaration. If the proof script
+buffer's file name is @file{fermat.l}, then it must commence with a
+declaration of the form
@lisp
+Module fermat;
+@end lisp
+
+If, in the development of the module @samp{fermat}, you require material
+from other module e.g., @samp{lib_nat} and @samp{galois}, you need to
+specify this dependency as part of the module declaration:
+@lisp
+Module fermat Import lib_nat galois;
@end lisp
+No need to worry too much about effeciency. When you retract back to a
+module declaration to add a new import item, LEGO does not actually
+retract the previously imported modules. Therefore, reasserting the
+extended module declaration really only processes the newly imported
+modules.
+Using the LEGO Proof General, you never ever need to use administrative
+LEGO commands such as @samp{Forget}, @samp{ForgetMark}, @samp{KillRef},
+@samp{Load}, @samp{Make}, @samp{Reload} and @samp{Undo} again
+@footnote{And please, don't even think of including those in your LEGO
+proof script!}. You can concentrate on your actual proof developments.
+Script management in the Proof General will invoke the appropriate
+commands for you. Proving with LEGO has never been easier.
@menu
* LEGO specific commands::
+* LEGO tags::
* LEGO customizations::
@end menu
@node LEGO specific commands
@section LEGO specific commands
+In addition to the commands provided by the generic Proof General, see
+the previous sections, the LEGO Proof General provides a few extensions.
+In proof scripts, there are some abbreviations for common commands:
+
+@table @kbd
+@item C-c i
+intros
+@item C-c I
+Intros
+@item C-c R
+Refine
+@end table
+
+@node LEGO tags
+@section LEGO tags
+
+The LEGO Proof General provides the program @file{legotags} to generate
+tags for LEGO proof scripts. Invoking @samp{legotags *.l} produces a
+file @file{TAGS} for all LEGO modules in the current directory. The LEGO
+library itself is shipped out with all its modules already being tagged.
+See @ref{Support for tags} for further details.
+
+
@node LEGO customizations
@section LEGO customizations
-**********
+We refer to chapter @ref{Customizing Proof General} for an introduction
+to the customisation mechanism. In addition to customizations at the
+generic level, for LEGO you can also customize:
+
+@defopt lego-tags
+The directory of the TAGS table for the LEGO library. The default is
+@code{"/usr/lib/lego/lib_Type/"}.
+@end defopt
+
+@defopt lego-help-menu-list
+List of menu items, as defined in @code{easy-menu-define} for LEGO
+ specific help.
+@end defopt
+
+@c We don't worry about the following for now. These are too obscure.
+@c lego-indent
+@c lego-test-all-name
-Support for font-lock under FSF Emacs 20.2
+@c We also don't document any of the internal variables which have been
+@c set to configure the generic Proof General and which the user should
+@c not tamper with
-To automatically switch on fontification, set
+In Xemacs 20.4, LEGO script buffer are coloured (fontified as they say)
+by default. To automatically switch on fontification in FSF Emacs 20.2,
+you need to set
+@vindex lego-mode-hooks
+@cindex font-lock colour
+@lisp
(add-hook 'lego-mode-hooks 'turn-on-font-lock)
- ^
+@end lisp
+
+in your @file{~/.emacs} file.
@@ -1232,6 +1308,14 @@ in the distribution for more detailed and up-to-date information. @*
If you discover a problem which isn't mentioned in @file{BUGS}, please
let us know by sending a note to @code{proofgen@@dcs.ed.ac.uk}.
+@menu
+* Bugs at the generic level::
+* Bugs specific to LEGO Proof General::
+@end menu
+
+@node Bugs at the generic level
+@section Bugs at the generic level
+
@unnumberedsubsec Undo in XEmacs
Ordinary undo in script buffer can edit the "uneditable region" in
@@ -1259,6 +1343,33 @@ simultaneously.
@strong{Workaround:} stick to one prover per Emacs session.
+@node Bugs specific to LEGO Proof General
+@section Bugs specific to LEGO Proof General
+
+Getting retracting right is tricky when working on proofs.
+
+@unnumberedsubsec Definitions in a proof state
+A thorny issues are local
+definitions in a proof state. LEGO cannot undo them explicitly.
+
+@strong{Workaround:} retract back to a command before a definition.
+
+@unnumberedsubsec Normalisation in proofs
+Normalisation commands such as @samp{Dnf}, @samp{Hnf} @samp{Normal}
+cannot be undone in a proof state by the Proof General.
+
+@strong{Workaround:} retract back to the start of the proof.
+
+@unnumberedsubsec Not saving proofs.
+After LEGO has issued a @samp{***
+QED ***} you may undo steps in the proof as long as you don't issue a
+@samp{Save} command or start a new proof. The LEGO Proof General assumes
+that all proofs are terminated with a proper @samp{Save} command.
+
+@strong{Workaround:} Always issue a @samp{Save} command after completing
+a proof. If you forget one, you should retract to a point before the
+offending proof development.
+