1. 17 Feb, 2020 40 commits
  2. 14 Feb, 2020 40 commits
  3. 11 Feb, 2020 40 commits
  4. 07 Nov, 2019 40 commits
  5. 19 Sep, 2019 40 commits
    • Robbert Krebbers's avatar
      Disambiguate Haskell-style notations for partially operators. · 45690e49
      Robbert Krebbers authored
      For example, change `(!! i)` into `(.!! x)` so that `!!` can also be used as
      a prefix, as done in VST for example.
      
      This closes issue #42.
      
      I have used the `sed` script below. This script took care of nearly all uses
      apart from a few occurrences where a space was missing, e.g. `(,foo)`. In
      this case, `coqc` will just fail, allowing one to patch up things manually.
      
      The script is slightly too eager on Iris developments, where it also replaces
      `($ ...)` introduction patterns. When porting Iris developments you thus may
      want to remove the line for `$`.
      
      ```
      sed '
      s/(= /(.= /g;
      s/ =)/ =.)/g;
      s/(≠ /(.≠ /g;
      s/ ≠)/ ≠.)/g;
      s/(≡ /(.≡ /g;
      s/ ≡)/ ≡.)/g;
      s/(≢ /(.≢ /g;
      s/ ≢)/ ≢.)/g;
      s/(∧ /(.∧ /g;
      s/ ∧)/ ∧.)/g;
      s/(∨ /(.∨ /g;
      s/ ∨)/ ∨.)/g;
      s/( /(. /g;
      s/ )/ .)/g;
      s/(→ /(.→ /g;
      s/ →)/ →.)/g;
      s/($ /(.$ /g;
      s/(∘ /(.∘ /g;
      s/ ∘)/ ∘.)/g;
      s/(, /(., /g;
      s/ ,)/ ,.)/g;
      s/(∘ /(.∘ /g;
      s/ ∘)/ ∘.)/g;
      s/(∪ /(.∪ /g;
      s/ ∪)/ ∪.)/g;
      s/(⊎ /(.⊎ /g;
      s/ ⊎)/ ⊎.)/g;
      s/(∩ /(.∩ /g;
      s/ ∩)/ ∩.)/g;
      s/(∖ /(.∖ /g;
      s/ ∖)/ ∖.)/g;
      s/(⊆ /(.⊆ /g;
      s/ ⊆)/ ⊆.)/g;
      s/(⊈ /(.⊈ /g;
      s/ ⊈)/ ⊈.)/g;
      s/(⊂ /(.⊂ /g;
      s/ ⊂)/ ⊂.)/g;
      s/(⊄ /(.⊄ /g;
      s/ ⊄)/ ⊄.)/g;
      s/(∈ /(.∈ /g;
      s/ ∈)/ ∈.)/g;
      s/(∉ /(.∉ /g;
      s/ ∉)/ ∉.)/g;
      s/(≫= /(.≫= /g;
      s/ ≫=)/ ≫=.)/g;
      s/(!! /(.!! /g;
      s/ !!)/ !!.)/g;
      s/(⊑ /(.⊑ /g;
      s/ ⊑)/ ⊑.)/g;
      s/(⊓ /(.⊓ /g;
      s/ ⊓)/ ⊓.)/g;
      s/(⊔ /(.⊔ /g;
      s/ ⊔)/ ⊔.)/g;
      s/(:: /(.:: /g;
      s/ ::)/ ::.)/g;
      s/(++ /(.++ /g;
      s/ ++)/ ++.)/g;
      s/(≡ₚ /(.≡ₚ /g;
      s/ ≡ₚ)/ ≡ₚ.)/g;
      s/(≢ₚ /(.≢ₚ /g;
      s/ ≢ₚ)/ ≢ₚ.)/g;
      s/(::: /(.::: /g;
      s/ :::)/ :::.)/g;
      s/(+++ /(.+++ /g;
      s/ +++)/ +++.)/g;
      ' -i $(find -name "*.v")
      ```
      45690e49
  6. 26 Aug, 2019 40 commits
  7. 26 Jun, 2019 40 commits
  8. 21 Jun, 2019 40 commits
  9. 20 Jun, 2019 40 commits
  10. 02 Jun, 2019 40 commits
  11. 10 May, 2019 40 commits
  12. 09 May, 2019 40 commits
  13. 26 Apr, 2019 40 commits
  14. 25 Apr, 2019 40 commits
  15. 04 Mar, 2019 40 commits
  16. 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
  17. 23 Feb, 2019 40 commits
  18. 21 Feb, 2019 40 commits
  19. 20 Feb, 2019 40 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
  20. 29 Jan, 2019 40 commits
  21. 23 Jan, 2019 40 commits
  22. 11 Jan, 2019 40 commits
  23. 30 Nov, 2018 40 commits
  24. 28 Nov, 2018 40 commits
  25. 10 Jun, 2018 40 commits
  26. 27 Apr, 2018 40 commits
  27. 05 Apr, 2018 40 commits
  28. 23 Feb, 2018 40 commits
  29. 22 Feb, 2018 40 commits
  30. 19 Feb, 2018 40 commits
  31. 12 Feb, 2018 40 commits
  32. 08 Feb, 2018 40 commits