Changes by: Aleksey Nogin (nogin at cs.caltech.edu)
Date: 2006-08-24 12:04:44 -0700 (Thu, 24 Aug 2006)
Revision: 9531
Log message:

      Implemented support for "opqaue" definitions. An "opaque" definition can only
      be unfolded inside the theory that it's in.
      
      In order to use this, add the keyword "opaque" right after "define" in .ml
      file.
      
      Caveats:
       - Currently we only implement a "soft" restriction that can be easily
         circumvented. The "opaqueness" currently means that the rewrite will be
         added to the toploop resource as a "private" (not inheritable) entry. In
         other words, the definition unfolding conversion will only be visible in
         the toploop of the module that it's in, but one can easily make it visible
         outside of the module through ML.
       - Note that any resource annotation on an "opaque" definition will
         automatically be considered private (i.e. not be inherited by descendant
         theories).
      
      Todo:
       - The syntax is currently fragile - for example, for const definitions one
         has to use "define opaque const", while "define const opaque" will be
         rejected. We should allow an arbitrary ordering of these "flags".
       - We should consider enforcing the "opaqueness" of a definition via the
         refiner's sentinels. Alternatively, we might implement both the "soft opaque"
         restriction and the "hard opaque" one, but this will probably be
         unnecessary.
      
      P.S. I had to fix two HOAS proofs that refered to other module's definition
      for no good reason. Both proofs actually became simpler as a result,
      suggesting that the "opaqueness enforcement" is actually a good idea,
      
      P.P.S. Also, a number of proofs lost some (presumably unnecessary) primitive
      proof steps (probably because of the resource annotations becoming private -
      see the second caveat above). Again, seems like a good thing.
      

Changes  Path
+9 -6 metaprl/filter/base/filter_magic.ml
+29 -22 metaprl/filter/base/filter_summary.ml
+2 -1 metaprl/filter/base/filter_type.ml
+10 -5 metaprl/filter/filter/filter_parse.ml
+18 -17 metaprl/filter/filter/filter_prog.ml
+2 -1 metaprl/filter/filter/filter_reflect.ml
+8 -5 metaprl/support/display/summary.ml
+3 -3 metaprl/theories/itt/core/itt_int_ext.ml
+4 -4 metaprl/theories/itt/core/itt_list.ml
+1 -1 metaprl/theories/itt/core/itt_tunion.ml
+5 -5 metaprl/theories/itt/reflection/core/itt_hoas_base.ml
+6 -6 metaprl/theories/itt/reflection/core/itt_hoas_debruijn.ml
+5631 -5056 metaprl/theories/itt/reflection/core/itt_hoas_debruijn.prla
+2 -2 metaprl/theories/itt/reflection/core/itt_hoas_destterm.ml
+3 -3 metaprl/theories/itt/reflection/core/itt_hoas_vector.ml
+1 -1 metaprl/theories/itt/reflection/experimental/itt_hoas_bterm.ml
+4007 -3970 metaprl/theories/itt/reflection/experimental/itt_hoas_bterm.prla