1. 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
  2. 08 Sep, 2017 1 commit
  3. 02 Sep, 2017 4 commits
  4. 17 Aug, 2017 1 commit
  5. 08 Aug, 2017 1 commit
  6. 17 Mar, 2017 3 commits
  7. 15 Mar, 2017 1 commit
  8. 09 Mar, 2017 1 commit
  9. 19 Feb, 2017 1 commit
  10. 10 Feb, 2017 1 commit
  11. 31 Jan, 2017 5 commits
  12. 22 Nov, 2016 1 commit
    • Robbert Krebbers's avatar
      Make nclose an explicit coercion. · bf6caa7f
      Robbert Krebbers authored
      We do this by introducing a type class UpClose with notation ↑.
      
      The reason for this change is as follows: since `nclose : namespace
      → coPset` is declared as a coercion, the notation `nclose N ⊆ E` was
      pretty printed as `N ⊆ E`. However, `N ⊆ E` could not be typechecked
      because type checking goes from left to right, and as such would look
      for an instance `SubsetEq namespace`, which causes the right hand side
      to be ill-typed.
      bf6caa7f
  13. 15 Nov, 2016 1 commit
  14. 10 Nov, 2016 1 commit
    • Robbert Krebbers's avatar
      Remove Existing Class Is_true. · 94ecebcc
      Robbert Krebbers authored
      Having Is_true as a type class caused problems with rewrite: when the
      rewrited lemma has a premise of the shape Is_true, the rewrite tactic
      will complain that it cannot find a type class instance, instead
      of generating a goal for that premise.
      94ecebcc
  15. 20 Sep, 2016 1 commit
  16. 14 Sep, 2016 1 commit
  17. 19 Aug, 2016 1 commit
  18. 08 Aug, 2016 1 commit
  19. 27 Jul, 2016 2 commits
  20. 22 Jul, 2016 1 commit
  21. 20 Jul, 2016 1 commit
  22. 11 Jul, 2016 2 commits
  23. 01 Jul, 2016 1 commit
  24. 01 Jun, 2016 3 commits
  25. 30 May, 2016 1 commit
  26. 29 May, 2016 1 commit
  27. 27 May, 2016 1 commit