stdpp merge requestshttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests2018-06-18T19:52:18Zhttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/36add lemma about chained difference2018-06-18T19:52:18ZRalf Jungjung@mpi-sws.orgadd lemma about chained differencehttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/35solve_ndisj: try harder2018-06-14T20:24:20ZRalf Jungjung@mpi-sws.orgsolve_ndisj: try harderIn my logically atomic stack, the following goal fails to be solved currently but is solved after this patch:
```
⊤ ∖ ↑stackN ⊆ ⊤ ∖ ↑offerN ∖ ↑protoN
```
where
```
Definition stackN : namespace := nroot .@ "logatom_stack".
Definit...In my logically atomic stack, the following goal fails to be solved currently but is solved after this patch:
```
⊤ ∖ ↑stackN ⊆ ⊤ ∖ ↑offerN ∖ ↑protoN
```
where
```
Definition stackN : namespace := nroot .@ "logatom_stack".
Definition offerN : namespace := nroot .@ "logatom_stack" .@ "offer".
Definition protoN : namespace := nroot .@ "logatom_stack" .@ "protocol".
```https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/34add telescopic versions of the Coq quantifiers2018-06-09T09:47:09ZRalf Jungjung@mpi-sws.orgadd telescopic versions of the Coq quantifiershttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/33add telescopes and a bit of theory about them2018-06-06T21:28:48ZRalf Jungjung@mpi-sws.orgadd telescopes and a bit of theory about themI think the basic definitions are pretty solid by now, though I am still fighting with making high-level telescope-based definitions that have nice pretty-printing.
Open question: Telescopes generalize hlists to the dependent case. Shou...I think the basic definitions are pretty solid by now, though I am still fighting with making high-level telescope-based definitions that have nice pretty-printing.
Open question: Telescopes generalize hlists to the dependent case. Should we get rid of hlists? Does anyone want to attempt porting hlist users over to telescopes? Restricting the dependency can actually be useful because it makes them easier to use.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/32introduce [default] as abbreviation for [from_option id], and use it2018-05-29T13:56:27ZRalf Jungjung@mpi-sws.orgintroduce [default] as abbreviation for [from_option id], and use itThere's some more uses in Iris, so this seems worth it. Over std++ and Iris together, the new default will actually be used *more often* than the old one I removed in !31.There's some more uses in Iris, so this seems worth it. Over std++ and Iris together, the new default will actually be used *more often* than the old one I removed in !31.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/31Remove the `default` notation for options2018-05-28T17:09:06ZRalf Jungjung@mpi-sws.orgRemove the `default` notation for optionsThe notation was parsing-only and all it did was reorder the arguments for
from_option. This creates just a needless divergence between what is written
and what is printed. Also, removing it frees the name for maybe introducing a
funct...The notation was parsing-only and all it did was reorder the arguments for
from_option. This creates just a needless divergence between what is written
and what is printed. Also, removing it frees the name for maybe introducing a
function or notation `default` with a type like `T -> option T -> T`.
I volunteer to fix all reverse deps that we know about.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/30Notations for relations with explicit type arguments2018-04-06T12:27:13ZRobbert KrebbersNotations for relations with explicit type argumentsWe discussed this already here: https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/134
The consensus was that `@{A}` would be a good fit, and would not cause conflicts. I implemented it here for hopefully all relations in std++: `=`,...We discussed this already here: https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/134
The consensus was that `@{A}` would be a good fit, and would not cause conflicts. I implemented it here for hopefully all relations in std++: `=`, `≡`, `⊆`, `⊂`, `⊑`, `##`, `∈`, `≡ₚ`, and adopted the code at many places to make use of these notations.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/29Add `seq_set_pred_disjoint`2020-04-10T09:46:35ZDan FruminAdd `seq_set_pred_disjoint`A sort of "dual" to `seq_set_S_disjoint`.A sort of "dual" to `seq_set_S_disjoint`.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/28add exact_vm_cast2018-03-01T15:57:30ZRalf Jungjung@mpi-sws.orgadd exact_vm_castThis generalizes https://gitlab.mpi-sws.org/FP/LambdaRust-coq/merge_requests/10 into a reusable tactic.This generalizes https://gitlab.mpi-sws.org/FP/LambdaRust-coq/merge_requests/10 into a reusable tactic.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/27Add a `NoBackTrack` type class.2018-02-09T08:57:26ZRobbert KrebbersAdd a `NoBackTrack` type class.`NoBackTrack P` requires `P` but will never backtrack on it
once a result for `P` has been found.
See also https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/112`NoBackTrack P` requires `P` but will never backtrack on it
once a result for `P` has been found.
See also https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/112https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/26A simple type class based canceler for natural numbers.2018-02-08T15:27:18ZRobbert KrebbersA simple type class based canceler for natural numbers.See also https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/109
Main question: where to put this? In `numbers.v` or in a separate file (as in this MR).See also https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/109
Main question: where to put this? In `numbers.v` or in a separate file (as in this MR).Robbert KrebbersRobbert Krebbershttps://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/25Add a Notation for `sn`: strongly normalizing.2018-01-13T22:46:59ZRobbert KrebbersAdd a Notation for `sn`: strongly normalizing.As requested by @jung in https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/65
I made this a notation to avoid unfolding issues.As requested by @jung in https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/65
I made this a notation to avoid unfolding issues.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/24typeclass comments2017-12-05T19:13:59ZRalf Jungjung@mpi-sws.orgtypeclass commentsI only now understood why `Equiv` is called the way it is. Let's document that.I only now understood why `Equiv` is called the way it is. Let's document that.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/23Lattices notation for order, join, meet, top and bot.2017-12-05T19:14:14ZJacques-Henri JourdanLattices notation for order, join, meet, top and bot.They are needed both for `monPred` and the weak memory lifetime logic.They are needed both for `monPred` and the weak memory lifetime logic.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/22Reserve more notation in `integers.v`.2018-06-20T20:57:26ZDavid SwaseyReserve more notation in `integers.v`.Avoid duplicating details like `at level 35`.
This is a bit of a slippery slope. (I reserved just the notation that
I overload elsewhere.)Avoid duplicating details like `at level 35`.
This is a bit of a slippery slope. (I reserved just the notation that
I overload elsewhere.)https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/21Make x.1, x.2 notation compatible with ssrfun.2017-11-29T15:10:24ZDavid SwaseyMake x.1, x.2 notation compatible with ssrfun.Enable one to import both stdpp's base and ssrfun.
Note that (f x.1) now parses as (f (fst x)) rather than (fst (f x)).
(This change affects one proof in Iris.)Enable one to import both stdpp's base and ssrfun.
Note that (f x.1) now parses as (f (fst x)) rather than (fst (f x)).
(This change affects one proof in Iris.)https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/20Allow compiling against "dev" version of Coq2017-11-29T12:25:56ZRalf Jungjung@mpi-sws.orgAllow compiling against "dev" version of CoqThis matches e.g. Iris allowing a "dev" version of std++: You can install a
"dev" version to test stuff, but then you are responsible for making sure that
these versions actually work together. We rely on that when testing things
aga...This matches e.g. Iris allowing a "dev" version of std++: You can install a
"dev" version to test stuff, but then you are responsible for making sure that
these versions actually work together. We rely on that when testing things
against Iris master every night, for which purpose we install Iris master as
"dev" version.
Cc @jjourdan who, IIRC, argue for removing the `dev` version some time ago.
If we accept this here, I will send similar patches to (some of?) our other projects.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/19Factor out solve_proper_prepare2017-11-18T14:36:48ZRalf Jungjung@mpi-sws.orgFactor out solve_proper_prepareThis helps when debugging solve_proper_core failures.This helps when debugging solve_proper_core failures.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/18Pattern matching notation for monadic binds2017-11-22T18:00:36ZRobbert KrebbersPattern matching notation for monadic bindsThis 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 :=
...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.
```
There are some problems, however:
- It conflicts with Coq's notation `' x` for `Zpos x`. Fortunately, the breakage is in the right direction: the proposed monadic notation breaks Coq's `' x`. Furthermore, I believe said notation should be removed from Coq, see https://github.com/coq/coq/pull/6155
- It breaks backwards compatibility. Since Coq only allows to use binders in recursive notations, the notation must start with at least one symbol, for which I picked `'`. As such, this means we need a double `'`.https://gitlab.mpi-sws.org/iris/stdpp/-/merge_requests/17Use `stdpp_scope` for all notations.2017-11-11T00:05:12ZRobbert KrebbersUse `stdpp_scope` for all notations.A long time ago, `stdpp` was part of my C formalization, and as such, I used `C_scope` for all notations in the development. These days, the name of this scope totally makes no sense, and even confuses new users of the library, especiall...A long time ago, `stdpp` was part of my C formalization, and as such, I used `C_scope` for all notations in the development. These days, the name of this scope totally makes no sense, and even confuses new users of the library, especially now that the project has a project name (coq-stdpp)
I thus propose to rename `C_scope` into `stdpp_scope` and the scope delimiter `%C` into `%stdpp`. It should be very trivial to fix this in all dependencies; we should just provide a `sed` script.