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

Florian Haftmann florian.haftmann at informatik.tu-muenchen.de
Wed Sep 7 21:58:25 CEST 2011

Hi all,

again a report about the current affairs:

a) state of discussion
IMHO I view the discussion at the point that we want 'a set back after
the next release.  As a consequence, developers are cordially invited to
figure out remaining problems involving their contributions to the
system, or scream aloud when their resources do not allow so at the moment.

b) state of affairs in the distribution

      -> figure out problem with Ā»refuteĀ« in Refute_Examples.thy with
"distinct [a, b]"
      -> two proofs commented out, would need to enter the game of
proof-text minimazation
    HOL-Nominal-Examples FAILED
      -> still existing user-space problem, I will look after it
    HOL-Metis_Examples FAILED
    HOL-MicroJava FAILED
      -> user-space problem, should be easy to solve
    HOL-Nitpick_Examples FAILED
    HOL-Predicate_Compile_Examples FAILED
    HOL-Word-SMT_Examples FAILED
      -> codegen problem, I will look after it

working, but needs improvement:
      -> two proofs in Set_Theory commented out, would need to enter the
game of proof-text minimazation
      -> type class instantiation for sets needed, c.f. ->

c) state of affairs in the AFP

currently failing (including transitive failures):
    BDD Cauchy Coinductive Collections Completeness CoreC++
DataRefinementIBP FinFun Free-Groups Functional-Automata GraphMarkingIBP
HRB-Slicing InformationFlowSlicing Jinja LightweightJava
LinearQuantifierElim Ordinals_and_Cardinals POPLmark-deBruijn
Regular-Sets Shivers-CFA Simpl Slicing Tree-Automata

I.e 23 out of 99, which does not look that bad.  I guess most of these
sessions have come into being after Isabelle2008.

It would be a bad idea to go ahead and provide forked versions of these.
* Figure out where the problem is, maybe with some experiments.
* Contact the author and ask what (s)he thinks about that.
* Some things have already been reported to be repaired by a change in a
distribution theory rather than the AFP application.

Maybe good starting points are sessions whose contributors are also

d) enivsaged working plan

    * go on with activities from above
    * (maybe)
        hide_fact (open) Set.mem_def Set.Collect_def
      to indicate that something is going on with these


  3. introduce set type constructor
    * backport necessary changes (as little invasive as possible) from
    * add naive code generator setup for sets in Set.thy (using set ::
'a list => 'a set)
    * instantiation set :: ("{random, type}") random
    * drop theory Executable_Set
    * drop optional special type alias treatment in Pure/Isar/code.ML
    * drop theory CSet (naive version, maybe not quotient version)
    * restore previous rule declarations:
      * lemma predicate1I [Pure.intro!, intro!]
      * lemma pred_equals_eq [pred_set_conv]
      * lemma pred_subset_eq [pred_set_conv]
    * mark _apply rules for pointwise operations on functions as [simp]
    * provide theories Dlist_Set, RBT_Set (or maybe Mapping_Set), etc.
    * backport Set_Algebras to type classes

e) References:

  Isabelle patched:
  AFP patched: http://www4.in.tum.de/~haftmann/cgi-bin/hgweb.cgi/afp_set
    (although its there, we should avoid using it)
  The historical critical changesets:




PGP available:

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <https://mailman46.in.tum.de/pipermail/isabelle-dev/attachments/20110907/46cd737d/attachment.sig>

More information about the isabelle-dev mailing list