 14 Dec, 2016 5 commits
 13 Dec, 2016 6 commits


Ralf Jung authored

Robbert Krebbers authored
This fixes the following issue by JH Jourdan: The fact of including uPred_[...] in the module uPred (in base_logic.v), implies that typeclasses instances are declared twice. Once in module uPred and once in module uPred_[...]. This has the unfortunate consequence that it has to backtrack to both instances each time the first one fails, making failure of type class search for e.g. PersistentP potentially exponential. Goal ((□ ∀ (x1 x2 x3 x4 x5: nat), True ∗ True) ∗ True : iProp Σ). Time iIntros "#H". Undo. Remove Hints uPred_derived.forall_persistent : typeclass_instances. Time iIntros "#H". Thanks to Jason Gross @ Coq club for suggesting this fix.


Ralf Jung authored

JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

 12 Dec, 2016 17 commits


Robbert Krebbers authored

Robbert Krebbers authored
Also:  Remove the wp_strip_later hack.  Let wp_lam, wp_rec, wp_... initiate the proof mode.


Ralf Jung authored

Robbert Krebbers authored

Robbert Krebbers authored
I also renamed `iProof` into `iStartProof`, as it is supposed to be something internal, and not a substitute of Coq's `Proof` command (as originally intended).

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

 11 Dec, 2016 1 commit


Dan Frumin authored

 09 Dec, 2016 11 commits


Ralf Jung authored

Ralf Jung authored
Really, *all* of our files contain proof rules

Ralf Jung authored
Use agree instead of dec_agree This demonstrates that a listbased agreement could work, and form an OFE. I didn't bother to prove all the functor laws. Man, this reasoning with about the lists is annoying^^. What I don't like about this is that uninjection (`agree_car`) is only nonexpansive for valid elements. I want to try using a different equivalence relation, maybe I can find one where this works. Cc @jjourdan @robbertkrebbers See merge request !22

Ralf Jung authored
Thanks to Robbert for fixing gen_heap

Robbert Krebbers authored

Robbert Krebbers authored

JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

Ralf Jung authored

Robbert authored
State invariants in WP and the dead of heap_ctx. This merge request changes the WP construction so that it takes _state interpretation_ as its parameter (part of the `irisG` type class), instead of building in the authoritative ownership of the entire state. When instantiating WP with a concrete language, one can choose the state interpretation. For example, for `heap_lang` we directly use `auth (gmap loc (frac * dec_agree val))`, and avoid the indirection through an invariant managing ownership of the entire state. As a result, we no longer have to carry around `heap_ctx`. See merge request !25

JacquesHenri Jourdan authored
