- 30 Oct, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 25 Oct, 2017 8 commits
-
-
Robbert Krebbers authored
Replace/remove some occurences of `persistently` into `persistent` where the property instead of the modality is used.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
Rename `UCMRA` → `Ucmra` Rename `CMRA` → `Cmra` Rename `OFE` → `Ofe` (`Ofe` was already used partially, but many occurences were missing) Rename `STS` → `Sts` Rename `DRA` → `Dra`
-
Robbert Krebbers authored
-
Robbert Krebbers authored
I have reimplemented the tactic for introduction of ∀s/pures using type classes, which directly made it much more modular.
-
Robbert Krebbers authored
The advantage is that we can directly use a Coq introduction pattern `cpat` to perform actions to the pure assertion. Before, this had to be done in several steps: iDestruct ... as "[Htmp ...]"; iDestruct "Htmp" as %cpat. That is, one had to introduce a temporary name. I expect this to be quite useful in various developments as many of e.g. our invariants are written as: ∃ x1 .. x2, ⌜ pure stuff ⌝ ∗ spacial stuff.
-
- 27 Sep, 2017 1 commit
-
-
Robbert Krebbers authored
This causes a bit of backwards incompatibility: it may now succeed with later stripping below unlocked/TC transparent definitions. This problem actually occured for `wsat`.
-
- 26 Sep, 2017 1 commit
-
-
Robbert Krebbers authored
We used to normalize the goal, and then checked whether it was of a certain shape. Since `uPred_valid P` normalized to `True ⊢ P`, there was no way of making a distinction between the two, hence `True ⊢ P` was treated as `uPred_valid P`. In this commit, I use type classes to check whether the goal is of a certain shape. Since we declared `uPred_valid` as `Typeclasses Opaque`, we can now make a distinction between `True ⊢ P` and `uPred_valid P`.
-
- 21 Sep, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 17 Sep, 2017 3 commits
-
-
Robbert Krebbers authored
For obsolete reasons, that no longer seem to apply, we used ∅ as the unit.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- 20 Aug, 2017 1 commit
-
-
Robbert Krebbers authored
This makes it easier to frame or introduce some modalities before introducing universal quantifiers.
-
- 17 Aug, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 07 Aug, 2017 1 commit
-
-
Jacques-Henri Jourdan authored
-
- 27 Jun, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 12 Jun, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 08 Jun, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 12 May, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 13 Apr, 2017 1 commit
-
-
Robbert Krebbers authored
This enables things like `iSpecialize ("H2" with "H1") in the below: "H1" : P ---------□ "H2" : □ P -∗ Q ---------∗ R
-
- 11 Apr, 2017 2 commits
- 07 Apr, 2017 1 commit
-
-
Ralf Jung authored
-
- 27 Mar, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 24 Mar, 2017 2 commits
-
-
Robbert Krebbers authored
-
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.
-
- 22 Mar, 2017 1 commit
-
-
Ralf Jung authored
-
- 21 Mar, 2017 2 commits
-
-
Robbert Krebbers authored
This way, iSplit will work when one side is persistent.
-
Robbert Krebbers authored
-
- 20 Mar, 2017 4 commits
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This are useful as proofmode cannot always guess in which direction it should use ⊣⊢.
-
Ralf Jung authored
-
Ralf Jung authored
-
- 15 Mar, 2017 4 commits
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
- Allow framing of persistent hypotheses below the always modality. - Allow framing of persistent hypotheses in just one branch of a disjunction.
-
Ralf Jung authored
-