- 20 Dec, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 03 Nov, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 28 Oct, 2017 2 commits
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- 26 Oct, 2017 3 commits
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- 25 Oct, 2017 9 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
-
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`.
-
- 28 Aug, 2017 2 commits
-
-
Robbert Krebbers authored
persistent context. Given the source does not contain a box: - Before: no-op if there is a Persistent instance. - Now: no-op in all cases.
-
Robbert Krebbers authored
-
- 12 Jul, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 12 Jun, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 08 Jun, 2017 2 commits
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
when using iCombine.
-
- 12 May, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 27 Apr, 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
-
- 07 Apr, 2017 1 commit
-
-
Robbert Krebbers authored
For example, when having `H : ▷ P → Q` and `HP : P`, we can now do `iSpecialize ("H" with "HP")`. This is achieved by putting a `FromAssumption` premise in the base instance for `IntoWand`.
-
- 24 Mar, 2017 4 commits
-
-
Robbert Krebbers authored
This commit fixes the issues that refolding of big operators did not work nicely in the proof mode, e.g., given: Goal forall M (P : nat → uPred M) l, ([∗ list] x ∈ 10 :: l, P x) -∗ True. Proof. iIntros (M P l) "[H1 H2]". We got: "H1" : P 10 "H2" : (fix big_opL (M0 : ofeT) (o : M0 → M0 → M0) (H : Monoid o) (A : Type) (f : nat → A → M0) (xs : list A) {struct xs} : M0 := match xs with | [] => monoid_unit | x :: xs0 => o (f 0 x) (big_opL M0 o H A (λ n : nat, f (S n)) xs0) end) (uPredC M) uPred_sep uPred.uPred_sep_monoid nat (λ _ x : nat, P x) l --------------------------------------∗ True The problem here is that proof mode looked for an instance of `IntoAnd` for `[∗ list] x ∈ 10 :: l, P x` and then applies the instance for separating conjunction without folding back the fixpoint. This problem is not specific to the Iris proof mode, but more of a general problem of Coq's `apply`, for example: Goal forall x l, Forall (fun _ => True) (map S (x :: l)). Proof. intros x l. constructor. Gives: Forall (λ _ : nat, True) ((fix map (l0 : list nat) : list nat := match l0 with | [] => [] | a :: t => S a :: map t end) l) This commit fixes this issue by making the big operators type class opaque and instead handle them solely via corresponding type classes instances for the proof mode tactics. Furthermore, note that we already had instances for persistence and timelessness. Those were really needed; computation did not help to establish persistence when the list in question was not a ground term. In fact, the sitation was worse, to establish persistence of `[∗ list] x ∈ 10 :: l, P x` it could either use the persistence instance of big ops directly, or use the persistency instance for `∗` first. Worst case, this can lead to an exponential blow up because of back tracking.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
Big ops over list with a cons reduce, hence these just follow immediately from conversion.
-
Robbert Krebbers authored
-
- 21 Mar, 2017 3 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.
-
- 20 Mar, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 16 Mar, 2017 1 commit
-
-
Robbert Krebbers authored
-
- 15 Mar, 2017 4 commits
-
-
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.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-