While history of these matters is topical, I thought I might describe the origin of this facility and the practical rationale for conservativity at that time. My memory is not completely reliable, so there might be something here which I have misremembered but I think the main features will be good.

All of the definitional facilities had their origin prior to Andy Pitts being asked to provide proofs of consistency, and the original definitional facilities were found not to be conservative.

I started to work with HOL in 1986 and in the course of my work (not too sure of the timing but definitely before HOL88) realised that the then definitional facilities could be manipulated to derive a contradiction. This I did, using a simple constant definition, and Rob Arthan then observed that type definition could also achieve the same effect.
The remedy was straightforward so I think these holes were quickly fixed,

Mike Gordon, at that time, did not regard the definitional facilities as part of the "The Logic" and did not consider that we had shown his formulation of higher order logic to be inconsistent, but he was nevertheless keen to avoid any more problems of this kind and doubtless this figured in the rationale for getting some theoretical underpinning.

Not long thereafter we (at ICL) took a contract for the design, formal verification, and manufacture of a secure hardware device, and the origins of "new_specification" flowed from the approach we took to this work.
This was 1988 I believe, but before HOL88 was available.
The specifications to be verified were to be available both in Z and in HOL with the HOL versions being definitive.

In order to be able to say that HOL was a sound prover and that to the best of our knowledge it was not possible to prove a falsehood in HOL, we produced a minor variant of the HOL ITP, in which "new_axiom" and "mk_thm" were disabled (once essential uses were in place) and a new "delete_definition" was included.

"delete_definition" was our precursor to "new_specification" and provided a first informal argument for the conservativity of "new_specification".

The reason we wanted it was because Z allows constants to be "defined" by "axiomatic specifications", which look awfully like arbitrary new axioms, and we wanted a similar style of specification constrained to be conservative.
The simple way to do this is using choice.

Thus a Z specification, which might be like this:

|     c:T
|----------
|     P c

introducing a new constant c having property P, is transcribed into something in HOL which
looks similar but behind the scenes is translated into the definition:

    c = @x:P x

This does ensure that the introduction of the new constant is conservative, but goes a little bit too far. The bit too far is of course, that all constants introduced in the same way (with the same predicate P) are provably equal, which is not the intention.

"delete_definition" allowed us to eliminate this overshoot, by introducing a new definitional facility which was a precursor to "new_specification" (I can't remember what we actually called it). This allowed a new constant (or group of constants) to be introduced using any property P of those constants.
The constant would be introduced using new_definition and choice.
 We then proved the theorem:

     ?x:P |- P c

saved that and then deleted the definition made using choice (all behind the scenes of course).

"delete_definition" deleted the axiom introduced by a definition, but preserved the fact that the relevant constants had been defined, and could not therefore be defined again. Introducing "delete_definition" by a very elementary pragmatic argument, clearly could not compromise the consitency of the system, since its only effect was to remove theorems.

So we put it to Mike Gordon (who was a consultant on our project) that this would be a good thing to add into HOL. "delete_definition" proved controversial, but the effect it was intended to realise was not quite so controversial, and after a bit of further dialogue (mainly from our end with Rob) "new_specification" was born. I think it probably first appeared in HOL88, but by then we had locked down our little HOL fork for the hardware verification and so we continued for that project to use a HOL which achieved the same effect using :"delete_definition". Presumably this added to Mike's concerns about consistency of HOL which were addressed a few years later by Andy Pitts.
By then we were embedding Z in ProofPower-HOL.

Several decades later Rob decided on a little further liberalisation, I can't remember why now (if I ever knew). Whether the "it could be done with choice and delete_definition" argument still works I don't know.

Roger Jones




















------------------------------------------------------------------------------
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