
In the last few months I have been doing more work
on TkHolWorkbench, which is the graphical 
user interface I am developing for HOL.  I am not
quite ready to release this as a next major version,
mainly because I have not yet updated all the documentation files.
However, I am making it available for anyone willing to act
as a beta-tester, especially with regard to the installation
process.

TkHolWorkbench is available via ftp from:
   
Site: ftp.cl.cam.ac.uk
Directory: hvg/contrib/TkHolWorkbench/TkHolWorkbench.0.2b.tar.gz

At Cambridge it may be run by executing
	/usr/groups/hol/interfaces/TkHolWorkbench/bin/tkholhelper

The biggest feature in this version is that TkHolWorkbench
now supports the normal HOL interface.  Basically, this
means TkHolWorkbench looks just like your ordinary HOL
session, since it's stdin/stdout behave just like
an ordinary HOL process.  The great thing is that you
get some windows as well.  Ignore them if you want, but
sooner or later you just might find yourself
using them.

You can even run TkHolWorkbench from inside emacs, and it will
behave just like hol90 or hol88 normally would.  For hol90 users,
you can also run it with your favourite HOL executable by 
typing
	tkholwb -hol myhol90

Some other major additions in this version include:

	-  Installation  is  much  easier  now.  You no longer
	need  to  worry about downloading and compiling Tk and
	Tcl yourself.

	-  A  more  robust  communication  mechanism  is used,
	implemented using "Expect".

	- TkTheoryViewer is new and improved, with a nifty
	display of the theory graph.
	
	- There's a whole host of configuration options
	available under the "Options" menu.
	
	- There is a new tool - TkDefineType, which gives
	access to Tom Melham's type definition package.
	Defining types has never been so easy....
	
	- The TkTRS package is now better integrated into
	the system.  You can choose which theories you
	want to select from the main theory graph.


I  have  included  the  README  file  below.  As  always,  I'm
interested  in  hearing  any  feedback  from  people  who have
tried it.



		       ...Announcing...
			       
		      TkHolWorkbench 0.2 (beta)

(including TkTheoryViewer, TkHolShell, TkTRS and TkGoalProof)

			  Donald Syme
		    The Computer Laboratory
		     Cambridge University
		email: Donald.Syme@cl.cam.ac.uk


1. TkHolWorkbench

	The first beta release of TkHolWorkbench version 0.2 is now
	available.  
	

1.1. What is it?

	TkHolWorkbench  is  a  set  of  GUI tools and packages
	for  the  HOL theorem prover, implemented using the Tk
	toolkit.   The   TkHolWorkbench   tools   aim   to  be
	lightweight,  user  friendly,  robust  and extensible.
	This,  however,  is  an  early  release, so take these
	promises with a grain of salt.
	
	Part   of  the  idea  of  this  tool  is  to  generate
	feedback  on  what  people really want from a HOL GUI.
	The  aim  is not not to convert everyone over to using
	an  underdeveloped  interface.  If you let me know how
	the  packages  could be changed to actually be useful,
	I'd be glad.

	TkHolWorkbench is available via ftp from:
   
	Site: ftp.cl.cam.ac.uk
	Directory: hvg/contrib/TkHolWorkbench/TkHolWorkbench.0.2b.tgz

	The  file  is  about  2.5  MB  and includes compressed
	versions   of   Tcl   7.3,  Tk  3.6  and  Expect  5.7.
	Uncompressed  it  is  3  MB.  The total amount of disk
	space  used  by an installation will depend on whether
	you  already  have  Expect installed somewhere on your
	system.

1.1. TkHolWorkbench - For New and Old HOL users

	A  GUI  is theoretically a great tool for new users to
	learn  HOL.  This  preliminary  release does not allow
	users   to   access   all   functionality  via  a  GUI
	interface,  but  it  should still lessen the steepness
	of  the  HOL  learning curve. I would be interested to
	hear  feedback  from  any  new  users  who try out the
	system.

	TkHolWorkbench   provides  familiar  functionality  to
	old  HOL  users,  such  as  the regular HOL interface.
	This  means  you  can  switch  to using TkHolWorkbench
	without  changing  the  way you work. You can even run
	TkHolWorkbench from inside emacs.

	I'm  interested,  of course, to hear if TkHolWorkbench
	proves  useful  to  old  HOL  users,  but  I  am  also
	interested  in  hearing  from  you  if  TkHolWorkbench
	turns  out  to  be  *inferior*  to  your  current work
	environment.  So,  let  me  know  if  you  try it out,
	whether  your  experiences  were good or bad. How am I
	going to fix things if I don't get feedback?

1.2. Standard Programs in TkHolWorkbench

	Three     programs     come    standard    with    the
	TkHolWorkbench:    "tkholshell",   "tkholhelper"   and
	"tkholwb". In this release the last two are identical.

	In all the programs the standard HOL interface is
	available just like normal.
	
	tkholshell:
		A  simple  shell interface to HOL, similar
		to what you get if you run HOL from an xterm.

		However, as bonuses you get command history,
		plus you can run multiple shells acessing the one
		HOL session.
		
	tkholhelper/tkholwb:
		This incorporates the following tools:
			TkTheoryViewer
			TkTRS
			TkGoalProof
			TkDefineType
			TkHolShell
		

1.3. TkHolWorkbench - Flexible architecture

	The  architecture  of TkHolWorkbench is of independent
	but  cooperating  packages.  A  collection of packages
	run  together  forms a program. Users may, without too
	much  trauma,  write  their  own  packages and add run
	them  in  combination  with  either  TkTheoryViewer or
	TkTheoryEditor.   An  example  (skeleton)  package  is
	included with this release to help enable this.

	Each  of  the  "programs"  described above is really a
	simple   shell  script  which  combines  a  number  of
	"packages"  (Tcl  code libraries) and creates some top
	windows.  Thus,  it  is  trivial to add new libraries,
	specify  extra  top  windows, stop some libraries from
	ever  being  looked  at and so on. For example, if you
	decide  you  don't like TkGoalProof, and never perform
	goal directed proofs anyway, you can run:

		tkholwb -stoppackage TkGoalProof

	and the package won't be loaded. To include your own 
	package is as simple as:

		tkholwb -package ~/MyPackage -win MyPackageWin

	I   am  open  to  offers  from  people  interested  in
	becoming  co-developers  of  TkHolWorkbench. I am also
	interested  in  hearing  as  much feedback as possible
	on  what  people  find  useful in the different tools,
	as well as bugs and suggestions of improvements.
	
2. More On The TkHolWorkbench Packages	

2.1. TkTheoryViewer

	TkTheoryViewer  is  a  GUI  theory browser for HOL. It
	is  most  useful  for investigating theory heirarchies
	and  displaying  often  used  theories  for reference.
	TkTheoryViewer  can  display the theorems, definitions
	and   axioms   for   any   theories  loaded  into  the
	underlying  HOL session.  
	
	For  hol88  users, theorems can be displayed in either
	plain  text  or  rich text formats. Plain text is like
	the  normal  HOL output format, whereas rich text uses
	symbols,  fonts  and  colours to display theorems in a
	more readable fashion.	    
	
	TkTheoryViewer  works  with both hol88 and hol90. Rich
	text  formatting  of  theorems  is only available with
	hol88  systems  built  with  AKCL, but will eventually
	be available with all HOL systems.

2.2. TkTRS (TRS = Theorem Retrieval System)
	
	TkHolWorkbench  also  comes  with  the  TkTRS package,
	which  is  an  interface  to Richard Boulton's Theorem
	Retrieval  System  (trs)  library. TkTRS is a tool for
	searching  across  theories  for  useful  theorems and
	definitions.  The  results  are  displayed  in  result
	windows  and,  in  hol88,  the  theorems  may again be
	displayed rich text format.
	
	TkTRS  works  with  both  hol88  and  hol90. The TkTRS
	source  code  includes a rough port of the trs library
	to hol90.

	See  USAGE.tkholhelper  for  details  on how to run
	tkholhelper.  In  general  it  will  be a matter of
	running
	
		.../TkHolWorkbench/bin/tkholhelper -hol <hol88 | hol90>

2.3. TkHolShell
	Well, try it and see...

2.3. TkGoalProof
	Well, try it and see...

2.3. TkDefineType
	Well, try it and see...



3. AVAILABILITY

	The  latest  versions  of  all  the  programs  in  the
	TkHolWorkbench suite can always be found at:
	
		ftp://ftp.cl.cam.ac.uk/hvg/...
		
	You  will  need  a  copy  of  either hol88 or hol90 on
	your  system.  If  you  are  using  a private (dumped)
	copy    of    hol90   incorporating   your   favourite
	libraries,  you  may  use that with the TkHolWorkbench
	programs  by  specifying  the  executable  ith  a -hol
	switch on the command line. See USAGE fo more details.

4. INSTALLATION

	See ./INSTALL for details.

5. USAGE

	See ./USAGE.* for more details.

	There are loads of command line switches that can be given
	to control how TkHolWorkbench progams startup.  Hol90
	users will need to provide the flag

		tkholwb -hol hol90	
		tkholshell -hol hol90
		tkholhelper -hol hol90

	Here hol90 can be your own hol90 executable, with
	your favourite libraries loaded in.
	
6. BUGS AND PROBLEMS

	This  is  an  early  release.  There will be problems,
	especially  with  different  configurations and window
	managers.  Mail  me with problems you have.

	I  am  doing  a  3 year PhD. at Cambridge, and plan to
	maintain  these  tools  and extend them during my time
	here.  This is not my major PhD. work, however, merely
	a time consuming sidetrack.


7. SUGGESTIONS, FUTURE WORK AND PATCHES

	I  am  keen to involve others, particularly in writing
	new  packages  to  add  to  the  TkHolWorkbench suite.
	Ultimately  I  would  like to see interface components
	come  standard  with  each  HOL library/extension. In
	the modern world good work deserves a good interface.

	I   am   also   interested   in   supporting   similar
	interfaces  to  other  theorem proving systems. Nearly
	all  the  TkHol  code  should  be  portable  to  other
	theorem provers.  A pilot project with Isabelle might
	be the likely first step (any offers of help??)




