- Nov 12, 2017
-
-
Robbert Krebbers authored
This follows the associativity in Haskell. So, something like f <$> g <$> h Is now parsed as: (f <$> g) <$> h Since the functor is a generalized form of function application, this also now also corresponds with the associativity of function application, which is also left associative.
-
- Nov 09, 2017
-
-
Robbert Krebbers authored
-
- Nov 01, 2017
-
-
Johannes Kloos authored
-
Johannes Kloos authored
Infinity is described by having an injection from nat.
-
- Oct 31, 2017
-
-
Johannes Kloos authored
The documentation for some typeclasses used the wrong names for these typeclasses.
-
- Oct 28, 2017
-
-
Ralf Jung authored
-
Robbert Krebbers authored
This addresses some concerns in !5.
-
Robbert Krebbers authored
This way, we will be compabile with Iris's heap_lang, which puts ;; at level 100.
-
Ralf Jung authored
-
- Oct 27, 2017
-
-
Jacques-Henri Jourdan authored
-
- Oct 13, 2017
-
-
Ralf Jung authored
-
- Oct 10, 2017
-
-
Ralf Jung authored
-
- Oct 06, 2017
-
-
Robbert Krebbers authored
-
- Sep 21, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This allows for more control over `Hint Mode`.
-
- Sep 18, 2017
-
-
Robbert Krebbers authored
-
- Sep 17, 2017
-
-
Robbert Krebbers authored
This provides significant robustness against looping type class search. As a consequence, at many places throughout the library we had to add additional typing information to lemmas. This was to be expected, since most of the old lemmas were ambiguous. For example: Section fin_collection. Context `{FinCollection A C}. size_singleton (x : A) : size {[ x ]} = 1. In this case, the lemma does not tell us which `FinCollection` with elements `A` we are talking about. So, `{[ x ]}` could not only refer to the singleton operation of the `FinCollection A C` in the section, but also to any other `FinCollection` in the development. To make this lemma unambigious, it should be written as: Lemma size_singleton (x : A) : size ({[ x ]} : C) = 1. In similar spirit, lemmas like the one below were also ambiguous: Lemma lookup_alter_None {A} (f : A → A) m i j : alter f i m !! j = None
m !! j = None. It is not clear which finite map implementation we are talking about. To make this lemma unambigious, it should be written as: Lemma lookup_alter_None {A} (f : A → A) (m : M A) i j : alter f i m !! j = None m !! j = None. That is, we have to specify the type of `m`.
-
- Sep 08, 2017
-
-
Robbert Krebbers authored
See also Coq bug #5712.
-
- Sep 02, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
Before, we often had to insert awkward casts when using them. Also, the generality of also having them on Type, is probably not useful.
-
Robbert Krebbers authored
-
- Aug 17, 2017
-
-
Robbert Krebbers authored
-
- Aug 08, 2017
-
-
Robbert Krebbers authored
-
- Mar 17, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Ralf Jung authored
-
- Mar 15, 2017
-
-
Robbert Krebbers authored
-
- Mar 09, 2017
-
-
Robbert Krebbers authored
-
- Feb 19, 2017
-
-
Robbert Krebbers authored
For example, instead of: Notation "( X ⊆ )" We now use: Notation "( X ⊆)" We were already doing this for = and ≡. This solves some conflicts with the notations of MetaCoq.
-
- Feb 10, 2017
-
-
Robbert Krebbers authored
Some were already maximally implicit, some were not. Now it is consistent.
-
- Jan 31, 2017
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Ralf Jung authored
This approach is originally by Robbert
-
Ralf Jung authored
-
Ralf Jung authored
This patch was created using find -name *.v | xargs -L 1 awk -i inplace '{from = 0} /^From/{ from = 1; ever_from = 1} { if (from == 0 && seen == 0 && ever_from == 1) { print "Set Default Proof Using \"Type*\"."; seen = 1 } }1 ' and some minor manual editing
-
- Nov 22, 2016
-
-
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.
-
- Nov 15, 2016
-
-
Ralf Jung authored
-
- Nov 10, 2016
-
-
Robbert Krebbers authored
Having Is_true as a type class caused problems with rewrite: when the rewrited lemma has a premise of the shape Is_true, the rewrite tactic will complain that it cannot find a type class instance, instead of generating a goal for that premise.
-
- Sep 20, 2016
-
-
Robbert Krebbers authored
-