1. 09 May, 2019 1 commit
  2. 26 Apr, 2019 2 commits
  3. 25 Apr, 2019 1 commit
  4. 04 Mar, 2019 1 commit
  5. 03 Mar, 2019 1 commit
    • 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
  6. 23 Feb, 2019 1 commit
  7. 21 Feb, 2019 1 commit
  8. 20 Feb, 2019 2 commits
    • Robbert Krebbers's avatar
      Comment about `Set_`. · e823cff6
      Robbert Krebbers authored
      e823cff6
    • 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
  9. 29 Jan, 2019 1 commit
  10. 23 Jan, 2019 1 commit
  11. 11 Jan, 2019 1 commit
  12. 30 Nov, 2018 1 commit
  13. 28 Nov, 2018 1 commit
  14. 10 Jun, 2018 1 commit
  15. 27 Apr, 2018 1 commit
  16. 05 Apr, 2018 5 commits
  17. 23 Feb, 2018 1 commit
  18. 22 Feb, 2018 1 commit
  19. 19 Feb, 2018 2 commits
  20. 12 Feb, 2018 1 commit
  21. 08 Feb, 2018 1 commit
  22. 02 Feb, 2018 1 commit
  23. 10 Jan, 2018 1 commit
  24. 08 Dec, 2017 1 commit
  25. 05 Dec, 2017 1 commit
  26. 04 Dec, 2017 2 commits
  27. 29 Nov, 2017 1 commit
  28. 21 Nov, 2017 1 commit
    • Robbert Krebbers's avatar
      Pattern matching notation for monadic binds. · dcd59f13
      Robbert Krebbers authored
      This gets rid of the old hack to have specific notations for pairs
      up to a fixed arity, and moreover allows to do fancy things like:
      
      ```
      Record test := Test { t1 : nat; t2 : nat }.
      
      Definition foo (x : option test) : option nat :=
        ''(Test a1 a2) ← x;
        Some a1.
      ```
      dcd59f13
  29. 12 Nov, 2017 1 commit
    • Robbert Krebbers's avatar
      Make `fmap` left associative. · 12e701ca
      Robbert Krebbers authored
      This follows the associativity in Haskell. So, something like
      
        f <$> g <$> h
      
      Is now parsed as:
      
        (f <$> g) <$> h
      
      Since the functor is a generalized form of function application, this also now
      also corresponds with the associativity of function application, which is also
      left associative.
      12e701ca
  30. 09 Nov, 2017 1 commit
  31. 01 Nov, 2017 2 commits