[isabelle-dev] typedef

Andreas Schropp schropp at in.tum.de
Fri Aug 26 22:34:55 CEST 2011

On 08/26/2011 10:51 PM, Makarius wrote:
> On Fri, 26 Aug 2011, Andreas Schropp wrote:
>> On 08/26/2011 07:08 PM, Brian Huffman wrote:
>>> As far as I understand, the typedef package merely issues global
>>> axioms of the form "type_definition Rep Abs S", as long as it is
>>> provided with a proof of "EX x. x : S".
>> The global axiom is
>>  EX x. x : A ==> type_definition Rep Abs A
>> allowing local typedefs whenever non-emptiness of A is
>> derivable, even using assumptions in the context.
> Yes, this is the key point.  By digging further in the Mercurial 
> history, you will see when I actually introduced it -- way before the 
> "localized" typedef.  (I am not digging myself, because I am not 
> participating in this strange game of the seasion to generate workload 
> by changing long-standing things arbitrarily.)

You did not change the global axiom, but before local typedefs
the non-emptiness proofs were global.

>> This is not really a problem, but complicates my conservativity 
>> argument. Before local typedefs the proof of (EX x. x : A) was 
>> global. Actually Makarius' attitude on this was that those 
>> non-emptiness proofs "should be global most of the time", but he 
>> didn't want to introduce a check.
> I don't understand this.  Local typedefs are just a conjuring trick 
> around plain old global ones (in the above presentation) -- no changes 
> of the logical foundations here.

Formerly the non-emptiness proof was global, now its local!

locale bla =
   assume "False"
   typedef empty = {}

Now I have to put up with the fact the semantic interpretation of empty is
the empty set. Formerly only non-empty sets were semantic interpretations of
type constructors. The way around this is to localize derivations related to
type constructor well-formedness, using False to forge all those crazy 

More information about the isabelle-dev mailing list