 24 Mar, 2017 4 commits


Robbert Krebbers authored

Robbert Krebbers authored
Instead, I have introduced a type class `Monoid` that is used by the big operators: Class Monoid {M : ofeT} (o : M → M → M) := { monoid_unit : M; monoid_ne : NonExpansive2 o; monoid_assoc : Assoc (≡) o; monoid_comm : Comm (≡) o; monoid_left_id : LeftId (≡) monoid_unit o; monoid_right_id : RightId (≡) monoid_unit o; }. Note that the operation is an argument because we want to have multiple monoids over the same type (for example, on `uPred`s we have monoids for `∗`, `∧`, and `∨`). However, we do bundle the unit because:  If we would not, the unit would appear explicitly in an implicit argument of the big operators, which confuses rewrite. By bundling the unit in the `Monoid` class it is hidden, and hence rewrite won't even see it.  The unit is unique. We could in principle have big ops over setoids instead of OFEs. However, since we do not have a canonical structure for bundled setoids, I did not go that way.

Robbert Krebbers authored
Big ops over list with a cons reduce, hence these just follow immediately from conversion.

Robbert Krebbers authored

 22 Mar, 2017 1 commit


Ralf Jung authored

 21 Mar, 2017 2 commits


Robbert Krebbers authored
This way, iSplit will work when one side is persistent.

Robbert Krebbers authored

 20 Mar, 2017 4 commits


Robbert Krebbers authored

Robbert Krebbers authored
This are useful as proofmode cannot always guess in which direction it should use ⊣⊢.

Ralf Jung authored

Ralf Jung authored

 15 Mar, 2017 7 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
 Allow framing of persistent hypotheses below the always modality.  Allow framing of persistent hypotheses in just one branch of a disjunction.

Ralf Jung authored

Ralf Jung authored

Robbert Krebbers authored

Robbert Krebbers authored

 14 Mar, 2017 4 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
 Support for a `//` modifier to close the goal using `done`.  Support for framing in the `[#]` specialization pattern for persistent premises, i.e. `[# $H1 $H2]`  Add new "auto framing patterns" `[$]`, `[# $]` and `>[$]` that will try to solve the premise by framing. Hypothesis that are not framed are carried over to the next goal.

Ralf Jung authored

 09 Mar, 2017 2 commits


Robbert Krebbers authored
Now, we never need to unfold LimitPreserving in LambdaRust, and hence the entails_lim tactic is no longer needed.

Robbert Krebbers authored

 06 Mar, 2017 1 commit


Ralf Jung authored

 01 Mar, 2017 1 commit


Ralf Jung authored

 22 Feb, 2017 2 commits


Robbert Krebbers authored
I probably tested against a wrong version. This reverts commit 02bc52b4.

Robbert Krebbers authored
This makes lambdarust 1 min (=7%) faster.

 16 Feb, 2017 1 commit


Ralf Jung authored

 15 Feb, 2017 1 commit


Robbert Krebbers authored
It now first turns hypotheses `X ∪ Y ⊆ Z` into `X ⊆ Z` and `Y ⊆ Z`.

 11 Feb, 2017 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 09 Feb, 2017 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 06 Feb, 2017 1 commit


Ralf Jung authored

 02 Feb, 2017 1 commit


Ralf Jung authored

 27 Jan, 2017 1 commit


Ralf Jung authored

 26 Jan, 2017 1 commit


Robbert Krebbers authored
TODO: document the setup of the IntoWand and WandWeaken type classes and the tricks using Hint Mode.

 23 Jan, 2017 1 commit


JacquesHenri Jourdan authored

 22 Jan, 2017 1 commit


Robbert Krebbers authored
