Hi Ken,

| John's e-mail on the motivation for HOL Light and his comparison with
| Andrews' systems is highly interesting. I would suggest an article "On the
| Logical Foundations of HOL Light" or similar to make the information
| persistent, as the policy of the mailing list provider may change. For now,
| I have quoted from the publicly available e-mail via the online link.

I am glad you found it interesting. Indeed, I don't think I've ever
written a detailed canonical description of the HOL Light foundations,
though there are brief summaries scattered in various places, so this is
certainly something to think about.

On the history of HOL Light and related systems, in addition to those
you have already discussed, let me shamelessly plug a book chapter
written by Josef Urban, Freek Wiedijk and myself on the history of
interactive theorem proving in general. This in particular discusses LCF
and its successors, especially HOL, in section 3, complete with another
little "family DAG" of HOL systems on page 19:

  http://www.cl.cam.ac.uk/~jrh13/papers/joerg.html

Also of historical interest may be my old unpublished note "HOL Done
Right":

  http://www.cl.cam.ac.uk/~jrh13/papers/holright.html

That describes an intermediate stage in the evolution of HOL Light when
the logical kernel still had implication as a primitive. The setup
described there is also of some relevance to the discussion of type
definition principles in a related thread, because it sketches what (as
Rob notes in his paper) was the first version of a definitional
principle that is roughly a "unary" version of his own idea. At the risk
of reiterating what you can read in Rob's paper, let me explain my
motivations there.

Roger Jones gave an excellent description of the origins of what in
HOL88 were called "new_definition" (a simple |- c = t binding) and
"new_specification" (introducing constants satisfying a predicate given
an existential theorem). One more perceived rough edge in HOL88 and
hol90 that I wanted to fix in HOL Light was that there should indeed be
two completely different definitional principles when they are
tantalizingly close to being interderivable:

 * Since |- exists x. x = t is clearly provable, one can derive 
   "new_definition" fron "new_specification". There is however a
   bootstrapping problem because "new_definition" is used to 
   define the existential quantifier on which "new_specification"
   depends!

 * Once the epsilon operator is present, one can easily derive
   "new_specification" from "new_definition", but only with the
   motivating drawback mentioned by Roger Jones that you get
   "too much information" about the introduced constants.

In the early versions of HOL Light I chose the slightly different
approach of taking as primitive a variant of "new_specification" that
allowed one to introduce a new constant c and a theorem |- P[c] given an
input theorem |- P[t] for a specific term t, not |- exists x. P[x] as in
"new_specification". Then no quantifiers are involved, and
"new_definition" is a trivial instance because of reflexivity |- t = t,
while "new_specification" can be derived from the epsilon operator
without exposing too much information. One needs of course some
restrictions on variables and type variables analogous to those Roger
discussed. (Amusingly, I too got them wrong in the first instance, as
Tom Melham spotted instantly when I first showed him the code. This
was long before HOL Light was a public system.)

At some point I switched HOL Light back to the simple |- c = t
"new_definition" because it seemed slightly simpler and more intuitive,
and I have personally never been very interested in the "too much
information" problem (I generally want to define things explicitly, not
leave them underspecificed). I can quite well see the arguments for
Rob's version though.

John.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to