From 48419eccb4632ab4a480be80d88705b7814cedf0 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Wed, 13 Dec 2017 14:43:03 +0100
Subject: [PATCH] CHANGELOG

---
 CHANGELOG.md | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 70c4a089f..d78465572 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,13 +7,15 @@ Coq development, but not every API-breaking change is listed.  Changes marked
 
 Changes in and extensions of the theory:
 
-* [Experimental feature] Add new modality: â–  ("plainly").
 * Define `uPred` as a quotient on monotone predicates `M -> SProp`.
+* Get rid of some primitive laws; they can be derived:
+  `True ⊢ □ True` and `□ (P ∧ Q) ⊢ □ (P ∗ Q)`
 * Camera morphisms have to be homomorphisms, not just monotone functions.
 * Add a proof that `f` has a fixed point if `f^k` is contractive.
 * Constructions for least and greatest fixed points over monotone predicates
   (defined in the logic of Iris using impredicative quantification).
 * Add a proof of the inverse of `wp_bind`.
+* [Experimental feature] Add new modality: â–  ("plainly").
 * [Experimental feature] Support verifying code that might get stuck by
   distinguishing "non-stuck" vs. "(potentially) stuck" weakest
   preconditions. (See [Swasey et al., OOPSLA '17] for examples.) The non-stuck
@@ -25,6 +27,18 @@ Changes in and extensions of the theory:
 
 Changes in Coq:
 
+* Move the `prelude` folder to its own project: std++
+* Some extensions/improvements of heap_lang:
+  - Improve handling of pure (non-state-dependent) reductions.
+  - Add fetch-and-add (`FAA`) operation.
+  - Add syntax for all Coq's binary operations on `Z`.
+* Generalize `saved_prop` to let the user choose the location of the type-level
+  later.  Rename the general form to `saved_anything`.  Provide `saved_prop` and
+  `saved_pred` as special cases.
+* Improved big operators:
+  + They are no longer tied to cameras, but work on any monoid
+  + The version of big operations over lists was redefined so that it enjoys
+    more definitional equalities.
 * Rename some things and change notation:
   - The unit of a camera: `empty` -> `unit`, `∅` -> `ε`
   - Disjointness: `⊥` -> `##`
@@ -63,6 +77,8 @@ Changes in Coq:
 ```
 sed 's/\bPersistentP\b/Persistent/g; s/\bTimelessP\b/Timeless/g; s/\bCMRADiscrete\b/CmraDiscrete/g; s/\bCMRAT\b/CmraT/g; s/\bCMRAMixin\b/CmraMixin/g; s/\bUCMRAT\b/UcmraT/g; s/\bUCMRAMixin\b/UcmraMixin/g; s/\bSTS\b/Sts/g' -i $(find -name "*.v")
 ```
+* `PersistentL` and `TimelessL` (persistence and timelessness of lists of
+  propositions) are replaces by `TCForall` from std++.
 * Fix a bunch of consistency issues in the proof mode, and make it overall more
   usable.  In particular:
   - All proof mode tactics start the proof mode if necessary; `iStartProof` is
@@ -84,9 +100,6 @@ sed 's/\bPersistentP\b/Persistent/g; s/\bTimelessP\b/Timeless/g; s/\bCMRADiscret
     behind a type class opaque definition.  Furthermore, this can change the
     name of anonymous identifiers introduced with the "%" pattern.
 * Make `ofe_fun` dependently typed, subsuming `iprod`.  The latter got removed.
-* Generalize `saved_prop` to let the user choose the location of the type-level
-  later.  Rename the general form to `saved_anything`.  Provide `saved_prop` and
-  `saved_pred` as special cases.
 * Define the generic `fill` operation of the `ectxi_language` construct in terms
   of a left fold instead of a right fold. This gives rise to more definitional
   equalities.
@@ -95,25 +108,16 @@ sed 's/\bPersistentP\b/Persistent/g; s/\bTimelessP\b/Timeless/g; s/\bCMRADiscret
   type classes and canonical structures. Also, it now uses explicit mixins. The
   file `program_logic/ectxi_language` contains some documentation on how to
   setup Iris for your language.
-* Improved big operators:
-  + They are no longer tied to cameras, but work on any monoid
-  + The version of big operations over lists was redefined so that it enjoys
-    more definitional equalities.
+* Restore the original, stronger notion of atomicity alongside the weaker
+  notion. These are `Atomic a e` where the stuckness bit `s` indicates whether
+  expression `e` is weakly (`a = WeaklyAtomic`) or strongly (`a =
+  StronglyAtomic`) atomic.
 * Various improvements to `solve_ndisj`.
-* Some extensions/improvements of heap_lang:
-  - Improve handling of pure (non-state-dependent) reductions.
-  - Add fetch-and-add (`FAA`) operation.
-  - Syntax for all Coq's binary operations on `Z`.
 * Use `Hint Mode` to prevent Coq from making arbitrary guesses in the presence
   of evars, which often led to divergence. There are a few places where type
   annotations are now needed.
-* Move the `prelude` folder to its own project: std++
 * The rules `internal_eq_rewrite` and `internal_eq_rewrite_contractive` are now
-  stated in the logic, i.e. they are `iApply` friendly.
-* Restore the original, stronger notion of atomicity alongside the weaker
-  notion. These are `Atomic a e` where the stuckness bit `s` indicates whether
-  expression `e` is weakly (`a = WeaklyAtomic`) or strongly (`a =
-  StronglyAtomic`) atomic.
+  stated in the logic, i.e., they are `iApply`-friendly.
 
 ## Iris 3.0.0 (released 2017-01-11)
 
-- 
GitLab