[isabelle-dev] (Re-)introducing set as a type constructor rather than as mere abbreviation

Tobias Nipkow nipkow at in.tum.de
Fri Aug 12 07:51:20 CEST 2011

The benefits of getting rid of set were smaller than expected but quite
a bit of pain was and is inflicted. Sticking with something merely to
avoid change is not a strong argument. This time we know what we go back
to and the real benefits (and the few losses). Hence I would be in favour.


Am 11/08/2011 14:43, schrieb Florian Haftmann:
> Hello together,
> recently in some personal discussions the matter has arisen whether 
> there would be good reason to re-introduce the ancient set type 
> constructor.  To open the discussion I have carried together some 
> arguments.  I'm pretty sure there are further ones either pro or
> contra, for which this mailing list seems a good place to collect
> them.
> Why (I think) the current state concerning sets is a bad idea: *
> There are two worlds (sets and predicates) which are logically the 
> same but syntactically different.  Although the logic construction 
> suggests that you can switch easily between both, in practice you
> can't – just do something like (unfold mem_def) and your proof will
> be a mess since you have switched to the »wrong world«. * Similarly,
> there is a vast proof search space for automated tools which is not
> worth exploring since it leads to the »wrong world«, making vain
> proof attempts lasting longer instead just failing. * The logical
> identification of sets and predicates prevents some reasonable simp
> rules on predicates: e.g. you cannot have (A |inf| B) x = A x & B x 
> because then expressions like »set xs |inter| set ys« behave
> strangely if the are eta-expanded (e.g. due to induction). * The
> missing abstraction for sets prevents straightforward code generation
> for them (for the moment, the most pressing, but not the only 
> issue).
> What is your opinion?
> In a further e-mail I give some estimations I gained through some 
> experiments to figure out how feasible a re-introduction would be in 
> practice.
> Btw. the history of the set-elimination can be found here: 
> http://isabelle.in.tum.de/repos/isabelle/shortlog/26839
> Cheers, Florian
> _______________________________________________ isabelle-dev mailing
> list isabelle-dev at in.tum.de 
> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

More information about the isabelle-dev mailing list