1. 16 Mar, 2019 1 commit
    • Jakob Botsch Nielsen's avatar
      More efficient list encoding for Countable · 9b209c98
      Jakob Botsch Nielsen authored
      This changes the encoding used for finite lists of values of countable
      types to be linear instead of exponential. The encoding works by
      duplicating bits of each element so that 0 -> 00 and 1 -> 11, and then
      separating each element with 10. The top 1-bits are not kept since we
      know a 10 is starting a new element which ends with a 1.
      
      Fix #28
      9b209c98
  2. 15 Mar, 2019 1 commit
  3. 01 Mar, 2019 2 commits
  4. 21 Feb, 2019 1 commit
  5. 29 Jan, 2019 1 commit
  6. 23 Jan, 2019 1 commit
  7. 28 Nov, 2018 1 commit
  8. 26 Nov, 2018 1 commit
  9. 10 Nov, 2018 1 commit
  10. 30 Jun, 2018 2 commits
  11. 20 Jun, 2018 1 commit
  12. 28 May, 2018 1 commit
  13. 05 Apr, 2018 4 commits
  14. 31 Jan, 2018 3 commits
  15. 14 Jan, 2018 1 commit
  16. 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
  17. 09 Nov, 2017 1 commit
  18. 28 Oct, 2017 1 commit
  19. 24 Sep, 2017 1 commit
  20. 21 Sep, 2017 1 commit
  21. 17 Sep, 2017 1 commit
    • 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
  22. 08 Sep, 2017 1 commit
  23. 02 Sep, 2017 1 commit
  24. 25 May, 2017 2 commits
  25. 20 Mar, 2017 1 commit
  26. 17 Mar, 2017 1 commit
  27. 15 Mar, 2017 1 commit
  28. 01 Mar, 2017 1 commit
  29. 09 Feb, 2017 1 commit
  30. 31 Jan, 2017 3 commits