1. 12 Jul, 2017 1 commit
2. 12 Jun, 2017 1 commit
3. 08 Jun, 2017 2 commits
4. 12 May, 2017 1 commit
5. 27 Apr, 2017 1 commit
6. 13 Apr, 2017 1 commit
7. 07 Apr, 2017 1 commit
8. 24 Mar, 2017 4 commits
• Make big_opL type class opaque. · 02a0929d
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.```
• Remove Hints and Instances that are no longer needed. · c52ff261
Robbert Krebbers authored
```Big ops over list with a cons reduce, hence these just follow
immediately from conversion.```
9. 21 Mar, 2017 3 commits
• `FromAnd true` instances for big ops and ownership. · 9da19881
Robbert Krebbers authored
`This way, iSplit will work when one side is persistent.`
• Merge FromSep and FromAnd classes. · 1e180a24
Robbert Krebbers authored
• No longer allow ownership of persistent elements to be split. · 383fee40
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.```
10. 20 Mar, 2017 1 commit
11. 16 Mar, 2017 1 commit
12. 15 Mar, 2017 4 commits
13. 11 Mar, 2017 1 commit
14. 09 Mar, 2017 1 commit
15. 22 Feb, 2017 1 commit
• Change Hint Mode for FromAssumption. · 2cbcc992
Robbert Krebbers authored
```There is no need to restrict the type class using Hint Mode, we have
a default instance that will always be used first. In case of evars,
the default instance should apply.

The reason for this change is that `iAssumption` should be able to
prove `H : ?e |- P` and `H : P |- ?e`. The former Hint Mode prevented
it from doing that.```
16. 15 Feb, 2017 5 commits
17. 13 Feb, 2017 1 commit
18. 11 Feb, 2017 1 commit
• Improve `iSpecialize ("H" \$! x1 .. xn)`. · 9ea6fa45
Robbert Krebbers authored
```Instead of doing all the instantiations by invoking a single type
class search, it now performs the instantiations by invoking
individual type class searches. This a.) gives better error messages
and b.) works when `xj` depends on `xi`.```
19. 06 Feb, 2017 1 commit
20. 26 Jan, 2017 1 commit
• Fix issue #68. · 2550dff5
Robbert Krebbers authored
```TODO: document the setup of the IntoWand and WandWeaken type classes
and the tricks using Hint Mode.```
21. 24 Jan, 2017 1 commit
22. 23 Jan, 2017 1 commit
23. 22 Jan, 2017 1 commit
24. 05 Jan, 2017 1 commit
25. 03 Jan, 2017 1 commit
26. 28 Dec, 2016 1 commit
27. 14 Dec, 2016 1 commit