 05 Nov, 2017 1 commit


Robbert Krebbers authored

 04 Nov, 2017 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 03 Nov, 2017 3 commits


JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

Robbert Krebbers authored

 02 Nov, 2017 2 commits


Robbert Krebbers authored

Robbert Krebbers authored
Thanks to Amin Timany for an initial version of the proof.

 01 Nov, 2017 7 commits


Robbert Krebbers authored
This solves issue #100: the proof mode notation is sometimes not printed. As Ralf discovered, the problem is that there are two overlapping notations: ```coq Notation "P ⊢ Q" := (uPred_entails P Q). ``` And the "proof mode" notation: ``` Notation "Γ '' □ Δ '' ∗ Q" := (of_envs (Envs Γ Δ) ⊢ Q%I). ``` These two notations overlap, so, when having a "proof mode" goal of the shape `of_envs (Envs Γ Δ) ⊢ Q%I`, how do we know which notation is Coq going to pick for pretty printing this goal? As we have seen, this choice depends on the import order (since both notations appear in different files), and as such, Coq sometimes (unintendedly) uses the first notation instead of the latter. The idea of this commit is to wrap `of_envs (Envs Γ Δ) ⊢ Q%I` into a definition so that there is no ambiguity for the pretty printer anymore.

JacquesHenri Jourdan authored

Robbert Krebbers authored

Robbert Krebbers authored
This class, in combination with `TCForall`, turns out the useful in LambdaRust to express that lists of expressions are values.

Robbert Krebbers authored

Robbert Krebbers authored

JacquesHenri Jourdan authored
(□ P) now means (bi_bare (bi_persistently P)). This is motivated by the fact that these two modalities are rarely used separately. In the case of an affine BI, we keep the □ notation. This means that a bi_bare is inserted each time we use □. Hence, a few adaptations need to be done in the proof mode class instances.

 31 Oct, 2017 6 commits


JacquesHenri Jourdan authored

Ralf Jung authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

 30 Oct, 2017 19 commits


Robbert Krebbers authored
Whenever we iSpecialize something whose conclusion is persistent, we now have to prove all the premises under the sink modality. This is strictly more powerful, as we now have to use just some of the hypotheses to prove the premises, instead of all.

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
This also applies to the introduction pattern `!#`. Both will now introduce as many ■ or □ as possible. This behavior is consistent with the dual, `#`, which also gets rid of as many ■ and □ modalities as possible.

Robbert Krebbers authored

Robbert Krebbers authored
(All the later lemmas are now prefixed by later_, and dito for laterN, and except_0).

Robbert Krebbers authored

Aleš Bizjak authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
These unfolds kind of make sense, and I was quite surprised that it used to work before. However, when changing to primitive records, these unfolds are actually needed.

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.

Robbert Krebbers authored
Otherwise, ownership of cores in our ordered RA model will not be persistent.
