- Jan 31, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
Also make names more consistent.
-
Ralf Jung authored
-
Jacques-Henri Jourdan authored
-
- Dec 09, 2016
-
-
Robbert Krebbers authored
We typically use the _1 and _2 suffix to denote individual directions of a lemmas that is a biimplication.
-
Ralf Jung authored
-
- Dec 08, 2016
-
-
Robbert Krebbers authored
case H; clear H would fail when H is dependent whereas destruct H would succeed on that, but just not clear it.
-
Robbert Krebbers authored
The case tactic is faster than destruct.
-
Robbert Krebbers authored
Example: Goal ¬False → ¬False → ¬False → ¬False → ¬False → ¬False → ¬False → False. Proof. intros. done. (* takes very long *)
-
- Dec 06, 2016
-
-
Ralf Jung authored
-
Robbert Krebbers authored
-
- Dec 05, 2016
-
-
Robbert Krebbers authored
Using this new definition we can express being contractive using a Proper. This has the following advantages: - It makes it easier to state that a function with multiple arguments is contractive (in all or some arguments). - A solve_contractive tactic can be implemented by extending the solve_proper tactic.
-
- Nov 29, 2016
-
-
Robbert Krebbers authored
-
- Nov 24, 2016
-
-
Robbert Krebbers authored
-
- Nov 23, 2016
-
-
Robbert Krebbers authored
-
Ralf Jung authored
Use notation N @⊆ E to avoid ambiguity. Since `nclose : namespace → coPset` is declared as a coercion, the notation `nclose N ⊆ E` was pretty printed as `N ⊆ E`. However, `N ⊆ E` could not be typechecked because type checking goes from left to right, and as such would look for an instance `SubsetEq namespace`, which causes the right hand side to be ill-typed. See merge request !24
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Nov 22, 2016
-
-
Robbert Krebbers authored
-
We do this by introducing a type class UpClose with notation ↑. The reason for this change is as follows: since `nclose : namespace → coPset` is declared as a coercion, the notation `nclose N ⊆ E` was pretty printed as `N ⊆ E`. However, `N ⊆ E` could not be typechecked because type checking goes from left to right, and as such would look for an instance `SubsetEq namespace`, which causes the right hand side to be ill-typed.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Ralf Jung authored
-
- Nov 21, 2016
-
-
Ralf Jung authored
In particular, make sure we always try eassumption before reflexivity.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Nov 20, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Nov 19, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
That range includes tabs and new lines. Thanks Morten for spotting this problem.
-
- Nov 17, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This way we can use set_solver to solve goals involving ∈.
-
Ralf Jung authored
-
Ralf Jung authored
This has bothered me repeatedly in proofs, now I finally got around to fix it at the source
-