stdpp merge requestshttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests2020-02-24T16:11:55Zhttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/115Countable instance for vec, and rename `vec_to_list_of_list` into `vec_to_lis...2020-02-24T16:11:55ZRobbert KrebbersCountable instance for vec, and rename `vec_to_list_of_list` into `vec_to_list_to_vec`This is an alternative to !114, which does not involve defining a partial function from lists to vectors, but makes use of the already existing function `list_to_vec`.
Also I renamed `vec_to_list_of_list` into `vec_to_list_to_vec`. The ...This is an alternative to !114, which does not involve defining a partial function from lists to vectors, but makes use of the already existing function `list_to_vec`.
Also I renamed `vec_to_list_of_list` into `vec_to_list_to_vec`. The former appears to be a leftover of the big `X_of_Y` into `Y_to_X` rename.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/114Add Countable instance for vec2020-02-24T16:12:20ZTej Chajedtchajed@gmail.comAdd Countable instance for vecI was surprised to learn this wasn't available and managed to prove it.
Note that this pulls in stdpp.vector into `countable`. The only reason for this is that the proof is really simple with `vec_to_list` as defined in std++, as oppose...I was surprised to learn this wasn't available and managed to prove it.
Note that this pulls in stdpp.vector into `countable`. The only reason for this is that the proof is really simple with `vec_to_list` as defined in std++, as opposed to with Coq's `Vector.of_list`. This only affects users in that `countable` now loads `vector`, which for example changes the implicits on Coq's vectors.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/113Rename `cogpick` to `coGpick` (oops).2020-02-23T14:44:32ZDavid SwaseyRename `cogpick` to `coGpick` (oops).We renamed `cogset` to `coGset`, but my search and replace missed `cogpick`.
Pinging @robbertkrebbers.We renamed `cogset` to `coGset`, but my search and replace missed `cogpick`.
Pinging @robbertkrebbers.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/112move coPset-generic hint to coPset.v2020-02-19T15:13:29ZRalf Jungjung@mpi-sws.orgmove coPset-generic hint to coPset.vI see no good reason for it to be in `namespaces.v`. The old one that got removed in e09f7ce35f22efb51bc1dd1f04f7b54b30280ea1 was in `coPset.v` as well.I see no good reason for it to be in `namespaces.v`. The old one that got removed in e09f7ce35f22efb51bc1dd1f04f7b54b30280ea1 was in `coPset.v` as well.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/111Add class `TopSet` for sets with ⊤ element2020-02-18T12:14:11ZRobbert KrebbersAdd class `TopSet` for sets with ⊤ elementThis closes issue #49. Some remarks:
- It's called `TopSet`, which corresponds with `SemiSet`.
- We now have a generic `SetUnfoldElemOf` for any `TopSet`.
- The `Hint Resolve coPset_top_subseteq : core` no longer works because the lemma...This closes issue #49. Some remarks:
- It's called `TopSet`, which corresponds with `SemiSet`.
- We now have a generic `SetUnfoldElemOf` for any `TopSet`.
- The `Hint Resolve coPset_top_subseteq : core` no longer works because the lemma is generic in a type class. AFAIK it is only used for `solve_ndisjoint`, so I added a specialized version to the `ndisj` hint database. We already have specialized versions of other set lemmas there.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/110Add decidability instances for Z.gt and Z.ge2020-02-13T21:16:07ZTej Chajedtchajed@gmail.comAdd decidability instances for Z.gt and Z.geUnfortunately these are not just defined as flipped versions of `Z.lt` and `Z.ge`.Unfortunately these are not just defined as flipped versions of `Z.lt` and `Z.ge`.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/109WIP: Some lemmas about `list_lookup_total`2020-03-17T15:15:58ZDan FruminWIP: Some lemmas about `list_lookup_total`Partially addresses https://gitlab.mpi-sws.org/iris/stdpp/issues/50Partially addresses https://gitlab.mpi-sws.org/iris/stdpp/issues/50https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/108cogset2020-02-20T22:24:17ZDavid SwaseycogsetAdd a type `cogset A` of finite/cofinite sets of elements of countable type `A`. When `A` is also infinite, all the usual operations are decidable. The implementation uses a pair of constructors (finite or infinite) each carrying a finit...Add a type `cogset A` of finite/cofinite sets of elements of countable type `A`. When `A` is also infinite, all the usual operations are decidable. The implementation uses a pair of constructors (finite or infinite) each carrying a finite set.
The file includes efficient conversions to and from `gset A` (for finite cogsets) and to `coPset` (for arbitrary cogsets), as well as less efficient conversions to and from other finite sets and other sets with a top element.
Two things are marked TODO in the source, which really means "to discuss".https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/107Added TCForall2_Forall2 lemma2020-01-30T12:07:51ZMichael SammlerAdded TCForall2_Forall2 lemmaThis lemma existed for TCForall but not for TCForall2.This lemma existed for TCForall but not for TCForall2.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/106Opaquify proofs in gmap_partial_alter (fix #46)2020-05-20T14:58:06ZPaolo G. GiarrussoOpaquify proofs in gmap_partial_alter (fix #46)- Ensure gmap well-formedness proofs are fully opaque.
- Use pattern-matching lambdas over lets.- Ensure gmap well-formedness proofs are fully opaque.
- Use pattern-matching lambdas over lets.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/105Add lemmas regarding set_seq2019-11-11T11:15:16ZSimon Friis VindumAdd lemmas regarding set_seqAdds a few potentially useful lemmas regarding `set_seq`.
`subset_of_set_seq` can be seen as a generalization of the existing `elem_of_set_seq`. It gives equations that one can extract from knowing that one `set_seq` is a subset of anot...Adds a few potentially useful lemmas regarding `set_seq`.
`subset_of_set_seq` can be seen as a generalization of the existing `elem_of_set_seq`. It gives equations that one can extract from knowing that one `set_seq` is a subset of another `set_seq`.
The lemmas `subset_of_set_seq_len` and `elem_of_set_seq_len` are small variants of the same lemmas without the `_len` suffix. They extract information about the length or size of a `set_seq`.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/104Remove `:>>` subclass instance declarations2019-11-07T08:18:01ZRobbert KrebbersRemove `:>>` subclass instance declarationsThere are not documented in https://coq.inria.fr/refman/addendum/type-classes.html?highlight=class#coq:cmd.class, and they don't have any advantage, so it's better to stop using them.There are not documented in https://coq.inria.fr/refman/addendum/type-classes.html?highlight=class#coq:cmd.class, and they don't have any advantage, so it's better to stop using them.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/103Update gitignore for compatibility with Coq master2019-11-02T09:33:06ZTej Chajedtchajed@gmail.comUpdate gitignore for compatibility with Coq masterSee https://github.com/coq/coq/pull/10947 (.coqdeps.d now uses the name
of the Coq Makefile) and https://github.com/coq/coq/pull/8642 (Coq now
generates empty interface files *.vos when compiling).See https://github.com/coq/coq/pull/10947 (.coqdeps.d now uses the name
of the Coq Makefile) and https://github.com/coq/coq/pull/8642 (Coq now
generates empty interface files *.vos when compiling).https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/102Add congruence lemmas for closures2019-11-01T14:46:40ZAmin TimanyAdd congruence lemmas for closureshttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/101Add two useful lemmas2019-11-01T14:25:53ZAmin TimanyAdd two useful lemmashttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/99Generalize `list_find` lemmas to become bi-implications.2019-10-07T06:19:23ZRobbert KrebbersGeneralize `list_find` lemmas to become bi-implications.Thanks to @jules for the suggestion and an initial proof.
PS: I moved the block of code down because it now depends on some of the `Forall` lemmas that only appear later in the `list.v` file.Thanks to @jules for the suggestion and an initial proof.
PS: I moved the block of code down because it now depends on some of the `Forall` lemmas that only appear later in the `list.v` file.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/98Fix w.r.t. coq/coq#10764.2019-09-19T12:35:33ZGhost UserFix w.r.t. coq/coq#10764.Backward compatible, mergeable as-is.Backward compatible, mergeable as-is.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/97LookupTotal2020-02-11T08:55:39ZDan FruminLookupTotalThis is aimed at addressing https://gitlab.mpi-sws.org/iris/stdpp/issues/43.
Some TODOs:
- [x] Update the notation in accordance with https://gitlab.mpi-sws.org/iris/stdpp/merge_requests/93
- [x] Direct definition of `LookupTotal` o...This is aimed at addressing https://gitlab.mpi-sws.org/iris/stdpp/issues/43.
Some TODOs:
- [x] Update the notation in accordance with https://gitlab.mpi-sws.org/iris/stdpp/merge_requests/93
- [x] Direct definition of `LookupTotal` on vectors, so that its more friendlier towards simplification.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/96More lemmas for `filter` w.r.t. maps2019-09-12T13:32:31ZRobbert KrebbersMore lemmas for `filter` w.r.t. maps- `filter P m ##ₘ filter (λ v, ¬ P v) m`
- `filter P m ∪ filter (λ v, ¬ P v) m = m`
- `(∀ i, i ∈ X ↔ ∃ x, m !! i = Some x ∧ P (i, x)) → dom D (filter P m) ≡ X`
For the last one, I have repurposed the name `dom_map_filter`, which was pre...- `filter P m ##ₘ filter (λ v, ¬ P v) m`
- `filter P m ∪ filter (λ v, ¬ P v) m = m`
- `(∀ i, i ∈ X ↔ ∃ x, m !! i = Some x ∧ P (i, x)) → dom D (filter P m) ≡ X`
For the last one, I have repurposed the name `dom_map_filter`, which was previously used for `dom D (filter P m) ⊆ dom D m`. I have renamed the old lemma into `dom_map_filter_subseteq`. This follows current naming conventions.
This MR received partial contributions from @dfrumin.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/94Fix Open/Close scope2019-09-11T21:45:17ZJacques-Henri JourdanFix Open/Close scopeUse Open/Close Scope without Local (i.e., export the scope opening)
only when the scope corresponds to the main purpose of the module.Use Open/Close Scope without Local (i.e., export the scope opening)
only when the scope corresponds to the main purpose of the module.