- Mar 12, 2018
-
-
Ralf Jung authored
-
- Feb 22, 2018
-
-
Robbert Krebbers authored
As reported by @jjourdan: framing now no longer back tracks on whether to strip laters or not. When framing below a later, we now only make it strip laters of the head of the frame.
-
- Feb 20, 2018
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
We now use the `Maybe` prefix as also used for `Frame`: it indicates whether progress has been made by stripping of a later or not.
-
- Feb 08, 2018
-
-
Robbert Krebbers authored
-
- Feb 07, 2018
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
We already supported framing under wands.
-
Robbert Krebbers authored
For example, framing `P` in `(P ∨ Q) ∗ R` now succeeds and turns the goal into `R`.
-
- Jan 23, 2018
-
-
Robbert Krebbers authored
This is to make sure that e.g. `//` in `iEval (rewrite .. // ..)` does not immediately close the goal by reflexivity.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Jan 21, 2018
-
-
Robbert Krebbers authored
This should fix iris-examples.
-
- Jan 20, 2018
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Jan 19, 2018
-
-
Robbert Krebbers 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
-
- Jan 13, 2018
-
-
Robbert Krebbers authored
-
- Jan 12, 2018
-
-
Robbert Krebbers authored
-
- Jan 07, 2018
-
-
Robbert Krebbers authored
-
- Dec 31, 2017
-
-
Robbert Krebbers authored
-
- Dec 30, 2017
-
-
Robbert Krebbers authored
This was an oversight in !63.
-
- Dec 23, 2017
-
-
Jacques-Henri Jourdan authored
-
- Dec 21, 2017
-
-
Jacques-Henri Jourdan authored
-
- Dec 20, 2017
-
-
Robbert Krebbers authored
-
- Dec 14, 2017
-
-
Ralf Jung authored
-
- Nov 22, 2017
-
-
Robbert Krebbers authored
It used to be an inline pattern match. This also restores compatibility with Coq 8.6.1.
-
Robbert Krebbers authored
-
- Nov 14, 2017
-
-
Robbert Krebbers authored
-
- Nov 13, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
The proof mode now explicitly keeps track of anonymous hypotheses (i.e. hypotheses that are introduced by the introduction pattern `?`). Consider: Lemma foo {M} (P Q R : uPred M) : P -∗ (Q ∗ R) -∗ Q ∗ P. Proof. iIntros "? [H ?]". iFrame "H". iFrame. Qed. After the `iIntros`, the goal will be: _ : P "H" : Q _ : R --------------------------------------∗ Q ∗ P Anonymous hypotheses are displayed in a special way (`_ : P`). An important property of the new anonymous hypotheses is that it is no longer possible to refer to them by name, whereas before, anonymous hypotheses were given some arbitrary fresh name (typically prefixed by `~`). Note tactics can still operate on these anonymous hypotheses. For example, both `iFrame` and `iAssumption`, as well as the symbolic execution tactics, will use them. The only thing that is not possible is to refer to them yourself, for example, in an introduction, specialization or selection pattern. Advantages of the new approach: - Proofs become more robust as one cannot accidentally refer to anonymous hypotheses by their fresh name. - Fresh name generation becomes considerably easier. Since anonymous hypotheses are internally represented by natural numbers (of type `N`), we can just fold over the hypotheses and take the max plus one. This thus solve issue #101.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Nov 11, 2017
-
-
Robbert Krebbers authored
-