From 3c16b4ebaeca585ae176aa0ed0b0131dcfd94228 Mon Sep 17 00:00:00 2001
From: Ralf Jung <jung@mpi-sws.org>
Date: Wed, 3 Aug 2022 13:59:53 -0400
Subject: [PATCH] changelog

---
 CHANGELOG.md | 53 +++++++++++++++++++++++++++-------------------------
 1 file changed, 28 insertions(+), 25 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 89bc4ab23..a5783e424 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -71,14 +71,19 @@ lemma.
 * Prepare for supporting later credits, by adding a resource `£ n` describing
   ownership of `n` credits that can be eliminated at fancy updates.
   Note that HeapLang has not yet been equipped with support for later credits.
-  To retain backwards compatibility with the interaction laws of fancy updates
-  with the plainly modality (`BiFUpdPlainly`), which are incompatible with
-  later credits, the logic is parameterized by two typeclasses, `HasLc`
-  and `HasNoLc`, that allow opting for either later credits or `BiFUpdPlainly`.
-  The soundness lemmas for the fancy update modality are available in two versions,
-  with later credits (suffix `_lc`) and without later credits (suffix `_no_lc`).
-  The lemmas without later credits still generate credits, but they cannot be used
-  in any meaningful way. The lemma `step_fupdN_soundness_gen` is generic over this choice.
+  + To retain backwards compatibility with the interaction laws of fancy updates
+    with the plainly modality (`BiFUpdPlainly`), which are incompatible with
+    later credits, the logic has a new parameter of type `has_lc`, which is
+    either `HasLc` or `HasNoLc`. The parameter is an index of the `invGS_gen`
+    typeclass; the old `invGS` is an alias for `invGS_gen HasLc` so that
+    developments default to having later credits available. Libraries that want
+    to be generic over whether credits are available or not, and proofs that
+    need `BiFUpdPlainly`, need to be changed to use `invGS_gen` rather than
+    `invGS`.
+  + The core soundness lemma `step_fupdN_soundness_gen` similarly takes a `has_lc`
+    parameter to control how the logic is supposed to be instantiated. The lemma
+    always generates credits, but they cannot be used in any meaningful way unless
+    `HasLc` is picked.
 * Add discardable fractions `dfrac` to `saved_anything_own`, `saved_prop_own`,
   and `saved_pred_own`, so they can be updated. The previous persistent versions
   can be recovered with the fraction `DfracDiscarded`. Allocation lemmas now take
@@ -96,17 +101,16 @@ lemma.
   + All lifting lemmas have been altered to provide credits.
     `wp_lift_step_fupdN` provides `S (num_laters_per_step ns)` credits, while all other
     lemmas always provide one credit.
-* In line with the support for later credits (see `base_logic`), the adequacy statements
-  have been changed to account for `HasLc` and `HasNoLc`:
-  + The lemma `twp_total` (total adequacy) provides an additional assumption `HasNoLc`.
-    Clients of the adequacy proof will need to introduce this additional assumption and
-    keep it around in case `BiFUpdPlainly` is used.
+* In line with the support for later credits (see `base_logic`), `irisGS_gen`
+  now also has a `has_lc` parameter and the adequacy statements have been
+  changed to account for that:
+  + The lemma `twp_total` (total adequacy) provides `irisGS_gen HasNoLc`. Clients
+    of the adequacy proof will need to make sure to be either generic over the
+    choice of `has_lc` or explicitly opt-out of later credits.
   + The adequacy lemmas for the partial WP, in particular `wp_adequacy`,
-    `wp_strong_adequacy` and `wp_invariance`, are now available in two flavors,
-    one providing `HasLc` to enable the use of later credits in the future (suffix `_lc`),
-    and one without support for later credits, providing `HasNoLc` (suffix `_no_lc`).
-    Clients of the adequacy proof will need to opt for either of these and introduce
-    the additional assumptions.
+    `wp_strong_adequacy` and `wp_invariance`, are now available in two flavors:
+    the old names generate `irisGS` (a short-hand for `irisGS_gen HasLc`); new
+    lemmas with a `_gen` suffix leave the choice of `has_lc` to the user.
   + The parameter for the stuckness bit `s` in `wp_strong_adequacy{_lc, _no_lc}` has
     moved up and is now universally quantified in the lemma instead of being existentially
     quantified at the Iris-level. For clients that already previously quantified over `s`
@@ -120,14 +124,13 @@ lemma.
   number of steps taken so far. This number is tied to ghost state in the state
   interpretation, which is exposed, updated, and used with new lemmas
   `wp_lb_init`, `wp_lb_update`, and `wp_step_fupdN_lb`. (by Jonas Kastberg Hinrichsen)
-* In line with the support for later credits (see `base_logic`), the adequacy statements
-  for HeapLang have been changed:
-  + `heap_adequacy` provides the additional assumption `HasLc`, which needs to be
-    introduced by clients and will enable using new proof rules for later credits
-    in the future.
+* In line with the support for later credits (see `base_logic`), `heapGS_gen`
+  now takes an additional `has_lc` parameter, and `heapGS` is a short-hand for
+  `heapGS_gen HasLc`. The adequacy statements for HeapLang have been changed
+  accordingly:
+  + `heap_adequacy` provides `heapGS`, thus enabling the use of later credits.
     This precludes usage of the laws in `BiFUpdPlainly` in the HeapLang instance of Iris.
-  + `heap_total` provides the additional assumption `HasNoLc`, which needs to be
-    introduced by clients and needs to be kept around to use the laws in `BiFUpdPlainly`.
+  + `heap_total` provides `heapGS_gen HasNoLc`.
   Currently, the primitive laws for HeapLang do not yet provide later credits.
 
 The following `sed` script helps adjust your code to the renaming (on macOS,
-- 
GitLab