1. 25 Apr, 2019 40 commits
  2. 24 Apr, 2019 40 commits
  3. 14 Mar, 2019 40 commits
  4. 03 Mar, 2019 40 commits
    • Robbert Krebbers's avatar
      Overhaul of the `Infinite`/`Fresh` infrastructure. · 3184ef61
      Robbert Krebbers authored
      - The class `Infinite A` is now defined as having a function
        `fresh : list A → A`, that given a list `xs`, gives an element `x ∉ xs`.
      - For most types this `fresh` function has a sensible computable behavior,
        for example:
        + For numbers, it yields one added to the maximal element in `xs`.
        + For strings, it yields the first string representation of a number that is
          not in `xs`.
      - For any type `C` of finite sets with elements of infinite type `A`, we lift
        the fresh function to `C → A`.
      
      As a consequence:
      
      - It is now possible to pick fresh elements from _any_ finite set and from
        _any_ list with elements of an infinite type. Before it was only possible
        for specific finite sets, e.g. `gset`, `pset`, ...
      - It makes the code more uniform. There was a lot of overlap between having a
        `Fresh` and an `Infinite` instance. This got unified.
      3184ef61
  5. 20 Feb, 2019 40 commits
    • Robbert Krebbers's avatar
      Better names for convertion functions from `gset` and `coPset`. · 31e0d1f6
      Robbert Krebbers authored
      - Rename `gmap.to_gmap` into `gset_to_gmap`.
      - Rename `gmap.of_gset` into `gset_to_propset`.
      - Rename `coPset.to_Pset` into `coPset_to_Pset`.
      - Rename `coPset.of_Pset` into `coPset_to_gset`.
      - Rename `coPset.to_gset` into `coPset_to_gset`.
      - Rename `coPset.of_gset` into `gset_to_coPset`.
      
      The following `sed` script can be used for the first rename:
      
      ```
      sed -i 's/to\_gmap/gset\_to\_gmap/g' $(find ./theories -name \*.v)
      ```
      
      The latter is context sensitive, so was done manually.
      31e0d1f6
    • Robbert Krebbers's avatar
      Consistently use `set` and `map` names. · b7e31ce2
      Robbert Krebbers authored
      Get rid of using `Collection` and favor `set` everywhere. Also, prefer conversion
      functions that are called `X_to_Y`.
      
      The following sed script performs most of the renaming, with the exception of:
      
      - `set`, which has been renamed into `propset`. I couldn't do this rename
        using `sed` since it's too context sensitive.
      - There was a spurious rename of `Vec.of_list`, which I correctly manually.
      - Updating some section names and comments.
      
      ```
      sed '
      s/SimpleCollection/SemiSet/g;
      s/FinCollection/FinSet/g;
      s/CollectionMonad/MonadSet/g;
      s/Collection/Set\_/g;
      s/collection\_simple/set\_semi\_set/g;
      s/fin\_collection/fin\_set/g;
      s/collection\_monad\_simple/monad\_set\_semi\_set/g;
      s/collection\_equiv/set\_equiv/g;
      s/\bbset/boolset/g;
      s/mkBSet/BoolSet/g;
      s/mkSet/PropSet/g;
      s/set\_equivalence/set\_equiv\_equivalence/g;
      s/collection\_subseteq/set\_subseteq/g;
      s/collection\_disjoint/set\_disjoint/g;
      s/collection\_fold/set\_fold/g;
      s/collection\_map/set\_map/g;
      s/collection\_size/set\_size/g;
      s/collection\_filter/set\_filter/g;
      s/collection\_guard/set\_guard/g;
      s/collection\_choose/set\_choose/g;
      s/collection\_ind/set\_ind/g;
      s/collection\_wf/set\_wf/g;
      s/map\_to\_collection/map\_to\_set/g;
      s/map\_of\_collection/set\_to\_map/g;
      s/map\_of\_list/list\_to\_map/g;
      s/map\_of\_to_list/list\_to\_map\_to\_list/g;
      s/map\_to\_of\_list/map\_to\_list\_to\_map/g;
      s/\bof\_list/list\_to\_set/g;
      s/\bof\_option/option\_to\_set/g;
      s/elem\_of\_of\_list/elem\_of\_list\_to\_set/g;
      s/elem\_of\_of\_option/elem\_of\_option\_to\_set/g;
      s/collection\_not\_subset\_inv/set\_not\_subset\_inv/g;
      s/seq\_set/set\_seq/g;
      s/collections/sets/g;
      s/collection/set/g;
      ' -i $(find -name "*.v")
      ```
      b7e31ce2
  6. 06 Feb, 2019 40 commits
  7. 29 Jan, 2019 40 commits
  8. 28 May, 2018 40 commits
  9. 27 Oct, 2017 40 commits
  10. 20 Oct, 2017 40 commits
  11. 16 Oct, 2017 40 commits
  12. 29 Sep, 2017 40 commits
  13. 17 Sep, 2017 40 commits
    • Robbert Krebbers's avatar
      Set Hint Mode for all classes in `base.v`. · 7d7c9871
      Robbert Krebbers authored
      This provides significant robustness against looping type class search.
      
      As a consequence, at many places throughout the library we had to add
      additional typing information to lemmas. This was to be expected, since
      most of the old lemmas were ambiguous. For example:
      
        Section fin_collection.
          Context `{FinCollection A C}.
      
          size_singleton (x : A) : size {[ x ]} = 1.
      
      In this case, the lemma does not tell us which `FinCollection` with
      elements `A` we are talking about. So, `{[ x ]}` could not only refer to
      the singleton operation of the `FinCollection A C` in the section, but
      also to any other `FinCollection` in the development. To make this lemma
      unambigious, it should be written as:
      
        Lemma size_singleton (x : A) : size ({[ x ]} : C) = 1.
      
      In similar spirit, lemmas like the one below were also ambiguous:
      
        Lemma lookup_alter_None {A} (f : A → A) m i j :
          alter f i m !! j = None  m !! j = None.
      
      It is not clear which finite map implementation we are talking about.
      To make this lemma unambigious, it should be written as:
      
        Lemma lookup_alter_None {A} (f : A → A) (m : M A) i j :
          alter f i m !! j = None  m !! j = None.
      
      That is, we have to specify the type of `m`.
      7d7c9871
  14. 08 Sep, 2017 40 commits
  15. 15 Mar, 2017 40 commits
  16. 07 Feb, 2017 40 commits
  17. 31 Jan, 2017 40 commits
  18. 21 Nov, 2016 40 commits
  19. 20 Nov, 2016 40 commits
  20. 15 Nov, 2016 40 commits
  21. 20 Sep, 2016 40 commits
  22. 29 Aug, 2016 40 commits
  23. 27 Jul, 2016 40 commits
  24. 22 Jul, 2016 40 commits
  25. 29 Mar, 2016 40 commits
  26. 17 Feb, 2016 40 commits
  27. 16 Feb, 2016 40 commits
  28. 13 Feb, 2016 40 commits
  29. 11 Feb, 2016 40 commits
  30. 01 Feb, 2016 40 commits
  31. 27 Jan, 2016 40 commits