From 65f8c1309a093cdab38027314ca30fd671f4ea47 Mon Sep 17 00:00:00 2001 From: Robbert Krebbers <mail@robbertkrebbers.nl> Date: Fri, 26 Apr 2019 10:36:03 +0200 Subject: [PATCH] CHANGELOG. --- CHANGELOG.md | 87 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 71 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b615af..8fa37459 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,22 +1,77 @@ This file lists "large-ish" changes to the std++ Coq library, but not every API-breaking change is listed. -## std++ master - -Numerous functions and theorems have been renamed. - -- Consistently use `set` instead of `collection`. -- Rename the `Collection` type class into `Set_`. Likewise, `SimpleCollection` - is called `SemiSet`, and `FinCollection` is called `FinSet`, and - `CollectionMonad` is called `MonadSet`. -- Rename `collections.v` and `fin_collections.v` into `sets.v` and `fin_sets.v`, - respectively. -- Rename `set A := A → Prop` (`theories/set.v`) into `propset`, and likewise - `bset` into `boolset`. -- Consistently prefer `X_to_Y` for conversion functions, e.g. `list_to_map` - instead of the former `map_of_list`. - -The following `sed` script should get you a long way: +## std++ 1.2.0 (released TBA) + +Coq 8.9 is supported by this release, but Coq 8.6 is no longer supported. Use +std++ 1.1 if you have to use Coq 8.6. The repository moved to a new location: +https://gitlab.mpi-sws.org/iris/stdpp and automatically generated Coq-doc of +master is available at https://plv.mpi-sws.org/coqdoc/stdpp/. + +This release of std++ received contributions by Dan Frumin, Hai Dang, Jan-Oliver +Kaiser, Mackie Loeffel, Maxime Dénès, Ralf Jung, Robbert Krebbers, and Tej +Chajed. + +New features: + +- New notations `=@{A}`, `≡@{A}`, `∈@{A}`, `∉@{A}`, `##@{A}`, `⊆@{A}`, `⊂@{A}`, + `⊑@{A}`, `≡ₚ@{A}` for being explicit about the type. +- A definition of basic telescopes `tele` and some theory about them. +- A simple type class based canceler `NatCancel` for natural numbers. +- A type `binder` for anonymous and named binders to be used in program language + definitions with string-based binders. +- More results about `set_fold` on sets and multisets. +- Notions of infinite and finite predicates/sets and basic theory about them. +- New operation `map_seq`. +- The symmetric and reflexive/transitive/symmetric closure of a relation (`sc` + and `rtsc`, respectively). +- Different notions of confluence (diamond property, confluence, local + confluence) and the relations between these. +- Define a `size` function for finite maps and prove some properties. +- More results about `Qp` fractions. +- More miscellaneous results about sets, maps, lists, multisets. +- Various type class utilities, e.g. `TCEq`, `TCIf`, `TCDiag`, `NoBackTrack` and + `tc_to_bool`. +- Generalize `gset_to_propset` to `set_to_propset` for any `SemiSet`. + +Changes: + +- Consistently use `lia` instead of `omega` everywhere. +- Consistently block `simpl` on all `Z` operations. +- The `Infinite` class is now defined using a function `fresh : list A → A` + that given a list `xs`, gives an element `fresh xs ∉ xs`. +- Make `default` an abbreviation for `from_option id` (instead of just swapping + the argument order of `from_option`). +- More efficient `Countable` instance for `list` that is linear instead of + exponential. +- Improve performance of `set_solver` significantly by introducing specialized + type class `SetUnfoldElemOf` for propositions involving `∈`. +- Make `gset` a `Definition` instead of a `Notation` to improve performance. +- Use `disj_union` (notation `⊎`) for disjoint union on multisets (that adds the + multiplicities). Repurpose `∪` on multisets for the actual union (that takes + the max of the multiplicities). + +Naming: + +- Consistently use the `set` prefix instead of the `collection` prefix for + definitions and lemmas. +- Renaming of classes: + + `Collection` into `Set_` (`_` since `Set` is a reserved keyword) + + `SimpleCollection` into `SemiSet` + + `FinCollection` into `FinSet` + + `CollectionMonad` into `MonadSet` +- Types: + + `set A := A → Prop` into `propset` + + `bset := A → bool` into `boolset`. +- Files: + + `collections.v` into `sets.v` + + `fin_collections.v` into `fin_sets.v` + + `bset` into `boolset` + + `set` into `propset` +- Consistently use the naming scheme `X_to_Y` for conversion functions, e.g. + `list_to_map` instead of the former `map_of_list`. + +The following `sed` script should perform most of the renaming: ``` sed ' -- GitLab