1. 30 Nov, 2018 1 commit
  2. 28 Nov, 2018 1 commit
  3. 10 Jun, 2018 1 commit
  4. 27 Apr, 2018 1 commit
  5. 05 Apr, 2018 5 commits
  6. 23 Feb, 2018 1 commit
  7. 22 Feb, 2018 1 commit
  8. 19 Feb, 2018 2 commits
  9. 12 Feb, 2018 1 commit
  10. 08 Feb, 2018 1 commit
  11. 02 Feb, 2018 1 commit
  12. 10 Jan, 2018 1 commit
  13. 08 Dec, 2017 1 commit
  14. 05 Dec, 2017 1 commit
  15. 04 Dec, 2017 2 commits
  16. 29 Nov, 2017 1 commit
  17. 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
  18. 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
  19. 09 Nov, 2017 1 commit
  20. 01 Nov, 2017 2 commits
  21. 31 Oct, 2017 1 commit
  22. 28 Oct, 2017 4 commits
  23. 27 Oct, 2017 1 commit
  24. 13 Oct, 2017 1 commit
  25. 10 Oct, 2017 1 commit
  26. 06 Oct, 2017 1 commit
  27. 21 Sep, 2017 2 commits
  28. 18 Sep, 2017 1 commit
  29. 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