- Feb 12, 2018
-
-
Jacques-Henri Jourdan authored
This reverts commit 78ba9509.
-
Jacques-Henri Jourdan authored
-
- Feb 07, 2018
-
-
Robbert Krebbers authored
This commit implements a generic `iAlways` tactic that is not tied to `persistently`, `affinely` and `plainly` but can be instantiated with a variety of always-style modalities. In order to plug in an always-style modality, one has to decide for both the persistent and spatial what action should be performed upon introducing the modality: - Introduction is only allowed when the context is empty. - Introduction is only allowed when all hypotheses satisfy some predicate `C : PROP → Prop` (where `C` should be a type class). - Introduction will only keep the hypotheses that satisfy some predicate `C : PROP → Prop` (where `C` should be a type class). - Introduction will clear the context. - Introduction will keep the context as-if. Formally, these actions correspond to the following inductive type: ```coq Inductive always_intro_spec (PROP : bi) := | AIEnvIsEmpty | AIEnvForall (C : PROP → Prop) | AIEnvFilter (C : PROP → Prop) | AIEnvClear | AIEnvId. ``` An always-style modality is then a record `always_modality` packing together the modality with the laws it should satisfy to justify the given actions for both contexts.
-
- Feb 02, 2018
-
-
Jacques-Henri Jourdan authored
-
- Jan 27, 2018
-
-
Jacques-Henri Jourdan authored
-
- Jan 25, 2018
-
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
- Jan 24, 2018
-
-
Jacques-Henri Jourdan authored
-
- Jan 23, 2018
-
-
Jacques-Henri Jourdan authored
-
- Jan 21, 2018
-
-
Robbert Krebbers authored
This should fix iris-examples.
-
- Jan 20, 2018
-
-
Robbert Krebbers authored
-
- Jan 18, 2018
-
-
Jacques-Henri Jourdan authored
-
- Jan 16, 2018
-
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
Robbert Krebbers authored
This used to be done by using `ElimModal` in backwards direction. Having a separate type class for this gets rid of some hacks: - Both `Hint Mode`s in forward and backwards direction for `ElimModal`. - Weird type class precedence hacks to make sure the right instance is picked. These were needed because using `ElimModal` in backwards direction caused ambiguity.
-
Robbert Krebbers authored
-
- Dec 30, 2017
-
-
Robbert Krebbers authored
This was an oversight in !63.
-
- Dec 22, 2017
-
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
- Dec 20, 2017
-
-
Robbert Krebbers authored
-
- Dec 04, 2017
-
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
Jacques-Henri Jourdan authored
-
- Dec 03, 2017
-
-
Robbert Krebbers authored
We do not have a notation for `bi_affinely` either, so this is at least consistent.
-
- Nov 03, 2017
-
-
Jacques-Henri Jourdan authored
-
Robbert Krebbers authored
-
- Nov 01, 2017
-
-
Jacques-Henri Jourdan authored
-
Jacques-Henri 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.
-
- Oct 30, 2017
-
-
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
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
-
Robbert Krebbers authored
-
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.
-