From Phil Windley, 01 May 89
To: info-hol@clover.ucdavis.edu
Subject: HOL 88 Feature Report
Date: Mon, 01 May 89 08:45:13 EDT
From: Phil Windley <pjw%air12.larc.nasa.gov@munnari.oz>
Status: RO


The following is from Mike Gordon:



                 |============================|
                 |                            |
                 |   HOL 88 FEATURE REPORT    |
                 |   ---------------------    |
                 |                            |
                 |        Mike Gordon         |
                 |                            |
                 |  Cambridge, 27 April 1989  |
                 |                            |
                 |============================|


In HOL88 sticky types are optional (see hol/HOL88.doc), but are
switched off by default. This forces the user to be more explicit
about types in quotations, and thus eliminates tricky bugs in which
variables pick up wrong types from the context. It also means that
the input to HOL needs to be a bit more verbose (because more explicit
typing is needed). Sticky types can be restored by setting the flag
`sticky` to true.

One feature of not having sticky types is that type information does not
propagate across antiquotation boundaries. For example:

   #let tm = "y = x+1";;
   tm = "y = x + 1" : term

   #"!x.?y.^tm";;
   Indeterminate types:  "$!:(? -> bool) -> bool"

   evaluation failed     types indeterminate in quotation

This can be fixed by switching sticky types back on:

   #set_flag(`sticky`,true);;
   false : bool

   #let tm = "y = x+1";;
   tm = "y = x + 1" : term

   #"!x.?y.^tm";;
   "!x. ?y. y = x + 1" : term

Thanks to Tom Melham and Philippe Leveilley for drawing my attention to
this new feature.

Mike Gordon

