 21 Feb, 2019 4 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
Also, use the union name/class/symbol for what's usually the union, and define the intersection on multisets.

 20 Feb, 2019 1 commit


Robbert Krebbers authored
Get rid of using `Collection` and favor `set` everywhere. Also, prefer conversion functions that are called `X_to_Y`. The following sed script performs most of the renaming, with the exception of:  `set`, which has been renamed into `propset`. I couldn't do this rename using `sed` since it's too context sensitive.  There was a spurious rename of `Vec.of_list`, which I correctly manually.  Updating some section names and comments. ``` sed ' s/SimpleCollection/SemiSet/g; s/FinCollection/FinSet/g; s/CollectionMonad/MonadSet/g; s/Collection/Set\_/g; s/collection\_simple/set\_semi\_set/g; s/fin\_collection/fin\_set/g; s/collection\_monad\_simple/monad\_set\_semi\_set/g; s/collection\_equiv/set\_equiv/g; s/\bbset/boolset/g; s/mkBSet/BoolSet/g; s/mkSet/PropSet/g; s/set\_equivalence/set\_equiv\_equivalence/g; s/collection\_subseteq/set\_subseteq/g; s/collection\_disjoint/set\_disjoint/g; s/collection\_fold/set\_fold/g; s/collection\_map/set\_map/g; s/collection\_size/set\_size/g; s/collection\_filter/set\_filter/g; s/collection\_guard/set\_guard/g; s/collection\_choose/set\_choose/g; s/collection\_ind/set\_ind/g; s/collection\_wf/set\_wf/g; s/map\_to\_collection/map\_to\_set/g; s/map\_of\_collection/set\_to\_map/g; s/map\_of\_list/list\_to\_map/g; s/map\_of\_to_list/list\_to\_map\_to\_list/g; s/map\_to\_of\_list/map\_to\_list\_to\_map/g; s/\bof\_list/list\_to\_set/g; s/\bof\_option/option\_to\_set/g; s/elem\_of\_of\_list/elem\_of\_list\_to\_set/g; s/elem\_of\_of\_option/elem\_of\_option\_to\_set/g; s/collection\_not\_subset\_inv/set\_not\_subset\_inv/g; s/seq\_set/set\_seq/g; s/collections/sets/g; s/collection/set/g; ' i $(find name "*.v") ```

 29 Jan, 2019 1 commit


Robbert Krebbers authored

 28 Nov, 2018 1 commit


Tej Chajed authored
Adding a hint without a database now triggers a deprecation warning in Coq master (https://github.com/coq/coq/pull/8987).

 20 Jun, 2018 1 commit


Ralf Jung authored

 11 Apr, 2018 1 commit


Robbert Krebbers authored

 09 Apr, 2018 1 commit


Robbert Krebbers authored
This fixes issue #12.

 05 Apr, 2018 3 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
This followed from discussions in https://gitlab.mpisws.org/FP/iriscoq/merge_requests/134

 21 Nov, 2017 1 commit


Robbert Krebbers authored
This gets rid of the old hack to have specific notations for pairs up to a fixed arity, and moreover allows to do fancy things like: ``` Record test := Test { t1 : nat; t2 : nat }. Definition foo (x : option test) : option nat := ''(Test a1 a2) ← x; Some a1. ```

 21 Sep, 2017 1 commit


Robbert Krebbers authored
This allows for more control over `Hint Mode`.

 17 Sep, 2017 1 commit


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`.

 08 Sep, 2017 1 commit


Robbert Krebbers authored
See also Coq bug #5712.

 15 Mar, 2017 1 commit


Robbert Krebbers authored

 09 Mar, 2017 1 commit


Robbert Krebbers authored
To be consistent with Iris, see Iris commit 9ee62b3a.

 31 Jan, 2017 4 commits


Robbert Krebbers authored
Fix fixes issue #63.

Robbert Krebbers authored
Rename:  prefix_of > prefix and suffix_of > suffix because that saves keystrokes in lemma names. However, keep the infix notations with l1 `prefix_of` l2 and l1 `suffix_of` l2 because those are easier to read.  change the notation l1 `sublist` l2 into l1 `sublist_of` l2 to be consistent.  rename contains > submseteq and use the notation ⊆+

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

 06 Dec, 2016 1 commit


Ralf Jung authored

 05 Dec, 2016 1 commit


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.

 24 Nov, 2016 1 commit


Robbert Krebbers authored

 22 Nov, 2016 1 commit


Robbert Krebbers authored

 21 Nov, 2016 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 19 Nov, 2016 1 commit


Robbert Krebbers authored

 17 Nov, 2016 2 commits


Robbert Krebbers authored

Robbert Krebbers authored
This way we can use set_solver to solve goals involving ∈.

 15 Nov, 2016 1 commit


Robbert Krebbers authored
