From mjcg%cam.sri.com@ai.sri.com  Fri Oct 27 01:39:08 1989
Received: by iris (5.57/3.14)
        id AA15229; Fri, 27 Oct 89 01:39:08 PDT
Received: from drakes.ai.sri.com by Warbucks.AI.SRI.COM with INTERNET ;
          Fri, 27 Oct 89 01:40:42 PDT
Received: from cam.sri.com by drakes.ai.sri.com (3.2/4.16)
        id AA22743 for info-hol@iris.ucdavis.edu; Fri, 27 Oct 89 01:40:30 PDT
Received: from gwyndir.cam.sri.com by cam.sri.com (4.0/4.16)
        id AA00222 for jasuja@iris.ucdavis.edu; Fri, 27 Oct 89 09:41:25 BST
Received: by gwyndir.cam.sri.com (4.0/4.16)
        id AA16642 for info-hol@iris.ucdavis.edu; Fri, 27 Oct 89 09:41:22 BST
Date: Fri, 27 Oct 89 9:35 BST
From: mjcg%cam.sri.com@Warbucks.AI.SRI.COM (Mike Gordon)
To: jasuja@iris.ucdavis.edu (Amit Jasuja)
Cc: info-hol@iris.ucdavis.edu
Subject: Re: type abbreviations in HOL
Message-Id: <mjcg.89.10.27.09:35.180@gwyndir>
In-Reply-To: jasuja's message of Thu, 26 Oct 89 165733 PDT

Hi,

You could use type abbreviations:


   The ML function

      new_type_abbrev : string#type->void

   introduces a new type abbreviation into the current theory.
   For example, executing

      new_type_abbrev(`numpair`, ":num#num")

   makes numpair an abbreviation for num#num so that, for example,
   "(1,2):numpair" is an abbreviation for "(1,2):num#num". Only
   monomorphic types can be abbreviated. The ML function type_abbrevs
   returns the list of type_abbreviations in a theory. Note that
   type abbreviations are currently not used when printing types
   (i.e. they are currently only useful as a kind of documentation in
   sources). I havn't yet decided whether it is worth fixing the printer
   to fold in type abbreviations.

I believe type-checking becomes undecidable if polymorphic
type abbreviations are allowed (but I am not certain
of this -- I remember a related issue being discussed
years ago at Edinburgh).

Hope this helps.

Mike


