 24 Mar, 2017 4 commits


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.

Robbert Krebbers authored
Big ops over list with a cons reduce, hence these just follow immediately from conversion.

Robbert Krebbers authored


 23 Mar, 2017 1 commit


Robbert Krebbers authored
This fixes issue #84.

 22 Mar, 2017 2 commits
 21 Mar, 2017 5 commits


Robbert Krebbers authored
This way, iSplit will work when one side is persistent.

Robbert Krebbers authored

Robbert Krebbers authored
This could lead to awkward loops, for example, when having:  As goal `own γ c` with `c` persistent, one could keep on `iSplit`ting the goal. Especially in (semi)automated proof scripts this is annoying as it easily leads to loops.  When having a hypothesis `own γ c` with `c` persistent, one could keep on `iDestruct`ing it. To that end, this commit removes the `IntoOp` and `FromOp` instances for persistent CMRA elements. Instead, we changed the instances for pairs, so that one, for example, can still split `(a ⋅ b, c)` with `c` persistent.

Robbert Krebbers authored

Ralf Jung authored

 20 Mar, 2017 5 commits


Robbert Krebbers authored

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

 16 Mar, 2017 10 commits


Robbert Krebbers authored
This fixes issue #81.

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert authored
Updating the ProofMode.md docs See merge request !53

Dan Frumin authored

Dan Frumin authored

 15 Mar, 2017 13 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
The instances frame_big_sepL_cons and frame_big_sepL_app could be applied repeatedly often when framing in [∗ list] k ↦ x ∈ ?e, Φ k x when ?e an evar. This commit fixes this bug.

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

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Ralf Jung authored
