From mjcg%cam.sri.com@ai.sri.com  Fri Dec  8 13:44:26 1989
Received: by iris (5.57/3.14)
        id AA00352; Fri, 8 Dec 89 13:44:26 PST
Received: from Warbucks.AI.SRI.COM by clover.ucdavis.edu (5.59/UCD.EECS.1.11)
        id AA25841; Fri, 8 Dec 89 13:47:47 PST
Received: from drakes.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
          Fri, 8 Dec 89 13:44:59 PST
Received: from cam.sri.com by drakes.ai.sri.com (4.1/4.16)
        id AA28861 for info-hol@clover.ucdavis.edu; Fri, 8 Dec 89 13:44:24 PST
Received: from gwyndir.cam.sri.com by cam.sri.com (4.0/4.16)
        id AA07597 for info-hol@clover.ucdavis.edu; Fri, 8 Dec 89 21:45:21 GMT
Received: by gwyndir.cam.sri.com (4.0/4.16)
        id AA09206 for info-hol@clover.ucdavis.edu; Fri, 8 Dec 89 21:45:17 GMT
Date: Fri, 8 Dec 89 21:41 GMT
From: mjcg%cam.sri.com@Warbucks.AI.SRI.COM (Mike Gordon)
To: info-hol@clover.ucdavis.edu
Subject: Documentation
Message-Id: <mjcg.89.12.08.21:41.940@gwyndir>


                     *************************
                     THE NEW HOL DOCUMENTATION
                     *************************


Version 1 of the new HOL documentation is now avalable.  It consists of three
volumes:

   1. TUTORIAL: a tutorial introduction to HOL, with case studies
      on protocol verification (by R. Cardell-Oliver), microprocessor
      verification (by J. Joyce) and modular arithmetic via group theory
      (by E. Gunter) (345 pages).

   2. DESCRIPTION: a description of higher order logic
      (with a formal semantics by A.M. Pitts), the ML programming
      language, and the theorem proving methods supported by the
      HOL system  (285 pages, including a 23 page index).

   3. REFERENCE: the reference documentation of the programming
      and theorem proving tools available in HOL
      (564 pages, including a 17 page index).

The documents TUTORIAL and DESCRIPTION are fairly polished, but REFERENCE
contains of a considerable amount of preliminary material. It does, however,
have something on everything in the HOL system (sometimes the source code,
sometimes preliminary documentation and sometimes polished documentation).

We expect to reprint the documentation (with additions and corrections) early
in 1990 and to produce a new edition in the summer.

The three documents are printed on good quality paper and come in specially
designed binders with printed covers. The LaTeX source of the documents are
distributed with HOL88 Version 1.11.  The help system of HOL88.1.11 shares the
same database that is used to build REFERENCE.

Tapes of HOL88.1.11 and copies of of the Version 1 documentation will be
available at cost price at the HOL Users' Meeting. The exact amounts are still
being worked out, but a cassette containing HOL88.1.11 is likely to be about
30 pounds and the complete documentation package is is likely to be about 70
pounds. If you want either of these, please be prepared to pay in sterling.

   N.B. Attendees at the Users' Meeting please note that it is in TRINITY HALL
   ==== College NOT in the more famous Trinity College!

The top-level contents of TUTORIAL, DESCRIPTION and REFERENCE are given below.


-------------------------------------------------------------------

TUTORIAL
========

PART I Getting Started with HOL

1 Getting and Installing HOL
 1.1   Getting HOL
 1.2   The info-hol mailing list
 1.3   Installing HOL
 1.4   Building HOL from sources
 1.5   The HOL licence

2 Introduction to ML
 2.1   How to interact with ML

3 The HOL Logic
 3.1   Overview of higher order logic
 3.2   Terms
 3.3   Theories

4 Introduction to Proof with HOL
 4.1   Forward proof
 4.2   Rewriting
 4.3   Tautologies

5 Goal Oriented Proof: Tactics and Tacticals
 5.1   Using tactics to prove theorems
 5.2   Tacticals
 5.3   Some tactics built into HOL

References

PART II Case Studies using HOL

6 Case Study: Parity Checking
 6.1   Introduction
 6.2   Specification
 6.3   Implementation
 6.4   Verification
 6.5   Exercises
 6.6   References

7 Case Study: Protocol Verification
 7.1   Introduction
 7.2   Files
 7.3   Informal specification
 7.4   Specification
 7.5   Verification
 7.6   References
 7.7   Appendix A: supporting theories
 7.8   Appendix B: special tactics

8 Case Study: Microprocessor Systems
 8.1   Introduction
 8.2   Programming level model
 8.3   Memory interface
 8.4   Internal architecture
 8.5   Abstract description and specification
 8.6   Formal specification
 8.7   Verification plan and methodology
 8.8   Formal verification: `bread and butter' method
 8.9   Synchronizing multiple levels of timing
 8.10  Using temporal logic to deal with asynchrony
 8.11  What has been proved ?
 8.12  Relating this proof to other levels
 8.13  Summary
 8.14  References
 8.15  Suggested exercises
 8.16  Appendix: phase level correctness results
 8.17  Appendix: asynchronous memory specification

9 Case Study: Modular Arithmetic
 9.1   Introduction
 9.2   Subgroups of the integers
 9.3   Basic modular arithmetic
 9.4   Subgroups of the integers, revisited
 9.5   Appendix: related pre-proven theorems
 9.6   Appendix: general-purpose tactics
 9.7   Appendix: specialized tactics and functions

-------------------------------------------------------------------

DESCRIPTION
===========

PART I The Meta-language ML

1 The History of ML
 1.1   Preface to `The ML Handbook'
 1.2   Preface to `Edinburgh LCF'

2 Introduction and Examples
 2.1   Expressions
 2.2   Declarations
 2.3   Assignment
 2.4   Functions
 2.5   Recursion
 2.6   Iteration
 2.7   Lists
 2.8   Strings
 2.9   Polymorphism
 2.10  Lambda-expressions
 2.11  Failure
 2.12  Type abbreviations
 2.13  Concrete types
 2.14  Abstract types
 2.15  Type constructors

3 Syntax of ML
 3.1   Syntax equations for ML
 3.2   Notes on the syntax equations for ML
 3.3   Identifiers and other lexical matters

4 Semantics of ML
 4.1   Declarations
 4.2   Expressions

5 ML Types
 5.1   Types and objects
 5.2   Typing of ML phrases
 5.3   Discussion of type constraints
 5.4   Type abbreviations
 5.5   Concrete types
 5.6   Abstract types

6 Primitive ML Identifier Bindings
 6.1   Predeclared ordinary identifiers
 6.2   Predeclared dollared identifiers

7 General Purpose and List Processing Functions
 7.1   Miscellaneous list processing functions
 7.2   List mapping and iterating functions
 7.3   General purpose functions and combinators
 7.4   List searching functions
 7.5   List transforming functions
 7.6   Miscellaneous string processing functions
 7.7   Failure handling functions

8 ML System Functions
 8.1   Input and output
 8.2   Output
 8.3   Exiting and re-entering the system
 8.4   Autoloading
 8.5   Interpreting lists of numbers as ML input
 8.6   Initialization
 8.7   Operating system calls from ML
 8.8   Getting the version number
 8.9   Signature and ordering of ML values
 8.10  Printing defined types
 8.11  Lisp in ML
 8.12  Fast arithmetic
 8.13  Flags
 8.14  Modifying the ML read-eval-print loop
 8.15  Relocating HOL
 8.16  Libraries

PART II The HOL Logic

9 Syntax and Informal Semantics
 9.1   Types
 9.2   Terms
 9.3   Standard notions
 9.4   Sentences and sequents
 9.5   Theories
 9.6   Extensions of theories

10 Set-Theoretic Semantics
 10.1  Types
 10.2  Terms
 10.3  Theories
 10.4  Extensions of theories

PART III The HOL System

11 The HOL Logic in ML
 11.1  Lexical matters
 11.2  Types
 11.3  Terms
 11.4  Quotation
 11.5  Theorems
 11.6  Theories
 11.7  The ancestry of the theory HOL
 11.8  The type definition package
 11.9  Miscellaneous system features

PART IV Theorem Proving with HOL

12 Derived Inference Rules
 12.1  Simple Derivations
 12.2  Rewriting
 12.3  Derivation of the standard rules

13 Conversions
 13.1  Conversion combining operators
 13.2  Writing compound conversions
 13.3  Rewriting tools

14 Goal Directed Proof: Tactics and Tacticals
 14.1  Tactics, goals and justifications
 14.2  The subgoal package
 14.3  Some tactics built into HOL
 14.4  Tacticals
 14.5  Tactics for manipulating assumptions

References
Index

-------------------------------------------------------------------

REFERENCE MANUAL
================

1 General Functions
 1.1   Preliminary documentation

2 Logic Functions
 2.1   Preliminary documentation

3 Inference Rules
 3.1   Preliminary documentation

4 Tactics and Tacticals
 4.1   Preliminary documentation

5 Pre-proved Theorems
 5.1   Axioms
 5.2   Logical tautologies
 5.3   Theorems about the type one
 5.4   Theorems about combinators
 5.5   Theorems about pairs
 5.6   Theorems about disjoint sums
 5.7   Theorems about arithmetic
 5.8   Theorems about lists
 5.9   Theorems about trees
 5.10  Theorems used to define types

6 Libraries
 6.1   Preliminary documentation

Index




