Skip to content
Snippets Groups Projects
  1. Feb 12, 2018
  2. Feb 08, 2018
  3. Feb 02, 2018
  4. Jan 10, 2018
  5. Dec 08, 2017
  6. Dec 05, 2017
  7. Dec 04, 2017
  8. Nov 29, 2017
  9. Nov 21, 2017
    • 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
  10. Nov 12, 2017
    • 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
  11. Nov 09, 2017
  12. Nov 01, 2017
  13. Oct 31, 2017
  14. Oct 28, 2017
  15. Oct 27, 2017
  16. Oct 13, 2017
  17. Oct 10, 2017
  18. Oct 06, 2017
  19. Sep 21, 2017
  20. Sep 18, 2017
  21. Sep 17, 2017
    • 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. Sep 08, 2017
  23. Sep 02, 2017
  24. Aug 17, 2017
  25. Aug 08, 2017
  26. Mar 17, 2017
  27. Mar 15, 2017
  28. Mar 09, 2017
  29. Feb 19, 2017
Loading