Skip to content
Snippets Groups Projects
  1. Mar 24, 2017
    • Robbert Krebbers's avatar
      Generic big operators that are no longer tied to CMRAs. · 6fbff46e
      Robbert Krebbers authored
      Instead, I have introduced a type class `Monoid` that is used by the big operators:
      
          Class Monoid {M : ofeT} (o : M → M → M) := {
            monoid_unit : M;
            monoid_ne : NonExpansive2 o;
            monoid_assoc : Assoc (≡) o;
            monoid_comm : Comm (≡) o;
            monoid_left_id : LeftId (≡) monoid_unit o;
            monoid_right_id : RightId (≡) monoid_unit o;
          }.
      
      Note that the operation is an argument because we want to have multiple monoids over
      the same type (for example, on `uPred`s we have monoids for `∗`, `∧`, and `∨`). However,
      we do bundle the unit because:
      
      - If we would not, the unit would appear explicitly in an implicit argument of the
        big operators, which confuses rewrite. By bundling the unit in the `Monoid` class
        it is hidden, and hence rewrite won't even see it.
      - The unit is unique.
      
      We could in principle have big ops over setoids instead of OFEs. However, since we do
      not have a canonical structure for bundled setoids, I did not go that way.
      6fbff46e
    • Robbert Krebbers's avatar
  2. Mar 21, 2017
  3. Mar 20, 2017
  4. Mar 14, 2017
  5. Mar 11, 2017
  6. Mar 10, 2017
  7. Mar 09, 2017
  8. Mar 01, 2017
  9. Feb 23, 2017
  10. Feb 22, 2017
  11. Feb 21, 2017
  12. Feb 16, 2017
  13. Feb 11, 2017
  14. Feb 10, 2017
  15. Feb 09, 2017
  16. Feb 06, 2017
  17. Feb 03, 2017
  18. Feb 01, 2017
    • Robbert Krebbers's avatar
      Arguments for gsetC and gset_disjC. · bf069d12
      Robbert Krebbers authored
      bf069d12
    • Jacques-Henri Jourdan's avatar
      Cancelable and IdFree typeclasses. · 71c10187
      Jacques-Henri Jourdan authored
      Cancelable elements are a new way of proving local updates, by
      removing some cancellable element of the global state, provided that
      we own it and we are willing to lose this ownership.
      
      Identity-free elements are an auxiliary that is necessary to prove that
      [Some x] is cancelable.
      
      For technical reasons, these two notions are not defined exactly like
      what one might expect, but also take into account validity. Otherwise,
      an exclusive element would not be cancelable or idfree, which is
      rather confusing.
      71c10187
  19. Jan 30, 2017
  20. Jan 27, 2017
  21. Jan 26, 2017
  22. Jan 25, 2017
  23. Jan 23, 2017
Loading