


		       ...Announcing...
			       
                          TkHol 0.3b 

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


	TkHol is available via ftp from:
   
	Site: ftp.cl.cam.ac.uk
	Choose one of:
 		hvg/contrib/TkHol/TkHol.0.3b.tar.gz
	 	hvg/contrib/TkHol/TkHol.0.3b.WithoutTclTk.tar.gz
		hvg/contrib/TkHol/TkHol.0.3b.WithoutTclTkExpect.tar.gz

	(The  latter  files  are  smaller and can be used if you already
	have  Tcl/Tk  and/or  Expect installed on your system.
	You  can check this by trying to run the programs
	"wish" (for Tcl/Tk) and "expectk" (for Expect).)

	At the Cambridge Computer Laboratory TkHol may be run by executing
        
		/usr/groups/hol/interfaces/TkHol/bin/tkhol

  	If you're just interested in knowing more about TkHol,
	and perhaps looking at some screen dumps, you can access
	the TkHol home page at:
		http://www.cl.cam.ac.uk/users/drs1004/TkHol.html

0. Changes since 0.2

	TkHol has developed significantly since version 0.2.
	Many of the features have been thoroughly tested and
	refined, while some features are experimental
	and still work fairly roughly.

	TkHol is now only supported for hol90.

	The main features added in this version include:

	- RichText, structured pretty printing for hol90.  Previously
	an experimental version of this was implemented in hol88,
	which is now no longer supported.  Subterms may
	be selected and pasted into other windows.  Fonts
	and symbols may be configured, though there is not
	yet a good interface for doing this.

	- A sophisticated goal proof management package has been developed.
        This has been the most appealing
	feature for most people I have demonstrated the system to.

		- You may replay proofs, stepping through them
		to observe what's going on or work out
		what's going wrong.  Proofs may be taken
		from any ML script file, or from theories
		in the core of the system itself.

		- You may fast forward through faulty proofs to 
		quickly get to the problem location.

		- You may view the state of the proof
		at previous tactic applications by clicking on the
		"Entire Tactic" window.  You can also solve
		subgoals in any order without having to use
		rotation.

		- When you backup TkGoalProof remembers
		your attempts at proof and prompts you with
		them as you then proceed forward again.

		- A tactic history mechanism is available.
		You may access this by using Meta-N and Meta-P
		in the Next Tactic window, or from the menus.

		- You may configure your tactic menus.

	- TkHol comes packaged with a short tutorial.
	See the Help menu on the main window for more details.

	- A (fairly rudimentary) ML source browser is included.
	This analyses ML files from your project and displays
	it along with a descriptions of its top-level actions.
	You may replay proofs (even ones that have not yet been
	run in HOL) from this window.

	NOTE: This window needs tighter integration with gnuemacs
	to integrate properly into a typical work environment.

	- Tools for making new (simple) definitions and 
	recursive definitions have been added.

	- TkDefineType is supported as before, allowing
	recursive type definitions to be made very easily.

	- TkTRS is still supported - it allows theory searches.

1. TkHol


1.1. What is it?

	TkHol  is  a  set  of  GUI tools and packages
	for  the  HOL theorem prover, implemented using the Tk
	toolkit.   The   TkHol   tools   aim   to  be
	lightweight,  user  friendly,  robust  and extensible.
	This,  however,  is  still 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 theorem
	prover interfaces.
	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.

	TkHol is available via ftp from:
   
	Site: ftp.cl.cam.ac.uk
	Directory: hvg/contrib/TkHol/TkHol.0.3b.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.  You need to build an extended
	hol90 executable, which will take about 14MB of disk space.


1.1. TkHol - 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.

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

	I'm  interested,  of course, to hear if TkHol
	proves  useful  to  old  HOL  users,  but  I  am  also
	interested  in  hearing  from  you  if  TkHol
	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 TkHol

	See  USAGE.tkhol  for  details  on how to run
	tkhol.  In  general  it  will  be a matter of
	running
	
		.../TkHol/bin/tkhol -on

	In all the TkHol programs the standard HOL interface is
	available just like normal. Also available is:
	
	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.
		
		

1.3. TkHol - Flexible architecture

	The  architecture  of TkHol 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  the main program.   
        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,  in the long run it should be
        possible  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:

		tkhol -stoppackage TkGoalProof

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

		tkhol -package ~/MyPackage -win MyPackageWin

	I   am  open  to  offers  from  people  interested  in
	becoming  co-developers  of  TkHol. 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 Some Of The TkHol Packages	

2.1. TkTheoryViewer

	TkTheoryViewer  is  a  GUI  theory browser for HOL. It
	is  most  useful  for investigating theory heirarchies
	and  displaying   theories  for reference.
	TkTheoryViewer  can  display the theorems, definitions
	and   axioms   for   any   theories  loaded  into  the
	underlying  HOL session.  
	
	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 also forms the "main" window of the system,
	and most other functionality is available from here.
	In future release it will be possible to place these
	launcher menus on other top-level windows too.
	

2.2. TkTRS (TRS = Theorem Retrieval System)
	
	TkHol  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  a result
	window.
	
	TkTRS  works  with  hol90. The TkTRS
	source  code  includes a rough port of the trs library
	to hol90.



3. AVAILABILITY

	The  latest  versions  of  all  the  programs  in  the
	TkHol suite can always be found at:
	
		ftp://ftp.cl.cam.ac.uk/hvg/contrib/TkHol/
		
	You  will  need  a  copy  of  hol90 on
	your  system.  

4. INSTALLATION

	See ./INSTALL for details.

5. USAGE

	See ./USAGE.* for more details.

	You can access all functionality via the TkTheoryViewer
	which starts up initially.  You can also access some 
	interface functionality	from the command line:


    xbrowse : string -> unit

	Start a lightweight TkTheoryViewer window for the given theory.
	No theory tree is displayed.

    xprove : unit -> unit

	Start a backward proof window

    interface_on : unit -> unit

	Start a full blown TkTheoryViewer, just as is created by th	
	-on switch on the command line.

    interface_off : unit -> unit

	Close all TkHol windows, but leave the command line active.

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, but is related
	to it.

7. SUGGESTIONS, FUTURE WORK AND PATCHES

	I  am  keen to involve others, particularly in writing
	new  packages  to  add  to  the  TkHol 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??)




