1. 05 Mar, 2019 1 commit
  2. 24 Jan, 2019 1 commit
  3. 10 Dec, 2018 1 commit
  4. 05 Jun, 2018 2 commits
  5. 19 Mar, 2018 1 commit
  6. 05 Mar, 2018 1 commit
  7. 27 Nov, 2017 1 commit
  8. 31 Oct, 2017 1 commit
  9. 30 Oct, 2017 3 commits
    • Robbert Krebbers's avatar
      Drop positivity axiom of the BI canonical structure. · f2eaf912
      Robbert Krebbers authored
      The absence of this axiom has two consequences:
      
      - We no longer have `■ (P ∗ Q) ⊢ ■ P ∗ ■ Q` and `□ (P ∗ Q) ⊢ □ P ∗ □ Q`,
        and as a result, separating conjunctions in the unrestricted/persistent
        context cannot be eliminated.
      - When having `(P -∗ ⬕ Q) ∗ P`, we do not get `⬕ Q ∗ P`. In the proof
        mode this means when having:
      
          H1 : P -∗ ⬕ Q
          H2 : P
      
        We cannot say `iDestruct ("H1" with "H2") as "#H1"` and keep `H2`.
      
      However, there is now a type class `PositiveBI PROP`, and when there is an
      instance of this type class, one gets the above reasoning principle back.
      
      TODO: Can we describe positivity of individual propositions instead of the
      whole BI? That way, we would get the above reasoning principles even when
      the BI is not positive, but the propositions involved are.
      f2eaf912
    • Robbert Krebbers's avatar
      Define `Persistent P` as `P ⊢ □ P` instead of `□ P ⊣⊢ P`. · 96501a4f
      Robbert Krebbers authored
      Otherwise, ownership of cores in our ordered RA model will not be persistent.
      96501a4f
    • Robbert Krebbers's avatar
      Generalize proofmode. · 52c3006d
      Robbert Krebbers authored
      52c3006d
  10. 25 Oct, 2017 5 commits
  11. 17 Sep, 2017 1 commit
  12. 17 Aug, 2017 1 commit
  13. 08 Jun, 2017 1 commit
  14. 24 Mar, 2017 1 commit
    • 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
  15. 21 Mar, 2017 2 commits
  16. 22 Feb, 2017 2 commits
  17. 27 Jan, 2017 1 commit
  18. 11 Jan, 2017 2 commits
  19. 09 Jan, 2017 2 commits
  20. 05 Jan, 2017 1 commit
  21. 03 Jan, 2017 1 commit
  22. 09 Dec, 2016 1 commit
  23. 24 Nov, 2016 1 commit
  24. 22 Nov, 2016 1 commit
  25. 21 Nov, 2016 1 commit
  26. 17 Nov, 2016 1 commit
  27. 15 Nov, 2016 1 commit
  28. 03 Nov, 2016 1 commit
    • Robbert Krebbers's avatar
      Use symbol ∗ for separating conjunction. · cc31476d
      Robbert Krebbers authored
      The old choice for ★ was a arbitrary: the precedence of the ASCII asterisk *
      was fixed at a wrong level in Coq, so we had to pick another symbol. The ★ was
      a random choice from a unicode chart.
      
      The new symbol ∗ (as proposed by David Swasey) corresponds better to
      conventional practise and matches the symbol we use on paper.
      cc31476d
  29. 28 Oct, 2016 1 commit