- Jul 19, 2016
-
-
Robbert Krebbers authored
-
- Jul 15, 2016
-
-
Robbert Krebbers authored
-
- Jul 13, 2016
-
-
Robbert Krebbers authored
The intropattern {H} also meant clear (both in ssreflect, and the logic part of the introduction pattern).
-
- Jun 23, 2016
-
-
Robbert Krebbers authored
-
- Jun 17, 2016
-
-
Robbert Krebbers authored
Fixes issue #20.
-
- May 24, 2016
-
-
Robbert Krebbers authored
Changes: - We no longer have a different syntax for specializing a term H : P -★ Q whose range P or domain Q is persistent. There is just one syntax, and the system automatically determines whether either P or Q is persistent. - While specializing a term, always modalities are automatically stripped. This gets rid of the specialization pattern !. - Make the syntax of specialization patterns more consistent. The syntax for generating a goal is [goal_spec] where goal_spec is one of the following: H1 .. Hn : generate a goal using hypotheses H1 .. Hn -H1 .. Hn : generate a goal using all hypotheses but H1 .. Hn # : generate a goal for the premise in which all hypotheses can be used. This is only allowed when specializing H : P -★ Q where either P or Q is persistent. % : generate a goal for a pure premise.
-
- May 10, 2016
-
-
Robbert Krebbers authored
And make constants P for which we do not want of_val P to reduce Opaque.
-
- May 02, 2016
-
-
Robbert Krebbers authored
iSpecialize and iDestruct. These tactics now all take an iTrm, which is a tuple consisting of a.) a lemma or name of a hypotheses b.) arguments to instantiate c.) a specialization pattern.
-
- Apr 26, 2016
-
-
Robbert Krebbers authored
It is no longer triggered when posing [P ⊢ Q] with [P] an evar. This, for example, makes sure that iApply pvs_intro works, which failed before.
-
- Apr 19, 2016
-
-
Robbert Krebbers authored
That way, we do not have useless type annotations of the form "v : language.val heap_lang" cluttering about any goal. Note, that we could decide to eta expand everywhere (as we do for ∀ and ∃), and use the notation "WP e {{ Q }}" for "wp e ⊤ (λ _, Q)".
-
- Apr 15, 2016
-
-
Ralf Jung authored
-
- Apr 13, 2016
-
-
Ralf Jung authored
-
- Apr 12, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This reverts commit 3cc38ff6. The reverted pure hypotheses and variables appear in the wrong order.
-
Robbert Krebbers authored
-
- Apr 11, 2016
-
-
Robbert Krebbers authored
-
- Apr 08, 2016
-
-
Robbert Krebbers authored
Since strip_later is doing a good job stripping laters in the conclusion, these tactics are thus no longer needed. Also, wp_finish now properly converts the result in a primitive viewshift in case it is not a weakestpre.
-
- Mar 29, 2016
-
-
Robbert Krebbers authored
-
Ralf Jung authored
This required a new ectx axiom: Positivity of evaluation contexts. This axiom was also present in the old Iris 1.1 development, back when it still derived lifting axioms for ectx languages.
-
Ralf Jung authored
-
- Mar 20, 2016
-
-
Ralf Jung authored
-
- Mar 10, 2016
-
-
Ralf Jung authored
-
Ralf Jung authored
-
Ralf Jung authored
-
Ralf Jung authored
-
Robbert Krebbers authored
Thanks to Amin Timany for the suggestion.
-
- Mar 07, 2016
-
-
Ralf Jung authored
Add both non-expansive and contractive functors, and bundle them for the general Iris instance as well as the global functor construction This allows us to move the \later in the user-defined functor to any place we want. In particular, we can now have "\later (iProp -> iProp)" in the ghost CMRA.
-
- Mar 05, 2016
-
-
Ralf Jung authored
-
- Mar 04, 2016
-
-
Robbert Krebbers authored
-
- Mar 03, 2016
-
-
Robbert Krebbers authored
-
- Mar 02, 2016
-
-
Ralf Jung authored
-
Robbert Krebbers authored
We no longer abuse empty strings for anonymous binders. Instead, we now have a data type for binders: a binder is either named or anonymous.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This cleans up some ad-hoc stuff and prepares for a generalization of saved propositions.
-
- Feb 26, 2016
-
-
Robbert Krebbers authored
It is based on type classes and can it be tuned by providing instances, for example, instances can be provided to mark that certain expressions are closed.
-
- Feb 22, 2016
-
-
Robbert Krebbers authored
And now the part that I forgot to commit.
-
Robbert Krebbers authored
Also, give all these global functors the suffix GF to avoid shadowing such as we had with authF. And add some type annotations for clarity.
-
Ralf Jung authored
I added a new typeclass "inGF" to witness that a particular *functor* is part of \Sigma. inG, in contrast, witnesses a particular *CMRA* to be in there, after applying the functor to "\later iProp". inGF can be inferred if that functor is consed to the head of \Sigma, and it is preserved by consing a new functor to \Sigma. This is not the case for inG since the recursive occurence of \Sigma also changes. For evry construction (auth, sts, saved_prop), there is an instance infering the respective authG, stsG, savedPropG from an inGF. There is also a global inG_inGF, but Coq is unable to use it. I tried to instead have *only* inGF, since having both typeclasses seemed weird. However, then the actual type that e.g. "own" is about is the result of applying a functor, and Coq entirely fails to infer anything. I had to add a few type annotations in heap.v, because Coq tried to use the "authG_inGF" instance before the A got fixed, and ended up looping and expanding endlessly on that proof of timelessness. This does not seem entirely unreasonable, I was honestly surprised Coq was able to infer the types previously.
-
Ralf Jung authored
-
Ralf Jung authored
-