ISABELLE-89 DISTRIBUTION DIRECTORY

This directory contains the Standard ML sources of Isabelle. The file ROOT.ML
can be used to load the files in the correct order.  The Makefile automates the
process: read it for more information.  These files are designed to work with
D. C. J. Matthews's Poly/ML system.  It should be straightforward to adapt them
to other Standard ML compilers.

------------------------------------------------------------------------------
NOTE: THESE SOURCES USE THE LATEST SYNTAX, RECENTLY CHANGED, FOR ML EXCEPTIONS
AND MODULES.  THESE SOURCES CANNOT BE COMPILED ON OLDER STANDARD ML COMPILERS.
PLEASE USE Poly/ML v1.75 OR LATER VERSIONS.
------------------------------------------------------------------------------

STRUCTURE OF THIS DIRECTORY

The top-level directory contains pure Isabelle, which contains no object-logic.

The file make-rulenames should be placed in a directory on the search path for
shell commands, to permit its execution on any subdirectory.

The subdirectories contain object logics:
    NJ		Natural deduction, intuitionistic logic
    CTT		Constructive Type Theory
    HOL		Classical Higher-Order Logic (Preliminary version)
    LK		Classical sequent calculus
    LK/set	Set theory (a subdirectory of LK)

Most object logics come with examples files (subdirectory ex).  Most of these
files can be loaded in batch mode.  The commands can also be executed
interactively, using the windows on your workstation.  This is a good way to
get started.

Building an object-logic under Poly/ML calls the function make_database, which
gives access to the pure Isabelle database.  On other implementations of
Standard ML you can perhaps copy the pure Isabelle core image, or else load the
common ROOT.ML file before loading the one on this directory.

Please send comments and bug reports to me.  While I will try to be helpful, I
can accept no responsibility for any deficiences of Isabelle or their
consequences.

L C Paulson
Computer Laboratory
Pembroke Street
Cambridge CB2 3QG
England


MAIN UPDATES SINCE APRIL 1988 (i.e. since User's Manual was written)

There is now a pretty printer!  The file pretty.ML contains information and a
reference (Oppen's paper), while the files named syntax.ML (on various
directories) are examples of use.  The main points to note are

* use "prth" rather than "print_thm" to inspect a theorem at top-level.  Calling
"print_thm" will be unsatisfactory because the pretty printer stores text in a
queue until it is forced out by further text or a call to Pretty.nl().

* change the ref variable "Pretty.margin" to set the margin for your terminal
(default 80).  The algorithm is slightly smarter than Oppen's original one, but
still can get into trouble when text gets near the right margin.


There is a new tactic for rewriting a single subgoal.
	rewrite_goal_tac: thm list -> int -> tactic  
Operators RS and RSN have been added for resolving theorems.
Also eresolve_tac for resolving with elimination rules.  Also tactics
REPEAT_SOME, REPEAT_FIRST.

Tactic cut_facts_tac adds a list of theorems to the assumptions of a subgoal.

Tactic subgoal_tac introduces an assertion as an assumption and a new subgoal.

In logics NJ and CTT, the tactic rebires_tac has been deleted.  These now use
simpler methods for theorem proving, using the tactic DEPTH_SOLVE_1 in search.

In CTT the tactic solve_tac has been renamed pc_tac -- to conform with NJ. 

There is a new module Simp for building simplifiers.  For an example of use,
see CTT/resolve.ML

In Tactic, operators RS and RSN have been added for resolving theorems.
Also eresolve_tac for resolving with elimination rules.  Also tactics
REPEAT_SOME, REPEAT_FIRST.

The treatment of theories has been modified.  There is now a Pure theory,
containing no object-logic, and new theories are built by extending old 
theories.  There are no primitive theories other than Pure.  Treatment of
syntax has been similarly modified.

The variable goals_limit is now available for suppressing the printing of
subgoals.  Type e.g. goals_limit:=5 if you only want to see the first 5 goals.
Initial value is 10.

Last updated 25 April 1989
